资源描述:
《第94章Verilog设计进阶ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章Verilog设计进阶9.1加法器设计◆级连加法器◆数据流描述的加法器◆超前进位加法器◆流水线加法器(1)级连加法器结构简单,n倍延时,主要是进位信号级连造成。moduleadd_jl(sum,cout,a,b,cin);input[7:0]a,b;inputcin;output[7:0]sum;outputcout;full_add1f0(a[0],b[0],cin,sum[0],cin1);//级连描述full_add1f1(a[1],b[1],cin1,sum[1],cin2);full
2、_add1f2(a[2],b[2],cin2,sum[2],cin3);full_add1f3(a[3],b[3],cin3,sum[3],cin4);full_add1f4(a[4],b[4],cin4,sum[4],cin5);full_add1f5(a[5],b[5],cin5,sum[5],cin6);full_add1f6(a[6],b[6],cin6,sum[6],cin7);full_add1f7(a[7],b[7],cin7,sum[7],cout);endmodule8位级连加法器
3、代码(2)数据流描述的加法器moduleadd_bx(cout,sum,a,b,cin);parameterWIDTH=8;inputcin;outputcout;input[WIDTH-1:0]a,b;output[WIDTH-1:0]sum;assign{cout,sum}=a+b+cin;endmodule全部由逻辑门实现,级联超前进位加法器超前进位链能有效减少进位的的延时令G=ab,P=a+b,比级联加法器耗用资源更多(3)8位超前进位加法器moduleadd_ahead(sum,cout,
4、a,b,cin);input[7:0]a,b;inputcin;output[7:0]sum;outputcout;wire[7:0]G,P;wire[7:0]C,sum;assignG[0]=a[0]&b[0];assignP[0]=a[0]
5、b[0];assignC[0]=cin;assignsum[0]=G[0]^P[0]^C[0];assignG[1]=a[1]&b[1];assignP[1]=a[1]
6、b[1];assignC[1]=G[0]
7、(P[0]&cin);assignsum[1]
8、=G[1]^P[1]^C[1];assignG[2]=a[2]&b[2];assignP[2]=a[2]
9、b[2];assignC[2]=G[1]
10、(P[1]&C[1]);assignsum[2]=G[2]^P[2]^C[2];assignG[3]=a[3]&b[3];assignP[3]=a[3]
11、b[3];assignC[3]=G[2]
12、(P[2]&C[2]);assignsum[3]=G[3]^P[3]^C[3];assignG[4]=a[4]&b[4];assignP[4]=a[4]
13、b[4
14、];assignC[4]=G[3]
15、(P[3]&C[3]);assignsum[4]=G[2]^P[2]^C[2];assignG[5]=a[5]&b[5];assignP[5]=a[5]
16、b[5];assignC[5]=G[4]
17、(P[4]&C[4]);assignsum[5]=G[5]^P[5]^C[5];assignG[6]=a[6]&b[6];assignP[6]=a[6]
18、b[6];assignC[6]=G[5]
19、(P[5]&C[5]);assignsum[6]=G[6]^P[6]^C[6
20、];assignG[7]=a[7]&b[7];assignP[7]=a[7]
21、b[7];assignC[7]=G[6]
22、(P[6]&C[6]);assignsum[7]=G[7]^P[7]^C[7];assigncout=G[7]
23、(P[7]&C[7]);endmodule(4)流水线加法器流水线设计技术(Pipeline)基本思想:在逻辑电路中加入若干寄存器来暂存中间结果,虽然多用了一些寄存器资源,但减少了每一级组合电路的延时,因此可提高整个加法器的运行频率。(4)流水线加法器-10.2modul
24、eadder8(cout,sum,a,b,cin,enable);input[7:0]a,b;inputcin,enable;output[7:0]sum;reg[7:0]sum;outputcout;regcout;reg[3:0]tempa,tempb,firsts;regfirstc;always@(posedgeenable)begin{firstc,firsts}=a[3:0]+b[3:0]+cin;tempa=a[7:4];tempb=b[7:4];end