资源描述:
《eda技术与verilog设计第9章课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章Verilog数字电路设计9.1加法器◆级连加法器◆并行加法器◆超前进位加法器◆流水线加法器(1)8位级连加法器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_add1f2(a[2],b[2],cin2,sum[2],cin3);full_add1f3(a[3],b[3],cin3,
2、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位级连加法器代码(2)并行加法器moduleadd_bx(cout,sum,a,b,cin);input[7:0]a,b;inputcin;output[7:0]sum;outputcout;assign
3、{cout,sum}=a+b+cin;endmodule全部由逻辑门实现(3)8位超前进位加法器moduleadd_ahead(sum,cout,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]
4、b[0];assignC[0]=cin;assignsum[0]=G[0]^P[0]^C[0];assignG[1]=a[1]&b[1];assignP[1]=a[1]
5、b[1]
6、;assignC[1]=G[0]
7、(P[0]&cin);assignsum[1]=G[1]^P[1]^C[1];assignG[2]=a[2]&b[2];assignP[2]=a[2]
8、b[2];assignC[2]=G[1]
9、(P[1]&C[1]);assignsum[2]=G[2]^P[2]^C[2];assignG[3]=a[3]&b[3];assignP[3]=a[3]
10、b[3];assignC[3]=G[2]
11、(P[2]&C[2]);assignsum[3]=G[3]^P[3]^C[3];assignG[4]=a[4]&b[4];assignP[4]=a
12、[4]
13、b[4];assignC[4]=G[3]
14、(P[3]&C[3]);assignsum[4]=G[2]^P[2]^C[2];assignG[5]=a[5]&b[5];assignP[5]=a[5]
15、b[5];assignC[5]=G[4]
16、(P[4]&C[4]);assignsum[5]=G[5]^P[5]^C[5];assignG[6]=a[6]&b[6];assignP[6]=a[6]
17、b[6];assignC[6]=G[5]
18、(P[5]&C[5]);assignsum[6]=G[6]^P[6]^C[6];assignG[7]=a[7]&b[7];ass
19、ignP[7]=a[7]
20、b[7];assignC[7]=G[6]
21、(P[6]&C[6]);assignsum[7]=G[7]^P[7]^C[7];assigncout=G[7]
22、(P[7]&C[7]);endmodule(4)流水线加法器moduleadder8(cout,sum,a,b,cin,enable);input[7:0]a,b;inputcin,enable;output[7:0]sum;outputcout;regcout;reg[7:0]sum;reg[3:0]tempa,tempb,firsts;regfirstc;always@(posedg
23、eenable)begin{firstc,firsts}=a[3:0]+b[3:0]+cin;tempa=a[7:4];tempb=b[7:4];endalways@(posedgeenable)begin{cout,sum[7:4]}=tempa+tempb+firstc;sum[3:0]=firsts;endendmodule9.2乘法器◆并行乘法器◆移位相加◆查找表◆加法树modulemult(outcome,a,b);parametersize=8;input[size:1]a,b;output[2*size:1]outcome;assignoutcome
24、=a*b;