Xilinx社のスパルタン3スタータキットで、分散RAMを複数生成して、RAMブロックを作った。
for generateでRAM16X1DのDual Portの分散RAMをインスタンスしたのだが、初期値を入れる段になってはたと困った。
初期値を入れるには、generic map(INIT => x"0000")というように入れるのだが、for generateで作ってあるので、個々の値は入らない。(attribute分でも初期値が入るが、これはシミュレーション用ではなく、論理合成用のようだ。ちなみにattributeの書き方もわからない)
FPGA Information Ltd.'s Home pageのBBSで聴いてみたが、www.fpga-faq.orgで検索してみたら、わかった。
下に例を示す。
component RAM16X1D
generic (
INIT : bit_vector(15 downto 0) := X"0000"
);
port (
DPO : out std_ulogic;
SPO : out std_ulogic;
A0 : in std_ulogic;
A1 : in std_ulogic;
A2 : in std_ulogic;
A3 : in std_ulogic;
D : in std_ulogic;
DPRA0 : in std_ulogic;
DPRA1 : in std_ulogic;
DPRA2 : in std_ulogic;
DPRA3 : in std_ulogic;
WCLK : in std_ulogic;
WE : in std_ulogic
);
end component;
--attribute INIT : bit_vector;
type ram_init_values_array is array (1 downto 0) of bit_vector(15 downto 0);
constant ram_init_values : ram_init_values_array := (x"5555", x"AAAA");
begin
gen_distram : for i in 1 downto 0 generate
-- attribute INIT of U: label is ram_init_values(i);
begin
U : RAM16X1D
generic map(
INIT => ram_init_values(i))
port map(
dpo => dpo(i),
spo => spo(i),
a0 => a(0),
a1 => a(1),
a2 => a(2),
a3 => a(3),
d => d(i),
dpra0 => dpra(0),
dpra1 => dpra(1),
dpra2 => dpra(2),
dpra3 => dpra(3),
wclk => clk,
we => we
);
end generate gen_distram;
- 2005年06月21日 18:56 |
- VHDLの書き方
-
| トラックバック:0
-
| コメント:0
SPARCプロセッサのソースコードがGNU GPLライセンスで公開されたそうだ。
http://pc.watch.impress.co.jp/docs/2005/0530/spf06.htmに書いてあったのだがLEON3というSPARC V8プロセッサ互換のIPがダウンロードできるそうだ。
http://www.gaisler.com/のDownloadのページからgrlib- eval -1.0.tar.gzを展開して、見てみたがマニュアルを読まなくては、よくわからないため取りあえず断念。
leon2-1.0.28-xst.tar.gzをダウンロードしてみたらXilinxのISEのプロジェクトがあったのでやってみたが、プロジェクトに入っているソースが足らないためエラーになってしまった。
どうやら、WindowsだとCygwinをいれて、xconfigしないとだめなようだ。暇になったらやってみようと思う。
- 2005年06月02日 09:49 |
- その他のFPGAの話題
-
| トラックバック:0
-
| コメント:0