5.1i XST -如何将多个注册输出在三态条件下输入到IOBs中?-Xilinx-AMD社区-FPGA CPLD-ChipDebug

5.1i XST -如何将多个注册输出在三态条件下输入到IOBs中?

描述

关键字:XST、IOB、3态、三态、三态、三态、三态、使能、保持、合并、复制、寄存器、多、总线

紧迫性:标准

一般描述:
我使用的是一个触发器总线,它必须放在器件的IOBs中。这些FFS的输出应该放置在3态条件下,并且应该记录三态缓冲器的使能信号。

如果一个总线用于注册的启用信号,则除了一个启用FFS之外,所有的总线都被优化出来。由于最后一个FF的输出负载现在不是1,它不能被放入IOBs中。我该怎么办呢?

解决方案

解决方案不是为启用信号创建FFS总线,而是创建触发器并放置IOB属性。然后,激活开关将寄存器/锁存到综合属性中的IOBs中,这将复制单个FF并将其放入IOBs中。

为了使综合属性自动将触发器推到IOB(这是默认行为):

1。突出综合过程。
2。右键单击综合过程并选择“属性”。
三。选择Xilinx特定选项选项卡。
4。将“包I/O寄存器转换为IOBs”字段为“自动”(默认设置)或“是”。

下面的代码说明了一个8位宽的总线,通过寄存器将输出放在三态条件下。

注释三态缓冲器的允许行应该是活动的Low。

VHDL:

库IEEE;
使用IEEE.STDYLogiCy1164.ALL;

实体TIIIIOB是
端口(CLK,SEL):在STDYLogic中;
DI:在STdLogLogic向量(7下降到0);
DO:StdLogLogic向量(7下降到0);
末端三重IOB;

TIIIIOB的体系结构
信号TMP1:STdLogLogic向量(7下降到0);
信号TMP2:STDYLogic;
信号IpFFFS:STDYLogLogic向量(7下降到0);

属性IOB:字符串;
TMP2的属性IOB:信号为“真”;

开始
过程(CLK)
开始
如果(CLK’事件和CLK = ‘1’)
IpFFFF&L.= DI;
TMP1和LMP=
如果结束;
结束过程;

过程(CLK)
开始
如果(CLK’事件和CLK = ‘1’)
TMP2;
如果结束;
结束过程;

当TMP2=“0”时,Do和lt=TMP1(其他=&>z′);

末端箭头;

Verilog:

模块TrIIIIOB(CLK,SEL,DI,DO);

输入CLK;SEL;
输入[7:0] di;
输出[7:0];

RGG[7:0] TMP1,IPPFFS;
TMP2;

//综合属性IOB TMP2“真”

总是@(POSEDGE CLK)开始
IpFFFF&L.= DI;
TMP1和LMP=
结束

总是@(POSSEDGE CLK)TMP2 & lt;= SEL;

分配do= tMP2?8’BZ:TMP1;

终端模块

请登录后发表评论

    没有回复内容