FPGA にマイクロコントローラーを実装しようとしていますが、そのプログラム用に ROM を提供する必要があります。$readmemb を使用すると、ROM に正しく合成されますか? そうでない場合、これを行う標準的な方法は何ですか?
14287 次
1 に答える
18
合成可能かどうかは合成ツールに依存します$readmemb
。
アルテラの推奨 HDL コーディング スタイルガイドには、例 10-31 (ページ 10-38) が含まれてい$readmemb
ます。
module dual_port_rom (
input [(addr_width-1):0] addr_a, addr_b,
input clk,
output reg [(data_width-1):0] q_a, q_b
);
parameter data_width = 8;
parameter addr_width = 8;
reg [data_width-1:0] rom[2**addr_width-1:0];
initial // Read the memory contents in the file
// dual_port_rom_init.txt.
begin
$readmemb("dual_port_rom_init.txt", rom);
end
always @ (posedge clk)
begin
q_a <= rom[addr_a];
q_b <= rom[addr_b];
end
endmodule
同様に、ザイリンクスのXST ユーザー ガイドには、次のように記載されています。
およびシステム タスクを使用して
$readmemb
、$readmemh
ブロック メモリを初期化できます。詳細については、次を参照してください。外部ファイルからの RAM の初期化のコーディング例
$readmemb
2 進数および16 進数表現に使用し$readmemh
ます。XST とシミュレータの動作の違いを避けるため、ザイリンクスではこれらのシステム タスクでインデックス パラメーターを使用することをお勧めします。次のコーディング例を参照してください。
$readmemb("rams_20c.data",ram, 0, 7);
于 2010-12-22T17:05:06.493 に答える