組み合わせROMテーブル
CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 21/38。
固定ルックアップテーブルは、アドレスからデータへの読み取り専用のマッピングを表します。完全な case または function で内容を表現できます。組み合わせ読み出しでは、クロックを待たずにアドレスを変更すると出力が変わります。合成ツールが実装を選択するため、このソースは特定の FPGA メモリプリミティブを保証しません。
関連する抜粋です。周囲の宣言と接続は課題内で提供されています。
function [7:0] lookup;
input [1:0] addr;
begin
case(addr)
0: lookup=3;
1: lookup=5;
2: lookup=8;
3: lookup=13;
default: lookup=0;
endcase
end
endfunctionすべてのアドレスは定義された定数を選択し、以前の出力が保持されることはありません。
すべてのテーブルエントリを指定し、組み合わせ論理によるルックアップとレジスタ付き読み出しのレイテンシを区別します。
チャレンジ
中級組み合わせ論理による8エントリのルックアップテーブルを実装してください。アドレス0から7は、それぞれ3,5,8,13,21,34,55,89を返します。完全なcaseベースのfunctionを使用して y を駆動してください。出力列: y。すべての刺激値は既知の2進値です。
design.vを完成させ、モジュール名とポートを維持してください。ロックされたtestbench.vは入力の変化を与え、値が安定した後に出力を表示します。+CASE=1のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。設計に出力、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、各観測につき10進値を1行に1つずつ、値の間を1つの空白で区切り、改行で終える形式です。
自分で試してみよう
module dut (input [2:0] addr, output [7:0] y);
// このプレースホルダーをあなたの設計に置き換えてください。
assign y = 0;
endmoduleこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
RTL設計と検証のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ