如何在HDL(Verilog/VHDL)中实例化RAM或ROM?

描述

一般描述:

如何使用SypLIDIE在HDL(Verilog/VHDL)中实例化RAM或ROM?

解决方案

您可以通过使用SypLIFIX提供的Xilinx族库实例化RAM/ROM单元。请看(赛灵思解答244)详细描述Xilinx特定细胞的细节。

下面的示例说明使用Xilinx ROM16X1组件创建16x8ROM:

“包含”& lt;安装路径& gt;/lb/xilinx/xc4000。v

模块ROMY16X8(O,A);

输入[3:0] A;

输出[7:0] o;

ROM16X1U0(.O(O〔0〕),A0(A〔0〕),A1(A〔1〕),A2(A〔2〕),A3(A〔3〕)

/*综合XCYPROPS=“init=FFFF”*//;

ROM16X1 U1(.O(O〔1〕),A0(A〔0〕),A1(A〔1〕),A2(A〔2〕),A3(A〔3〕)

/*综合XCYPROPS =“init=ABCD”*/;

ROM16X1 U2(O(O(2)),A0(A[ 0)],A1(A[ 1 ]),A2(A[ 2 ]),A3(A[ 3 ])

/*综合XCYPROPS =“init=BCDE”*/;

ROM16X1 U3(O(O(3)),A0(A[ 0)],A1(A[ 1 ]),A2(A[ 2 ]),A3(A[ 3 ])

/*综合XCYPROPS =“init=CDEF”*/;

ROM16X1 U4(O(O〔4〕),A0(A〔0〕),A1(A〔1〕),A2(A〔2〕),A3(A〔3〕)

/*综合XCYPROPS =“init=ccdD”*/;

ROM16X1 U5(.O(O(5)),A0(A[ 0)],A1(A[ 1 ]),A2(A[ 2 ]),A3(A[ 3 ])

/*综合XCYPROPS=“init=0000”*/;

ROM16X1 U6(O(O〔6〕),A0(A〔0〕),A1(A〔1〕),A2(A〔2〕),A3(A〔3〕)

/*综合XCYPROPS=“init=0010”*/;

ROM16X1 U7(O(O〔7〕),A0(A〔0〕),A1(A〔1〕),A2(A〔2〕),A3(A〔3〕)

/*综合XCYPROPS=“init=1100”*/;

终端模块

下面的示例说明使用Xilinx ROM16X1组件创建16x8ROM:

库IEEE;

使用IEEE.STDYLogiCy1164.ALL;

XC4000库;

使用XC400 0组件;

库同步化;

使用SypIFIF.AtvestTo.ALL;

实体ROMY16X1是

泛型(iNITYVA:String=“0000”);

端口(O:输出STDYLogic);

A3、A2、A1、A0:在STDYLogic中;

末端ROM16161;

ROMI16161的Xilinx架构

属性XCI PROPS:字符串;

U1的属性XCXPROPS:标签是“init=”和init;

开始

U1:ROM16X1端口映射(O= & Gt;O,A0= & Gt;A0,A1= & Gt;A1,A2= & Gt;A2,A3=& G3;A3);

末端Xilinx;

库IEEE;

使用IEEE.STDYLogiCy1164.ALL;

使用IEEE.STDLogLogic UNSIGNED;

实体ROMY16X8是

端口(O:输出STDLogLogic向量(7下降到0);

A:在StdLogLogic向量(3下降到0)中;

末端ROM16168;

ROMI16168的Xilinx架构

组件ROMY16X1

泛型(iNITYVA:String=“0000”);

端口(O:输出STDYLogic);

A3、A2、A1、A0:在STDYLogic中;

端部元件;

开始

U0:ROMY16X1通用映射(“FFFF”)

端口映射(O= & Gt;O(0),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U1:ROMY16X1通用映射(ABCD)

端口映射(O= & Gt;O(1),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U2: ROMY16X1通用映射(BCDE)

端口映射(O= & Gt;O(2),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U3:ROMY16X1通用映射(“CDEF”)

端口映射(O= & Gt;O(3),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U4: ROMY16X1通用映射(“CCDD”)

端口映射(O= & Gt;O(4),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U5:ROMY16X1通用映射(“0000”)

端口映射(O= & Gt;O(5),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U6:ROMY16X1通用映射(“0010”)

端口映射(O= & Gt;O(6),A0=& Gt;A(0),A1= & Gt;A(1),A2=& gt;A(2),A3=& Gt;(3));

U7:ROMY16X1通用映射(“1100”)

端口映射(O= & Gt;O(7),A0=& Gt;A(0),A1= & Gt;A ...

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

提问于 2018-07-29 14:23:06 +0800

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

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