四位原码乘法器
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位阵列乘法器[整理版]目录一、设计题目 ......................................................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位数字的乘法运算。
实验五 四位移位乘法器
实验五四位移位乘法器一、实验目的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位乘法器的设计
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计一次数,这个数可以通过数码管显示出来。
四位数字乘法器的设计
摘要现代社会在飞速发展,科学技术的发展越来越快。
4位二进制乘法器在十几种的应用相当广泛,是一些计算器的基本组成部分,其远离适用于很多计算器和大型计算机,他涉及到实训逻辑电路如何设计。
分析和工作等方面。
通过次电路更深刻的了解时许逻辑不见的工作原理,从而掌握如何根据需要设计满足要求的各种电路图,解决生活中的实际问题,将知识应用于实践中。
根据课题研究的目地是,绘制出电路的原理图,并且诠释每部分的功能;根据设计的电路图分析所需要的元器件种类和个数;根据技术指标指定实验反感,验证所设计的电路;进行实验数据处理和分析。
研究此课题,目地在于使我们了解4位乘法器在实际中的应用,了解它的具体工作原理以及它的基本电路图,使我们以后可以应用它解决一些实际问题。
通过对4位乘法器的设计,让我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己实际动手能力和独立思考的能力。
关键词:乘法器;VHDL;Max+plusII仿真4*4数字乘法器设计1.设计任务试设计一4位二进制乘法器。
4位二进制乘法器的顶层符号图如图1所示。
ENDP A B START1 0 1 11 1 0 1×1 0 1 10 0 0 01 0 1 11 0 1 111011001图1 4位乘法器顶层符号图 图2 4位乘法运算过程输入信号:4位被乘数A (A 3 A 2 A 1 A 0),4位乘数B (B 3 B 2 B 1 B 0),启动信号START 。
输出信号:8位乘积P (P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0),结束信号END 。
当发出一个高电平的START 信号以后,乘法器开始乘法运算,运算完成以后发出高电平的END 信号。
2.顶层原理图设计从乘法器的顶层符号图可知,这是一个9输入9输出的逻辑电路。
一种设计思想是把设计对象看作一个不可分割的整体,采用数字电路常规的设计方法进行设计,先列出真值表,然后写出逻辑表达式,最后画出逻辑图。
4位乘法器设计
U2:ls283 port map(o1=>sb(4 downto 1),o2=>sa,res=>result(7 downto 3));
U3:and4aport map(a=>op2,en=>op1(2),r=>sc);
signal sf:std_logic_vector(3 downto 0);
signal sg:std_logic_vector(3 downto 0);
--signal tmpl:std_logic;
begin
sg<=('0'&sf(3 downto 1));
--tmpl<=op1(1);
u0:and4aport map(a=>op2,en=>op1(1),r=>se);
(3)在芯片引脚设计时,每个脚多对应的时钟脉冲不一样,要看清要求。
(4)了解并行乘法器的设计原理,在给输入引脚输出引脚时钟脉冲时,要符合时钟脉冲的要求。
成绩:指导教师签名:
result(1)<=sd(0);
result(2)<=sb(0);
--result(7 downto 0)<='00000000'
end count;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity and4ais
signal sb:std_logic_vector(4 downto 0);
vhdl四位带符号除法器
设计报告一.设计名称运算器的描述与模拟验证(四位原码除法器)二.设计目的通过用硬件描述语言(如VHDL或V erilog)描述某个运算器(如ALU、乘法器、除法器等),并进行模拟验证,加深对二进制数运算方法的理解。
三.设计平台:MaxPlusII四.基本思想本实验模拟了一个四位带符号二进制整数除法器,被除数为A:A3,A2,A1,A0,除数为B:B3,B2,B1,B0。
其中A3,B3为符号位,算法思想如下:1)将二个操作数A,B都扩展成7位即:(A3和B3是符号位,不参与具体运算)A:0 0 0 A2 A1 A0B:0 0 0 B2 B1 B02) 将B左移三位得Q:B2 B1 B0 0 0 0比较A与Q,若A>=Q,商上1,A=A-Q;否则,商上0,A=A;B左移一位;如此循环四次,便得到所要的结果。
五.源代码library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;------------------------------实体定义---------------------------------entity Div is --除法器实体port (A:in STD_LOGIC_VECTOR(3 downto 0); --被除数B:in STD_LOGIC_VECTOR(3 downto 0); --除数C:out STD_LOGIC_VECTOR(3 downto 0); --商);end Div;--------------------------------实体的实现-------------------------------------architecture Div_arch of Div is--下列信号记录计算过程中的余数的中间结果:signal remainS0 : STD_LOGIC_VECTOR (5 downto 0);signal remainS1 : STD_LOGIC_VECTOR (5 downto 0);signal remainS2 : STD_LOGIC_VECTOR (5 downto 0);signal remainS3 : STD_LOGIC_VECTOR (5 downto 0);--运算过程中用于减余数的数:signal diverS0 : STD_LOGIC_VECTOR (5 downto 0);signal diverS1 : STD_LOGIC_VECTOR (5 downto 0);signal diverS2 : STD_LOGIC_VECTOR (5 downto 0); -signal diverS3 : STD_LOGIC_VECTOR (5 downto 0);signal Q_TEMP : STD_LOGIC_VECTOR (3 downto 0); --保存商signal Z0 : STD_LOGIC_VECTOR (2 downto 0); --用于扩展0signal Z1 : STD_LOGIC_VECTOR (2 downto 0); --用于扩展0signal ZERO : STD_LOGIC; --置被0除标志位begin--扩展被除数与除数:Z0 <=(others => '0');Z1 <=(others => '0');diverS0 <=Z0 & B(2 downto 0);remainS3 <=Z1& A(2 downto 0);diver1<=diver0(4 downto 0) & '0'; --由diver0左移1位---〉0 0 B2 B1 B0 0diver2<=diver1(4 downto 0) & '0'; --由diver0左移1位---〉0 B2 B1 B0 0 0diver3<=diver2(4 downto 0) & '0'; --由diver0左移1位---〉B2 B1 B0 0 0 0----------具体运算过程-----------比较并上商:Q_TEMP(2) <= '1' when (remainS3 >= diverS2) else '0';Q_TEMP(1) <= '1' when (remainS2 >= diverS1) else '0';Q_TEMP(0) <= '1' when (remainS1 >= diverS0) else '0';--计算余数的中间结果:remainS2 <= remainS3 - diverS2 when Q_TEMP(2) = '1' else remainS3;remainS1 <= remainS2 - diverS1 when Q_TEMP(1) = '1' else remainS2;remainS0 <= remainS1 - diverS0 when Q_TEMP(0) = '1' else remainS1;Q_TEMP(3) <= A(3) xor B(3); --确定结果的符号位ZERO <= '1' when B(2 downto 0) = Z1 else '0'; --置被0除标志位DIVz <= '1' when ZERO = '1' else '0'; --当除数为0时设置标志C <= (others => '0') when ZERO = '1' else Q_TEMP; --将结果赋予Cend Div_arch;六.设计心得1) 通过课程设计,使我对于如何编写VHDL程序有了初步了解,包括基本结构与流程,学会了使用MaxPlusII这个平台,对于除法器,特别是整数除法有了实践上的认识。
四川大学数电课程设计(四位二进制无符号数乘法器 )
数字电子技术基础课程设计报告学院电气信息学院专业姓名学号设计题目四位二进制无符号数乘法器目录1 设计任务描述....................................... - 1 -1.1 设计描述...................................... - 1 -1.2 设计概述...................................... - 1 -2 通用器件实现....................................... - 1 -2.1 方案一与门和全加器组合逻辑电路............... - 1 -2.1.1 设计思路................................. - 1 -2.1.2 仿真测试................................. - 2 -2.1.3 优缺点分析............................... - 3 -2.2 方案二多种通用集成芯片组合逻辑电路 ........... - 3 -2.2.1 设计思路................................. - 3 -2.2.2 仿真测试................................. - 5 -2.2.3 优缺点分析............................... - 7 -3 使用硬件描述语言——Verilog实现.................... - 7 -3.1 设计目的...................................... - 7 -3.2 设计要求...................................... - 7 -3.3 硬件语言描述.................................. - 7 -3.4 BASY2板结果附图............................... - 9 -4 结论与心得体会.................................... - 11 -4.1结论 ......................................... - 11 -4.2心得体会 ..................................... - 11 -1 设计任务描述1.1 设计描述设计一个乘法器,实现两个四位二进制数的乘法。
EDA4位乘法器的程序
实验四、4位乘法器的实现一、实验前准备本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。
EDAPRO/240H实验仪主板的VCCINT跳线器右跳设定为3.3V;EDAPRO/240H实验仪主板的VCCIO跳线器组中“VCCIO3.3V”应短接,其余VCCIO均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT跳线器组设定为 2.5V;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO跳线器组设定为3.3V。
请参考前面第二章中关于“电源模块”的说明。
二、实验目的1、掌握利用V erilog HDL语言实现乘法器的方法2、掌握利用8位数码显示模块的设计三、实验内容1、用Verilog HDL语言按照移位循环相加方法实现4x4乘法器模块。
2、用Verilog HDL语言实现8位数码显示模块。
三、实验原理乘法运算模块可采用移位相加原理实现,本实验采用乘法器模块和显示模块在顶层模块中例化的方法实现。
四、实验步骤1、按照以下步骤完成每一个模块的设计:新建设计文件夹(不可用中文)-》新建设计文件-》输入设计项目(原理图/Verilog HDL文本代码)-》存盘(注意原理图/文本取名)-》将设计项目设置成Project-》选择目标器件-》启动编译-》(可选:建立仿真波形文件-》仿真测试和波形分析)2、新建顶层原理图文件,调入第1步中设计好的各模块,以原理图方式实现顶层设计-》存盘(注意原理图/文本取名)-》将设计项目设置成Project-》选择目标器件-》启动编译-》建立仿真波形文件-》(可选:建立仿真波形文件-》仿真测试和波形分析)-》引脚锁定并编译-》编程下载/配置-》硬件测试五、硬件测试说明1、乘数与被乘数接8位数字开关A组。
2、结果显示接动态数码管。
六、硬件连线说明如果独立扩展板芯片为EP1K30QC208 PIN分配CLK 79 接GCLK1Rst 71 接按键F12,需要连线到右下角F12的连线插孔Display[6] 93 接数码管段位引线ADisplay[5] 92 接数码管段位引线BDisplay[4] 90 接数码管段位引线CDisplay[3] 89 接数码管段位引线DDisplay[2] 88 接数码管段位引线EDisplay[1] 87 接数码管段位引线FDisplay[0] 86 接数码管段位引线GSel[2] 70 接SS2Sel[1] 69 接SS1Sel[0] 68 接SS0data_a[3] 39 接8位数字开关A SW1data_a[2] 40 接8位数字开关A SW2data_a[1] 41 接8位数字开关A SW3data_a[0] 44 接8位数字开关A SW4data_b[3] 45 接8位数字开关A SW5data_b[2] 46 接8位数字开关A SW6data_b[1] 47 接8位数字开关A SW7data_b[0] 53 接8位数字开关A SW8如果独立扩展板芯片为EP1K 30TC144 PIN分配CLK 55 接CLK(T)-CLOCK(P)Rst 67 接按键F12,需要连线到右下角F12的连线插孔Display[6] 91 接数码管段位引线ADisplay[5] 90 接数码管段位引线BDisplay[4] 88 接数码管段位引线CDisplay[3] 87 接数码管段位引线DDisplay[2] 86 接数码管段位引线EDisplay[1] 83 接数码管段位引线FDisplay[0] 81 接数码管段位引线GSel[2] 70 接SS2Sel[1] 69 接SS1Sel[0] 68 接SS0data_a[3] 37 接8位数字开关A SW1data_a[2] 38 接8位数字开关A SW2data_a[1] 39 接8位数字开关A SW3data_a[0] 41 接8位数字开关A SW4data_b[3] 42 接8位数字开关A SW5data_b[2] 43 接8位数字开关A SW6data_b[1] 44 接8位数字开关A SW7data_b[0] 46 接8位数字开关A SW8程序:module CFQ4梁一一(input clk,input wire [4:1] ain, //输入ainput wire [4:1] bin, //输入binput rest_n,output reg [2:0] sel, //位选output reg [6:0] display);reg [15:0] count_clk; // 分频计数器,最大2^16=64K分频reg [3:0] a; //输入ain寄存器reg [3:0] b; //输入bin寄存器reg [7:0] mul_num; //乘得结果reg [3:0] g_bit; //个位reg [3:0] s_bit; //十位reg [3:0] b_bit; //百位reg [3:0] disp_temp;integer i;//assign a=ain;//assign b=bin;//分频always @ (posedge clk or negedge rest_n) beginif(rest_n ==0) begincount_clk=16'b0;endelse beginif(count_clk==16'hffff) begincount_clk=16'b0;endelse begincount_clk=count_clk+1'b1;endendend//乘法运算always @ (ain or bin ) beginmul_num=8'b0;for (i=1;i<=4;i=i+1) beginif(bin[i]) mul_num=mul_num+(ain<<(i-1));else mul_num=mul_num+1'b0;endb_bit=(mul_num/100)%10;s_bit=(mul_num/10)%10;g_bit=mul_num%10;end// 位选always @ (posedge count_clk[3] or negedge rest_n) begin if(rest_n ==0) beginsel=3'b0;endelse beginif (sel==3'b111) beginsel=3'b0;endelse beginsel=sel+1'b1;endendendalways @ (sel) begincase(sel)3'b000: disp_temp=4'b1010;3'b001: disp_temp=4'b1010;3'b010: disp_temp=4'b1010;3'b011: disp_temp=4'b1010;3'b100: disp_temp=4'b1010;3'b101: disp_temp=b_bit;3'b110: disp_temp=s_bit;3'b111: disp_temp=g_bit;default: disp_temp=4'b1010;endcaseend//显示译码,共阴数码管,a:对应高位,g:对应低位always @ (disp_temp) begincase (disp_temp)4'b0000: display=7'b1111110; //04'b0001: display=7'b0110000; //14'b0010: display=7'b1101101; //24'b0011: display=7'b1111001; //34'b0100: display=7'b0110011; //44'b0101: display=7'b1011011; //54'b0110: display=7'b1011111; //64'b0111: display=7'b1110000; //74'b1000: display=7'b1111111; //84'b1001: display=7'b1111011; //94'b1010: display=7'b0000001; //-default: display=7'b0000000; //全灭endcaseend endmodule。
四位原码乘法器
1.课程设计的内容和要求内容:设计四位原码乘法器电路。
要求:1.有关资料,设计乘法器电路;2.画出乘法器逻辑图;3.在实验箱上完成乘法器电路的组装,调试,核对记录,测试有关数据,通过老师当场验收;4.完成课程设计报告。
1.课程设计原理运用存储器的存储功能实现数字的存储。
令电路的初始状态为000,000,000000。
以二进制的形式输入数字,计算方式是以十进制数字乘法。
输入的数字为三位数字,输出的是六位数字。
先存储输入的乘数和乘积,然后再将乘积的导线端连到输出段,此时之前输入的乘积就可以在输出端显示。
此时序电路的真值表为:1.课程设计思路本次课程设计的题目为四位原码乘法器,利用真值表输入乘数时,需要存放数字,于是我查阅了一些资料,用存储器可以实现这一电路,所以本实验中用到的是INTEL 2114芯片。
具体实现过程如下图:aabbF32F 11.课程设计所需的器材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导线要先连接电源测试是否导电。
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和保持功能。
4位乘法器的设计
设计思想:确定该乘法器工作的基本原理是首先生成部分积,再将这些部分积相加得到乘积。
设计的基本思想为:从被乘数的最低位开始移位,若移出位为1,则乘数左移后与上一次的和相加,若移出位为0,则乘数左移后以全0相加,循环上述操作,直至被乘数的最高位。
主要是进行移位、相加两项操作的重复。
乘法器设计根据乘法器工作原理可知,确定输入与输出。
输入的两个乘数分别为din[4 .. 0]、din1 [4.. 0],另外clk、clr作为控制输入,dout[7..0]作为输出。
由分析可知乘法器原理框图包括右移寄存器(sregb)、8位寄存器(regb)、选通与门(andarith)、4位加法器(adder4)四部分。
其中,sreg4b对被乘数进行右移移位,andarith对乘数与被乘数相乘过程中的部分积进行相与,adder4对右移寄存器的移位位数进行计数,regb对乘数和被乘数相乘之后的结果进行存储。
下面分别对各部分元件进行设计,然后再由这些元件构成整个乘法器电路图。
1)设计一个右移寄存器(sregb)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY sregb ISPORT( clk : IN STD_LOGIC;load : IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 downto 0);qb : OUT STD_LOGIC);END sregb;ARCHITECTURE sregb_architecture OF sregb ISSIGNAL regb : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINPROCESS (clk, load)BEGINIF load = '1' THEN regb<= din;ELSIF CLK'EVENT AND CLK = '1' THENregb(2 DOWNTO 0) <= regb(3 DOWNTO 1);qb <= regb(0);END IF;END PROCESS;END sregb_architecture;2)设计一个选通与门(andarith)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY andarith ISPORT( qb: IN STD_LOGIC;din1 : IN STD_LOGIC_VECTOR(3 downto 0);dout1 : OUT STD_LOGIC_VECTOR(3 downto 0) );END andarith;ARCHITECTURE andarith_architecture OF andarith ISBEGINPROCESS(qb, din1)BEGINFOR i IN 0 TO 3 LOOPDOUT1(i) <= DIN1(i) AND qb;END LOOP;END PROCESS;END andarith_architecture;3)设计一个计数器(adder4)LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY adder4 ISPORT( dout1 : IN STD_LOGIC_VECTOR(3 downto 0);dout : IN STD_LOGIC_VECTOR(7 downto 4);s : OUT STD_LOGIC_VECTOR(4 downto 0));END adder4;ARCHITECTURE adder4_architecture OF adder4 ISBEGINs <= ('0' & dout1) + ('0'& dout) ;END adder4_architecture;4)设计一个8位寄存器(rega)LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rega ISPORT( clk : IN STD_LOGIC;load : IN STD_LOGIC;s : IN STD_LOGIC_VECTOR(3 downto 0);dout : OUT STD_LOGIC_VECTOR(7 downto 0) );END rega;ARCHITECTURE rega_architecture OF rega ISSIGNAL R8S : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(clk, load)BEGINIF load = '1' THEN R8S <= (OTHERS =>'0') ; --清零部分积 ELSIF rising_edge(clk) THENR8S(2 DOWNTO 0) <= R16S(3 DOWNTO 1); --右移低3位R8S(7 DOWNTO 3) <= s; --将加法和输入锁到高5位Load= '0 ';END IF;END PROCESS;dout <= R8S;END rega_architecture;。
四位二进制乘法器
四位二进制乘法器设计报告一、原理此四位乘法器主要运用多次错位相加运算来实现乘法运算。
由开关控制输入高电平或低电平产生两个二进制数(高电平有效),利用与门实现一位和四位的乘积运算,再将两次的乘积输入加法器,得到的和与进位与下一个乘积再进行加法运算。
设两个二进制数分别是被乘数D1C1B1A1和乘数D2C2B2A2,得到结果Y8Y7Y6Y5Y4Y3Y2Y1,可以把乘法运算分解成四个一位与四位的乘积和三次错位相加。
错位相加时累计和的最后一项可以直接输出为乘积的最低位,剩下三位和进位端再与高位乘积相加,每次相加后的最低位直接接到CD4511未接的最低位,经过三次相加就可以得到乘积。
以1011和1101为例1101*1011110□1(Y1)+11011001□1(Y2)+0000100□1(Y3)+110110001 (Y8—Y4)网上有的乘法器电路图一般采用反复进行移位和加法来进行乘法计算,依靠寄存器不断左移实现错位,而我直接把最低位输出到数码管,将进位端作为最高位进行下一步计算,在接线时就完成了移位,省去了寄存器的使用,使电路更加简单。
二、主要器件74ls283 3片74ls08 4片开关 8个数码管 4个CD4511 2片10KΩ电阻 8个470Ω电阻 14个三、芯片介绍74ls08:由四个与门组成74ls283:加法器,(5,3,14,12,6,2,15,11)8个脚输入两个乘数,(4,,1,13,10)四个脚输出,7脚输入低电平控制芯片做加法,9脚是进位端。
CD4511:用于驱动共阴极 LED (数码管)显示器的 BCD 码-七段码译码器,无法显示十六进制数的A-E。
四、原理图五、仿真3*7=1*16+5=2111*11=7*16+9=121六、运算结果举例七、遇到的问题用protues仿真时输出直接接BCD码的数码管,显示的是十六进制数,焊接时用了CD4511,A-E消隐导致乘积只能显示0-9,有A-E就无法显示。
4位二进制乘法器
4位二进制乘法器的设计一、概述4位二进制乘法器在实际中的应用相当广泛,是一些计算器的基本组成部分,其原理适用于很多计算器和大型计算机,它涉及到时序逻辑电路如何设计、分析和工作等方面。
通过此电路更深刻的了解时序逻辑部件的工作原理,从而掌握如何根据需要设计满足要求的各种电路图,解决生活中的实际问题,将所学知识应用于实践中。
根据任务书设计电路主要要求是:绘制出电路的原理图,并且诠释每部分的功能;根据设计的电路图分析所需要元器件种类和个数;根据技术指标制定实验方案,验证所设计的电路;进行实验数据处理和分析。
设计任务技术指标;输入数据:被乘数X(0000~1111);乘数Y(0000~1111);输入命令:启动信号S1,高有效。
输出数据:乘积C(00000000~11100001);其乘积可以存贮。
二、方案说明此方案采用74LS194双向移位寄存器,74LS283加法器和 74LS00、74LS04等门电路。
乘法就是反复进行移位和加法,被乘数放入MD寄存器,乘数放入MQ 寄存器,A寄存器中放结果,乘数的位数放在C寄存器中。
AC寄存器的初值为0。
A寄存器的内容被右移时,最高位移入0,其最低位内容被移入MQ的最高位。
C 寄存器右移时,其最高位移入1。
若MQ寄存器的最低位(用M(0)来表示)为1时,将被乘数与A寄存器中的内容用全加器相加后,将结果放回A寄存器中保存。
若M(0)的值为0,将0与A寄存器的内容相加,将其结果再存入A寄存器。
接着,将A、MQ、C寄存器的内容右移1位。
将此动作反复进行乘数位数那么多遍。
此乘法电路通过同步电路操作,运算与时钟脉冲同步进行。
从以上方案中可知,方案设有信号发生电路,数据输入电路,移位寄存电路,加法电路和运算结束判断电路和启动电路。
各部分功能明确且之间的联系容易理解,所以采用这种方案。
原理框图如图1所示。
1图1 4位二进制乘法器电路的原理框图三、电路设计1. 信号发生电路因为A 寄存器起着存储并移位的作用,所以它的时钟信号频率应为主时钟频率的2倍,占空比相同且都大于50%,如图2信号发生电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.附录-电路连接图。