描述
一般描述:
如何在HDL中使用SypPurIn实例化上拉/下拉?
笔记:
对于CPLD器件,在正常运行期间,IOBs中的拖发器不是用户可控制的。这些上拉电阻器仅在器件Program、上电和擦除周期中是活动的。
-为ViTeX,请参阅(赛灵思解答948)有关5.1.4和更早版本的同步化的详细信息。
-可以通过使用SypLIFIX提供的Xilinx族库实例化上拉/下拉单元格。请看(赛灵思解答244)详细描述Xilinx特定细胞的细节。
SypRyTy5.0.7引入了两种新的属性,可以用于实现上拉和下拉:XCXPULLUP和XCL下拉。
解决方案
VHDL语言
IOB使用实例化单元用注册的双向I/O来拉/下拉
库IEEE,XC4000;
使用IEEE.STDYLogiCy1164.ALL;
使用XC400 0组件;所有;包括SypLimeXilinx宏库
实体BiDyReX1是
端口(SIGA,SIGB:输入STDYLogic);
INA,IN,EN,CLK:在STDYLogic中;
末端BiDRIEX1;
BiDyReX1的体系结构Xilinx
元件拉起
端口(O:输出STDYLogic);
端部元件;
元件下拉
端口(O:输出STDYLogic);
端部元件;
信号IAAIN,OTAUTIN:STDYLogic;
信号IbBIN,OutBuIt:STDYLogic;
开始
U0:上拉端口映射(O= & Gt;SIGA);
U1:下拉端口映射(O= & Gt;SIGB);
——注册输入路径
过程(CLK)
开始
如果上升沿(CLK),那么
国际标准化协会;
国际标准化组织;
如果结束;
结束过程;
三态注册输出路径
Siga<= OtAuthIt何时(EN=‘0’)否则“z”;
当(EN=‘0’)“z”时,Sigb& lt=OutButhIt;
过程(CLK)
开始
如果上升沿(CLK),那么
AuthaIn & lt;= IaaIn和INA;
ObbtIn & lt;
如果结束;
结束过程;
Verilog
-拉线必须连接到长线上。
-内部下拉连接是非法的。
拉低只能在I/O焊盘上使用。
//包括SypLimeXilinx宏库
“包括”/产品/ SypuliT/LIB/Xilinx/XC4000 V
模块LangyLyxEX1(英布萨,EN,SIGA,Outsig);
输入[2:0]英布萨,恩;
输入[1:0] SIGA;
输出输出;
金属丝;
上拉U0(o(In sig));
/推断三态缓冲器
赋值In sig=(En [ 0 ]=1’b1)?英布萨〔0〕和Siga〔0〕:1’BZ;
赋值In sig=(En [ 1 ]=1’b1)?英布萨〔1〕和Siga〔0〕:1’BZ;
赋值In sig=(En [ 2 ]=1’b1)?英布萨〔2〕和Siga〔0〕:1’BZ;
//粘贴逻辑
赋值Outsisig=SIGA〔1〕^ in sig;
终端模块
VHDL语言
-拉线应该附在长线上。
-内部下拉连接是非法的。
拉低只能在I/O焊盘上使用。
库IEEE,XC4000;
使用IEEE.STDYLogiCy1164.ALL;
使用XC400 0组件.ALL;包括SypLimeXilinx宏库
实体LangyLyxEX1是
端口(in BuSua,En:在STDyLogic向量中(2下降到0);
SIGA:在StdLogLogic向量(1下降到0);
Outsig:输出STDYLogic;
末端隆氏线;
LyyLyLyxEX1的体系结构Xilinx
元件拉起
端口(O:输出STDYLogic);
端部元件;
信号Itsig:STDYLogic;
开始
U0:上拉端口映射(O= & Gt;Itnsig);
推断三态缓冲器
In sig & lt=in BuSua(0)和Siga(0)当(EN(0)=‘1’’)否则“z”;
In sig & lt=in BuSua(1)和Siga(0)当(EN(1)=‘1’’)否则“z”;
In sig & lt=in BuSua(2)和Siga(0)当(EN(2)=‘1’’)否则“z”;
–胶合逻辑
Exgsig & lt;=SIGA(1)XOR ItIn SIG;
末端Xilinx;
Verilog
IOB使用实例化单元用注册的双向I/O来拉/下拉
//包括SypLimeXilinx宏库
“包括”/产品/ SypuliT/LIB/Xilinx/XC4000 V
模块BiDyReX1(SIGA、SIGB、INA、IB、EN、CLK);
SIGA,SIGB;
输入INA,IN,EN,CLK;
欧塔伊特;
Reg in bbIn,OutbIt;
上拉U0(O(SIGA));
下拉U1(O(SigB));
//注册输入路径
总是@(POSEDGE CLK)
开始
IaaIn=Siga;
IbbIn=SigB;
结束
//三态注册输出路径
分配SIGA=!恩?OTAUITEN:1’BZ;
分配SIGB=!恩?OutbIn:1’BZ;
总是@(POSEDGE CLK)
开始
AuthaIn=IaaIn和Na;
ObbtIn=in bbIn and in;
结束
终端模块
VHDL语言
IOB通过使用“XCX下拉”/“XCH PULLUP”属性注册双向I/O
(这仅适用于5.0.7和更高版本的同步化版本。)
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用SypIFIF.AtvestTo.ALL;
实体BiDyReX1是
端口(SIGA,SIGB:输入STDYLogic);
INA,IN,EN,CLK:在STDYLogic中;
SIGA的属性xCpLUP:信号是真的;
SIGB属性XCL下拉:信号为真;
末端BiDRIEX1;
BiDyReX1的体系结构Xilinx
信号IAAIN,OTAUTIN:STDYLogic;
信号IbBIN,OutBuIt:STDYLogic;
开始
——注册输入路径
过程(CLK)
开始
如果上升沿(CLK),那么
国际标准化协会;
国际标准化组织;
如果结束;
结束过程;
三态注册输出路径
Siga<= OtAuthIt何时(EN=‘0’)否则“z”;
当(EN=‘0’)“z”时,Sigb& lt=OutButhIt;
过程(CLK)
开始
如果上升沿(CLK),那么
AuthaIn & lt;= IaaIn和INA;
ObbtIn & lt;
如果结束;
结束过程;
末端Xilinx;
Verilog
IOB通过使用“XCX下拉”/“XCH PULLUP”属性注册双向I/O
(这仅适用于5.0.7和更高版本的同步化版本。)
模块BiDixEX2(SIGA,SIGB,INA,IB,EN,CLK);
输入Siga/*综合xCpPulLUP=1 */;
输入Sigb/*综合XCl下拉=1 */;
输入INA,IN,EN,CLK;
欧塔伊特;
Reg in bbIn,OutbIt;
//注册输入路径
总是@(POSEDGE CLK)
开始
IaaIn=Siga;
IbbIn=SigB;
结束
//三态注册输出路径
分配SIGA=!恩?OTAUITEN:1’BZ;
分配SIGB=!恩?OutbIn:1’BZ;
总是@(POSEDGE CLK)
开始
AuthaIn=IaaIn和Na;
ObbtIn=in bbIn and in;
结束
终端模块
没有回复内容