定点原码一位乘法器的设计.docx

上传人:b****5 文档编号:5762889 上传时间:2023-01-01 格式:DOCX 页数:19 大小:308.37KB
下载 相关 举报
定点原码一位乘法器的设计.docx_第1页
第1页 / 共19页
定点原码一位乘法器的设计.docx_第2页
第2页 / 共19页
定点原码一位乘法器的设计.docx_第3页
第3页 / 共19页
定点原码一位乘法器的设计.docx_第4页
第4页 / 共19页
定点原码一位乘法器的设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

定点原码一位乘法器的设计.docx

《定点原码一位乘法器的设计.docx》由会员分享,可在线阅读,更多相关《定点原码一位乘法器的设计.docx(19页珍藏版)》请在冰豆网上搜索。

定点原码一位乘法器的设计.docx

定点原码一位乘法器的设计

 

定点原码一位乘法器的设计(总23页)

沈阳航空工业学院

 

课程设计报告

 

课程设计名称:

计算机组成原理课程设计

课程设计题目:

定点原码一位乘法器的设计

 

院(系):

计算机学院

专业:

计算机科学与技术

班级:

6401101

学号:

1031

姓名:

闫培峰

指导教师:

周大海

完成日期:

2009年1月9日

 

第1章总体设计方案

设计原理

原码一位乘,两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。

例:

X=,Y=,计算乘积X*Y。

*

0000

1100

1100

1100

0.

在计算时,逐次按乘数每1位上的值是1还是0,决定相加数取被乘数的值还是取零值,而且相加数逐次向左偏移1位,最后一起求积。

由于在计算机内多个数据一般不能同时相加,一次加法操作只能求出两数之和,因此每求得一个相加数,就与上次部分积相加每次计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(被乘数)的两倍,因此加法器也需增到两倍。

部分积右移时,乘数寄存器同时右移一位,所以用乘数寄存器的最低位来控制相加数取被乘数或零,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。

根据人工算法可以知道,原码一位乘法的整体设计应包括乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,包含一个输入、输出、控制器模块,并作为顶层设计,以上五大模块作为底层设计,采用硬件器件设计实现。

因此,可以得出以下原理框图设计如图所示:

图原码一位乘的逻辑电路框图

如上逻辑框图中所示,其中B为被乘数寄存器,用来存放被乘数,C为乘数寄存器,用来存放乘数并且移位,A为部分积寄存器,存放每次相加并移位后的数据,ALU加法器实现加法操作,移位电路用来对相加后的数据作移位处理,计数器控制移位次数和输出结果。

设计环境

·硬件环境:

伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;

·EDA环境:

Foundation设计软件。

该设计由设计入口工具,设计实现工具,验证工具三大部分组成.入口工具包括原理图设计,有限状态编辑器,硬件描述语言编辑器等。

第2章详细设计方案

整体模块设计图

按照课设题目要求及逻辑电路图,先设计出电路的具体模块图,如下图所示,共有五大模块。

1加法器:

题目要求是4位数据位,再加上2个符号位共6位,所以要求本加法器能实现对6位二进制数相加;2部分积:

按照原码一位乘原理,部分积要求是具有并行输入输出和串行输入输出及其带有异步清零端的移位寄存器;3被乘数:

是用来存放被乘数的寄存器,不需要移位功能,用普通的寄存器即可;4乘数:

应和部分积模块有基本一样的功能,有并行输入输出和串行输入输出功能;5控制器:

实现电路的自动停止功能,可用计数器来完成,当经过4个脉冲后,计数器进位输出为1,然后将进位和总的CLK进行或运算来实现消除脉冲,进而实现电路停止工作。

图整体模块图设计图

2.2具体模块的设计与实现

整体设计主要由乘数寄存器,被乘数寄存器,控制器,部分积寄存器和加法器五大模块,其中被乘数和部分积寄存器是移位寄存器,除了以上五大模块以外,还有符号转化芯片以及符号运算部分,以下介绍各个模块的具体设计方案与实现。

被乘数模块的设计与实现

从乘法设计的原理图可以看出被乘数并不需要移位功能,所以只需具用普通的寄存器的功能即可,选用上升沿的D触发器,在第一个上升沿将数据打入,并不在变化。

(1)被乘数芯片外观及内部电路图

图被乘数寄存器芯片外观

显然用6个D触发器就可实现,每个触发器的CLK并联接在一起,输入端作为数据输入端,输入数据后会第一个上升沿到时把数据打入,因为被乘数的每一位要和乘数的最低一位进行与运算,所以可以在电路中加入6个与门其中每个与门的一端与被乘数的输出端相连,另一端接在一起并引出,作为和乘数最低位的连接端,其中寄存器部分具体实现如下:

图被乘数寄存器电路图

(2)功能仿真

图被乘数寄存器芯片内部电路图

从以上波形中可看出,输入数据为100111,当第一个上升沿到达时,数据被打入,并且不随以后的波形而改变,所以该器件设计成功。

乘数寄存器模块的设计与实现

本乘数寄存器是在普通移位寄存器的基础上改造而来的,即在基本寄存器上面加入了用并行输入和串行输入的片选端S,当S=1时并行输入,并屏蔽串行移位功能,S=0时串行移位,并屏蔽并行输入功能,D5-D0为数据输入端,Q5-Q0为数据输出端,A0为串行输入端,来接受部分积低位移出的数据。

(1)乘数芯片外观及内部电路图

图乘数寄存器芯片外观

按照整体模块设计时的思想,乘数寄存器具有并行输入输出和串行输入输出功能,我们可在被乘数寄存器上面加一部分电路来实现,它同样由六位D触发器组成,每个触发器的输入端不是直接接在数据输入端上,而是通过片选电路接入,同时每个D触发器的输出端也是通过片选电路接到下一个触发器的输入端,这样就可以通过片选段S的不同(0或1)来选择具体的操作,具体电路图如下:

图乘数寄存器芯片内部电路图

(2)功能仿真

功能仿真波形如下:

图乘数寄存器测试波形仿真

 

从以上波形中数据可以看出,输入数据为101100该器件清零,当第一个上升沿到来时S=1,数据被打入,当第二个上升沿到来时S=0,A0始终为1,此时产生移位。

所以该器件设计成功。

部分积模块的设计与实现

部分积的设计是乘法电路中比较重要的一块,它和乘数的功能基本一样,只是在D触发器的选择上稍有不同,部分积寄存器选用的是有异步清零端CLR的D触发器,并且为高电平清零,其余端和乘数一样,S=1:

并行输入,S=0:

右移。

(1)部分积芯片外观及内部电路图

图部分积寄存器芯片外观

通过和乘数寄存器比较可以发现,两者的不同点就是在D触发器的选择上,部分积是用具有异步清零的D触发器(高电平有效),并将其清零端CLR作为一个输入端。

A为能起到保存最低一位数据功能的D触发器,防止乘数脉冲和部分积脉冲上升沿到来存在的时间差而引起的不能移入的情况,此D触发器的输出端接入乘数的高位串行输入端,并实现移位,又因为部分积不需要串行输入数据,所以串行输入端接地,具体电路实现如下图:

图部分积寄存器电路图

(2)功能仿真

图部分积寄存器波形仿真

从波形可以看出输入数据为110010,CLR在前两个上升沿为高电平,起清零作用,所以输出端均为0,到第三个上升沿到时CLR已是低电平,S=1,数据被打入,此后S=0,电路实现移位,所以此电路设计成功。

控制器模块的设计与实现

控制器由波形发生器和计数器组成,波形发生器实现用输入的CLK和S波形产生乘数寄存器S端其CLK波形,计数器实现当乘数寄存器到第五个上升沿到来时计数进位输出为1,并保持不变,其中其CLK和乘数S脉冲相同,将计数器的进位输出端CO和输入的CLK一同接入或门输出作为所有部件的CLK脉冲,当进位输出为1时,CO和CLK进行或运算,结果输出为1,即脉冲恒为1,电路停止工作,此时输出结果。

(1)控制器芯片外观及内部电路

       图总控制器芯片外观

按照整体设计思路,需要输入两个脉冲:

CLK和S,作为部分积的时钟信号和S片选端脉冲,同时也是被乘数的时钟脉冲,但乘数的时钟脉冲(CLKX)和S(SX)端脉冲却要通过这两个波形产生(具体形状见底下功能仿真中的波形发生器波形),然后通过这4个波形使总电路正常工作,其中乘数只在首次进行数据写入,之后只进行移位而不再写入数据,所以乘数的S片选端只在刚开始为高电平,之后应该全为低电平,所以其波形可通过一个D触发器来实现,其D输入端接高电平,并将输入波形作为器脉冲源,当地一个上升沿到时,其输出端变成高电平,并不在变化,而本电路中要得到相反的结果,可在其输出端加非门来实现,但要通过CLK和S产生CLKX波形,通过比较CLKX和CLK波形可以发现,CLKX刚好是CLK两倍波形,所以可把S取反之后加到一个D触发器的输入端,然后将S作为其脉冲源即可,具体电路如下图:

图波形发生器电路图

对计数器部分可直接用书上的计数器,如图所示,其以S脉冲作为脉冲源,3个JK触发器最大可接成8进制计数器,但在本电路中只需4进制计数器即可,即当S走到第5个脉冲时进位输出为1并保持不变,所以当三个输出端输出数据为101是进位输出为1,这可通过一个三输入的与门实现,其中一个输入端为低电平输入,为了保存进位输出可将其进位输出端作为一个D触发器的脉冲,D输入端接高电平,一旦进位输出为1D触发器被触发并输出1,具体电路如图所示。

图计数器电路图

(2)功能仿真

图波形发生器波形仿真

图计数器波形仿真

从上面的两个波形可以看出,在波形发生器部分,输入CLK和S,输出四个波形:

BUFENJIS(部分积S端脉冲),SX(乘数S端的脉冲),BUFENJICLK(部分积CLK脉冲),CLKX(乘数CLK脉冲);在计数器部分当第五个上升沿到来时候其进位输出为一,并不在变化,电路设计成功。

加法器及其他模块的设计与实现

采用两个原有的XCV200可编程逻辑芯片加法器件ADD4实现电路中的加法,由于要求是4位数据,加上两个符号位共6为数据,所以第二片4位加法器芯片的两个高位分别接地,输出端也只取其低两位。

(1)加法器芯片外观及其内部电路

图加法器芯片外观

图加法器内部电路图

(2)功能仿真

图加法器仿真

A5-A0和B5-B0是输入数据,因为题目要求是原码一位乘,所以其加法器只参与两个数据的绝对值运算,即符号位均为0,输入数据分别为001101和001101,C5-C0为输出,可以看出结果正确无误,所以电路设计成功。

(3)电路其他部件说明

除了上述的五大模块以外,整个电路也包含其他部件,具体有符号转化部件和符号位异或运算,符号位转换部分是把输入的数据转换成其绝对值,即无论两个符号位是11还是00,则通过符号转换部件后输出均为00,其实现电路如下所示:

由于两个与门的一端均接地所以两个输出端均为0。

然后符号位进行异或运算得到符号部分的正确输出结果。

2.3总电路仿真测试

仿真测试试主要验证设计电路逻辑功能、时序的正确性,本次设计为原码一位乘法,设计完成主要采用功能仿真方法对设计的电路进行仿真从而验证其电路功能的正确性。

(1)建立仿真波形文件及仿真信号选择

功能仿真时,首先建立仿真波形文件,输入仿真信号为CLK和S,数据输入A5-A0和B5-B0,符号位输入为A5A4和B5B4,结果输出C5-C0,对以上选定的输入信号设置参数,验证输出信号的正确性。

(2)功能仿真结果与分析

图仿真波形

从波形可以清楚的看出输入和输出结果,在本次测试中输入的两个数为第一章乘法说明举例的两个数:

001100和001110,从图可以看到输出结果,C4为符号位,从上往下读运算结果为0,经过对比正确无误,即说明总的电路设计成功,符合课设题目的基本要求。

图仿真输出结果

第3章编程下载与硬件测试

编程及下载

功能仿真通过以后,经过编译,若成功,则编程下载功能,将得到的*.bit文件,然后下载到XCV200实验板的XCV200可编程逻辑芯片中。

由于此次设计编译有点问题,不能通过,最终没能成功下载,试验没能完美的完成,有点遗憾!

参考文献

[1]曹昕燕.EDA技术实验与课程设计[M].北京:

清华大学出版社,2006

[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:

北京邮电大学出版社,2006

[3]王爱英.计算机组成与结构(第4版)[M].北京:

清华大学出版社,2006

[4]李勇.计算机原理与设计(修订本).长沙:

国防科技大学出版社,1989

[5]王尔乾.数字逻辑与数字集成电路.北京:

清华大学出版社,1996

[6]白中英.计算机组成原理.北京:

科学出版社,1994

[7]杨天行.计算机技术.北京:

国防工业出版社,1999

附录(电路图)

课程设计总结:

主要从以下两方面总结:

1.在这次组成原理设计实验中,遇到了很多问题,刚开始拿到题目的时候都不知道从何下手,完全不知道各个部件都应该怎么设计,后来经过查资料和答疑才有了思路,但很快又有了新的问题,在各个模块设计好了之后,由于乘数和部分积是移位寄存器,其使能控制端S很明显和输入的CLK脉冲不同,而且乘数和部分积的使能控制端S的波形也不同,如何协调各个部件的波形是整个电路正常工作成了设计本电路的关键问题,最后经过大量的尝试解决了这个问题,只需输入CLK和S就可产生各个部件的不同波形,并可协调运行,虽然在过程中也有过艰辛,但最后能尝到成功的喜悦也觉得很值得!

2.通过这次实验设计,了解了许多计算机组成原理知识,更重要的是知道了自己在设计方面的不足和所需要学习的知识,在这次设计中指导老师给予了我很大的帮助,在此表示感谢!

并且在以后的学习和实验中会更加努力的学习,弥补自己的不足。

指导教师评语:

 

指导教师(签字):

      年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1