📝

FPGA 与 Verilog 系统学习

从数字电路与 Verilog 基础出发,系统学习组合逻辑、时序逻辑、模块化设计、仿真、约束和 FPGA 工程实践。

Verilog 学习目录

本课程按照“概念讲解 -> 示例代码 -> Testbench -> 波形分析 -> 练习题”的方式学习,从数字电路基础逐步过渡到 FPGA 综合项目。

第一阶段:基础入门

讲义:第一阶段:Verilog 基础入门讲义

第 1 章:数字电路与 Verilog 概述

  • FPGA、ASIC 和 Verilog 的关系
  • 二进制、逻辑电平和数字信号
  • 组合逻辑与时序逻辑
  • Verilog 描述硬件的基本思想
  • 第一个 Verilog 模块
  • 实践:实现并仿真一个与门

第 2 章:模块与端口

  • moduleendmodule
  • inputoutputinout
  • 模块命名和端口定义
  • wirereg
  • 模块例化和端口连接
  • 实践:实现一个包含多个逻辑门的模块

第 3 章:数值与运算符

  • 二进制、八进制、十进制和十六进制
  • 位宽与有符号数
  • 算术运算符
  • 逻辑运算符
  • 位运算符
  • 比较、移位和拼接运算符
  • 实践:实现一个简单算术逻辑单元

第二阶段:组合逻辑

讲义:第二阶段:组合逻辑讲义

第 4 章:连续赋值与组合逻辑

  • assign 语句
  • 组合逻辑的特点
  • 多位信号操作
  • 条件运算符 ?:
  • 组合逻辑中的传播关系
  • 实践:实现二选一多路选择器

第 5 章:always 组合逻辑

  • always @(*)
  • 阻塞赋值 =
  • if-else
  • case
  • 默认赋值
  • 锁存器产生的原因与避免方法
  • 实践:使用 always 实现四选一多路选择器

第 6 章:常用组合电路

  • 编码器与优先编码器
  • 译码器
  • 多路选择器
  • 比较器
  • 半加器与全加器
  • 加减法器
  • 实践:实现一个 4 位加减法器

第三阶段:时序逻辑

讲义:第三阶段:时序逻辑讲义

第 7 章:时钟、复位与触发器

  • 时钟信号
  • 上升沿与下降沿
  • always @(posedge clk)
  • 非阻塞赋值 <=
  • 同步复位与异步复位
  • D 触发器
  • 实践:实现带复位和使能的寄存器

第 8 章:寄存器与移位寄存器

  • 多位寄存器
  • 串入串出
  • 串入并出
  • 并入串出
  • 左移与右移
  • 循环移位
  • 实践:实现一个 8 位流水灯控制器

第 9 章:计数器

  • 加法计数器
  • 减法计数器
  • 可逆计数器
  • 模 N 计数器
  • 分频计数器
  • 计数器位宽计算
  • 实践:实现一个 0 到 9 循环计数器

第 10 章:有限状态机

  • 状态机的概念
  • Moore 型与 Mealy 型状态机
  • 状态寄存器
  • 次态逻辑
  • 输出逻辑
  • 状态编码
  • 实践:实现一个序列检测器

第四阶段:模块化设计

讲义:第四阶段:模块化设计讲义

第 11 章:参数化与层次化设计

  • 模块例化
  • 位置连接与名称连接
  • parameter
  • localparam
  • generate
  • 可复用模块设计
  • 实践:实现位宽可配置的计数器

第 12 章:存储器设计

  • ROM 和 RAM
  • 同步读与异步读
  • 单端口 RAM
  • 双端口 RAM
  • 存储器初始化
  • FPGA 片上存储资源
  • 实践:实现一个小型同步 RAM

第 13 章:跨时钟域与可靠设计

  • 亚稳态
  • 双触发器同步器
  • 按键消抖
  • 边沿检测
  • 脉冲同步
  • 多位数据跨时钟域的基本方法
  • 实践:实现按键消抖和单脉冲输出

第五阶段:仿真、约束与 FPGA 工程实践

讲义:第五阶段:仿真、约束与 FPGA 工程实践讲义

第 14 章:Testbench 与仿真

  • Testbench 结构
  • 驱动时刻、采样时刻与非阻塞赋值
  • 期望值、四态比较与错误计数
  • task、超时保护和参数化复测
  • 自检结果与波形调试的分工
  • 厂商 IP 仿真的边界
  • 实践:为计数器编写自检式 Testbench

第 15 章:TangDynasty 约束、实现与上板

  • 仿真与综合的区别
  • 顶层端口、原理图与封装引脚的映射
  • 安路 .adc 引脚与 I/O 电气约束
  • .sdc 输入时钟、生成时钟和接口时序约束
  • 约束未命中、fanout 与 STA coverage 检查
  • 建立时间与保持时间
  • TD 综合、布局布线、时序报告和下载流程
  • 实践:完成 .v + .adc + .sdc 流水灯上板闭环

第六阶段:综合项目

第 16 章:完整项目实践

  1. LED 流水灯
  2. 按键控制 LED
  3. 数码管动态显示
  4. 可调频率计数器
  5. 交通灯状态机
  6. UART 串口发送与接收
  7. 简易电子时钟

建议学习顺序

严格按照章节顺序推进。完成每一章的示例、仿真和练习后,再进入下一章。

comments powered by Disqus