棋子 · 2月12日

老李带你看菜谱— stx_cookbook 之 addsub (三)

在数字电路设计中,加法器与减法器是最基本且应用带有场景的运算模块。addsub模块是一个适用于广泛场景的加减法实现,支持加法和减法操作,并通过自定义参数提供两种不同的实现方式。以下将对该模块进行分析。

module addsub (sub,a,b,o);
parameter WIDTH = 16;
parameter METHOD = 1;
input sub;
input [WIDTH-1:0] a,b;
output [WIDTH:0] o;
generate
  if (METHOD == 0) begin
    // generic style
    assign o = sub ? (a - b) : (a + b);
  end
  else if (METHOD == 1) begin
    // Hardware implementation with XORs in front of a
    // carry chain.
    wire [WIDTH+1:0] tmp;
    assign tmp = {1'b0,a,sub} + {sub,{WIDTH{sub}} ^ b,sub};
    assign o = tmp[WIDTH+1:1];
  end
endgenerate
endmodule

模块功能

addsub模块的核心功能可表示为:

输入与输出

输入

  • sub:控制信号,决定是执行加法(sub=0)还是减法(sub=1)。
  • ab:两个操作数,位宽为  WIDTH

输出

  • o:加法或减法结果,位宽为  WIDTH + 1,以支持可能的进位或借位。

两种实现方式

该模块通过参数  METHOD决定采用的硬件实现方式:

方法 1:通用实现(METHOD == 0
assign o = sub ? (a - b) : (a + b);
  • 逻辑说明
  1. 通过条件运算符实现。根据  sub的值选择执行加法或减法。
  2. 减法通过 Verilog 内置的减法运算符实现。
  • 特点
  1. 简单直观:该方式依赖于综合工具的优化,逻辑清晰。
  2. 依赖工具优化:具体的硬件实现由综合工具决定,可能利用加法器链加上补码来实现减法。
  • 优缺点
  1. 优点:代码简单,易于理解和维护。综合工具可根据具体的 FPGA 或 ASIC 平台进行优化。
  2. 缺点:对具体硬件平台的适配性可能较弱,性能依赖于综合工具。
方法 2:硬件优化实现(METHOD == 1
wire [WIDTH+1:0] tmp;
assign tmp = {1'b0,a,sub} + {sub,{WIDTH{sub}} ^ b,sub};
assign o = tmp[WIDTH+1:1];
  • 逻辑说明
  1. 硬件路径基于二进制补码的原理
  2. 减法A−B可以通过A+(∼B+1)实现。
  3. 将∼B转化为sub对B的按位异或:{WIDTH{sub}} ^ b这里有个基础知识点,即一个数与0异或还是它本身,与1异或就是取反。
  4. tmp 是一个临时变量,包含:第一部分{1'b0, a, sub}:带符号扩展的A和sub。第二部分{sub, {WIDTH{sub}} ^ b, sub}:对B处理后的值。两部分相加后,结果通过tmp[WIDTH+1:1]输出,去掉不需要的符号位。这里有一个小技巧,当sub为1的时候,注意看第0位是1+1,会进位到第1位一个1,这个1就是B取反加1的1。这样当我们把最终的结果取高位舍去第0位的时候,就实现了A+(∼B+1)。
  • 特点
  1. 加法链优化
    硬件结构中采用统一的加法器链,通过 XOR 和补位实现加减法切换。
  2. 节省资源
    共享一条加法器,同时处理加法和减法。
  • 优缺点
  1. 优点
  2. 针对硬件优化,延迟更低,资源使用更高效。
  3. 可直接映射到 FPGA 或 ASIC 加法器,适合高性能应用。
  4. 缺点
  5. 电路复杂度高于METHOD 0,可能需要更多的验证和调试。
  6. 对于非加法链支持的硬件平台,可能不如通用实现高效。
通用路径与硬件优化路径的对比

image.png

总结

addsub模块是一种设计灵活、高效的加减法实现。通过参数化设计和两种实现方式,模块适用于广泛的数字电路应用场景。其硬件优化路径(METHOD 1)在高性能场景中尤其具有优势。

END

作者:硅谷老李
文章来源:IC加油站

推荐阅读

更多 IC 设计干货请关注IC 设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
21036
内容数
1326
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息