FPGA基础知识
目录
- Xilinx FPGA结构
- 可编程逻辑模块
- 查找表
- 输入/输出模块
- 布线资源
- 嵌入式块RAM
- 底层嵌入功能单元
- 内嵌专用硬核
- FPGA开发流程
- 设计输入
- 功能仿真
- 综合
- 布局布线
- 时序仿真
- 板级验证
Xilinx FPGA结构
FPGA的基本结构:可编程逻辑模块(CLB)、输入/输出模块(IOB)、互联(布线)资源(IR)、嵌入式块RAM、底层嵌入功能单元、内嵌专用硬核。
可编程逻辑模块
每个CLB里包含2个slice,每个slice由4个查找表、8个触发器、3个数据选择器、1个进位链组成。
查找表
查找表(LUT):FPGA内部多使用4输入LUT,LUT本质上是个RAM,可看作一个有4位地址线的RAM。
主流的FPGA芯片是基于SRAM的查找表结构,LUT可以很好地实现可重复配置的需求。
查找表的使用:使用硬件描述语音设计一个逻辑电路后,开发软件会计算该电路的所有可能结果,并将其真值表写入RAM中。这样每输入1个信号进行逻辑运算,就相当于输入1个RAM的地址来查找RAM中存储的数据。
可以将LUT配置为RAM、ROM、FIFO等存储器结构,这种被称为分布式RAM。
每个4输入LUT可作为1个16x1RAM;
每个4输入LUT可作为1个16位的移位寄存器;
输入/输出模块
输入/输出模块是芯片与外界电路的接口,完成不同电气特性下对输入/输出信号的驱动与匹配需求,大多数FPGA的IOB是可编程的。
布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
布线资源的分类:
- 全局布线资源:用于芯片内部全局时钟和全局复位/置位的布线;
- 长线资源:用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;
- 短线资源:用于完成基本逻辑单元之间的逻辑互连和布线;
- 分布式布线资源:用于专有时钟、复位等控制信号线。
嵌入式块RAM
FPGA的BRAM可被配置为RAM、ROM、FIFO等存储器。
每个BRAM容量为36KB,默认位宽18位,深度是2048。
RAM可以被重配置为更小或更长的单元,也可以把多个RAM组合起来形成更大的存储容量。
底层嵌入功能单元
一般指通用程度较高的嵌入式功能模块,如PLL、DLL、DSP、CPU等软核。
内嵌专用硬核
一般指通用性较低的硬件模块,如XADC、专用乘法器等。
FPGA开发流程
设计输入
使用硬件描述语言或原理图描绘要设计的数字电路。
功能仿真
使用仿真软件验证设计电路的逻辑功能,不考虑电路延迟等因素,仅对功能进行验证。
综合
综合:将高级抽象层次的语言描述转化为低级层次的电路结构,也就是将硬件描述语言描述的逻辑转化成逻辑门、触发器等基本单元组成的逻辑连接网表,即门级网表。
布局布线
布局布线:将综合生成的门级网表配置到具体的FPGA芯片上,决定最佳布局并进行连线。
布局布线根据时序约束条件,以及芯片内部各个逻辑单元的布局结构,通过连线资源,将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上。
时序仿真
将布局布线的延时信息反标注到设计网表中来检测有无时序违规。
时序仿真和功能仿真的区别:
时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。
板级验证
将开发工具最终产生的数据文件加载到FPGA芯片中,进行实际的测试。