加法器电路的设计

更新时间:2023-05-20 04:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

加法器电路的设计

9.1 加法器设计 应用 地位 实现 级联加法器 并行加法器

数字信号处理和数字通信影响系统的运行速度

超前进位加法器 流水线加法器

加法器电路的设计

9.1.1 级连加法器 结构 由1位全加器级连

优点 缺点a[0] b[0]

结构简单延时太长a[1] b[1] a[7] b[7]

cin

1位 全加器sum[0]

cin[1]

1位 全加器sum[1]

cin[7]

1位 全加器sum[7]

cout

加法器电路的设计

【例9.1】8位级联加法器 module add_jl( sum, cout, a, b, cin ); output[7:0] sum; output cout; input[7:0] a, b;

input cin;

加法器电路的设计

full_add1 f0( a[0], b[0], cin, sum[0], cin1 ); full_add1 f1( a[1], b[1], cin1, sum[1], cin2 );

full_add1 f2( a[2], b[2], cin2, sum[2], cin3 );full_add1 f3( a[3], b[3], cin3, sum[3], cin4 ); full_add1 f4( a[4], b[4], cin4, sum[4], cin5 ); full_add1 f5( a[5], b[5], cin5, sum[5], cin6 ); full_add1 f6( a[6], b[6], cin6, sum[6], cin7 );

full_add1 f7( a[7], b[7], cin7, sum[7], cout );endmodule

加法器电路的设计

a b

s1 sum

m1

c

m2

cout

m3

1位全加器门级结构原理图

加法器电路的设计

module full_add1( a, b, cin, sum, cout );input a, b, cin; output sum, cout; wire s1, m1, m2, m3; and ( m1, a, b ), ( m2, b, cin ), ( m3, a, cin);

xor ( s1, a, b ), ( sum, s1, cin );or ( cout, m1, m2, m3 ); endmodule

加法器电路的设计

8位级联加法器RTL图

加法器电路的设计

9.1.2 并行加法器 结构用加法运算符描述 由EDA软件综合

优点运算速度快

加法器电路的设计

【例9.2】8位并行加法器

module add_bx( cout, sum, a, b, cin );output[7:0] sum; output cout; input[7:0] a, b; input cin;

assign { cout, sum } = a + b + cin; endmodule

加法器电路的设计

8位并行加法器RTL图

加法器电路的设计

9.1.3 超前进位加法器 结构引入超前进位链

优点运算速度快

加法器电路的设计

设计思路 1位全加器

SUM = A⊕B⊕Cin = AB⊕(A⊕B )⊕CinCout = AB+(A+B) Cin 令 G = AB P = A+B 进位产生 进位传输

则 SUM = G⊕P⊕Cin,

Cout = G+PCin

加法器电路的设计

4位全加器 C0 = Cin

C1 = G0+P0C0 = G0+P0CinC2 = G1+P1C1 = G1+P1G0+P1P0Cin C3 = G2+P2C2 = G2+P2G1+P2P1G0+P2P1P0Cin C4 = G3+P3C3

= G3+P3G2+ P3P2G1+P3P2P1G0+P3P2P1P0CinCout = C4

加法器电路的设计

【例9.3】8位超前进位加法器 module add_ahead( sum, cout, a, b, cin);

output[7:0] sum; // 和output cout; input[7:0] a, b; input cin;

wire[7:0] G, P; // 进位产生,进位传输wire[7:0] C; // 进位

加法器电路的设计

assign G[0] = a[0] & b[0]; assign P[0] = a[0] | b[0]; assign C[0] = cin; assign sum[0] = G[0] ^ P[0] ^ C[0];assign G[1] = a[1] & b[1];

assign P[1] = a[1] | b[1]; assign C[1] = G[0] | ( P[0] & C[0] ); assign sum[1] = G[1] ^ P[1] ^ C[1];assign G[2] = a[2] & b[2]; assign P[2] = a[2] | b[2];

assign C[2] = G[1] | ( P[1] & C[1] ); assign sum[2] = G[2] ^ P[2] ^ C[2];

加法器电路的设计

assign G[3] = a[3] & b[3]; assign P[3] = a[3] | b[3]; assign C[3] = G[2] | ( P[2] & C[2] ); assign sum[3] = G[3] ^ P[3] ^ C[3];assign G[4] = a[4] & b[4];

assign P[4] = a[4] | b[4]; assign C[4] = G[3] | ( P[3] & C[3] ); assign sum[4] = G[4] ^ P[4] ^ C[4];assign G[5] = a[5] & b[5]; assign P[5] = a[5] | b[5];

assign C[5] = G[4] | ( P[4] & C[4

] ); assign sum[5] = G[5] ^ P[5] ^ C[5];

加法器电路的设计

assign G[6] = a[6] & b[6];

assign P[6] = a[6] | b[6]; assign C[6] = G[5] | ( P[5] & C[5] ); assign sum[6] = G[6] ^ P[6] ^ C[6];assign G[7] = a[7] & b[7]; assign P[7] = a[7] | b[7];

assign C[7] = G[6] | ( P[6] & C[6] ); assign sum[7] = G[7] ^ P[7] ^ C[7]; assign cout = G[7] | ( P[7] & C[7] ); endmodule

加法器电路的设计

8位超前进位加法器RTL图

加法器电路的设计

9.1.4 流水线加法器 结构加入寄存器暂存中间结果

优点提高了系统的运行频率

加法器电路的设计

三种加法器的比较级连 加法器 16 并行 加法器 10 超前进位 加法器 16

EPF10K10LC84-3 资源耗用(LC)

运行速度(ns)

26.7

15.3

26.7

本文来源:https://www.bwwdw.com/article/k0e4.html

Top