Menu
Coddy logo textTech

デフォルトでラッチを防ぐ

CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 1/38。

組み合わせ出力は、すべての入力パスで割り当てる必要があります。alwaysブロックが出力の割り当てをスキップすると、その出力は古い値を保持し、ラッチが推論される可能性があります。default割り当ての後に上書きを行うことで、網羅性が明確になります。

関連する抜粋です。周囲の宣言と接続はチャレンジで提供されます。

always @* begin
    y = 0;
    if (en) y = data;
end

default は無効化されたパスをカバーするため、出力は現在の入力のみに依存します。

すべての組み合わせ出力をすべてのパスで割り当て、条件付きの上書きの前にデフォルト値を使用します。

challenge icon

チャレンジ

中級

ゲート付きの 8 ビット出力を実装してください。en が 1 のとき、y は a と等しくなり、それ以外の場合、y は 0 になります。すべての組み合わせ論理パスで y に値を割り当ててください。出力列:y。すべての刺激値は既知の 2 進値です。

design.v を完成させ、モジュール名とポートを保持してください。ロックされた testbench.v は入力を変更し、値が安定した後に出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。設計に表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに 10 進値を 1 行に出力したもので、値は 1 つのスペースで区切り、末尾を改行で終了します。

自分で試してみよう

module dut (input en, input [7:0] a, output reg [7:0] y);
    // このプレースホルダーをあなたのデザインに置き換えてください。
    initial y = 0;
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

RTL設計と検証のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ