二进制加法器

关注我的公众号c137Lab获取更多相关内容

在这里插入图片描述

基本 N N N 位二进制加法器由 N N N 个全加器(FA)组成,全加器的布尔方程如下:
s k = x k ⊕ y k ⊕ c k s_k=x_k\oplus y_k\oplus c_k sk=xkykck
对于 2C 加法器,最低位可以设计成半加器来减少占用。

逐位进位加法器

最简单的加法器,将 N N N 个全加器(FA)串联组成。一次计算两位,最长的延迟来自通过所有阶段的进位的脉冲。使用跳跃进位、先行进位、条件和或进位选择加法器可以降低这一延迟。

流水线加法器

DSP算法的内部数据流规则决定了在DSP解决方案中流水线技术会得到广泛运用。

流水线技术

通俗的说,流水线技术即在规模较大的逻辑电路中使用寄存器将其切分,通过缩短一个时钟周期内信号通过的长度来提高吞吐量,但是需要付出更多的功耗和面积。

下图展示了如何将组合逻辑转换为流水线逻辑。

img1

FPGA实现流水线加法器

下图展示了两种不同的实现方法:

img2

32位流水线加法器代码如下:

`timescale 1ns / 1ps

module PipelineAdder(
	input [31:0] x,
	input [31:0] y,
	
	input clk,
	
	output [31:0] sum,
	output LSB_C
    );

reg [15:0] L1, L2, s1;
reg [16:0] r1;

reg [15:0] M1, M2, r2, s2;

always@(posedge clk)
begin
	L1 <= x[15:0];
	L2 <= y[15:0];

	M1 <= x[31:16];
	M2 <= y[31:16];

    r1 <= {1'b0 + L1} + {1'b0 + L2};
	r2 <= M1 + M2;

	s1 <= r1[15:0];

	s2 <= r1[16] + r2;
	
end

assign LSB_C = r1[16];
assign sum = {s2, s1};

endmodule

模加法器

模加法器是RNS-DSP设计中最重要的构建模块,既可以用于加法,也可以通过索引算法用于乘法。

目前有多种模加法器设计,在此不一一介绍,下图展示两种分别基于MPX和ROM的流水线式模加法器。

img3

尽管ROM提供了很高的速度,但是ROM本身产生了4个周期的流水线延迟。多路复用器的速度相对较慢。流水线版本通常能够实现3倍速度。在3级流水线和6位宽的通道上实现加法器时会出现最大吞吐量。

参考文献:

[1]:Digital Signal Processing with Field Programmable Gate Arrays --U.Meyer-Baese

[2]:Verilog数字系统设计教程(第二版)–夏宇闻

猜你喜欢

转载自blog.csdn.net/verse_monger/article/details/106359011
今日推荐