[RTLLM-p005] Arithmetic/Adder/adder_bcd
4 位元 BCD 加法器
題目說明
請設計一個名為 adder_bcd 的 Verilog 模組,實作一個 4 位元 BCD 加法器。
模組輸入兩個 BCD 格式的十進位數字,以及一個進位輸入 Cin。
BCD 使用 4 個二進位位元表示一個十進位數字:
| Decimal | BCD |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| ... | ... |
| 9 | 1001 |
因此 BCD 不允許:
1010 ~ 1111
這些二進位值不是合法的 BCD。
模組需要先進行一般二進位加法,再根據結果進行 BCD 修正。
模組介面
| 埠 | 方向 | 位元寬度 | 描述 |
|---|---|---|---|
A |
input | 4 | 第一個 BCD 數字 |
B |
input | 4 | 第二個 BCD 數字 |
Cin |
input | 1 | 初始進位輸入 |
Sum |
output | 4 | 修正後 BCD 結果 |
Cout |
output | 1 | 十進位進位輸出 |
設計要求與提示
- 模組名稱: 必須為
adder_bcd。 - 第一階段: 計算:
A + B + Cin
- 第二階段: 若結果大於 9,加入:
6 (4'b0110)
進行 BCD Correction。
- 第三階段: 若超過單一十進位位數,輸出
Cout=1。
程式設計模板
module adder_bcd (
input [3:0] A,
input [3:0] B,
input Cin,
output [3:0] Sum,
output Cout
);
// 在此處填寫您的程式碼
endmodule
評論