Verilog 学习目录
本课程按照“概念讲解 -> 示例代码 -> Testbench -> 波形分析 -> 练习题”的方式学习,从数字电路基础逐步过渡到 FPGA 综合项目。
第一阶段:基础入门
第 1 章:数字电路与 Verilog 概述
- FPGA、ASIC 和 Verilog 的关系
- 二进制、逻辑电平和数字信号
- 组合逻辑与时序逻辑
- Verilog 描述硬件的基本思想
- 第一个 Verilog 模块
- 实践:实现并仿真一个与门
第 2 章:模块与端口
module和endmoduleinput、output和inout- 模块命名和端口定义
wire与reg- 模块例化和端口连接
- 实践:实现一个包含多个逻辑门的模块
第 3 章:数值与运算符
- 二进制、八进制、十进制和十六进制
- 位宽与有符号数
- 算术运算符
- 逻辑运算符
- 位运算符
- 比较、移位和拼接运算符
- 实践:实现一个简单算术逻辑单元
第二阶段:组合逻辑
讲义:第二阶段:组合逻辑讲义
第 4 章:连续赋值与组合逻辑
assign语句- 组合逻辑的特点
- 多位信号操作
- 条件运算符
?: - 组合逻辑中的传播关系
- 实践:实现二选一多路选择器
第 5 章:always 组合逻辑
always @(*)- 阻塞赋值
= if-elsecase- 默认赋值
- 锁存器产生的原因与避免方法
- 实践:使用
always实现四选一多路选择器
第 6 章:常用组合电路
- 编码器与优先编码器
- 译码器
- 多路选择器
- 比较器
- 半加器与全加器
- 加减法器
- 实践:实现一个 4 位加减法器
第三阶段:时序逻辑
讲义:第三阶段:时序逻辑讲义
第 7 章:时钟、复位与触发器
- 时钟信号
- 上升沿与下降沿
always @(posedge clk)- 非阻塞赋值
<= - 同步复位与异步复位
- D 触发器
- 实践:实现带复位和使能的寄存器
第 8 章:寄存器与移位寄存器
- 多位寄存器
- 串入串出
- 串入并出
- 并入串出
- 左移与右移
- 循环移位
- 实践:实现一个 8 位流水灯控制器
第 9 章:计数器
- 加法计数器
- 减法计数器
- 可逆计数器
- 模 N 计数器
- 分频计数器
- 计数器位宽计算
- 实践:实现一个 0 到 9 循环计数器
第 10 章:有限状态机
- 状态机的概念
- Moore 型与 Mealy 型状态机
- 状态寄存器
- 次态逻辑
- 输出逻辑
- 状态编码
- 实践:实现一个序列检测器
第四阶段:模块化设计
讲义:第四阶段:模块化设计讲义
第 11 章:参数化与层次化设计
- 模块例化
- 位置连接与名称连接
parameterlocalparamgenerate- 可复用模块设计
- 实践:实现位宽可配置的计数器
第 12 章:存储器设计
- ROM 和 RAM
- 同步读与异步读
- 单端口 RAM
- 双端口 RAM
- 存储器初始化
- FPGA 片上存储资源
- 实践:实现一个小型同步 RAM
第 13 章:跨时钟域与可靠设计
- 亚稳态
- 双触发器同步器
- 按键消抖
- 边沿检测
- 脉冲同步
- 多位数据跨时钟域的基本方法
- 实践:实现按键消抖和单脉冲输出
第五阶段:仿真、约束与 FPGA 工程实践
第 14 章:Testbench 与仿真
- Testbench 结构
- 驱动时刻、采样时刻与非阻塞赋值
- 期望值、四态比较与错误计数
task、超时保护和参数化复测- 自检结果与波形调试的分工
- 厂商 IP 仿真的边界
- 实践:为计数器编写自检式 Testbench
第 15 章:TangDynasty 约束、实现与上板
- 仿真与综合的区别
- 顶层端口、原理图与封装引脚的映射
- 安路
.adc引脚与 I/O 电气约束 .sdc输入时钟、生成时钟和接口时序约束- 约束未命中、fanout 与 STA coverage 检查
- 建立时间与保持时间
- TD 综合、布局布线、时序报告和下载流程
- 实践:完成
.v + .adc + .sdc流水灯上板闭环
第六阶段:综合项目
第 16 章:完整项目实践
- LED 流水灯
- 按键控制 LED
- 数码管动态显示
- 可调频率计数器
- 交通灯状态机
- UART 串口发送与接收
- 简易电子时钟
建议学习顺序
严格按照章节顺序推进。完成每一章的示例、仿真和练习后,再进入下一章。