计组4位乘法器实验报告Word文件下载.docx
- 文档编号:19074481
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:14
- 大小:266.60KB
计组4位乘法器实验报告Word文件下载.docx
《计组4位乘法器实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《计组4位乘法器实验报告Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
1.需要设计按钮和相应开关,来增加乘数和被乘数
2.每按一下M13,给一个时钟,数码管的左边两位显示每一步的乘积
3.4步计算出最终结果后,LED灯亮,按RESET重新开始计算
三、主要仪器设备
1.Spartan-III开发板1套
2.装有ISE的PC机1台
四、操作方法与实验步骤
实验步骤:
1.创建新的工程和新的源文件
2.编写verilog代码(top模块、display模块、乘法运算模块、去抖动模块以及UCF引脚)
3.进行编译
4.进行Debug工作,通过编译。
5..生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能
操作方法:
TOP:
modulealu_top(clk,switch,o_seg,o_sel);
inputwireclk;
inputwire[4:
0]switch;
outputwire[7:
0]o_seg;
//只需七段显示数字,不用小数点
outputwire[3:
0]o_sel;
//4个数码管的位选
wire[15:
0]disp_num;
reg[15:
0]i_r,i_s;
wire[15:
0]disp_code;
wireo_zf;
//zerodetector
initial
begin
i_r<
=16'
h1122;
//0x1122
i_s<
h3344;
//0x3344
end
aluM1(i_r,i_s,switch[4:
2],o_zf,disp_code);
displayM3(clk,disp_num,o_seg,o_sel);
assigndisp_num=switch[0]?
disp_code:
(switch[1]?
i_s:
i_r);
endmodule
ALU:
modulealu(i_r,i_s,switch,o_zf,disp_code);
input[15:
input[2:
outputrego_zf;
//zerodetector
outputreg[15:
always@(switch[2:
0])
begin
case(switch)
3'
b000:
disp_code<
=i_r&
i_s;
b001:
=i_r|i_s;
b010:
=i_r+i_s;
b110:
=i_r-i_s;
b111:
=i_r<
i_s?
1:
0;
endcase
if(disp_code==16'
b0)
o_zf<
=1;
end
DISPLAY:
moduledisplay(clk,disp_num,o_seg,o_sel);
inputwire[15:
//显示的数据
outputreg[7:
//七段,不需要小数点
outputreg[3:
//4个数码管的位选
reg[3:
0]code=4'
b0;
0]count=15'
always@(posedgeclk)
case(count[15:
14])
2'
b00:
begin
o_sel<
=4'
b1110;
code<
=disp_num[3:
0];
end
2'
b01:
begin
o_sel<
b1101;
=disp_num[7:
4];
b10:
o_sel<
b1011;
=disp_num[11:
8];
b11:
b0111;
=disp_num[15:
12];
endcase
case(code)
4'
b0000:
o_seg<
=8'
b11000000;
b0001:
b11111001;
b0010:
b10100100;
b0011:
b10110000;
b0100:
b10011001;
b0101:
b10010010;
b0110:
b10000010;
b0111:
b11111000;
b1000:
b10000000;
b1001:
b10010000;
b1010:
b10001000;
b1011:
b10000011;
b1100:
b11000110;
b1101:
b10100001;
b1110:
b10000110;
b1111:
b10001110;
default:
count<
=count+1;
UCF:
Net“clk”loc=”T9”;
Net“o_seg[0]”loc=”E14”;
Net“o_seg[1]”loc=”G13”;
Net“o_seg[2]”loc=”N15”;
Net“o_seg[3]”loc=”P15”;
Net“o_seg[4]”loc=”R16”;
Net“o_seg[5]”loc=”F13”;
Net“o_seg[6]”loc=”N16”;
Net“o_seg[7]”loc=”P16”;
Net“o_sel[0]”loc=”D14”;
Net“o_sel[1]”loc=”G14”;
Net“o_sel[2]”loc=”F14”;
Net“o_sel[3]”loc=”E13”;
Net“switch[0]”loc=”M10”;
Net“switch[1]”loc=”F3”;
Net“switch[2]”loc=”G4”;
Net“switch[3]”loc=”E3”;
Net“switch[4]”loc=”F4”;
2.ALU控制器的实现:
•输入用2+6=8个拨动开关
•ALUop控制模式:
2个拨动开关
•功能域Funct控制模式:
6个拨动开关
•输出用3个LED显示
TOP:
modulealuc_top(clk,switch,o_seg,o_sel);
inputwire[7:
wire[2:
0]alu;
alucM1(switch[7:
2],alu);
aluM2(i_r,i_s,alu,disp_code);
displayM3(clk,disp_num,o_seg,o_sel);
i_r:
i_s);
modulealu(i_r,i_s,alu,disp_code);
case(alu)
ALUC:
modulealuc(inputwire[7:
2]switch,outputreg[2:
0]alu);
always@(switch)
if(switch[2]==0&
&
switch[3]==0)
alu=3’b010;
elseif(switch[2]==0&
switch[3]==1)
alu=3’b110;
elseif(switch[2]==1&
switch[4]==0&
switch[5]==0&
switch[6]==0&
switch[7]==0)
else
if(switch[2]==1&
switch[6]==1&
else
if(switch[2]==1&
switch[5]==1&
switch[6]=0&
alu=3’b000;
switch[7]==1)
alu=3’b001;
switch[4]==1&
switch[6]=1&
alu=3’b111;
end
Net“switch[5]”loc=”G5”;
Net“switch[6]”loc=”E4”;
Net“switch[7]”loc=”H4”;
五、实验结果与分析
程序运行成功后,将代码下载到实验板spartan3上验证。
1.ALU的实现:
1)拨动SWITCH[1:
0]=00,显示操作数A=1122,SWITCH[1:
0]=01,显示操作数B=3344.
2)拨动switch[0]=1,将显示运算结果如下:
六、讨论、心得
这次实验,我做好好久,中间一直出错。
现在反思,关键可能是因为我对乘法器的原理掌握不够和对verilog语言的不熟练。
在以后的学习中,一定要注意课本知识和实验应用的结合。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乘法器 实验 报告