[RTLLM-p027] Control/Counter/counter_12
模 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保持不變。 - 當計數值為
11且valid_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
評論