Menu
Coddy logo textTech

飽和カウンタ

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

Fundamentalsではラップアラウンドカウンタを使用しました。飽和カウンタは代わりに境界値で停止するため、上限のあるカウントに便利です。算術更新に明示的なガードを追加し、イネーブルとリセットの動作をリミットから独立させておきます。

関連する抜粋です。周囲の宣言と接続は課題内で提供されています。

always @(posedge clk) begin
    if(rst) count <= 0;
    else if(en && count != 15) count <= count + 1;
end

最大値は保持され、ゼロには戻りません。

カウンターがラップアラウンドするのではなく飽和する必要がある場合は、境界の更新を明示的にガードします。

challenge icon

チャレンジ

中級

4ビットの飽和カウンタ q を作成してください。同期 rst によってクリアされます。有効なエッジでは15になるまでインクリメントし、その後は15を保持します。無効なエッジでも保持します。リセットが優先されます。出力列: q。すべての制御信号とデータは各クロックの立ち上がりエッジの前に安定しており、結果はその後に観測されます。

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

自分で試してみよう

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

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

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

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