当前位置:文档之家› 乘法器实验报告

乘法器实验报告

乘法器实验报告篇一:计组-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:module alu_top(clk, switch, o_seg, o_sel);input wire clk;input wire[4:0] switch;output wire [7:0] o_seg; // 只需七段显示数字,不用小数点 output wire [3:0] o_sel; // 4个数码管的位选wire[15:0] disp_num;reg [15:0] i_r, i_s;wire [15:0] disp_code;wire o_zf; //zero detectorinitialbegini_r i_s endalu M1(i_r, i_s, switch[4:2], o_zf, disp_code);display M3(clk, disp_num, o_seg, o_sel);assign disp_num = switch[0]?disp_code:(switch[1] ? i_s : i_r);endmoduleDISPLAY:module display(clk, disp_num, o_seg, o_sel); input wire clk;input wire [15:0] disp_num; //显示的数据output reg [ 7:0] o_seg; //七段,不需要小数点output reg [ 3:0] o_sel; //4个数码管的位选reg [3:0] code = 4'b0;reg [15:0] count = 15'b0;always @(posedge clk)begincase (count[15:14])2'b00 :begino_sel 2'b01 :begino_sel code 2'b10 :begino_sel 2'b11 :begino_sel code endcasecase (code)4'b0000: o_seg 4'b0011: o_seg 乘法器实验报告)0000000; 4'b1001: o_seg count end endmoduleUCF: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 -篇三:EDA 8位乘法器实验报告南华大学船山学院实验报告( XX ~XX 学年度第二学期)课程名称实验名称EDA8位乘法器姓名学号专业计算机科学与技术班级 01地点 8-212教师一、实验目的:学习和了解八位乘法的原理和过程二、设计思路:纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器,基于PLD器件外接ROM 九九表的乘法器则无法构成单片系统,也不实用。

这里介绍由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一定的实用价值,而且由FPGA构成实验系统后,可以很容易的用ASIC大型集成芯片来完成,性价比高,可操作性强。

其乘法原理是:乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。

三、实验逻辑图:CLKARICTL四、实验代码:1) 选通与门模块的源程序ANDARITH.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY ANDARITH IS PORT (ABIN:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0)DOUT:OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END ANDARITH;ARCHITECTURE ART OF ANDARITH IS BEGIN PROCESS (ABIN,DIN) BEGINFOR I IN 0 TO 7 LOOPDOUT (I) END PROCESS; END ART;2) 16位锁存器的源程序REG16B.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16B ISPORT (CLK:IN STD_LOGIC; CLR:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR (8 DOWNTO 0) Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END REG16B;ARCHITECTURE ART OF REG16B ISSIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGIN PROCESS (CLK,CLR) BEGINIF CLR = '1' THEN R16S R16S(6 DOWNTO 0) END PROCESS;Q 3) 8位右移寄存器的源程序SREG8B.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SREG8B IS PORT (CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC;BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0); QB:OUT STD_LOGIC );END SREG8B; ARCHITECTURE ART OF SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CLK,LOAD) BEGINIF CLK'EVENT AND CLK= '1' THEN IF LOAD = '1' THEN REG8 4) 乘法运算控制器的源程序ARICTL.VHD LIBRARY ELSE REG8(6 DOWNTO0)USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ARICTL ISPORT ( CLK:IN STD_LOGIC; START:INSTD_LOGIC;CLKOUT:OUT STD_LOGIC; RSTALL:OUTSTD_LOGIC;ARIEND:OUT STD_LOGIC);END ARICTL;ARCHITECTURE ART OF ARICTL IS SIGNALCNT4B:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINRSTALL IF START = '1' THEN CNT4B ELSIF CLK'EVENT AND CLK = '1' THEN IF CNT4B CNT4B=CNT4B+1; END IF; END IF; END PROCESS;PROCESS (CLK,CNT4B,START) BEGINIF START = '0' THEN IF CNT4B CLKOUT ELSE CLKOUT 5) 8位乘法器的源程序MULTI8X8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY MULTI8X8 IS PORT(CLK:IN STD_LOGIC; START:IN STD_LOGIC;A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ARIEND:OUT STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END MULTI8X8;ARCHITECTURE ART OF MULTI8X8 ISCOMPONENT ARICTLPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC;RSTALL:OUT STD_LOGIC; ARIEND:OUT STD_LOGIC);END COMPONENT;COMPONENT ANDARITH PORT(ABIN:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT:OUT_STD_LOGIC_VECTOR( 7 DOWNTO 0) ); END COMPONENT; COMPONENT ADDER8B ...COMPONENT SREG8B ...COMPONENT REG16B ...SIGNAL GNDINT:STD_LOGIC; SIGNALINTCLK:STD_LOGIC; SIGNAL RSTALL:STD_LOGIC; SIGNAL QB:STD_LOGIC;SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGINDOUT U1:ARICTL PORT MAP(CLK=>CLK,START=>START,CLKOUT=>INTCLK,RSTALL=>RSTALL,ARIEND=>ARIEND);U2:SREG8B PORT MAP (CLK=>INTCLK,LOAD=>RSTALL. DIN=>B, QB=>QB);U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD); U4:ADDER8B PORTMAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8),B=>ANDSD,S=>DTBIN(7 DOWNTO 0),COUT =>DTBIN(8));U5:REG16B PORT MAP(CLK =>INTCLK,CLR=>RSTALL,D=>DTBIN, Q=>DTBOUT); END ART;。

相关主题