加法器的实现(半加器,全加器,行波进位加法器,超前进位加法器,流水线加法器)

一、半加器和全加器

二、行波进位加法器

三、超前进位加法器(Carry-Lookahead Adder,CLA)

https://www.jianshu.com/p/6ce9cad8b467

四、流水线加法器

源文件:

`timescale 1ns / 1ps
module adder_pipeline2(
input clk,
input [7:0]a,
input [7:0]b,
input cin,
output reg[7:0]sum,
output reg cout
    );
    
reg [3:0]tem_a;
reg [3:0]tem_b;
reg [3:0]sum1;
reg cout1;
always@(posedge clk)//第一级流水线
 begin
{cout1,sum1}<=a[3:0]+b[3:0]+cin;
end

always@(posedge clk)//将输入寄存一拍
 begin
tem_a<=a[7:4];
tem_b<=b[7:4];
end

always@(posedge clk)//第二级流水线
{cout,sum}<={{1'b0,tem_a}+{1'b0,tem_b}+cout1,sum1};
endmodule

测试文件: 

`timescale 1ns / 1ps
module tb_adder2pipeline;
reg clk;
reg [7:0]a;
reg [7:0]b;
reg cin;
wire [7:0]sum;
wire cout;
initial
clk=0;
always #10clk=~clk;

always@(posedge clk)begin
a<={$random}%255;
b<=2+{$random}%250;
cin<={$random}%2;
end

adder_pipeline2 u_adder(
.clk(clk),
.a(a),
.b(b),
.cin(cin),
.cout(cout),
.sum(sum)
);
endmodule

仿真波形:

两级流水线,加法器的和延迟两个周期输出结果。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值