如何在HDL(Verilog/VHDL)中声明上拉/下拉?

描述

一般描述:

如何在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 ...

(更多...)
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-29 14:24:53 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它