资源描述:
《10位的移位相加乘法器仿真》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、玉林师范学院本科生课程设计论文基于10位的移位相加乘法器的设计院系电子与通信工程学院专业通信工程学生班级通信111班姓名学号201108402132指导教师单位电子与通信工程学院指导教师姓名陈宇宁2014年6月22日基于10位的移位相加乘法器设计1.设置要求:设计一个10位的移位相加乘法器。要求作出功能和时序仿真。2.设置原理:移位相加乘法器将乘法变为加法实现,乘法通过逐次移位相加实现,每次判断乘数的最低位,若为1则将被乘数移位相加,若为0左移后以全零相加直至被乘数的最高位。为了实现NxN乘法,需要一个2N位的左移
2、寄存器,一个N位的右移寄存器,一个2N位加法器,再加少量的控制逻辑即可实现。一、新建工程:1.设置电路原理图如下:上图共包括5个子模块,shiftA,shiftB模块分别实现操作数A和B的移位,sum模块实现P+A,reg16模块存储结果,multshift_cntrl模块式控制逻辑,完成状态间的转移,并控制其他模块。2.设置参数如下:shiftA模块源代码:moduleshiftA(R,L,E,CLK,Q);input[9:0]R;inputL,E,CLK;outputreg[19:0]Q;integerK;wi
3、re[19:0]R20;assignR20={{10{1'b0}},R};always@(posedgeCLK)beginif(L)Q<=R20;elseif(E)beginQ[0]<=1'b0;for(K=1;K<20;K=K+1)Q[K]<=Q[K-1];endendendmoduleshiftB模块源代码:moduleshiftB(R,L,E,CLK,Q0,Z);input[9:0]R;inputL,E,CLK;outputQ0;outputZ;reg[9:0]Q;integerK;always@(posed
4、geCLK)beginif(L)Q<=R;elseif(E)beginfor(K=9;K>0;K=K-1)Q[K-1]<=Q[K];Q[9]<=1'b0;endendassignZ=(Q==0);assignQ0=Q[0];endmoduleSUM模块源代码:moduleSum(A,P,Psel,sum);input[19:0]A,P;inputPsel;output[19:0]sum;reg[19:0]sum;wire[19:0]AP_sum;integerK;assignAP_sum=A+P;always@(P
5、selorAP_sum)beginsum=Psel?AP_sum:20'b0;endendmoduleReg16模块源代码:modulereg16(R,CLK,Rst,E,Q);input[19:0]R;inputCLK,Rst,E;outputreg[19:0]Q;always@(posedgeCLKornegedgeRst)beginif(Rst==0)Q<=0;elseif(E)Q<=R;endendmodulemultshift_cntrl模块源代码:modulemultshift_cntrl(Clock,
6、Reset,s,z,B0,EA,EB,EP,Psel,Done);inputClock,Reset,s,z,B0;outputregDone;outputregEA,EB,EP,Psel;reg[1:0]t,Y;parameterS1=2'b00,S2=2'b01,S3=2'b10;always@(sortorz)begin:State_tablecase(t)S1:if(s==0)Y=S1;elseY=S2;S2:if(z==0)Y=S2;elseY=S3;S3:if(s==1)Y=S3;elseY=S1;def
7、ault:Y=2'bxx;endcaseendalways@(posedgeClockornegedgeReset)begin:State_flipflopsif(Reset==0)t<=S1;elset<=Y;endalways@(sortorB0)begin:FSM_outputsEA=0;EB=0;EP=0;Done=0;Psel=0;case(t)S1:EP=1;S2:beginEA=1;EB=1;Psel=1;if(B0)EP=1;elseEP=0;endS3:Done=1;endcaseendendmo
8、dule二、编译和仿真:1.编译:如图2.引脚设置:如图:Assignments---pins2.1时序仿真:设置引脚后的时序仿真图:2.2功能仿真:功能仿真图如下:点击Processing--Simulator--点击开始仿真图标StartSimulation.三、分析总结:通过这次EDA的学习设计,掌握了系统的数字电子设计的方法,解决了一些常常忽略的问题