[RTLLM-p009] Arithmetic/Multiplier/multi_booth_8bit
8 位元 Radix-4 Booth 乘法器
題目說明
請設計一個名為 multi_booth_8bit 的 Verilog 模組,使用 Radix-4 Booth 演算法完成兩個 8 位元輸入資料的乘法運算。
模組輸入:
a:8 位元被乘數b:8 位元乘數
並輸出:
p:16 位元乘法結果rdy:完成旗標
此乘法器需要透過 Clock 控制,在多個 cycle 中完成運算。
當乘法完成時:
rdy = 1
表示:
p
中的結果有效。
模組介面
| 埠 | 方向 | 位元寬度 | 描述 |
|---|---|---|---|
clk |
input | 1 | Clock 訊號 |
reset |
input | 1 | Reset 訊號 (High Active) |
a |
input | 8 | 被乘數 |
b |
input | 8 | 乘數 |
p |
output | 16 | 乘法結果 |
rdy |
output | 1 | 運算完成旗標 |
設計要求
- 模組名稱:
multi_booth_8bit
- 使用 Booth multiplication algorithm。
- 不可直接使用:
*
完成乘法。
- 使用 clock 逐步完成運算。
運算流程
Reset 時:
- 初始化內部 register。
- 清除完成訊號。
正常運作時:
- 根據 multiplier bit 判斷 Booth 編碼。
- 執行部分乘積累加。
- 進行 shift 操作。
- Counter 累積計算次數。
當計算完成:
rdy = 1
並輸出:
p = a × b
程式設計模板
module multi_booth_8bit (
input clk,
input reset,
input signed [7:0] a,
input signed [7:0] b,
output signed [15:0] p,
output rdy
);
// 在此處填寫您的程式碼
endmodule
評論