如何使用HDL属性在端口上配置I/O标准(IOStand属性)?(VHDL/Verilog)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

如何使用HDL属性在端口上配置I/O标准(IOStand属性)?(VHDL/Verilog)

描述

关键字:PCII33、GTL、I/O、IO标准、缓冲器、TCL脚本、LVDS、LVPECL、IO标准

紧迫性:标准

一般描述:
我想在我的设计中使用一个特定的I/O标准。如何在我的HDL代码中使用示例TCL脚本(命令行)来使用I/O标准缓冲区?

解决方案

若要为非差分I/O标准使用TCL脚本,您需要知道顶级端口名,然后可以使用命令行或脚本中的属性。

例子
下面的示例具有DATAIIN的顶级端口名称:

设置部分V50ECS144

-使用VXTEX“XCV”库和VXTEX-E的“XCVE”:
加载库XCVE

-读取VHDL/Verilog文件:
读取DyReal.V.

-将PAD属性设置为“DATAIIN”端口:
PAIF总线

优化目标XCVE
自动写入

使用VHDL属性配置LVDS I/O标准
-使用LVPECL,用“LVPECL”替换“LVDS”。
使用此示例使用TCL脚本,删除代码中的PAD属性并将其设置在TCL文件中。

例子
下面的示例说明了输入、输出和双向I/O:

库IEEE,范例;
使用IEEE.STDYLogiCy1164.ALL;
使用示例。

实体LVDSIOYATT是
端口(CLK,数据,TIN):在STDYLogic中;
IODATAYP,IODATAYN:IOUT STDYLogic;
QQP,QYN:缓冲STDYLogic

属性焊盘:字符串;
CLK的属性PAD:信号是“iBFGGLVDS”;
数据属性垫:信号为“iBFFLVDS”;
TIN属性PAD:信号为“iBFFLVDS”;
QPEP的属性垫:信号为“OBufl LVDS”;
QQN的属性垫:信号为“OBufl LVDS”;
IODATAYP的属性PAD:信号为“IOBUFIL LVDS”;
IODATAYN的属性PAD:信号为“OBUFTTL LVDS”;
CLK的属性Buffer-Sigg:信号是“BUFG”;
结束语;

LVDSIO-YATT的建筑行为
信号IODATAIIN:STDYLogic;
信号IODATAXOUT:STDYLogic;
信号IODATAXNUOUT:STDYLogic;

开始
MyyddReg:进程(CLK,数据)
开始
如果(CLK’事件和CLK = ‘1’)
QPp & lt=数据;
如果结束;
结束过程;

qnn& lt;
IODATAXOUT和LT;=数据和IODATAIGIN;
IODATAILIN和LT;
IODATAYNOXOUT & LT;=不IODATAXOUT;

IOYP:工艺(锡)
开始
如果(TiN=0)那么
IODATAYP<= IODATAOXOUT;
其他的
IODATAYP<=“Z”;
如果结束;
结束过程;

IOIN:过程(锡)
开始
如果(TiN=0)那么
IODATAYN<=IODATAXNSOUT;
其他的
IODATAYN<=“Z”;
如果结束;
结束过程;
结束行为;

使用Verilog属性配置LVDS I/O标准
-使用LVPECL,用“LVPECL”替换“LVDS”。
使用此示例使用TCL脚本,删除代码中的PAD属性并将其设置在TCL文件中。

例子
下面的示例说明了输入、输出和双向I/O:

模块LVDSIO-ATATT(CLK,数据,TIN,IODATAYP,IODATAYN,QYP,QYN);
输入CLK;//示例性属性CLK PAD
/*我想为CLK添加另一个属性来推断Bufg*/

输入数据;//示例性属性数据垫
输入TIN;//示例属性
IOUDATAYP;//示例性属性IODATAYP PAD IOBUFILLVDS
IOUDIATAYN;//示例性属性IODATAYN PAD OBUFTTHLVDS
输出QQP;//示例属性QYP PAD OBUFFLVDS
输出QYN;//示例属性QYN PAD OBUFFLVDS

线碘;
导线输出;
金属丝;
雷格;

总是@(POSEDGE CLK)
开始
QPp & lt=数据;
结束

赋值qnn= qqp;
指定IODATAXOUT =数据和;
指定IODATAIIN=IODATAYP;
指定IODATAXNUOUT= ~IODATAXOUT;

分配IODATAYP =(TiN=1’B0)?IODATAXOUT:1’BZ;
分配IODATAYN =(TIN=1’B0)?IODATAXNXOUT:1’BZ;

终端模块

请登录后发表评论

    没有回复内容