乘法器实验报告
- 格式:docx
- 大小:17.87 KB
- 文档页数:10
模拟乘法器实验报告模拟乘法器实验报告引言:模拟乘法器是电子电路领域中非常重要的一种电路设计,它能够实现数字信号的乘法运算。
在本次实验中,我们将学习并实现一种基于模拟电路的乘法器设计,并对其性能进行评估。
一、实验目的本次实验的主要目的是通过设计和实现模拟乘法器电路,加深对模拟电路设计原理的理解,并通过实际测量和分析,评估乘法器的性能。
二、实验原理模拟乘法器是通过电压的乘法运算来实现的。
在本次实验中,我们采用了一种基于差分放大器和电流镜电路的乘法器设计。
其基本原理是利用差分放大器的非线性特性,将输入信号进行放大和非线性变换,从而实现乘法运算。
三、实验步骤1. 设计乘法器电路的基本框架,包括差分放大器、电流镜等电路元件的选择和连接。
2. 根据设计要求,选择适当的电阻和电容值,并进行电路元件的布局和连线。
3. 使用示波器和信号发生器,分别输入模拟的乘数和被乘数信号,并观察输出信号。
4. 调整输入信号的幅值和频率,记录输出信号的变化情况,并进行分析和比较。
5. 对乘法器电路进行性能评估,包括增益、非线性失真、带宽等方面的指标。
四、实验结果与分析通过实验测量和分析,我们得到了乘法器电路的性能数据。
首先,我们观察到输出信号的幅值与输入信号的幅值成正比关系,表明乘法器电路的放大倍数与输入信号的幅值相关。
其次,我们发现输出信号的频率与输入信号的频率一致,说明乘法器电路能够正确地传递输入信号的频率特性。
此外,我们还对乘法器电路的非线性失真进行了评估,发现在输入信号较大的情况下,输出信号存在一定的非线性畸变,这可能是由于差分放大器的非线性特性引起的。
五、实验总结通过本次实验,我们深入学习了模拟乘法器的原理和设计方法,并通过实际测量和分析,对乘法器的性能进行了评估。
实验结果表明,所设计的乘法器电路能够较好地实现乘法运算,并具有一定的线性范围。
然而,在实际应用中,我们还需要考虑乘法器电路的稳定性、功耗等因素,并进一步优化电路设计,以满足不同应用场景的需求。
数学与计算机学院计算机组成原理实验报告年级08信计学号2008431066 姓名刘泽隶实验地点主楼528 指导教师陈昊实验项目运算器部件实验乘法器实验日期2010-11-10一、实验目的理解并掌握乘法器的原理。
二、实验原理(1)从右到左用乘数的每一位乘以被乘数,每一次乘得的中间结果比上一次的结果往左移一位。
(2)积的位数比被乘数和乘数的位数要多得多。
如果忽略符号位,n位的被乘数和m位的乘数相乘的结果的位数有(m+n)位。
每一位的乘法:(1)如果乘数位是1,则简单的复制被乘数到合适的位置(1*被乘数);(2)如果乘数位是0,则在合适的位置置0。
三、实验步骤(1) 打开QuartusⅡ,参照3.4节,安装ByteBlasterⅡ。
(2) 将子板上的JTAG端口和PC机的并行口用下载电缆连接。
打开实验台电源。
(3) 执行Tool->Progmmer命令,将Hamming.sof下载到FPGA中。
SOF(SRAMobject file)类型的文件是一种课下载到FPGA中的目标文件。
注意在执行Programmer命令中,英在program/configure下的方框中打钩,然后下载。
(4) 在实验台上通过模式开关选择FPGA-CPU独立调试模式010。
(5)将开关CLKSEL拨到0,将短路子DZ3短接且短路子DZ4断开,使FPGA-CPU所需要的时钟使用正单脉冲时钟。
四、实验现象本实验实现4位数的Booth乘法(有符号数乘法)输入输出规则对应如下:(1)输入的4位被乘数md3~md0对应开关SD11~SD8。
(2)输入的4位乘数mr3~mr0对应开关SD3~SD0。
(3)按单脉冲按钮,输入脉冲,也即节拍。
(4)乘积productp8-p0,对应灯A8-A0。
(5)当计算结束时,final信号为1,对应灯A7。
如表所示的booth算法运算过程,4位乘法一共需要0-8共9个小步骤计算出结果,本实验也是通过9个小步骤实现的,通过按单脉冲按钮输入脉冲,观察积寄存器的变化,掌握booth乘法器的原理。
原码一位乘法器设计实验报告一位乘法器设计实验报告本次实验的目的是设计一个1位乘法器,使用VHDL语言在FPGA平台上进行编程,以模拟数字系统中常用的数字乘法操作。
(1)实验介绍本次实验采用FPGA对1位乘法器进行设计,通过综合语言VHDL对1位乘法器进行编程,实现乘法操作,考核我们所学习到的技能,及其在数字电路中的运用。
(2)原理1位乘法器(One-bit Multiplier)主要包括一个数据输入端A,输入一位A;B输入端,输入一位B;两个控制端,乘法指令和正负指令;产生和端为Cout,乘法结果输出端为Dout。
1位乘法器的功能是:如果A、B都为0时,整个乘法器保持空闲,如果A>0或者 B>0,就会开始乘法运算,Cout为A与B的AND运算结果,Dout=A*B,即当B=1时,Dout=A;当B=0时,Dout=0。
(3)实验流程(1)设计多位乘法器的功能模块,完成模块之间的接口描述;(2)设计1位乘法器的VHDL代码,其中包括输入、输出、控制部分;(3)利用Xilinx ISE 14.6完成编译,查看综合错误情况;(4)绘制电路图,添加模块;(5)进行仿真测试,将模块内各部分功能输入实际值,验证运算正确性;(6)在DE2开发板上运行代码,上传新的程序,查看实际运行情况,确认乘法器可以正确工作;(7)验证结果,完成整个乘法器的设计。
(4)实验结果本次实验通过编写VHDL语言,绘制电路图,仿真测试,烧写程序等步骤,设计出一位乘法器,实现了正确乘法运算功能,实验结果如下图所示:此外,实验中使用的FPGA开发板的硬件设计采用Cyclone ll,有良好的性能和可编程性,在编程和复杂数字电路处理领域有很强的优势。
(5)总结本次实验通过实验,熟悉了1位乘法器的结构及其工作原理,掌握综合语言VHDL和FPGA编程技术,掌握了数字电路设计。
最后,本次实验完成了乘法器的设计,检验结果满足预期,获得有意义的实验教训,实现了实验目标。
一、实验目的1. 理解相乘器的基本原理和工作方式。
2. 掌握相乘器的构造方法和测试方法。
3. 分析相乘器的性能指标,如精度、速度和功耗。
4. 培养动手能力和实验操作技能。
二、实验原理相乘器是一种实现两个数相乘的电子电路。
根据乘法运算的原理,可以将乘法分解为一系列加法和移位操作。
相乘器通常采用补码形式进行运算,以保证运算的符号位正确。
三、实验器材1. 74LS181 4位并行乘法器2. 74LS86 4位全加器3. 74LS123 4位同步移位寄存器4. 74LS00 2输入与非门5. 74LS02 2输入或非门6. 74LS20 4位D触发器7. 74LS244 8位三态缓冲器8. 74LS08 2输入与门9. 74LS139 2-4线译码器10. 74LS74 4位D触发器11. 74LS32 4位优先编码器12. 74LS175 8位锁存器13. 74LS04 6反相器14. 74LS573 8位三态锁存器15. 74LS112 4位双向移位寄存器16. 电源17. 测试仪18. 负载电阻19. 接线板四、实验步骤1. 根据实验原理图,搭建相乘器电路。
2. 检查电路连接是否正确,确保电路无短路和开路现象。
3. 在测试仪上设置测试数据,如A=3,B=5。
4. 逐个检查相乘器的各个模块,观察输出结果。
5. 记录相乘器的输出结果,与测试仪显示结果进行对比。
6. 逐步改变输入数据,观察相乘器的性能表现。
7. 分析相乘器的精度、速度和功耗等性能指标。
五、实验结果与分析1. 实验结果(1)当A=3,B=5时,相乘器输出结果为15。
(2)改变输入数据,观察相乘器的输出结果,结果符合预期。
2. 分析(1)相乘器的精度:在实验过程中,相乘器的输出结果与测试仪显示结果基本一致,说明相乘器的精度较高。
(2)相乘器的速度:相乘器的运算速度较快,可以满足实际应用需求。
(3)相乘器的功耗:相乘器的功耗相对较低,有利于降低系统功耗。
实验三乘、除法运算器实验报告姓名:阿迪兰13053004马光明13052046 班级:计算机2班实验三乘、除法运算器实验报告一、实验目的1、掌握移位加算法设计乘法运算单元的基本思想2、掌握阵列算法乘法运算单元的设计方法3、掌握基于状态机的乘法运算单元的设计方法4、掌握基于宏模块的乘除法运算器的设计方法二、实验任务1、完成一个基于阵列的4位无符号乘法运算器的设计;实现代码为:module c01(x, y, out);input [7:0]x, y;output [15:0]out;genvar i, j, k, l;wire [8:0]tmp_sun[7:0], tmp_out[7:0];wire [8:0]tmp_x;assign tmp_x = {1'b0,x};assign out[0] = tmp_x[0] & y[0];generateassign tmp_out[0][0] = 1'b0;for(i=0;i<8;i=i+1)begin:add_bttop_m tm (tmp_x[i+1], y[0], tmp_x[i], y[1], tmp_out[0][i],tmp_sun[0][i], tmp_out[0][i+1]);endassign out[1] = tmp_sun[0][0];assign tmp_sun[0][8] = tmp_out[0][8];for(j=2;j<8;j=j+1)begin:ftffor(k=0;k<8;k=k+1)begin:add_bbbtm_m bm (tmp_sun[j-2][k+1], tmp_x[k], y[j], tmp_out[j-1][k], tmp_sun[j-1][k], tmp_out[j-1][k+1]);endassign out[j] = tmp_sun[j-1][0]assign tmp_sun[j-1][8] = tmp_out[j-1][8];Endfor(l=8;l<16;l=l+1)begin:add_oassign out[l] = tmp_sun[6][8];endendgenerateendmodulemodule top_m(m0, q0, m1, q1, cin, sun, cout);input m0, m1, q0, q1;input cin;output sun, cout;wire x, y;assign x = m0 & q0;assign y = m1 & q1;full_add fa (x, y, cin, sun, cout);endmodulemodule btm_m(sunin, m, q, cin, sun, cout); input sunin, m, q, cin;output sun, cout;wire y;assign y = m & q;full_add fa (sunin, y, cin, sun, cout); endmodulemodule full_add(x, y, cin, sun, cout);input x, y, cin;output reg sun, cout;always@(x, y, cin)beginsun <= x^y^cin;cout <= x&y | x&cin | y&cin;endendmodule2、完成一个基于移位加原理,用状态机实现的4位无符号乘法运算器的设计;实现代码为:module c02input[1:0] x;input[1:0] y;output[3:0] p;wire [3:0] temp;assign temp = {x , y};always @(temp)case temp4'b 0101:p =4'b 0001;4'b 0110: p = 4'b 0010;4'b 0111: p = 4'b 0011;4'b 1001: p = 4'b 0010;4'b 1010: p = 4'b 0100;4'b 1011: p = 4'b 0110;4'b 1101:p = 4'b 0011;4'b 1110: p = 4'b 0110;4'b 1111: p = 4'b 1001;default: p = 4'b 0000;endcase;endmodule;。
五位阵列乘法器logisim实验报告引言:在数字电路设计中,乘法器是一种非常重要的电路。
为了实现高效的乘法运算,我们常常需要使用乘法器进行乘法操作。
本实验旨在使用五位阵列乘法器logisim进行乘法器的设计与实现。
设计与实现:本次实验中,我们使用logisim软件进行五位阵列乘法器的设计与实现。
首先,我们需要搭建一个五位的输入端,来输入待相乘的两个数。
然后,我们需要将输入的两个数分别与五个乘法器相连,以实现乘法运算。
每个乘法器都会将两个输入相乘得到一个结果,并输出给下一级电路。
在乘法器的设计中,我们使用了多个与门和全加器。
与门用于判断两个输入是否都为1,从而判断是否需要进行相乘操作。
全加器用于将两个输入相乘的结果相加,并输出给下一级电路。
通过多级的与门和全加器的连接,我们可以实现五位数的相乘运算。
结果与分析:经过实验,我们成功实现了五位阵列乘法器的设计与实现。
通过输入不同的五位数,我们可以得到相应的乘法结果。
在logisim软件中,我们可以直观地观察到乘法器的运行过程,以及每一级电路的工作情况。
本实验的设计与实现对于理解乘法器的工作原理具有重要的意义。
通过logisim软件的模拟,我们可以更好地理解数字电路的运行过程,并加深对乘法器的认识。
结论:通过本次实验,我们成功地设计与实现了五位阵列乘法器。
通过logisim软件的模拟,我们可以直观地观察乘法器的工作过程,并得到相应的乘法结果。
这对于理解乘法器的工作原理以及数字电路的设计与实现具有重要的意义。
通过本次实验,我们不仅加深了对乘法器的认识,同时也提高了对logisim软件的使用能力。
在未来的学习和工作中,我们可以更加熟练地使用logisim软件进行数字电路的设计与模拟。
参考文献:[1] logisim软件官方网站[2] 数字电路设计与实验教程,XX出版社,20XX年。
实验题目:乘法器调幅(AM、DSB、SSB)、同步检波、混频及倍频实验原理:2TP3(2P3、2Q3)—载波(本振)信号输入端;2Q4—调制信号(或高频已调信号)输入端;2TP4—调制信号(或高频已调信号)输入端测试点;2TP5(2P5)—乘法器同相输出端;2TP5A—乘法器反相输出端;2TP6(2Q6)—2.5MHz带通滤波器输出;2W11—调制信号(或高频已调信号)输入端幅度调节;2W1—乘法器1、4输入端平衡调节;2W2—增益调节。
图3.1 乘法器调幅、混频实验电路图2TP9(2P9)—载波(本振)信号输入端;2TP10(2P10)—高频已调信号输入端;2TP11(2P11)—同步检波输出端;2W5—1、4输入端平衡调节。
图3.2 乘法器同步检波器电路图2TP7(2P7)—信号输入端;2TP8(2P8)—信号输出端;2W3—调节中心频率;2W4—调节输出幅度。
实验内容及步骤:一. 普通波调幅(AM )1. 电路连接《调幅与调频接收模块》接±12V 电源电压;打开“乘法器调幅 混频”电路的电源开关(电源指示灯点亮);2TP3接载波信号C u (20KHz ,100mV PP );2TP4接调制信号u Ω(1kHz 、300mVpp );用示波器同时观测C u 、u Ω和同相输出端(2TP5)。
注:C u 由示波器(Wave Gen )提供;u Ω由信号源(F20A A 路)提供,并以u Ω所接示波器通道做触发源。
2. 电路调整调节2W11,使2TP4端幅度最大;调节示波器使波形清晰稳定;调节2W1,使2TP5输出信号为AM 已调波AM u (如图3.4);调节2W2,使AM u 的波峰、波谷无压缩失真(2W1、2W2往往配合调节)。
3. 时域测量记录或存储C u 、u Ω和AM u 的时域波形,按图3.4计算调制度m :图3.4 AM 波时域波形%100⨯+-=BA BA m4.频域测量①频谱仪射频输入(RF IN)接反相输出端2TP5A。
实验五四位移位乘法器一、实验目的1. 学会用层次化设计方法进行逻辑设计;2. 设计一个八位乘法器。
二、实验原理1)乘法器工作原理:四位二进制乘法采用移位相加的方法。
即用乘数的各位数码, 从高位开始依次于被乘数相乘, 每相乘一次得到的积称为部分积, 将第一次得到的部分积左移一位并与第二次得到的部分积相加, 将加得的和左移一位再与第三次得到的部分积相加, 再将相加的结果左移一位与第四次得到的部分积相加,……直到所有的部分积都被加过一次。
最后的结果以十进制的形式通过三个数码管进行显示。
2)设计整体思路:主要分两大模块,乘法器模块和主模块。
第一步:乘法器通过一个function实现,该函数输出为八位二进制数的积;第二步:把八位二进制数转化为三位十进制数,分别为个位、十位、百位,由主模块实现。
第三步:依次选通三个数码管,让这三个数码管分别显示第二步中的个、十、百位,由主模块实现。
3)轮换显示工作原理:因为硬件对数码管的显示控制只有8个管口,所以同一时间只能控制一个数码管的显示。
我们利用视觉暂留的原理,采用一个时钟信号(除lhz以外均可)控制是三个数码管的依次轮换选通,可以达到三个数码管同时显示的视觉效果。
我们采用一个2位的二进制数的累加来选通数码管,同时让数码管显示个、时、百位。
三、思路流程图四、实验流程图注意:时钟clk 给1M Hz六、实验心得1、把八位二进制数转化为三位十进制数,分别为个位、十位、百位:result1=out/100; //求出百位 result3=out%10; //求出个位 result2=(out%100)/10; //求出十位 2、个位、十位、百位必须用三个变量来存储,不能用一个三位的变量来存储,因为要存储的是十进制数,而一个三位的变量中的某一位只能是0或者1,无法表示一个十进制数。
3、看了很多同学的代码后发现大家用了模块调用,在这里我没有用调用,用一个FOR 循环,实现了代码简单。
6.2 8位乘法器的设计1.实验目的(1)熟悉isEXPERT/MAX+plusisEXPERT/MAX+plus II/Foudation Series 软件的基本使用方法。
(2)熟悉GW48-CK EDA实验开发系统的基本使用方法。
(3)学习VHDL基本逻辑电路的综合设计。
2.实验内容设计并调试好由8位加法器构成的以时序逻辑方式设计的8位乘法器。
此乘法器通过判断被乘数的位值为1还是零,并通过乘数的左移与上一次和相加的方法,实现了8位乘法的运算,并用GW48-CK EDA实验开发系统进行硬件验证。
3.实验条件(1)开发设备:Lattice ispEXPERT。
(2)实验设备:GW48-CK EDA实验开发系统。
(3)拟用芯片:ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84以及运算控制电路和外部时钟。
4.实验设计1)系统的原理框图2)VHDL源程序(1)选通与门模块的源程序ANDARITH.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ANDARITH ISPORT(ABIN: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT: OUT STD_LOGIC_vector(7 DOWNTO 0)); END ENTITY ANDARITH;ARCHITECTURE ART OF ANDARITH ISBEGINPROCESS(ABIN,DIN)ISBEGINFOR I IN 0 TO 7 LOOPDOUT(I)<=DIN(I)AND ABIN;END LOOP;END PROCESS;END ARCHITECTURE ART;(2)16位锁存器的源程序REG16B.VHD LIBRARY 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 ENTITY REG16B;ARCHITECTURE ART OF REG16B ISSIGNAL R16S: STD_LOGIC_VECTOR(15 DOWNTO 0); BEGINPROCESS(CLK,CLR)ISBEGINIF CLR='1' THEN R16S<="0000000000000000"; ELSIF CLK'EVENT AND CLK= '1' THENR16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);R16S(15 DOWNTO 7)<=D;END IF;END PROCESS;Q<=R16S;END ARCHITECTURE ART;(3)8位右移寄存器的源程序SREG8B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SREG8B ISPORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB: OUT STD_LOGIC);END ENTITY SREG8B;ARCHITECTURE ART OF SREG8B ISSIGNAL REG8B :STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(CLK, LOAD)ISBEGINIF CLK'EVENT AND CLK='1'THENIF LOAD='1'THEN REG8B<=DIN;ELSE REG8B(6 DOWNTO 0)<=REG8B(7 DOWNTO 1); END IF;END IF;END PROCESS;QB<=REG8B(0);END ARCHITECTURE ART;(4)乘法运算控制器的源程序ARICTL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ARICTL ISPORT(CLK:IN STD_LOGIC; START:IN STD_LOGIC; ARIEND:OUT STD_LOGIC;CLKOUT: OUT STD_LOGIC;RSTALL: OUT STD_LOGIC);END ENTITY ARICTL;ARCHITECTURE ART OF ARICTL ISSIGNAL CNT4B: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINRSTALL<=START;PROCESS(CLK,START)ISBEGINIF START='1'THEN CNT4B<="0000";ELSIF CLK'EVENT AND CLK='1'THENIF CNT4B<8 THENCNT4B <=CNT4B+1;END IF;END IF;END PROCESS;PROCESS(CLK,CNT4B,START)ISBEGINIF START='0' THENIF CNT4B<8 THENCLKOUT <=CLK;ARIEND<='0';ELSE CLKOUT<='0';ARIEND<='1';END IF;ELSE CLKOUT<=CLK;ARIEND<='0';END IF;END PROCESS;END ARCHITECTURE ART;(5)8位乘法器的源程序MULTI8X8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MULTI8X8 ISPORT(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 ENTITY MULTI8X8;ARCHITECTURE ART OF MULTI8X8 ISCOMPONENT ARICTL ISPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC; RSTALL:OUT STD_LOGIC; ARIEND: OUT STD_LOGIC);END COMPONENT ARICTL;COMPONENT ANDARITH ISPORT(ABIN:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT ANDARITH;COMPONENT ADDER8B ISPORT(CIN: IN STD_LOGIC;A: IN STD_LOGIC_VECTOR(7 DOWNTO 0);B: IN STD_LOGIC_VECTOR(7 DOWNTO 0);S: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT: OUT STD_LOGIC);END COMPONENT ADDER8B ;COMPONENT SREG8B ISPORT(CLK: IN STD_LOGIC;LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB: OUT STD_LOGIC);END COMPONENT SREG8B ;COMPONENT 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 COMPONENT REG16B ;SIGNAL S1: STD_LOGIC;SIGNAL S2: STD_LOGIC;SIGNAL S3: STD_LOGIC;SIGNAL S4: STD_LOGIC;SIGNAL S5: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S6: STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL S7: STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINDOUT<=S7; S1<='0';U1:ARICTL PORT MAP(CLK=>CLK,START=>START,CLKOUT=>S2,RSTALL=>S3,ARIEND=>ARIEND);U2:SREG8B PORT MAP(CLK=>S2,LOAD=>S3,DIN=>A,QB=>S4);U3:ANDARITH PORT MAP(ABIN=>S4,DIN=>B,DOUT=>S5);U4:ADDER8B PORT MAP(CIN=>S1,A=>S7(15 DOWNTO 8)),B=>S5(7 DOWNTO 0),S=>S6(7 DOWNTO 0),COUT=>S6(8); U5:REG16B PORT MAP(CLK=>S2,CLR=>S3,D=>S6(8 DOWNTO 0),Q=>S7(7 DOWNTO 0));END ARCHITECTURE ART;5.系统仿真文件当ATRRT为高电平时,将16位寄存器清零,当START为低电平时,在CLK为1时进行乘法运算,通过8次移位和加法操作,运算进行8个CLK为1的时钟,之后得到输出结果,且ARIEND为1,乘法运算结束。
基本运算器实验实验报告一、实验目的本次基本运算器实验的主要目的是深入理解计算机中基本运算的原理和实现方式,通过实际搭建和测试运算器电路,掌握加法、减法、乘法和除法等基本运算的逻辑实现,以及运算过程中的进位、借位和溢出等概念。
同时,通过实验培养我们的动手能力、逻辑思维能力和问题解决能力,为进一步学习计算机组成原理和数字电路等相关课程打下坚实的基础。
二、实验设备与环境1、实验设备数字电路实验箱示波器逻辑分析仪万用表2、实验环境实验室提供稳定的电源和良好的通风条件。
三、实验原理1、加法器半加器:只考虑两个一位二进制数相加,不考虑低位进位的加法电路。
其逻辑表达式为:和= A ⊕ B,进位= A ∧ B。
全加器:考虑两个一位二进制数相加以及低位进位的加法电路。
其逻辑表达式为:和= A ⊕ B ⊕ C_in,进位=(A ∧ B) ∨(A ∧C_in) ∨(B ∧ C_in)。
多位加法器:通过将多个全加器级联可以实现多位二进制数的加法运算。
2、减法器利用补码原理实现减法运算。
将减数取反加 1 得到其补码,然后与被减数相加,结果即为减法的结果。
3、乘法器移位相加乘法器:通过将被乘数逐位与乘数相乘,并根据乘数对应位的值进行移位相加,得到乘法结果。
4、除法器恢复余数法除法器:通过不断试商、减去除数、恢复余数等操作,逐步得到商和余数。
四、实验内容与步骤1、加法器实验按照实验原理图,在数字电路实验箱上连接全加器电路。
输入不同的两位二进制数 A 和 B 以及低位进位 C_in,观察输出的和 S 和进位 C_out。
使用示波器和逻辑分析仪监测输入和输出信号的波形,验证加法器的功能。
2、减法器实验按照补码原理,设计减法器电路。
输入被减数和减数,观察输出的差和借位标志。
使用万用表测量相关节点的电压,验证减法器的正确性。
3、乘法器实验搭建移位相加乘法器电路。
输入两位二进制被乘数和乘数,观察输出的乘积。
通过逻辑分析仪分析乘法运算过程中的信号变化。
乘法器实验报告篇一:计组-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;。