8位硬件乘法器设计 联系客服

发布时间 : 星期日 文章8位硬件乘法器设计更新完毕开始阅读a6aa6e25580102020740be1e650e52ea5518ce21

学生实验报告

系别 电子信息学院 班级 14无线技术 姓名 王汉生 学号 2014010301032 成绩 课程名称 《EDA综合实验》 实验名称 8位硬件乘法器设计 实验时间 2016年10 月31 日 指导教师 王红航 批改时间 2016年 月 日 报 告 内 容 一、实验目的和任务 1.学习应用移位相加原理设计8位乘法器。 2.了解移位相加原理构成乘法器与用组合逻辑电路直接设计的同样功能的电路优势。 二、实验原理介绍 图1 8位乘法器逻辑原理图 图2 8位移位相加乘法器运算逻辑波形图 三、设计代码(或原理图)、仿真波形及分析 1.基于时序电路的移位相加乘法器-16位移位寄存器 module sreg(clk,clr,d,q); input clk,clr; input [8:0] d; output[15:0] q; reg[15:0] reg16; always@(posedge clk or posedge clr) begin if(clr) reg16<=16'b0; else begin reg16[6:0]<=reg16[7:1]; //移位相加_16位移位寄存器 reg16[15:7]<=d; end end assign q=reg16; endmodule 2.基于时序电路的移位相加乘法器-8位移位寄存器 module shift8(clk,load,A,qb); input clk,load; input [7:0] A; output qb; reg[7:0] reg8; always@(posedge clk or posedge load) begin if(load) reg8<=A; else reg8[6:0]<=reg8[7:1]; //移位相加_8位二进制加法器 end assign qb=reg8[0]; endmodule 3.基于时序电路的移位相加乘法器-1位乘法器 module andarith(abin,B,dout); input abin; input [7:0] B; output reg[7:0] dout; reg[3:0] i; always@(*) begin for(i=0;i<=7;i=i+4'b1) dout[i]<=B[i]&abin; end endmodule 4.基于时序电路的移位相加乘法器-8位加法器 module adder8(cin,A,B,S,cout); input cin; input[7:0] A,B; output[7:0] S; output cout; assign {cout,S}=cin+A+B; endmodule 5.移位相加乘法器-时序电路 sregCLKINPUTVCCINPUTVCCclkd[8..0]clrd[8..0]q[15..0]OUTPUTq[15..0]PIN_98PIN_97LDshift8clkloadA[7..0]INPUTVCCinst3GNDadder8d[7..0]q[15..8]qbandarithabinB[7..0]dout[7..0]cinA[7..0]B[7..0]instS[7..0]coutd[8]A[7..0]inst2PIN_19PIN_18PIN_17PIN_29PIN_13PIN_28PIN_12PIN_27PIN_10PIN_26PIN_9PIN_23PIN_8PIN_22PIN_21PIN_20B[7..0]INPUTVCCinst1PIN_72PIN_70PIN_69PIN_68PIN_67PIN_65PIN_42PIN_41PIN_39PIN_38PIN_37PIN_36PIN_33PIN_32PIN_31PIN_30 四、实验结论与心得 通过这次设计,进一步加深了对EDA的了解。特别是当每一个子模块编写调试成功时,。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了。 器件的选择也很重要,只有选择合适的器件,才能正确的编译,从而能更好的做好本次试验!