EDA技术与Verilog设计王金明版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sum=((ab)(a+b)+ab(a+b)) cin
sum=(ab) (a+b) cin
8位超前进位加法器
module add_ahead(sum,cout,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; wire[7:0] G,P; wire[7:0] C,sum; assign G[3]=a[3]&b[3]; assign P[3]=a[3]|b[3]; assign sum[3]=G[3]^P[3]^C[3]; assign C[4]=G[3]|(P[3]&C[3]); assign G[4]=a[4]&b[4]; assign P[4]=a[4]|b[4]; assign sum[4]=G[2]^P[2]^C[2]; assign C[5]=G[4]|(P[4]&C[4]); assign G[5]=a[5]&b[5]; assign P[5]=a[5]|b[5]; assign sum[5]=G[5]^P[5]^C[5]; assign C[6]=G[5]|(P[5]&C[5]);
结构描述方 式实现
8位级连加法器
1)速度特性: N位级联加法器运算的延时是1位全 加器的N倍,延时时间较长,不适宜在 需要高性能的设计中采用; 2)资源占用: 相对较低,在EPF10K10LC84-3器件 中,耗费16个LC单元。
8位并行加法器
module add_bx(cout,sum,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; assign {cout,sum}=a+b+cin; endmodule
assign G[7]=a[7]&b[7]; assign P[7]=a[7]|b[7]; assign sum[7]=G[7]^P[7]^C[7]; assign cout=G[7]|(P[7]&C[7]); Endmodule
8位超前进位加法器
速度特性: 各个进位间彼此独立,将进位级联传 播去掉了,减少了进位产生的延迟时间。 因此速度快,优于级联加法器; 资源占用: 本例在EPF10K10LC84-3器件中,耗费 16个LC单元,跟级联加法器差不多。
assign C[0]=cin; assign G[0]=a[0]&b[0]; assign P[0]=a[0]|b[0]; assign sum[0]=G[0]^P[0]^C[0]; assign C[1]=G[0]|(P[0]&cin); assign G[1]=a[1]&b[1]; assign P[1]=a[1]|b[1]; assign sum[1]=G[1]^P[1]^C[1]; assign C[2]=G[1]|(P[1]&C[1]);
assign G[2]=a[2]&b[2]; assign P[2]=a[2]|b[2]; assign sum[2]=G[2]^P[2]^C[2]; assign C[3]=G[2]|(P[2]&C[2]);
assign G[6]=a[6]&b[6]; assign P[6]=a[6]|b[6]; assign sum[6]=G[6]^P[6]^C[6]; assign C[7]=G[6]|(P[6]&C[6]);
8位并行加法器
时间特性: 运算速度快,并且实现容易。 资源占用: 耗用资源多,特别当加法运算的位数 较宽的时候,资源耗费会很大。本例在 EPF10K10LC84-3器件中,耗费22个LC单 元。
8位超前进位加法器
前期推导: 由一位全加器的真值表可得: sum=a b cin cout=ab+acin+bcin 先对sum的表达式进行推导: sum=a b cin
9.1 加法器
级连加法器
并行加法器
加法器
组合电路实现
超前进位加法器
流水线加法器Βιβλιοθήκη 时序电路实现(1)8位级连加法器
通过进位位的互联实现多位加法器的实现
8位级连加法器
module add_jl(sum,cout,a,b,cin); input[7:0] a,b; input cin; output[7:0] sum; output cout; 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
sum=(ab+ab) cin sum=(aa+ab+ab+bb+aabb) cin sum=(a(a+b)+b(a+b)+abab) cin sum=((a+b)(a+b)+ab(ab)) cin 超前进位推导: 1)对于第一位的1位全加器,相加结果 及进位可表示如下: sum0=(a[0]b[0]) (a[0]+b[0]) cin; c1=a[0]b[0]+(a[0]+b[0])cin; 设 G0= a[0]b[0] P0= a[0]+b[0] 则sum0=G0 P0 Cin; c1=G0+P0cin; 2) 再下一位的1位全加器: sum1=a[1]b[1] (a[1]+b[1]) c1; c2=a[1]b[1]+(a[1]+b[1])c1; 设G1= a[1]b[1] P1= a[1]+b[1]; 再将1)中c1的表达式代入,则有: sum1==G0 P0 (G0+P0cin); C2=G1+P1G0+P1P0cin;
相关文档
最新文档