描述
关键字:基础、Express、SyopSyS、端口、输入、输出、层次、下、模块、实例化
紧迫性:标准
一般描述:
FPGAExpress将插入I/O缓冲器和/或寄存器在顶层,只要端口列在
顶级端口声明。是否可以在较低的级别插入I/O端口?对。有可能吗?
在顶层插入I/O端口而不将它们声明为顶级端口?对。这是可以做到的
通过实例化端口的PAD和I/O缓冲器。
在实例化I/O缓冲区/缓冲区组合时,不要列出顶级端口声明中的端口。
您还必须实例化I/O缓冲器(或I/O触发器)和iPad /OPAD。iPad/OPAD
组件有一个引脚,总是称为PAD。
当使用双向信号时,实例化Iopad(PIN名称为Iopad)、输入缓冲器,以及
输出三态缓冲器。
在下面的例子中,推导出触发器。时钟和复位来自上面的水平,
DIN和DOUT引脚在这个级别上被实例化。
解决方案
一
VHDL示例:
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
实体较低
端口(CLK,RST:在STDYLogic中);注意DIN和DOUT没有在这里列出
下端;
下建筑
信号DIN,DOUT:STDYLogic;这里声明端口DIN和DOUT
信号DIN,DutuIt:STDYLogic;
组件总线
端口(I:在STDYLogic中;O:输出STDYLogic);
端部元件;
组件式iPad
端口(PAD:输出STDYLogic);
端部元件;
组件OBUF
端口(I:在STDYLogic中;O:输出STDYLogic);
端部元件;
组件OPAD
端口(PAD:在STDYLogic中);注意方向在
端部元件;
开始
时钟:进程(CLK,RST)开始
如果(RST=‘1’)
DouthIn & lt;=“0”;
然后,ELSIF RISIGIN EDGE(CLK)
DouthIn & lt;
如果结束;
结束过程;
iBFFIN:IGBF端口映射(I= & Gt;DIN,O= & Gt;DIN);
iPad TySt: iPad端口映射(PAD=& GT;DIN);
OBUFFIN:OBUF端口映射(I= & Gt;DouthIt,O= & Gt;DOUT);
OPADITNST:OPAD端口映射(PAD=& GT;DOUT);
底拱;
二
Verilog:
模块下(CLK,RST);/ /注意DIN和DOUT未在此列出
输入CLK,RST;
在这里声明线DIN、DIN、DUT、//端口DIN和DOUT
Reg DouthIt;
iBF iBFixInST(I(DIN),O(DIN IN));
iPad IPADYNST(.PAD(DIN));
OBUF OBufynST(I(DouthIn),O(DUT));
OPAD OPADYNST(.PAD(DOUT));
总是@(PaseLK CLK或PASEDEST RST)
开始
如果(RST)
DouthIn=1’B0;
其他的
DutuIn=DIN;
结束
终端模块
三
注:FPGAExpress将无法识别iPad和OPAD组件,因为它们是
不在综合库中。你可以忽略这样的警告:
警告:单元格的iPad’NST:“iPad”不是XC400 0xL的原语。(FPGA-IX-XLX-8)
警告:无法将单元格的“下/ iPad”链接到它的参考设计“iPad”。(FPGA-LIK-2)
警告:“OPADIN”:“OPAD”不是“XC400 0xL”的原语。(FPGA-IX-XLX-8)
警告:不能将单元格的“下/ OpDyIn”链接到它的参考设计“OPAD”。(FPGA-LIK-2)
警告:单元格的/Top-1/U1/IPADY-InST与任何设计无关。(FPGA-CHECK-4)
警告:单元格的/Top-1/U1/OpADyInST与任何设计无关。(FPGA-CHECK-4)
检查Xilinx实现工具中的PAD报告,以确保所有I/O都已被
连接正确。记住端口的最终名称将包括层次名称。
如果端口在较低的级别被实例化,那么在PAD报告中它会是这样的:
U1JIDIN输入P12
没有回复内容