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 的接入?

posted @ 2025-05-04 17:21  江左子固  阅读(116)  评论(0)    收藏  举报