FPGAExpress:如何在HDL代码中实例化I/O焊盘

描述

关键字:基础、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
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-29 19:12:48 +0800

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

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