radix4_booth_multiplier
我们开始逐行分析 radix4_booth_multiplier.sv 的前 20 行代码,该模块实现了一个 基于改进型 Radix-4 Booth 编码和 Wallace 树压缩的乘法器,适用于高速乘法运算。
🧾 第 1 行:模块功能说明
// Modified radix-4 booth wallace multiplier
📘 该模块基于 Radix-4 Booth 编码并配合 Wallace Tree 做部分积压缩,实现高速乘法。
🔧 第 2–5 行:模块与参数定义
module radix4_booth_multiplier #(
parameter int unsigned WIDTH_A = 16,
parameter int unsigned WIDTH_B = 16,
parameter int unsigned WIDTH_O = WIDTH_A + WIDTH_B
)(
| 参数名 | 说明 |
|---|---|
WIDTH_A |
被乘数位宽 |
WIDTH_B |
乘数位宽 |
WIDTH_O |
输出结果总位宽(乘积最大宽度) |
🔌 第 6–11 行:输入输出端口定义
input logic [WIDTH_A-1:0] operand_a,
input logic [WIDTH_B-1:0] operand_b,
// the partial products are compressed into sum_o and carry_o
output logic [WIDTH_O-1:0] sum_o,
output logic [WIDTH_O-1:0] carry_o
);
| 信号名 | 类型 | 说明 |
|---|---|---|
operand_a |
输入 | 被乘数 |
operand_b |
输入 | 乘数 |
sum_o |
输出 | Wallace 树中部分积的 sum 位输出 |
carry_o |
输出 | Wallace 树中部分积的 carry 位输出 |
⚠️ 注意:这不是最终乘法结果,而是 Wallace 树压缩器的两路输出,需要进一步加法器求和。
🧮 第 13 行:计算部分积数量
localparam int unsigned COUNT = (WIDTH_B+2)/2;
📌 Radix-4 Booth 每 2 位生成一个部分积,外加 2 位扩展 ⇒ 共 (WIDTH_B+2)/2 个部分积
🔁 第 17–18 行:部分积生成注释
// ---------------
// Generate partial products
这部分将调用我们之前分析的 gen_prods 模块来生成所有部分积。
🔂 第 19–20 行:声明并调用部分积生成模块
logic [COUNT-1:0][WIDTH_O-1:0] partial_prods;
gen_prods #(
- 声明
partial_prods用于存储所有部分积 - 准备调用
gen_prods模块生成它们
是否继续分析 gen_prods 的参数连接,以及 Wallace 树压缩器 csa_tree 的接入?

浙公网安备 33010602011771号