FPGA学习笔记
FPGA从零开始学习
xiaoxusun0621
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Verilog的代码编写技术
本文系统阐述了硬件描述语言(HDL)的高级编码规范与工程实践准则。重点内容包括:基础编码规范(命名规则、文件头信息、端口声明);时钟复位设计策略(同步释放、多时钟域处理);可综合编码要点(敏感信号列表、阻塞/非阻塞赋值);模块划分原则(寄存器输出、关键路径隔离);以及验证调试技巧(测试平台编写、后端仿真流程)。全文构建了一套完整的代码编写方法论,旨在提升代码质量、可维护性和设计可靠性,帮助开发者规避常见陷阱,优化综合结果。原创 2025-10-08 23:01:22 · 1046 阅读 · 0 评论 -
Verilog代码书写规范
本文介绍了Verilog代码的可综合指导原则和风格规范。可综合部分强调代码需能被正确转换为硬件电路,列举了initial语句、不确定循环等不可综合结构,并提出了同步设计、进程分离、赋值方式等核心原则。代码风格部分则从模块化、命名规则、端口定义等方面规范编码实践,强调注释完整、格式整洁以提高可读性和可维护性。全文旨在帮助开发者编写高质量、可综合的Verilog代码。原创 2025-10-08 20:26:38 · 451 阅读 · 0 评论 -
【最终章】-串口收发指令处理器-Verilog语法学习EP12
这篇文章介绍了将串口接收和发送模块整合为指令处理系统的过程。主要内容包括:1)创建cmd_pro.v模块实现指令处理功能,包含4种运算指令的状态机控制;2)构建UART_top.v顶层模块,集成串口收发和指令处理模块;3)编写测试平台UART_top_tb进行功能验证。系统通过状态机依次接收指令和操作数,执行运算后返回结果,测试波形验证了设计的正确性。该设计可作为FPGA串口通信的入门实例,文章还提到这是基于李老师课程的学习成果,代码已公开供参考。原创 2025-09-23 21:13:17 · 305 阅读 · 0 评论 -
Verilog语法学习EP11:串口发送模块
该设计实现了一个UART串口发送模块,主要功能包括:1. 支持8位数据发送,包含起始位和停止位;2. 采用5000个时钟周期的波特率;3. 提供就绪信号rdy指示空闲状态。模块通过状态机控制发送过程:状态0等待使能信号,状态1完成数据移位发送。测试向量验证了模块的基本功能,包括复位、使能信号触发和数据发送过程。仿真波形显示模块能正确响应使能信号并按预期输出串行数据。原创 2025-09-23 17:25:23 · 322 阅读 · 0 评论 -
Verilog语法学习EP10:串口接收模块
本文设计了一个串口接收模块UART_RXer,采用状态机实现4800波特率的数据接收。模块包含空闲检测、起始位识别、8位数据接收和输出使能等状态,通过计数器精确控制采样时序。测试平台UART_RXer_tb验证了模块功能,成功接收并输出测试数据0xaa。关键设计包括:1)状态机控制接收流程;2)计数器实现精确位采样;3)移位寄存器处理串行数据。该模块实现了稳定的串口数据接收功能,适用于低速通信场景。原创 2025-09-18 20:51:26 · 181 阅读 · 0 评论 -
什么是Verilog中的阻塞式赋值和非阻塞式赋值,一篇文章说清楚!
Verilog中阻塞赋值与非阻塞赋值的核心区别在于执行方式:阻塞赋值(=)顺序执行,会阻塞后续语句;非阻塞赋值(<=)并行执行,所有计算同时开始,赋值在当前时间步结束时完成。阻塞赋值适用于组合逻辑,非阻塞赋值必须用于时序逻辑以避免竞争冒险。关键设计原则包括:时序电路/锁存器用非阻塞赋值,组合逻辑用阻塞赋值,同一always块中不混用两种赋值,不为同一变量设置多驱动源。正确使用这两种赋值方式是编写可靠Verilog代码的基础。原创 2025-09-18 09:50:17 · 384 阅读 · 0 评论 -
【总结】Verilog语法学习基础合集
本文摘要: Verilog语法分为三部分重点内容:1)模块结构:包括端口定义、I/O说明和功能定义三种方法,强调输入输出端口只能为wire类型;2)数据类型:包括net(线网)、register(寄存器)和parameter(参数)三类,重点说明reg和wire的使用场景及常见错误;3)流程控制:详细讲解if-else语句的嵌套规则、case语句三种形式及避免锁存器的方法,以及for/repeat/while/forever四种循环语句的特点和应用场景。文章特别强调可综合设计中的注意事项,如阻塞与非阻塞赋值原创 2025-09-18 08:42:19 · 942 阅读 · 0 评论 -
Verilog语法学习EP9:最简单的状态机,三角波发生器模块
本文介绍了一个带平顶功能的三角波发生器Verilog实现。该设计采用4状态状态机控制波形生成过程:上升、上平顶、下降、下平顶。通过8位计数器con控制平顶持续时间,9位输出d_out实现0-299的三角波输出。测试波形验证了设计的正确性,展示了状态机在数字电路设计中的重要性。代码简洁规范,体现了Verilog状态机设计的基本方法。原创 2025-09-14 20:30:37 · 220 阅读 · 0 评论 -
Verilog语法学习EP8:相邻16点相加模块
该设计实现了一个16点相邻采样累加器模块,可将输入的8位采样信号(转换为补码形式)进行16次累加。关键设计包括:1) 通过补码转换处理有符号数;2) 采样时钟上升沿检测;3) 16次循环计数控制累加过程;4) 累加结果12位输出并产生同步脉冲。测试平台验证了全1输入时的正确累加功能,仿真波形显示模块能正确完成16次累加(0+1×16=16)并输出结果,符合设计要求。原创 2025-09-14 17:05:40 · 168 阅读 · 0 评论 -
Verilog语法学习EP7:秒脉冲计数器0-9模块
本文介绍了一个0-9循环秒计数器的Verilog实现。该模块包含24MHz时钟分频逻辑,每秒产生一个脉冲信号驱动计数器。测试脚本通过初始化时钟和复位信号进行验证,仿真波形显示功能符合设计预期。代码采用参数化设计便于修改时钟频率,并通过条件编译加快了仿真速度。原创 2025-09-14 15:41:32 · 214 阅读 · 0 评论 -
Verilog语法学习EP6:四位伪随机码生成器模块
本文设计了一个四位伪随机码生成器模块及测试脚本。该模块采用线性反馈移位寄存器结构,在时钟上升沿或复位信号下降沿触发,通过模2加法实现伪随机序列生成。测试脚本通过Modelsim仿真验证了模块功能,结果显示输出波形符合设计标准。仿真过程中设置了17ns的初始复位时间,600ns后停止仿真,验证了模块在正常工作和复位状态下的正确性。原创 2025-09-13 16:39:28 · 185 阅读 · 0 评论 -
Verilog语法学习EP5:计数器模块
本文设计了一个8位计数器模块,包含时钟和复位信号输入,输出计数结果。测试脚本通过初始化时钟和复位信号,验证了模块功能:复位时输出清零,正常工作时每个时钟周期加1。使用ModelSim进行仿真,结果符合预期,验证了设计的正确性。原创 2025-09-13 15:40:15 · 252 阅读 · 0 评论 -
Verilog语法学习EP4:七段数码管译码器模块
本文展示了一个七段数码管译码器的Verilog实现及测试脚本。该译码器将4位二进制输入转换为对应的七段数码管控制信号,支持0-9数字显示。测试模块通过Modelsim仿真验证了设计的正确性,波形图与预期逻辑相符。代码采用case语句实现数字到段码的转换,并包含错误处理默认值。测试脚本以10ns间隔递增输入信号,经200ns仿真后停止运行。原创 2025-09-13 11:56:06 · 196 阅读 · 0 评论 -
Verilog语法学习EP3:二进制数的补码生成模块
本文介绍了一个8位二进制数补码生成模块的设计与测试。该模块通过检测最高位判断正负:正数补码与原码相同,负数则执行取反加1操作。测试脚本使用ModelSim仿真验证,结果显示正数输出与原码一致,负数补码符合取反加1的计算规则,模块功能正确实现。该设计采用Verilog HDL语言编写,包含模块定义和测试平台,能正确处理8位有符号二进制数的补码转换。原创 2025-09-12 22:00:02 · 263 阅读 · 0 评论 -
Verilog语法学习EP2:四选一选择器模块
该文展示了一个4选1选择器的Verilog实现,包含模块代码和测试平台。模块根据2位选择信号sel对输入a、b执行不同逻辑运算:与、或、异或及同或。测试平台通过循环递增absel寄存器值来验证所有输入组合,仿真波形验证了设计功能正确。代码采用时序控制(#10延时)进行全覆盖测试,最终通过$stop结束仿真。原创 2025-09-12 21:52:31 · 235 阅读 · 0 评论 -
Verilog语法学习EP1:Verilog语法学习的环境配置基于vscode+modelsim
本文介绍了在没有FPGA硬件的情况下,使用Modelsim仿真工具和VSCode编辑器学习Verilog语法的方法。推荐安装Modelsim2020.4SE版本和VSCode的Verilog插件,建议在VSCode中新建专用配置文件管理开发环境,以便实现代码补全功能。文中参考了北京交通大学李金城老师的Verilog入门课程,并对比了不同编辑器(UltraEdit和VSCode)的使用效果。原创 2025-08-27 16:46:57 · 255 阅读 · 0 评论
分享