FPGA流程图说明
没啥好说的,首先你可以从Linux系统下的spyglass完成你RTL的语法检查,或者你可以使用window下的modsim。总之,在使用vivado进行综合之前要保证代码的正确性。
FPGA通过综合后将生成的门级网表进行管脚约束后进行布局布线最终生成比特文件,下载到FPGA中去。下面我将结合Vivado的图形界面展开描述。
一、约束(XDC)
进行综合之前要求,设置一部分的约束(XDC),将pin约束、模块布局即物理约束、时序约束进行设置。
1.管脚(引脚)约束,又称为pin约束
约束文件的书写:(普通IO口只需约束引脚号和电压)
管脚约束:
set_property PACKAGE_PIN 引脚编号 [get_ports 端口名称]
电平信号约束:
set_property IOSTANDARD 电压 [get_ports 端口名称]
!!!此处需要注意大小写,端口名称如果是数组的话用{ }括起来,端口名称必须和源代码中的名字一致,且不能和关键字一样。
在XDC里面,每个完整的XDC约束指令不应当跨行,必须在一行之内表达完毕。同样,在一行之内也只允许存在一个约束指令,不可以把2个约束放在同一行。
以led[0]的约束为例:
set_property PACKAGE_PIN G14 [get_ports {led[0]}]
为了绑定led[0]的管脚
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
为了设置led[0]的电平约束
2.物理约束
主要对于一些特殊模块的位置进行规定
3.时序约束
时序约束简介
时序约束详细讲解
主要分为时钟约束、输入约束、输出约束、其他约束(多周期约束、伪路径约束)。
(1)时钟约束:
1.外部输入时钟clk_in周期为10ns,占空比为25%,相移为90°约束形式为:
create_clock -name clk_in -period 10 -waveform{
2.5 5} [get_ports clk_in]
# {
2.5 5} 表示一个周期的波形中2.5ns - 5ns 为高。如果没有指定waveform默认为