四位原码乘法器

合集下载

4位乘法器

4位乘法器

一、概述利用四位二进制寄存器、全加器以及D触发器等元器件,实现四位二进制乘法器的控制部分和乘法的实现部分。

成法是加法的简便运算乘法运算只能通过加法运算以及移位运算来实现。

在控制端用四个触发器产生四个控制信号来控制实现的加法移位功能,实现端在控制端信号作用下依次执行置零、加法、移位和循环操作。

二、方案说明设计一个4位二进制乘法器,可以存储其乘积。

电路原理框图如图1所示。

乘法器可以利用家发起和寄存器实现。

图1 乘法器原理框图寄存器B存放被乘数,寄存器Q存放乘数,两个乘积长度可能是原来的2倍,故计算完成后将累加和高位放入寄存器A,而Q放寄存器的低位,P 记录乘数的位数,每形成一个部分P加1,当P=4时,乘法结束,两数之积放在AQ寄存器中。

控制端产生四个控制信号分别为T0、T1、T2、T3。

在初态T0时,被乘数和乘数已分别存于寄存器B和Q中,等待启动信号S的到来,当S=1时控制器进入状态T1,在此状态下A、E、P清零,准备乘法操作。

从状态T2开始,控制器进入累计部分积的循环操作过程。

首先检验乘数的最低有效位Q1。

如Q1=1,A和B相加结果存于A和E之中;如果Q1=0,不做加法运算。

无论Q1为何值,都要将计数器P加1。

在状态T3,合成寄存器EAQ右移一位得到累计的部分积,时检测P之值,如果P不等于4,状态返回T2,继续累计部分积的过程。

如果P=4,停止循环,系统返回初始状态T0。

三、电路设计1、控制器设计根据图2所示的ASM图表,可以设计二进制乘法器的控制器。

图2 二进制乘法器ASM图表四个D触发器的驱动方程为:D0=T0S’+T3Z=((T0S’)’·(T3Z)’)’D1=T0S=((T0S)’)’D2=T1+T3Z’=(T1’·(T3Z’)’)’D3=T2控制器仿真电路如图2所示。

控制器中S为启动信号,高电平有效,系统开始工作时应使T0=1,T1=T2=T3=0,故图中设置了Reset信号(负脉冲)图2 二进制乘法器的控制逻辑图2. 二进制乘法器数据处理器(1) A寄存器A寄存器具有并入、移位、同步清0和保持功能。

计算机组成原理 原码乘法器

计算机组成原理 原码乘法器

计算机组成原理原码乘法器
计算机组成原理中,原码乘法器是一种常见的电路设计。

原码乘法器可以用来进行二进制的乘法运算,它是计算机中常用的数字运算电路之一。

原码乘法器可以处理多个输入数据,并生成一个输出结果。

在电路设计中,原码乘法器通常包括多个模块,如部分积模块、加法器模块、移位器模块等。

这些模块可以组成一个完整的原码乘法器电路。

原码乘法器的工作原理是将输入数据转换为二进制形式,然后利用加法器和移位器等模块进行运算,最终得到输出结果。

原码乘法器的设计需要考虑电路的速度、功耗、面积等因素,同时还需考虑乘法器的精度和误差等问题。

在现代的计算机中,原码乘法器通常被优化为更加高效的电路结构,例如Booth乘法器、Wallace乘法器、Array乘法器等。

这些优化的乘法器可以大大提升计算机的运算速度和效率,使计算机能够更加高效地进行数字运算。

- 1 -。

4位阵列乘法器[整理版]

4位阵列乘法器[整理版]

4位阵列乘法器[整理版]目录一、设计题目 ......................................................2 二、设计目的 (2)三、设计过程 (2)3.1设计原理 .......................................................23.2器件选择 .......................................................33.3逻辑原理 .......................................................33.4阵列乘法器的逻辑原理 (4)3.5 时序图..........................................................4 四、设计心得 (5)五、参考文献 (6)4位阵列乘法器一、设计题目 4位阵列乘法器二、设计目的计算机组成原理是计算机专业的核心专业基础课。

课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决问题的能力。

同时也巩固了我们对课本知识的掌握,加深了对知识的理解。

在设计中我们发现问题,分析问题,到最终的解决问题。

凝聚了我们对问题的思考,充分的锻炼了我们的动手能力、团队合作能力、分析解决问题的能力。

三、设计过程3.1设计原理阵列乘法器是类似于人工计算(如图1.1所示)的方法,乘数与被乘数都是二进制数。

所以可以通过乘数从最后一位起一个一个和被乘数相与,自第二位起要依次向左移一位,形成一个阵列的形式。

这就可将其看成一个全加的过程,将乘数某位与被乘数某位与完的结果加上乘数某位的下一位与被乘数某位的下一位与完的结果再加上前一列的进位进而得出每一位的结果。

一个阵列乘法器要完成X(Y乘法运算(X=X4X3X2X1,Y=Y4Y3Y2Y1)。

4位数字乘法器设计

4位数字乘法器设计

4位数字乘法器设计
设计一个4位数字乘法器需要考虑多个方面,包括硬件设计和
算法实现。

首先,在硬件设计方面,可以使用逻辑门、寄存器和加法器等
元件来实现。

可以将两个4位的输入数分别存储在两个寄存器中,
然后使用逻辑门和加法器来实现乘法运算。

具体来说,可以使用乘
法器的部分积计算方法,将被乘数的每一位与乘数的每一位相乘,
并将结果相加得到最终的乘积。

另外,还需要考虑溢出和进位的处理。

在乘法过程中,可能会
产生进位,需要确保算法能够正确处理进位。

同时,乘法的结果可
能会超出4位的表示范围,因此需要考虑如何处理溢出的情况。

在算法实现方面,可以采用乘法的基本原理,逐位相乘并累加
的方法来实现4位数字的乘法运算。

可以使用循环结构来逐位相乘
并累加,同时考虑进位和溢出的情况,确保算法的正确性和稳定性。

总的来说,设计一个4位数字乘法器需要综合考虑硬件设计和
算法实现两个方面,确保乘法器能够正确高效地进行4位数字的乘法运算。

实验五 四位移位乘法器

实验五 四位移位乘法器

实验五四位移位乘法器一、实验目的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 循环,实现了代码简单。

四位二进制加法器与乘法器

四位二进制加法器与乘法器

1 引言EDA(ElectronicDesign Automatic)技术的应用引起电子产品及系统开发的革命性变革。

VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,在实际应用中越来越广泛。

1.1 设计的目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。

通过对四位二进制加法器和四位二进制乘法器的设计,巩固和综合运用所学课程,加深对数字电路和VHDL基本单元的理解,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标,加法器的设计可以加深对门电路的理解,乘法器的设计可以使对计算机怎样工作有了更深了解。

1.2 设计的基本内容本文是设计的一个四位二进制加法器和四位二进制乘法器。

四位二进制加法器使用门电路构成,用VHDL语言对其实现。

乘法器使用VHDL语言里的乘法运算符实现,使用数码管动态显示一个三位数结果。

然后用VHDL语言编写相应的程序,在计算机上实现,最后进行了加法器和乘法器的仿真分析。

2 EDA、VHDL简介2.1 EDA简介EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD (计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

EDA技术是以计算机为工具,根据硬件描述语言HDL(Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。

典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。

基于EDA的4位乘法器的设计

基于EDA的4位乘法器的设计

4位乘法器的设计一、设计目的设计一个四位乘法器。

编写VHDL 源代码,得出正确的仿真波形,并在实验开发系统上进行硬件演示。

二、乘法器设计原理四位二进制乘法采用移位相加的方法。

即用乘数的各位数码,从高位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次得到的部分积左移一位并与第二次得到的部分积相加,将加得的和左移一位再与第三次得到的部分积相加,再将相加的结果左移一位与第四次得到的部分积相加,直到所的部分积都被加过一次。

原理框图:三、设计程序代码1)选通与门模块的源程序ANDARITH.VHDlibrary ieee;use ieee.std_logic_1164.all;entity andarith isport(abin:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0));end;architecture art3 of andarith isbeginprocess(abin,din)beginfor i in 0 to 3 loopdout(i)<=din(i) and abin;end loop; 锁存器 寄存器加法器选通与门 clk输入 输出end process;end art3;2)4位右移寄存器的源程序SREG4B.VHD library ieee;use ieee.std_logic_1164.all;entity sreg4b isport(clk,en:in std_logic;load:in std_logic;din:in std_logic_vector(3 downto 0);qb:out std_logic);end;architecture art1 of sreg4b issignal reg4:std_logic_vector(3 downto 0); beginprocess(clk,load,en)beginif clk'event and clk ='1' and en='1' then if load='0' then reg4<=din;elsereg4(2 downto 0)<=reg4(3 downto 1);end if;end if;end process;qb<=reg4(0);end art1;3)8位锁存器的源程序REG8.VHDlibrary ieee;use ieee.std_logic_1164.all;entity reg8 isport(clk,clr,en:in std_logic;d:in std_logic_vector(4 downto 0);q: out std_logic_vector(7 downto 0)); end;architecture art4 of reg8 issignal r8s:std_logic_vector(7 downto 0); beginprocess(clk,clr)beginif clr='0' then r8s<=(others=>'0');elsif clk'event and clk='1' and en='1' then r8s(2 downto 0)<=r8s(3 downto 1);r8s(7 downto 3)<=d;end if;end process;q<=r8s;end art4;4)乘法运算控制器的源程序ARICTL.VHD library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity arictl isport(clk,start: in std_logic;en,rstall,ariend:out std_logic);end;architecture art5 of arictl issignal cnt2b:std_logic_vector(2 downto 0); beginrstall<=start;process(clk,start) isbeginif start='0' then cnt2b<="000";elsif clk'event and clk='1' thenif cnt2b<4 thencnt2b<=cnt2b+1;end if;end if;end process;process(clk,cnt2b,start) isbeginif start='1' thenif cnt2b<4 thenen<='1';ariend<='0';else en<='0';ariend<='1';end if;else en<='1';ariend<='0';end if;end process;end art5;5)译码器的源程序YIMAQI.VHDlibrary ieee;use ieee.std_logic_1164.all;entity YIMAQI isPORT(code:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); end;architecture ART6 of YIMA7 isbeginPROCESS(code)BEGINCASE code ISWHEN "0000" => LED7S <="0000001";WHEN "0001" => LED7S <="1001111";WHEN "0010" => LED7S <="0010010";WHEN "0011" => LED7S <="0000110";WHEN "0100" => LED7S <="1001100";WHEN "0101" => LED7S <="0100100";WHEN "0110" => LED7S <="0100000";WHEN "0111" => LED7S <="0001111";WHEN "1000" => LED7S <="0000000";WHEN "1001" => LED7S <="0000100";WHEN "1010" => LED7S <="0001000";WHEN "1011" => LED7S <="1100000";WHEN "1100" => LED7S <="0110001";WHEN "1101" => LED7S <="1000010";WHEN "1110" => LED7S <="0110000";WHEN "1111" => LED7S <="0111000";WHEN OTHERS => NULL;END CASE;END PROCESS;end ART6;6)4位乘法器的顶层文件四、程序设计步骤1.打开ispEXPERT软件,建立一个新的工程cnt10;1 单击菜单Fil e→New Project2 输入工程路径,工程名2.建立VHDL文件单击File→New菜单项,选择VHDL File选项,单击OK按钮以建立VHDL文件,分别建立4位乘法器的vhd文件ANDARITH.VHD,ARICTL.VHD,REG8.VHD,SREG4B.VHD。

数电课程设计四位二进制乘法器的设计与实现

数电课程设计四位二进制乘法器的设计与实现

四位二进制乘法器的设计与实现物理系光信息科学与技术专业1011202班 11011202181. 实验目的设计一个乘法器,实现两个四位二进制数的乘法。

两个二进制数分别是被乘数3210A A A A 和乘数3210B B B B 。

被乘数和乘数这两个二进制数分别由高低电平给出。

乘法运算的结果即乘积由两个数码管显示。

其中显示低位的数码管是十进制的;显示高位的数码管是二进制的,每位高位片的示数都要乘以16再与低位片相加。

所得的和即是被乘数和乘数的乘积。

做到保持乘积、输出乘积,即认为目的实现,结束运算。

2.总体设计方案或技术路线总体思路:将乘法运算分解为加法运算。

被乘数循环相加,循环的次数是乘数。

加法运算利用双四位二进制加法器74LS283实现,循环次数的控制利用计数器74LS161、数码74LS85比较器实现。

运算结果的显示有数码管完成,显示数字的高位(进位信号)由计数器74LS161控制。

技术路线:以54 为例。

被乘数3210A A A A 是5,输入0101;乘数3210B B B B 是4,输入0100.将3210A A A A 输入到加法器的A 端,与B 端的二进制数相加,输出的和被送入74LS161的置数端(把这个计数器成为“置数器”)。

当时钟来临,另一个74LS161(被称之为“计数器”)计1,“置数器”置数,返回到加法器的B 端,再与被乘数3210A A A A 相加……当循环相加到第四个时钟的时候,“计数器”计4,这个4在数码比较器74LS85上与乘数3210B B B B 比较,结果是相等,A=B 端输出1,经过反相器后变为0返回到被乘数输入电路,截断与门。

至此,被乘数变为0000,即便是再循环相加,和也不变。

这个和,是多次循环相加的和,就是乘积。

高位显示电路较为独立,当加法器产生了进位信号,CA 端输出了一个高电平脉冲,经过非门变为下降脉冲驱动74LS161计一次数,这个数可以通过数码管显示出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.课程设计的内容和要求
内容:设计四位原码乘法器电路。

要求:1.有关资料,设计乘法器电路;
2.画出乘法器逻辑图;
3.在实验箱上完成乘法器电路的组装,调试,核对记录,测试有关数据,
通过老师当场验收;
4.完成课程设计报告。

1.课程设计原理
运用存储器的存储功能实现数字的存储。

令电路的初始状态为000,000,000000。

以二进制的形式输入数字,计算方式是以十进制数字乘法。

输入的数字为三位数字,输出的是六位数字。

先存储输入的乘数和乘积,然后再将乘积的导线端连到输出段,此时之前输入的乘积就可以在输出端显示。

此时序电路的真值表为:
1.课程设计思路
本次课程设计的题目为四位原码乘法器,利用真值表输入乘数时,需要存放数字,于是我查阅了一些资料,用存储器可以实现这一电路,所以本实验中用到的是INTEL 2114芯片。

具体实现过程如下图:
a
a
b
b
F
32F 1
1.课程设计所需的器材
1.2114是一个容量为1K4位的静态RAM芯片,常用于寄存器。

其具体的引脚图为:
此芯片的电路图为:
2.数字电路实验箱
3.导线若干
1.课程设计实现
本次课程设计的题目是四位原码乘法器电路。

此部分只用到了2块INTEL2114芯片,具体连接如下:
1、先将这些芯片按在电路板上(注意不要插反,否者容易烧毁芯片)。

2、将两片芯片的A6和GND端,A7,A8,A9接地。

3、Vcc端接电压5V,cs接存储端,WE端接控制端。

4、两块芯片的A5,A4,A3组成一个乘数,A0,A1,A2组成另一个乘数。

其中一块芯
片的I/O1,I/O2,I/O3,I/O4和另一块芯片的I/O1,I/O2组成要求的乘积。

乘数与乘积的显示方式均为二进制,但是计算方法是以十进制数的乘法法则计算。

1.调试步骤及方法
在连接实验器件之前,要先检查如下实验器件:
1、检查芯片引脚是否有损坏。

2、检查电路板是否好用。

连接实验器件时要注意:
2严格按照电路图一步一步连接,以避免连接错误。

3导线要先连接电源测试是否导电。

连接好电路进行数据测试,输入001,010,000010,存储;001,101,000101,存储;001,111,000111,存储。

将连在输入端的四个输出连接到输出端,并输入001,010,但是结果并不是000010,而是000100;再输入001,101,也没有得到000101的结果,而是000110的结果。

检查线路,发现输出的线路错位,纠正后重新输入乘数,结果均得到计算结果。

调试成功。

1.实验结果
连接好整个电路。

A5A4A3和A2A1A0为输入端,即乘数,F5F4F3F2F1F0为输出端,即乘积。

如下表:
8. 课程设计结果
输入000,000,000000,存储;
000,001,000000,存储;
001,001,000001,存储;
010,011,000110,存储;
011,001,000011,存储;
将乘积端导线接到输出端,并且输入000,000,得到000000结果。

因为000(二进制)=0(十进制),0*0=0,000000(二进制)=0(十进制).以下输出结果均符合实验结果。

9.心得体会
通过本次课程设计,我了解到逻辑电路设计不仅仅局限于课堂上所讲的知识,实验看似简单,但是实际动手时,就会手忙脚乱。

希望在今后的课程设计中多多锻炼自己,这也是锻炼自己的动手和思维逻辑能力。

遇到困难时,尽量独立解决,实在不行再请教老师或者同学,这也是锻炼自己独立解决问题的能力。

此次课程设计,让我收获颇多,我会在今后的实验中更加努力,提高自己的能力。

附录
8) 1.参考文献
9)⑴《计算机组成原理》
10)⑵《IC手册》
2.附录-电路连接图。

相关文档
最新文档