乘法器实验报告.docx
《乘法器实验报告.docx》由会员分享,可在线阅读,更多相关《乘法器实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
乘法器实验报告
乘法器实验报告
篇一:
计组-4位乘法器实验报告
实验4位乘法器实验报告
XXX姓名:
课程名称:
计算机组成
实验时间:
XXX学号:
同组学生姓名:
无实验地点:
指导老师:
XXX专业:
计算机科学与技术
一、实验目的和要求
1.熟练掌握乘法器的工作原理和逻辑功能
二、实验内容和原理
实验内容:
根据课本上例3-7的原理,来实现4位移位乘法器的设计。
具体要求:
1.乘数和被乘数都是4位
2.生成的乘积是8位的
3.计算中涉及的所有数都是无符号数
4.需要设计重置功能
5.需要分步计算出结果(4位乘数的运算,需要四步算出结果)
实验原理:
1.乘法器原理图
2.本实验的要求:
1.需要设计按钮和相应开关,来增加乘数和被乘数
2.每按一下M13,给一个时钟,数码管的左边两位显示每一步的乘
积
3.4步计算出最终结果后,LED灯亮,按RESET重新开始计算
三、主要仪器设备
1.Spartan-III开发板
2.装有ISE的PC机
1套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 i_s 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
DISPLAY:
moduledisplay(clk,disp_num,o_seg,o_sel);inputwireclk;
inputwire[15:
0]disp_num;//显示的数据
outputreg[7:
0]o_seg;//七段,不需要小数点outputreg[3:
0]o_sel;//4个数码管的位选
reg[3:
0]code=4'b0;
reg[15:
0]count=15'b0;
always@(posedgeclk)
begin
case(count[15:
14])
2'b00:
begin
o_sel 2'b01:
begin
o_sel code 2'b10:
begin
o_sel 2'b11:
begin
o_sel code endcase
case(code)
4'b0000:
o_seg 4'b0011:
o_seg乘法器实验报告)0000000;4'b1001:
o_seg count end
endmodule
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个拨动开关
篇二:
1496模拟乘法器实验报告
实验课程名称:
_高频电子线路
-1-
-2-
-3-
-4-
-5-
篇三:
EDA8位乘法器实验报告
南华大学
船山学院实验报告
(XX~XX学年度第二学期)
课程名称实验名称
EDA
8位乘法器
姓名学号
专业计算机科学与
技术
班级01
地点8-212
教师
一、实验目的:
学习和了解八位乘法的原理和过程
二、设计思路:
纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器,基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。
这里介绍由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一定的实用价值,而且由FPGA构成实验系统后,可以很容易的用ASIC大型集成芯片来完成,性价比高,可操作性强。
其乘法原理是:
乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。
三、实验逻辑图:
CLK
ARICTL
四、实验代码:
1)选通与门模块的源程序ANDARITH.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYANDARITHISPORT(ABIN:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(7DOWNTO0)DOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDANDARITH;ARCHITECTUREARTOFANDARITHISBEGIN
PROCESS(ABIN,DIN)BEGIN
FORIIN0TO7LOOP
DOUT(I) ENDPROCESS;ENDART;
2)16位锁存器的源程序REG16B.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG16BISPORT(CLK:
INSTD_LOGIC;CLR:
INSTD_LOGIC;
D:
INSTD_LOGIC_VECTOR(8DOWNTO0)Q:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDREG16B;
ARCHITECTUREARTOFREG16BIS
SIGNALR16S:
STD_LOGIC_VECTOR(15DOWNTO0);BEGINPROCESS(CLK,CLR)BEGIN
IFCLR='1'THENR16S R16S(6DOWNTO0) ENDPROCESS;Q 3)8位右移寄存器的源程序SREG8B.VHDLIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;ENTITYSREG8BIS
PORT(CLK:
INSTD_LOGIC;LOAD:
INSTD_LOGIC;BIN:
INSTD_LOGIC_VECTOR(7DOWNTO0);QB:
OUTSTD_LOGIC);ENDSREG8B;ARCHITECTUREARTOFSREG8BIS
SIGNALREG8B:
STD_LOGIC_VECTOR(7DOWNTO0);BEGIN
PROCESS(CLK,LOAD)BEGIN
IFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8 4)乘法运算控制器的源程序ARICTL.VHDLIBRARY
ELSEREG8(6DOWNTO0) USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYARICTLIS
PORT(CLK:
INSTD_LOGIC;START:
INSTD_LOGIC;
CLKOUT:
OUTSTD_LOGIC;RSTALL:
OUTSTD_LOGIC;
ARIEND:
OUTSTD_LOGIC);
ENDARICTL;ARCHITECTUREARTOFARICTLISSIGNALCNT4B:
STD_LOGIC_VECTOR(3DOWNTO0);BEGIN
RSTALL IFSTART='1'THENCNT4B ELSIFCLK'EVENTANDCLK='1'THENIFCNT4B CNT4B=CNT4B+1;ENDIF;ENDIF;ENDPROCESS;
PROCESS(CLK,CNT4B,START)BEGIN
IFSTART='0'THENIFCNT4B CLKOUT ELSECLKOUT 5)8位乘法器的源程序MULTI8X8.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMULTI8X8ISPORT(CLK:
INSTD_LOGIC;START:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);B:
INSTD_LOGIC_VECTOR(7DOWNTO0);ARIEND:
OUTSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDMULTI8X8;
ARCHITECTUREARTOFMULTI8X8IS
COMPONENTARICTL
PORT(CLK:
INSTD_LOGIC;START:
INSTD_LOGIC;CLKOUT:
OUTSTD_LOGIC;RSTALL:
OUTSTD_LOGIC;ARIEND:
OUTSTD_LOGIC);
ENDCOMPONENT;COMPONENTANDARITHPORT(ABIN:
INSTD_LOGIC;DIN:
INSTD_LOGIC_VECTOR(7DOWNTO0);DOUT:
OUT_STD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTADDER8B...
COMPONENTSREG8B...
COMPONENTREG16B...
SIGNALGNDINT:
STD_LOGIC;SIGNAL
INTCLK:
STD_LOGIC;SIGNALRSTALL:
STD_LOGIC;SIGNALQB:
STD_LOGIC;
SIGNALANDSD:
STD_LOGIC_VECTOR(7DOWNTO0);SIGNALDTBIN:
STD_LOGIC_VECTOR(8DOWNTO0);SIGNALDTBOUT:
STD_LOGIC_VECTOR(15DOWNTO0);BEGIN
DOUT U1:
ARICTLPORTMAP(CLK=>CLK,START=>START,CLKOUT=>INTCLK,RSTALL=>RSTALL,ARIEND=>ARIEND);U2:
SREG8BPORTMAP(CLK=>INTCLK,LOAD=>RSTALL.DIN=>B,QB=>QB);
U3:
ANDARITHPORTMAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);U4:
ADDER8BPORT
MAP(CIN=>GNDINT,A=>DTBOUT(15DOWNTO8),B=>ANDSD,S=>DTBIN(7DOWNTO0),COUT=>DTBIN(8));U5:
REG16BPORTMAP(CLK=>INTCLK,CLR=>RSTALL,
D=>DTBIN,Q=>DTBOUT);ENDART;