元々はバイナリでデータを読み込む必要があります。私は$ readmembがこのために使うことができ、合成可能にする方法さえあるということを読んでいます。
私はRAM_IN(テストベンチモジュールではない)という別のモジュールを作成し、トップモジュールに "接続"しました。
module RAM_IN (pix_val, indx);
input [0:5] indx;
output [31:0] pix_val;
reg [31:0] pix_val;
reg [31:0] in_ram [0:4];
always @ (indx)
pix_val = in_ram [indx];
initial
begin
$readmemb("in_ram.txt", in_ram);
end
:私は、このようにこのようなので、実装の$ readmembを100個の数字を書くことのために
initial
begin
in_ram [0] <= 32'b11111111_000000000000000000000000;
in_ram [1] <= 32'b10010111_000000000000000000000000;
in_ram [2] <= 32'b00110110_000000000000000000000000;
in_ram [3] <= 32'b00111110_000000000000000000000000;
in_ram [4] <= 32'b00111111_000000000000000000000000;
in_ram [5] <= 32'b00111110_000000000000000000000000;
end
しかし、そのあまりにも疲れる:
の$ readmembについて知る前に、私はこのコードを使用していましたこのファイルを読み込む目的は、最初にトップモジュールに1つずつ100バイナリ値(10x10画像のピクセル強度をシミュレートする)をロードすることです(後で処理して結果を吐き出す...)
私はxxxxxxxxxxxxxxxxxでいっぱいのModelSimを見せてメモリ(気にしない)、私がシミュレートすると、まさにこの
11111111000000000000000000000000
10010111000000000000000000000000
00110110000000000000000000000000
00111110000000000000000000000000
00111111000000000000000000000000
のような内容になります.txtファイルを作成し、それがメモリには何もロードされていないように見えます。
私は何が間違っているのか分かりません。おそらく、.txtファイル内の数字の削除はありません。テストベンチではない別のモジュールで$ readmembを使ってファイルを読み込もうとしているからでしょうか?
PD:私が実際に行っているメモリを埋めるこのプロセスのシミュレーション、最終的な意図は、QSYSを使って行うと思われる完全なSoCにTopモジュールデザインを置くことです。しかし、私はこれでとても新しいので、私はまだ勉強しています。どんな助けでも大歓迎です!
それは私には大丈夫だとうまくいきます。 [http://www.edaplayground.com/x/5kxx](http://www.edaplayground.com/x/5kxx) –
@hexafraction私はこのようなメモリ番号を付けることはかなり普通のことだと言っていたでしょう: 'reg [31 :0] in_ram [0:4]; '。 –