AR# 7947

Exemplar - Virtex ブロック RAM のインスタンシエートおよび初期化方法について

説明

キーワード : BlockRam+, selectram, init_00, ramb, ramb4, ブロック RAM+

重要度 : 標準

概要 :
Exemplar Leonardo Spectrum を使用した場合の Virtex ブロック RAM のインスタンシエートおよび初期化方法について教えてください。

ソリューション

1

RAMB* セルはブラック ボックスとしてインスタンシエートできます。 また、INIT_** 属性を HDL ファイルおよびスクリプト ファイル内で文字列として受け渡すことができます。 次の HDL コードは、VHDL および Verilog で NIT 属性を受け渡す方法を示します。

別の方法として、Exemplar コマンド スクリプトで次のように指定することも可能です。
set_attribute -instance "inst_ramb4_s4" -name INIT_00 -type string
-value "1F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100"

メモ : Spectrum 1999.1e を使用してテストしたものです。

VHDL

library IEEE;
use IEEE.std_logic_1164.all;

entity spblkrams is
port(CLK : in std_logic;
EN : in std_logic;
RST : in std_logic;
WE : in std_logic;
ADDR : in std_logic_vector(11 downto 0);
DI : in std_logic_vector(15 downto 0);
DORAMB4_S4 : out std_logic_vector(3 downto 0);
DORAMB4_S8 : out std_logic_vector(7 downto 0));
end;


architecture struct of spblkrams is


component RAMB4_S4
port (DI : in STD_LOGIC_VECTOR (3 downto 0);
EN : in STD_ULOGIC;
WE : in STD_ULOGIC;
RST : in STD_ULOGIC;
CLK : in STD_ULOGIC;
ADDR : in STD_LOGIC_VECTOR (9 downto 0);
DO : out STD_LOGIC_VECTOR (3 downto 0));
end component;


component RAMB4_S8
port (DI : in STD_LOGIC_VECTOR (7 downto 0);
EN : in STD_ULOGIC;
WE : in STD_ULOGIC;
RST : in STD_ULOGIC;
CLK : in STD_ULOGIC;
ADDR : in STD_LOGIC_VECTOR (8 downto 0);
DO : out STD_LOGIC_VECTOR (7 downto 0));
end component;

attribute INIT_00: string;
attribute INIT_00 of INST_RAMB4_S4: label is
X"1F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100";
attribute INIT_00 of INST_RAMB4_S8: label is
X"1F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100";

begin


INST_RAMB4_S4 : RAMB4_S4 port map (
DI => DI(3 downto 0),
EN => EN,
WE => WE,
RST => RST,
CLK => CLK,
ADDR => ADDR(9 downto 0),
DO => DORAMB4_S4
);

INST_RAMB4_S8 : RAMB4_S8 port map (
DI => DI(7 downto 0),
EN => EN,
WE => WE,
RST => RST,
CLK => CLK,
ADDR => ADDR(8 downto 0),
DO => DORAMB4_S8
);


end struct;

2

Verilog

module block_ram_ex (CLK, WE, ADDR, DIN, DOUT);
input CLK, WE;
input [8:0] ADDR;
input [7:0] DIN;
output [7:0] DOUT;


RAMB4_S8 U0 (.WE(WE), .EN(1'b1), .RST(1'b0), .CLK(CLK),
.ADDR(ADDR), .DI(DIN), .DO(DOUT));
//exemplar attribute U0 INIT_00
1F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100
endmodule
AR# 7947
日付 04/24/2007
ステータス アーカイブ
種類 一般