可以利用约束文件进行约束吗?
在程序加载过程中,约束文件不会起作用,所以设置约束没有用。
先看下Xilinx FPGA的IO结构(参考XIlinx官方文档)
在FPGA IOB内部,Pad输出之前,内置上下拉电阻。且可以通过Passive Pull-up/Pull-down模块控制两个MOS管的导通与否来控制是否使能上下拉电阻。
也就是说,可以通过一些操作控制这些引脚是上拉还是下拉。具体怎么操作如下:
在Spartan6系列以及之前的器件中这些引脚的状态是根据HSWAPEN的状态决定的。
在7系列以后的器件,包括Ultrascale器件中,这些引脚的状态是根据PUDC_B(Pull-Up During Configuration)引脚
这两个引脚的功能是相似的,都是用来控制在Configuration完成之前,所有普通IO的上拉电阻是否使能的。对应到图 1中,即Output Buffer输出高阻,Input Buffer对外始终为高阻,此时选择是否连接上拉电阻。
实际的物理引脚举例:xc7z020-484 K16 IO_L3P_T0_DQS_PUDC_B_34
xc7z010clg400-1
IO_L3P_TO_DQS_PUDC_B_34
需要物理上对这个引脚进行上拉或者下拉。
这只是抛砖引玉的例子,实际应用中还要考虑加载完成后引脚的状态,一些特殊管脚等等问题,请点击阅读原文或者下一篇文章阅读查看这个问题的更为详细的解答。
参考:
[1] UG380 Spartan-6 FPGA Configuration
[2] UG470 7 Series FPGAs Configuration
[3] UG570 UltraScale Architecture Configuration
[4] UG580 UltraScale Architecture System Monitor
[5] https://forums.xilinx.com/t5/7-Series-FPGAs/Default-State-of-IOs-during-Configuration/td-p/402059
[6] https://forums.xilinx.com/t5/Spartan-Family-FPGAs/a-question-for-spartan6-lx16-io-state/td-p/399715
[7] https://forums.xilinx.com/t5/Spartan-Family-FPGAs/Spartan-6-FPGA-IO-state-before-configuration/td-p/259300
[8] https://forums.xilinx.com/t5/Design-Entry/Unassigned-Pin-Behavior/td-p/34114
[9] https://forums.xilinx.com/t5/7-Series-FPGAs/About-Create-Programmable-Ground-Pins-Unused-IO-Pad-Termination/td-p/698241
[10] https://courses.cs.washington.edu/courses/cse467/03wi/FPGA.pdf
[11] https://forums.xilinx.com/t5/Vivado/如何控制加载FPGA程序时-FPGA的IO管脚输出低电平还是高电平/m-p/1178731#M6874