[RTLLM-p027] Control/Counter/counter_12


提交解答


分數: 5
時間限制: 2.0s
記憶體限制: 256M

作者:
題目代碼
題目類型
允許的語言
Verilog

模 12 可暫停計數器

題目說明

請設計一個名為 counter_12 的 4 位元同步計數器。

計數器的計數範圍為:

0 到 11

也就是依序產生:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, ...

輸入訊號 valid_count 用來控制是否進行計數:

  • valid_count = 1 時,計數器在每個 clk 上升沿加一。
  • valid_count = 0 時,計數器暫停,輸出 out 保持不變。
  • 當計數值為 11valid_count = 1 時,下一個計數值回到 0
  • 當低電位有效重置訊號 rst_n = 0 時,計數器立即重置為 0

模組介面

方向 位元寬度 說明
rst_n input 1 低電位有效重置訊號
clk input 1 時脈訊號
valid_count input 1 計數致能訊號
out output reg 4 目前的計數值

計數行為

重置

當:

rst_n = 0

時:

out = 0000

暫停計數

當:

rst_n = 1
valid_count = 0

時:

out 保持不變

正常計數

當:

rst_n = 1
valid_count = 1
out < 11

時:

out = out + 1

回繞

當:

rst_n = 1
valid_count = 1
out = 11

時:

out = 0

設計要求

  • 模組名稱必須為 counter_12
  • out 必須是 4 位元暫存器。
  • rst_n 為低電位有效重置。
  • Reset 時將 out 設為 4'b0000
  • valid_count = 1 時才進行計數。
  • valid_count = 0 時保持目前計數值。
  • 計數範圍為 0 到 11。
  • 從 11 再次計數時必須回到 0。
  • 時序邏輯必須使用 nonblocking assignment。

程式設計模板

module counter_12 (
    input            rst_n,
    input            clk,
    input            valid_count,
    output reg [3:0] out
);

    // Write your code here

endmodule

評論

目前沒有評論。