復習 - デュアルリードバンク
CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 25/38。
チャレンジ
中級1クロックで書き込みを行い、古いデータを読み出す2つのレジスタ出力 qa と qb を備えた、8ビットワード4個を実装してください。we は waddr に書き込みます。同期 rst は qa と qb のみをクリアします。それ以外の場合、re によって raddr_a と raddr_b からの両方の読み出しが有効になります。読み出しが無効な場合は値を保持します。同じエッジでの書き込みによって、これらの読み出しで取得される古い値が変わることはありません。テストでは、読み出しの前にワードを初期化します。出力列は qa、qb です。すべての制御信号とデータは各立ち上がりクロックエッジの前に安定しており、結果はその後に観測されます。
design.v を完成させ、モジュール名とポートを維持してください。ロックされた testbench.v は入力を変更し、安定した後の出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。設計に表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに10進値の行を1行ずつ出力し、値は1つのスペースで区切り、改行で終わります。
自分で試してみよう
module dut (input clk, input rst, input we, input re, input [1:0] waddr, input [1:0] raddr_a, input [1:0] raddr_b, input [7:0] data, output reg [7:0] qa, output reg [7:0] qb);
// このプレースホルダーをあなたの設計に置き換えてください。
initial qa = 0;
initial qb = 0;
endmoduleRTL設計と検証のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ