FPGA代码风格与可综合设计实战
📚 共计 30 章节
01
FPGA与Verilog概述
FPGA基本概念 · Verilog HDL简介 · 可综合设计概念 · 课程目标与学习路径
基础
入门
02
模块化设计基础
模块定义与端口声明 · 模块实例化 · 层次化设计思想 · 模块复用原则
结构
复用
03
数据类型与运算符
wire与reg类型 · 向量与标量 · 常用运算符 · 运算符优先级与综合结果
语法
综合
04
组合逻辑建模
assign语句 · always@(*)用法 · 组合逻辑中的if-else与case · 避免锁存器
组合
Latch
05
时序逻辑建模
always@(posedge clk)用法 · 同步复位与异步复位 · 寄存器建模 · 时钟与使能信号
时序
寄存器
06
状态机设计基础
状态机分类(Moore与Mealy)· 三段式状态机写法 · 状态编码方式 · 状态机综合优化
FSM
编码
07
可综合代码风格(上)
代码命名规范 · 注释规范 · 模块划分原则 · 参数化设计(parameter与localparam)
风格
参数化
08
可综合代码风格(下)
避免不完整敏感列表 · 避免组合逻辑反馈 · 避免不可综合语句 · 综合属性(synopsys translate_off/on)
综合
属性
09
仿真与验证基础
Testbench结构 · initial与always块 · $display与$monitor · 波形查看与调试
仿真
调试
10
常用IP核设计
计数器设计 · 分频器设计 · 移位寄存器设计 · FIFO设计基础
IP
FIFO
11
接口设计基础
握手信号(valid-ready)· 同步FIFO接口 · AXI-Stream接口简介 · 接口时序约束
接口
握手
12
跨时钟域处理
亚稳态概念 · 单比特同步器(双级触发器)· 多比特同步(FIFO与握手)· 格雷码应用
CDC
亚稳态
13
时序分析入门
建立时间与保持时间 · 时序路径概念 · 时钟周期约束 · 时序报告解读
时序
约束
14
综合优化技巧
资源共享 · 流水线设计 · 寄存器平衡(Retiming)· 面积与速度权衡
优化
流水线
15
低功耗设计基础
时钟门控(Clock Gating)· 数据门控 · 操作数隔离 · 功耗分析工具简介
低功耗
门控
16
复位设计
同步复位与异步复位比较 · 异步复位同步释放 · 复位树设计 · 复位对面积的影响
复位
可靠性
17
时钟设计
时钟源选择 · 时钟分频与倍频 · 时钟使能设计 · 门控时钟注意事项
时钟
使能
18
存储器设计
单端口RAM · 双端口RAM · ROM设计 · 存储器综合与推断
RAM
ROM
19
算术运算设计
加法器结构(行波进位、超前进位)· 乘法器结构 · 流水线加法器 · DSP单元使用
算术
DSP
20
编码风格与Lint检查
常见编码错误 · Lint工具使用 · 代码规范检查 · 可读性提升技巧
Lint
规范
21
综合约束编写
时序约束(create_clock、set_input_delay等)· 面积约束 · 综合策略选择 · 约束文件管理
约束
SDC
22
FPGA设计流程
RTL设计→功能仿真→综合→布局布线→时序仿真→比特流生成→板级调试
流程
全流程
23
调试技巧
片上逻辑分析仪(ILA)使用 · VIO核使用 · 触发条件设置 · 调试数据导出
调试
ILA
24
设计重用与IP封装
IP封装流程 · 参数化IP设计 · IP文档编写 · IP库管理
IP
重用
25
版本控制与协作
Git在FPGA项目中的应用 · 分支管理 · 代码审查 · 团队协作流程
Git
协作
26
高级状态机设计
嵌套状态机 · 状态机分解 · 状态机编码优化(One-hot vs Binary)· 状态机安全性
FSM
高级
27
高速接口设计
DDR接口基础 · SerDes接口简介 · 源同步接口 · 眼图与误码率
高速
SerDes
28
FPGA安全设计
比特流加密 · 防篡改设计 · 安全启动 · JTAG安全
安全
加密
29
项目实战:数字时钟设计
需求分析 · 模块划分 · RTL编码 · 仿真验证 · 上板调试
实战
数字时钟
30
项目实战:UART通信设计
UART协议 · 波特率发生器 · 发送模块 · 接收模块 · 回环测试
实战
UART