Android实现简单的加法器,加法器的实现

verilog实现加法器,从底层的门级电路级到行为级,本文对其做出了相应的阐述。

1、一位半加器

所谓半加器就是有两个输入,两个输出,不考虑进位。其真值表如下:

A

B

S

C

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

由此,我们可以得到S=A^B,C=A&B。用相应的与门、异或门来实现半加器。

对应的Verilog代码如下:

module half_add_1(

A,

B,

S,

C);

input A,B;

output S,C;

assign S=A^B;

assign C=A&B;

endmodule

2、一位全加器

全加器包含三个输入,两个输出,其中包含一个进位。

2.1 实现方式一

与半加器类似画出其真值表,进一步通过画卡诺图得到相应的函数表达式。

S=A^ B^cin,co=(A&B)|(A&cin)|(B&cin)。

2.2 实现方式二

利用两个半加器和一个或门实现全加器。其电路结构图如下:

33f866fa822b

全加器.png

module full_add_1_gate(

A,

B,

cin,

S,

co);

input A,B,cin;

output S,co;

wire S,co;

wire C1,C2,S1;

half_add_1 uut1(

.A(A),

.B(B),

.S(S1),

.C(C1)

);

half_add_1 uut2(

.A(cin),

.B(S1),

.S(S),

.C(C2)

);

assign co=C1|C2;

endmodule

3、多位加法器的实现

在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,对于多位宽加法器的处理,我们以逐位进位加法器为例。

代码和电路结构框图如下:

module full_add_8_gate(

A,

B,

cin,

S,

co);

input [7:0] A,B;

input cin;

output [7:0] S;

output co;

wire [7:0] C;

full_add_1_gate uut0(

.A(A[0]),

.B(B[0]),

.cin(cin),

.S(S[0]),

.co(C[0])

);

full_add_1_gate uut1(

.A(A[1]),

.B(B[1]),

.cin(C[0]),

.S(S[1]),

.co(C[1])

);

full_add_1_gate uut2(

.A(A[2]),

.B(B[2]),

.cin(C[1]),

.S(S[2]),

.co(C[2])

);

full_add_1_gate uut3(

.A(A[3]),

.B(B[3]),

.cin(C[2]),

.S(S[3]),

.co(C[3])

);

full_add_1_gate uut4(

.A(A[4]),

.B(B[4]),

.cin(C[3]),

.S(S[4]),

.co(C[4])

);

full_add_1_gate uut5(

.A(A[5]),

.B(B[5]),

.cin(C[4]),

.S(S[5]),

.co(C[5])

);

full_add_1_gate uut6(

.A(A[6]),

.B(B[6]),

.cin(C[5]),

.S(S[6]),

.co(C[6])

);

full_add_1_gate uut7(

.A(A[7]),

.B(B[7]),

.cin(C[6]),

.S(S[7]),

.co(C[7])

);

assign co=C[7];

endmodule

33f866fa822b

8位全加器.png

串行加法器限制了运行的速度,在实际应用中,我们一般用到并行加法器。大致可以分为以下几类:进位旁路加法器、线性进位选择加法器、平方根进位选择加法器、超前进位加法器、对数超前进位加法器。并行加法器比串行加法器快得多,电路结构也不太复杂,它的原理很容易理解。

3、行为级描述加法器

用Verilog HDL来描述加法器是相当容易的,只需要将运算表达式写出就可以了。

一位全加器

module full_add_1(

A,

B,

C_in,

S,

C_out);

input A,B,C_in;

output S,C_out;

assign {C_out, S}= A + B + C_in;

endmodule

八位加法器

module full_add_8(

A,

B,

C_in,

S,

C_out);

input [7:0]A,B;

input C_in;

output [7:0]S;

output C_out;

assign {C_out, S}= A + B + C_in;

endmodule

这样设计的加法器在行为仿真时是没有延时的。借助综合器,可以根据以上Verilog HDL源代码将其自动综合成典型的加法器电路结构。综合器有许多选项可供设计者选择,以控制自动生成电路的性能。设计者可以考虑提高电路的速度,也可以考虑节省电路元件以减少电路占用硅片的面积。在FPGA的库中或某工艺的ASIC库中,都有参数化的加法器供设计者选用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值