Verilog記述の間違いが見つかりました。

と言っても回路記述ではなくテストベンチの方でした。

メモリへの書き込みがライトイネーブルに関係なく、クロックの立ち上がりで書き込んでいました。

どうも自分の頭の中では、メモリに書くのもハードがやることだから回路記述だけでいつ書くか決めているような思い込みがあったのですが、CPUは書き込みデータとライトイネーブルを出すだけで、メモリの方でライトイネーブルでないと書き込まないという制御が必要でした。そしてその部分はテストベンチでした。

残る練習問題3題をやったところコンパイルは通りましたが結果が正しくでません。明日以降じっくり見直しするつもりです。

テストベンチが何をしているか確認してから入力し、コンパイル、シミュレーションしてみました。

が、残念ながら正しい結果が出ません。

プログラムは短いので多分間違ってないと思うのですが。ちなみにRAMから値を2つ読み出してA or (A-B)を計算しRAMに書き込むプログラムです。

プログラムに問題がなければVerilog記述のどこがおかしいのか1つ1つ調べないといけません。ちょっとやっかいなことになりました。

休暇期間目一杯かかるかもしれませんが、ここが山場なのでがんばります。

仕事でばたばたしていたら結局1ヶ月以上間が空いてしまいました。

POCOのVerilog記述を読み直し、納得ができたところでコード入力をしました。

改めて感じたのは、同じような信号名であっても単に接続する配線だったり、処理をして値を決めなければいけなかったりしてVerilogでどの位記述するかにかなり差が出ることがあるということです。

頭で考えると難しいですが接続図を見ながらなら自然に分かります。ハードの記述では接続図を作るのが大事なんですね。