VivadoIO约束
FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置约束的方法。
一、IO约束
IO约束,实际上是将工程的输入输出端口与芯片的引脚关联起来,所以需要参考芯片手册和实际电路设计。在vivado中通常有两种加入IO约束的方式:
1、通过GUI界面设置IO约束
(1)创建vivado工程,并添加HDL文件。
(2)点击“Run Synthesis”,执行综合,等待综合完成。
(3)点开 “Open Synthesized Design”,等待打开综合结果。
(4)点开vivado菜单栏右上角的,窗口选择“I/O Planning”。
(5)vivado出现“IO Ports”窗口,根据电路图和芯片手册,定义引脚位置和电气标准。
(6)设置完后,按快捷键“ctrl + s”保存,填入约束文件名。
(7)在“source”窗口,点开“Constraint”下的“constrs_1”可看到创建的约束文件,点开即可看到约束的内容。
2、直接创建xdc文件并加入IO约束
可通过点击“source”窗口的“+”创建xdc文件。
(1)引脚分配设置
“pin name”是芯片的引脚,ports是工程中定义的模块名
set_property PACKAGE_PIN <pin name> [get_ports <ports>]
(2)引脚电气标准设置
“IOSTANDARD”是电气标准,如LVCMOS18、LVCMOS12、LVCMOS33
set_property IOSTANDARD <IO standard> [get_ports <ports>]
(3)引脚驱动能力设置
set_property DRIVE <2 4 6 8 12 16 24> [get_ports <ports>]
(4)引脚抖动设置
set_property SLEW <SLOW|FAST> [get_ports <ports>]
(5)引脚上拉设置
set_property PULLUP true [get_ports <ports>]
(6)引脚下拉设置
set_property PULLDOWN true [get_ports <ports>]