[RTLLM-p016] Arithmetic/Accumulator/accu


提交解答


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

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

序列資料累加模組

題目說明

請設計一個名為 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

評論

目前沒有評論。