五、添加管脚约束
Vivado 使用的约束文件格式为 xdc 文件,xdc 文件里主要是完成管脚的约束,时钟的约束,以及组的约束。这里我们需要对 led.v 程序中的输入输出端口分配到 FPGA 的真实管脚上。
1、点击 “Open Elaborated Design”
2、在弹出的窗口中点击 “OK” 按钮
3、在菜单中选择 “Window -> I/O Ports”
4、在弹出的 I/O Ports 中可以看到管脚分配情况,给 LED 和时钟分配管脚、电平标准,完成后点击保存(ctrl+s)
①、 LED -> R19
②、SYS_CLK -> U18
③、随便选择一个没有接外围设备的引脚,当做 RST 引脚,我这里选择了 T11
RST_N -> T11
④、因此分配情况如下:
6、弹出窗口,要求保存约束文件,文件名我们填写 “led”,文件类型默认 “XDC”,点击 “OK”
此刻我们在这里可以看到多了一个 led.xdc
7、打开刚才生成的 “led.xdc” 文件,我们可以看到是一个 TCL 脚本,如果我们了解这些语法,完全可以通过自己编写 led.xdc 文件的方式来约束管脚
下面来介绍一下最基本的 XDC 编写的语法,普通 IO 口只需约束引脚号和电压。
管脚约束如下:
set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称”]
电平信号的约束如下:
set_property IOSTANDARD "电平标准" [get_ports “端口名称”]
这里需要注意文字的大小写,端口名称是数组的话用 { } 括起来,端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。
电平标准中 “LVCMOS33” 后面的数字指 FPGA 的 BANK 电压,LED 所在 BANK 电压为 3.3 伏,所以电平标准为“LVCMOS33”。Vivado 默认要求为所有 IO 分配正确的电平标准和管脚编号。
六、添加时序约束
一个 FPGA 设计除了管脚分配以外,还有一个重要的约束,那就是时序约束,这里通过向导方式演示如果进行一个时序约束。
1、点击 “Run Synthesis” 开始综合
2、弹出对话框点击 “OK”
可以看到右上角正在进行综合
3、综合完成以后点击 “Cancel”
4、点击 “Constraints Wizard”
5、在弹出的窗口中点击 “Next”
6、时序约束向导分析出设计中的时钟,这里把 “sys_clk” 频率设置为 50Mhz,然后点击 “Skip to Finish” 结束时序约束向导。
7、点击 “Finish”
8、这个时候 led.xdc 文件已经更新,重新加载文件即可
最下面多了一行约束时钟
七、生成 BIT 文件
1、编译的过程可以细分为综合、布局布线、生成 bit 文件等,这里我们直接点击 “Generate Bitstream”,直接生成 bit 文件。
2、在弹出的对话框中可以选择任务数量,这里和 CPU 核心数有关,一般数字越大,编译越快,点击 “OK”
3、这个时候开始编译,可以看到右上角有个状态信息,在编译过程中可能会被杀毒软件、电脑管家拦截运行,导致无法编译或很长时间没有编译成功。
4、编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,若是接下来想要直接下载到 fpga 上可以选择 “Open Hardware Manger”,跳过下面的八、仿真测试,若是接下来想要先进行仿真一下验证下功能可以继续往下看。我这里先进行一下仿真验证下功能,因此点击 Cancel。