本文转载自:<span id="profileBt"><a href="https://blog.csdn.net/gslscyx/article/details/106156380">FPGA技术实战的CSDN博…;
<font color="#FF8000">注:本文由作者授权转发,如需转载请联系作者本人</font>
引言:通过属性或者约束可以访问7系列FPGA I/O资源某些特性。本文我们介绍和I/O资源相关的属性和约束:
<li>DCI_CASCADE约束</li>
<li>位置约束(LOC)约束</li>
<li>IOSTANDARD属性</li>
<li>IBUF_LOW_PWR属性</li>
<li>SLEW约束</li>
<li>输出驱动电流强度</li>
<li>上拉/下拉/keeper</li>
<li>差分端接属性(DIFF_TERM)</li>
<li>VCCAUX_IO属性</li>
<strong>1.DCI_CASCADE约束</strong>
DCI_CASECADE约束定义了一个DCI主bank和它对应的从bank。该属性使用以下语法在.XDC文件中进行约束。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图1、DCI_CASCADE约束语法</strong></p>
<strong>2.位置约束(LOC)</strong>
位置约束用来明确使用I/O所处的管脚的位置,位置约束是通过管脚唯一编号来进行的。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图2、LOC约束语法</strong></p>
<strong>3.IOSTANDARD属性</strong>
IOSTANDARD属性用来选择I/O标准电平。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图3、IOSTANDARD属性约束</strong></p>
<strong>4.输出压摆率属性</strong>
输出I/O缓冲器压摆率有SLOW(默认)和FAST两种选择。FAST压摆率可以满足高性能需求,例如高速存储器接口,但是,如果不能恰当设计(端接匹配,传输线阻抗控制和串扰耦合),更高的压摆率输出会导致信号反射或者产生噪声问题。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图4、SLEW属性语法</strong></p>
<strong>5.输出驱动强度属性</strong>
对于LVCMOS和LVTTL输出缓冲器(OBUF,OBUFT和IOBUF),可以通过DRIVE属性设置驱动电流强度。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图5、DRIVE属性允许设置值</strong></p>
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图6、输出电流强度约束</strong></p>
<strong>6.PULLUP/PULLDOWN/KEEPER属性</strong>
输入缓冲器(IBUF)、三态输出(OBUFT)和双向缓冲器(IOBUF)有弱上拉,弱下拉或者"keeper"电路。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图7、PULLUP/PULLDOWN/KEEPER属性</strong></p>
<strong>7.差分端接属性</strong>
差分端接属性(DIFF_TERM)用于差分输入I/O,用于打开或关闭芯片内置100Ω差分端接电阻。片上输入端接电阻比芯片外部分立电阻端接更能改善信号完整性,因为片内端接电阻在接收器侧不存在stub(由PCB设计引起,可以通过背部钻孔消除,会带来PCB制造成本增加)。该属性应用于以下I/O标准:
<li>LVDS</li>
<li>LVDS_25</li>
<li>MINI_LVDS_25</li>
<li>PPDS_25</li>
<li>RSDS_25</li>
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图8、DIFF_TERM属性约束语法</strong></p>
当使用DIFF_TERM属性是,必须对LVDS或者其他2.5V电平标准I/O bank提供恰当电压,并且该属性只用于输入差分I/O。
<strong>8.内部VREF</strong>
7系列FPGA的VREF电压可以由芯片内部产生或者由外部电源供电,使用芯片内部产生VREF电压可以消除外部电源供电。当VREF管脚不作为电源管脚使用或者使用内部参考电源(INTERNAL_VREF)时,它可以作为普通I/O使用。内部产生的VREF来自VCCAUX电源,每个bank有一个单独的VREF电源层。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图9、内部VREF属性约束</strong></p>
芯片内部参考电源有以下几种选择:
<li>0.60V</li>
<li>0.675V</li>
<li>0.75V</li>
<li>0.90V</li>
<strong>9.VCCAUX_IO约束</strong>
VCCAUX_IO管脚可以设置为1.8V或者2.0V电压,当设置为2.0V电平时,需要对VCCAUX_IO添加约束,默认为1.8V电平。
<center><img src="http://xilinx.eetrend.com/files/2022-07/%E5%8D%9A%E5%AE%A2/100562556-26…; alt=""></center>
<p align="center"><strong>图10、VCCAUX_IO属性约束</strong></p>
在一个bank中,如果VCCAUX_IO管脚供电为2.0V,则在该bank至少一个I/O net管脚或者原句将VCCAUX_IO属性约束为HIGH,其他所有I/O net或者原句可以约束为HIGH或者DONTCARE。
<strong>总结</strong>
■ 这些属性及约束我们在进行FPGA软件设计时会用到,有些约束需要配合硬件进行,比如参考电压VREF的设计等。熟练应用这些约束对于我们更好的发挥FPGA器件性能具有意义。
■ 这些属性及约束的语法我们可以在Vivado IDE “Language Templates”里找到。