[RTLLM-p016] Arithmetic/Accumulator/accu
序列資料累加模組
題目說明
請設計一個名為 accu 的 Verilog 模組,用於對序列輸入的 8 位元資料進行累加。
當 valid_in 為 1 時,表示 data_in 為有效輸入資料。模組需累積 4 筆有效輸入資料,並將其總和輸出至 data_out。
當累積滿 4 筆資料時,valid_out 應輸出為 1,且僅維持 1 個時脈週期,表示 data_out 為有效結果。在尚未累積滿 4 筆資料之前,不應輸出有效結果。
模組介面 (Module Interface)
| 埠 (Port) | 方向 (Direction) | 位元寬度 (Width) | 描述 (Description) |
|---|---|---|---|
clk |
輸入 (input) | 1 | 同步時脈訊號 |
rst_n |
輸入 (input) | 1 | 低有效重置信號 |
data_in |
輸入 (input) | 8 | 8 位元輸入資料 |
valid_in |
輸入 (input) | 1 | 輸入資料有效訊號 |
valid_out |
輸出 (output) | 1 | 累積滿 4 筆資料時輸出為 1(僅維持 1 個時脈週期) |
data_out |
輸出 (output) | 10 | 四筆輸入資料的累加總和 |
設計要求與提示
- 模組名稱: 您的設計模組名稱必須為
accu。 - 資料有效條件: 僅當
valid_in為 1 時,data_in才視為有效資料。 - 累加方式: 每收到 4 筆有效輸入資料,即計算四筆資料的總和並輸出至
data_out。 - 輸出時機: 只有在累積滿 4 筆資料時才輸出結果,其餘時間
valid_out應維持為 0。 - 有效訊號:
valid_out在輸出累加結果時拉高為 1,且僅持續一個時脈週期。 - 輸出位元寬度:
data_out為 10 位元,可容納四個 8 位元資料相加的最大值(255 × 4 = 1020)。
程式設計模板 (Code Template)
module accu (
input clk,
input rst_n,
input [7:0] data_in,
input valid_in,
output valid_out,
output [9:0] data_out
);
// 在此處填寫您的程式碼
endmodule
評論