1

ディスクから 4 KiB (1Ki x 32 ビット) True-Dual-Port RAM の初期 RAM 値を読み取っています。私の Lattice ECP5 デバイスには 18 ビット幅の組み込みブロック RAM (EBR) しかないため、32 ビットのワード サイズに一致するように 2 つの RAM が組み合わされています。

ファイルには 4 つのocram.memデータ行があり、各行に 8 つの 16 進数があります (=> 32 ビットのワード行)。
ファイルは次のようになります。

@000
44332211
88776655
CCBBAA99
00FFEEDD

私の読み取り関数は、LSE ログに次の行を報告します。

INFO - synthesis: d:/git/poc/src/mem/mem.pkg.vhdl(144): Note: "44332211". VHDL-1533
INFO - synthesis: d:/git/poc/src/mem/mem.pkg.vhdl(144): Note: "88776655". VHDL-1533
INFO - synthesis: d:/git/poc/src/mem/mem.pkg.vhdl(144): Note: "CCBBAA99". VHDL-1533
INFO - synthesis: d:/git/poc/src/mem/mem.pkg.vhdl(144): Note: "00FFEEDD". VHDL-1533

そのため、最初の行は意図したとおりにスキップされ、次の行ストリングも問題ありません。行の読み取りと char から std_logic_vector への変換の後、2D STD_LOGIC マトリックスを LSE ログに再度出力しました。

INFO - synthesis: d:/git/poc/src/mem/ocram/ocram_tdp.vhdl(123): Note: "Memory: => 
0100 0100 0011 0011 0010 0010 0001 0001
1000 1000 0111 0111 0110 0110 0101 0101
1100 1100 1011 1011 1010 1010 1001 1001
0000 0000 1111 1111 1110 1110 1101 1101
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 00   ....   000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
". VHDL-1533

ご覧のとおり、値はまだ損なわれていません。
合成はエラーなしで終了します。

そこで、Lattice Diamond でマップと P&R を開始しました。フロアプラン ビューには、2 つの使用済みエンベデッド ブロック RAM が表示されますが、これは意図したものです。しかし、RAM をクリックすると、INIT 値が奇妙に見えます。

RAM0 INITVAL_00 = 0x0000...000000000000003FF332EE221DD110CC
RAM0 INITVAL_01 = 0x0000...00000000000000000000000000000000
RAM0 INITVAL_.. = 0x.......................................
RAM0 INITVAL_3F = 0x0000...00000000000000000000000000000000

RAM1 INITVAL_00 = 0x0000...00000000000002EDD02A990265502211
RAM1 INITVAL_01 = 0x0000...00000000000000000000000000000000
RAM1 INITVAL_.. = 0x.......................................
RAM1 INITVAL_3F = 0x0000...00000000000000000000000000000000

私は自分の価値の一部を認識していますが、すべてではありません。EBR または ECP5 のドキュメントには手がかりが見つかりません。

  • 初期値はどのように RAM にマップされますか?
4

1 に答える 1