4位阵列乘法器

合集下载

乘位阵列乘法器设计

乘位阵列乘法器设计

乘位阵列乘法器设计集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)课程设计报告课程设计题目: 4乘4位阵列乘法器设计学生姓名:杨博闻学号专业:计算机科学与技术班级: 1120701指导教师:汪宇玲2014年 1月 4日一、设计目的1.掌握乘法器的原理及其设计方法。

2 .熟练应用CPLD 设计及 EDA 操作软件。

二、设计设备1.TDN-CM+或 TDN-CM++教学实验系统一套。

2 ·PC 微机一台。

3·ispDesignEXPERT 软件模型机数据通路结构框图三、设计原理本实验用 CPLD 来设计一个 4 ×4 位乘法器,相对于画电路图输入,用 ABEL 语言描述是比较方便的。

其算式如下(其中括号中的数字表示在 ABEL 源程序描述中的功能块调用编号):a3 a2 a1 a0× b3 b2 b1 b0----------------------------------------------------------------------------------------------------------a3b0(10) a2b0(6)a1b0(3) a0b0(1)a3b1(13) a2b1(9) a1b1(5)a0b1(2)a3b2(15) a2b2(12) a1b2(8) a0b2(4) + a3b3(16) a2b3(14) a1b3(11) a0b3(7)-----------------------------------------------------------------------------------------------------------p7 p6 p5 p4 p3 p2 p1 p0四、设计步骤1.安装EDA 软件打开计算机电源,进入 Windows 系统,安装上述 ispDesignEXPERT软件。

4位乘法器的设计

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;。

计算机组成原理 阵列乘法器的设计

计算机组成原理 阵列乘法器的设计

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:阵列乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2006年12月31日目录第1章总体设计方案................................. 错误!未指定书签。

设计原理........................................ 错误!未指定书签。

设计思路..................................... 错误!未指定书签。

设计环境........................................ 错误!未指定书签。

第2章详细设计方案................................ 错误!未指定书签。

顶层方案图的设计与实现.......................... 错误!未指定书签。

创建顶层图形设计文件........................... 错误!未指定书签。

器件的选择与引脚锁定........................... 错误!未指定书签。

编译、综合、适配............................... 错误!未指定书签。

功能模块的设计与实现......................... 错误!未指定书签。

(A)一位全加器的设计与实现 (I)(B)一位全加器的仿真图如下图所示:............ 错误!未指定书签。

位输入端加法器的设计与实现..................... 错误!未指定书签。

输入端加法器的封装图如下图所示:............... 错误!未指定书签。

输入端加法器的仿真图如下图所示:............... 错误!未指定书签。

(A)阵列乘法器的设计与实现................. 错误!未指定书签。

四位硬件乘法器

四位硬件乘法器

四位硬件乘法器一、实验目的:1、学习移位相加时序式乘法器的设计方法2、学习层次化设计方法3、学习原理图调用VHDL模块方法4、熟悉EDA仿真分析方法二、实验原理:乘法器的原理是,乘法通过逐项移位相加原理来实现,从被乘数的最地位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。

ARICTL是乘法运算控制电路,它的START信号的上升沿与高电平有两个功能,即16位寄存器清0和被乘数A向移位寄存器SREG加载;它的低电平则作为乘法使能信号CLK位乘法时钟信号,被乘数加载于4位右移寄存器SREG 后,在时钟同步下由低位至高位逐位移出,当其为1时,与门ANDARITH打开,4位乘数B在同一节拍进入4位加法器,与上一节拍锁存在16位锁存器REG的高4位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器;而当被乘数的移出位为0时,与门全0输出。

如此往复,直至4个时钟脉冲后,乘法运算过程中止,此时REG的输出值即最后乘积。

三、实验设备:计算机一台操作系统:WINDOWS XP软件:ispDesignEXPERT System四、实验步骤:1、4位右移寄存器SREGLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SREG ISPORT(EN:IN STD_LOGIC;CLK: IN STD_LOGIC;LOAD:IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);QB: OUT STD_LOGIC);END SREG;ARCHITECTURE ART1 OF SREG ISSIGNAL REG:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,LOAD)BEGINIF CLK'EVENT AND CLK='1'THENIF LOAD='1'THEN REG<=DIN;ELSEREG(2 DOWNTO 0)<=REG(3 DOWNTO 1);END IF;END IF;END PROCESS;QB<=REG(0);END ART1;2、4位加法器ADDERLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER ISPORT(CIN:IN STD_LOGIC_VECTOR;B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);COUNT:OUT STD_LOGIC_VECTOR);END ADDER;ARCHITECTURE ART2 OF ADDER ISBEGINS<='0'&A+B;END ART2;3、选通与门模块ANDARITHLIBRARY 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 ANDARITH;ARCHITECTURE ART3 OF ANDARITH ISBEGINPROCESS(ABIN,DIN)BEGINFOR I IN 0 TO 3 LOOPDOUT(I)<=DIN(I) AND ABIN;END LOOP;END PROCESS;END ART3;4、锁存器REGLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG ISPORT(CLK,CLR,EN:IN STD_LOGIC;D: IN STD_LOGIC_VECTOR(4 DOWNTO 0);Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END REG;ARCHITECTURE ART4 OF REG ISSIGNAL R8S:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(CLK,CLR)BEGINIF CLR='1'THEN R8S<=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1'THENR8S(2 DOWNTO 0)<=R8S(3 DOWNTO 1);R8S(7 DOWNTO 3)<=D;END IF;END PROCESS;Q<=R8S;Q1<=R8S(7 DOWNTO 4);Q2<=R8S(3 DOWNTO 0);END ART4;5、运算控制器ARICTLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ARICTL ISPORT(CLK: IN STD_LOGIC;START: IN STD_LOGIC;CLKOUT: OUT STD_LOGIC;RSTALL: OUT STD_LOGIC;ARIEND: OUT STD_LOGIC);END ENTITY ARICTL;ARCHITECTURE ART5 OF ARICTL ISSIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINRSTALL<=START;PROCESS(CLK,START) ISBEGINIF START='1'THEN CNT<="0000";ELSIF CLK'EVENT AND CLK='1'THENIF CNT<4 THENCNT<=CNT+1;END IF;END IF;END PROCESS;PROCESS(CLK,CNT,START) ISBEGINIF START='0'THENIF CNT<4 THENCLKOUT<=CLK;ARIEND<='0';ELSE CLKOUT<='0';ARIEND<='1';END IF;ELSE CLKOUT<=CLK;ARIEND<='0';END IF;END PROCESS;END ARCHITECTURE ART5;6、顶层原理图。

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)。

阵列乘法

阵列乘法

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:阵列乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计环境 (3)第2章详细设计方案 (4)2.1顶层方案图的设计与实现 (4)2.1.1创建顶层图形设计文件 (4)2.1.2器件的选择与引脚锁定 (4)2.2功能模块的设计与实现 (5)2.2.1四位阵列乘法模块的设计与实现 (5)2.2.2细胞模块的设计与实现 (7)2.3仿真调试 (9)第3章编程下载与硬件测试 (11)3.1编程下载 (11)3.2硬件测试及结果分析 (11)参考文献 (14)第1章总体设计方案1.1 设计原理由于采用普通的方法计算两个数的相乘比较慢,为了进一步提高乘法运算的运算速度,可以采用类似于人工计算的方法,用阵列乘法器来进行计算,给人们带来了很大的方便。

四位阵列乘法器的原理框图如图1.1所示,X=X1X2X3X4 Y=Y1Y2Y3Y4且X为被乘数的输入端,Y为乘数的输入端,M=M0M1M2M3M4M5M6M7为乘积的输出端。

其基本原理是阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送入被乘数的每一数位。

四位阵列乘法器的整体设计包含十六个加法器模块,加法器模块中由一个与门和一个全加器构成,由四个与门、两个异或门、一个三端接口的或门构成的全加器为底层设计,采用原理图设计输入方式,所谓的全加器就是两个数X、Y及进位输入Cn相加可得全加和Fn和进位输出Cn。

顶层的四位阵列乘法器也采用原理图设计输入方式,在以十六个加法器为基础而构成的四位阵列乘法器,其主要以四个被乘数输入端、四个乘数输入端以及八个乘积输出端为主,外加还包括中间过程参与计算的进位输入端、部分积输入端和进位输出端、部分积输出端,这样一来就构成了一个完整的四位阵列乘法器。

4位数字乘法器设计

4位数字乘法器设计

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

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

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

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

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

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

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

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

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

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

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和保持功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
3
由小器件单元模块到最终阵列乘法器大模块的实现,功能图及原理图。
总逻辑电路:
图3
3
阵列乘法器的原理,设X1,X2,X3,X4,Y1,Y2,Y3,Y4为阵列乘法器的输入端,Z1~Z8为阵列乘法器的输出端,该逻辑框图完成的功能实现两个二进制既F(X)*F(Y)的乘法运算,其运算结果为F(Z).(其中F( X)=X1X2X3X4,F(Y)=Y1Y2Y3Y4),F(Z)=Z1Z2Z3Z4Z5Z6Z7Z8而且输入和输出结果均用二进制表示),,乘法运算可分解为移位和相加两种子运算过程的方法是,把每次相加的结果用部分积P表示,若B中某一位iB=1,则部分积P右移1位后与A相加;若B中某一位iB=0,则部分积P右移1位后与0相加。通过四次移位和累加,最后得到的部分积就是A与B的乘积。
10 0 0
10 1 1
1 0 1 1
___________________________
1 0 0 0 1 1 1 1
图1人工计算乘法示例
3
由于硬件环境基于QUARTUSⅡ的环境下实现的,采用芯片74283,与门完成4位阵列乘法器。(如下图2)
器件74283为加法器
图2 4位阵列乘法器所使用芯片
一个阵列乘法器要完成X.Y乘法运算(X=X4X3X2X1,Y=Y4Y3Y2Y1)。阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送入被乘数的每一数位。阵列乘法器是由十六个模块组成,每一个模块构包括一个与门和一位全加器。
1 0 1 1
×1 1 0 1
________________
10 1 1
例子4、 A:1001, B:1100, 则Z:01101100
四、
紧张的计组终于接近尾声,通过这一周的学习我感觉有很大的收获,我把相对多的精力放在环境设置和原理应用上。对我们言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
4位阵列乘法器
一、设计题目4位阵列乘法器
二、
计算机组成原理是计算机专业的核心专业基础课。课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决问题的能力。
同时也巩固了我们对课本知识的掌握,加深了对知识的理解。在设计中我们发现问题,分析问题,到最终的解决问题。凝聚了我们对问题的思考,充分的锻炼了我们的动手能力、团队合作能力、分析解决问题的能力。
3.5时序图(图4)
图 4
图中分别对应被乘数A0,A1,A2,A3,乘数B0,B1,B2,B3,积为Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7
例子1、A:1011,B:1111,则Z:10100101
例子2、A:1010,B:1001,则Z:01011010
例子3、 A:1011, B:1011, 则Z:10001001
三、设计过程
3
阵列乘法器是类似于人工计算(如图1.1所示)的方法,乘数与被乘数都是二进制数。所以可以通过乘数从最后一位起一个一个和被乘数相与,自第二位起要依次向左移一位,形成一个阵列的形式。这就可将其看成一个全加的过程,将乘数某位与被乘数某位与完的结果加上乘数某位的下一位与被乘数某位的下一位与完的结果再加上前一列的进位进而得出每一位的结果。
五、参考文献
[1]邹凤华谷赫《计算机组成原理》、《数字逻辑》
[2]王爱英《计算机组成原理》出版社清华大学出版
[3]范延滨微型计算机系统原理 北京邮电大学出版社
[4]杜建国Verilog HDL硬件描述语言北京清华大学出版社
[5]姜雪松可编辑逻辑部件北京机械工业出版社2008年
相关文档
最新文档