Vivado使用入门之三:I/O约束

一、导图概览

二、I/O约束

2.1 I/O约束的内容

I/O约束主要是对port的位置和电气特性进行设置,进入菜单栏Window的IO Ports,可以查看可约束的相关内容。

一些port的常用特性解释如下

Name: port的名称

**Direction:**port的输入输出类型,有三种,输入in,输出out,双向端口inout

Package Pin:port约束的位置

I/O Std:port的IO标准

Bank:port所属的时钟区域

Vcco:电源供电电压

Fixed:是否固定位置

Vref:参考信号电压

Driver strength:输出buffer的驱动强度,单位是mA,和I/O标准有关联关系

Slew type:上升沿和下降沿变化的快慢

2.2 I/O 类型

器件中可以布局I/O的pin类型可以查看Package的设置界面,菜单栏Window->Package打开芯片的port分布图,点击右上角的红框内的设置图标,展开查看界面

在Pins组中,对Package的pin进行了分类

Power Supply Pins:电源供应引脚,如电源VCC和接地GND等

Transceiver Pins:高速收发器的引脚

I/O and Multi-Function Pins:放置I/O的引脚,用户使用频率最多的

Temperature Sensor Pins:温度传感器引脚

Dedicated Configuration Pins:降级配置引脚,在该位置,时钟端口不需要降级参数设置能不上时钟树到时钟load

Dedicated XADC Pins:降级的XADC引脚

三、 I/O约束的方法

设置I/O约束,有3中界面操作方式,I/O port表格中设置,port拖入Package中设置,port拖入Device中设置,三种方式都可以实现I/O port的位置约束,在设定位置约束后,其他属性的约束就只能在I/O port界面设置。

3.1 I/O ports中约束

I/O ports界面入口:菜单栏中Window->I/O ports,位置设置为在Package Pin列输入需要设置的位置,点击单元格左下角的向下箭头打开下拉框,显示可选项。

除了设置位置约束,还可以设置其他属性

菜单栏Window->Package打开芯片的port分布图,按bank划分,横坐标为数字,纵坐标为字母,里面的单元格就可放置IO PORT,不是所有的单元格都可以放置port,下图中红框中带有橙色长方形标注的即是已约束的IO PORT。

3.2 Package中约束

上节说到修改I/O Ports中Package Pin列的值可设置约束,下面有一种更简单的方法,鼠标左键选中需要约束port,按住左键可将port直接拖入Package中,对于放置在不可约束的位置时,会有禁止的图标(带斜杠的圆圈)出现,也会出现提示语不能放置。

约束后如果要在Package中快速找到约束的位置,可在I/O Ports界面选中port,进行highlighth或mark进行指定颜色标记,mark将在目标位置标记指定颜色背景的菱形,highlight将对目标的边框进行指定颜色的标记。

如对KEY进行mark标记,颜色为黄色,下图package视图内,将能够轻易找到位置

3.3 Device中约束

I/O ports不仅可以在Package中进行位置约束,也可以在Device窗口中进行约束,I/O的约束位置即为左右两侧Banks的区域

操作:在I/O Ports中选中要约束的port,将Device图中BANK区域放大,可以看到各个位置的坐标。port中包含INBUF和OUTBUF说明即可以放置input port,也可以放置output port。

在Package pin列中输入要在Device放置的位置,放置后在Device中可以手动拖动进行位置修改。port原先约束在AA19,选中AA19中pad的位置,按照左键移动到W18,即可将其约束到W18

3.4 差分IO

差分IO是一种比较特殊的IO,必须成对的使用,占用2个port的位置,约束时对位置有限制。

可以使用后缀带DS的原语进行例化出查分端口

示例代码

复制代码
module lut_ff(clk,C,R,CE,out,I,IB);
input clk,C,CE,R,I,IB;
output out;
   
IBUFDS #(
      .DIFF_TERM("TRUE"),       // Differential Termination
      .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
      .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(o_ibufds),  // Buffer output
      .I(I),  // Diff_p buffer input (connect directly to top-level port)
      .IB(IB) // Diff_n buffer input (connect directly to top-level port)
   );

 FDRE #(
      .INIT(1'b1) // Initial value of register (1'b0 or 1'b1)
   ) FDRE_inst (
      .Q(out),      // 1-bit Data output
      .C(C),      // 1-bit Clock input
      .CE(CE),    // 1-bit Clock enable input
      .R(R),      // 1-bit Synchronous reset input
      .D(o_ibufds)       // 1-bit Data input
   );
endmodule

差分IO中分为P端口和N端口,位置不能反。在I/O ports中,I对应的Neg Diff Pair有对应的端口IB。

将I和IB约束位置交换时,提示交换无效。

在Device界面中,可以看到I布局在IO_L21P位置,IB布局在IO_L21N位置。在其他位置也都存在名称后面带P,N支持放置差分端口的位置,而像左上角AG15,则只能放单端口的port。

3.5 方法对比

I/O port:可以直接进行位置约束,并且在确定位置约束后,可以进行其他属性的约束

Package约束I/O:可以直观清楚的看到各个位置在芯片中所属的bank,以及port的类型,特定属性等

Device约束I/O:可以直观清楚看到各个位置在芯片的实际物理位置,方便约束I/O后对相关网表进行约束,也可以看到I/O PORT在芯片上的内部组成模块

相关推荐
forgeda10 天前
从Vivado集成Lint功能,看FPGA设计的日益ASIC化趋势
fpga开发·vivado·lint·eco·静态检查功能
小飞侠学FPGA12 天前
VIVADO的IP核 DDS快速使用——生成正弦波,线性调频波
fpga开发·vivado·dds
意法半导体STM3218 天前
STM32 USBx Device MSC standalone 移植示例 LAT1488
单片机·嵌入式硬件·device·msc·standalone·usbx
通信小小昕1 个月前
Ubuntu22.04 安装vitis2023.2 卡在“Generating installed device list“.
ubuntu·vivado·vitis
Daniel_Coder2 个月前
Swift Package 教程:创建、发布与使用详解
ios·swift·package
热爱学习地派大星2 个月前
Xilinx FPGA功耗评估
fpga开发·verilog·vivado·fpga功耗·xpe
tiantianuser3 个月前
RDMA简介3之四种子协议对比
verilog·fpga·vivado·rdma·高速传输
巧~·4 个月前
静态时序分析与约束
fpga开发·vivado
迎风打盹儿4 个月前
MATLAB仿真定点数转浮点数(对比VIVADO定点转浮点)
matlab·ip·vivado·定点数·浮点数
巧~·5 个月前
MicroBlaze软核的开发使用
fpga开发·信息与通信·vivado