




免费预览已结束,剩余12页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 任 务 书课程名称 计算机组成原理 课 题 8位定点补码乘法器的设计与实现专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2006年12月27 日任务完成日期 2007年 1 月 14 日14一、设计内容与设计要求1设计内容乘法器是计算机运算器的重要组成部分。本次课程设计的主要内容是利用ALTERA公司的EPF10K10LC84-4的内部可编程资源,设计8位定点补码乘法器的设计与实现。本课程设计的主要目的是通过8位定点补码乘法器的设计和调试,使学生掌握8位定点补码乘法器的工作原理,并培养学生分析和解决实际问题的能力,同时增强学生的动手能力。2设计要求:掌握结构化系统设计的主要思想,以自下而上逐步完善的方法设计8位定点补码乘法器,用VHDL 语言完成设计并调试成功,以掌握运算器的工作原理知识。(1)在规定的时间内以小组为单位完成相关的系统功能实现、数据测试和记录并进行适当的分析。(2)按本任务书的要求,编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订; (3)在规定的时间内,请各班学习委员收齐课程设计报告交邓作杰老师。3分组及安排第 1组为1、6、11、16、21、26 学号同学,第1组做第1题,每个同学必须独立完成指定的题目。4成绩评定设计方案是否合理;VHDL程序是否正确;仿真结果;设计说明书的质量高低;答辩时回答问题情况;课程设计周表现情况;总评成绩记入“课程设计成绩评分表”。二、进度安排第 17 周,具体安排如下:星期时间班级内容地点第十七周一上午任务安排C-502二三四上午8:00-12计算机0501/0502乘法器的设计E-512五上午8:00-12计算机0501/0502乘法器的实现E-512六上午8:00-12计算机0501/0502乘法器的仿真E-512目录一、课题的主要功能1二、总体方案11.定点补码乘法的基本原理12.定点补码乘法器的逻辑框图2三、定点补码乘法器的的设计与VHDL的实现3四、乘法器仿真波形与数据分析7五、课程设计的收获及体会9六、参考资料10计算机科学与技术系课程设计评分表11七、附录12 一、课题的主要功能乘法器是计算机运算器的重要组成部分。本次课程设计的主要内容是利用ALTERA公司的EPF10K10LC84-4的内部可编程资源,设计一个8位定点补码乘法器。本课程设计的主要目的是通过8位定点补码乘法器的设计和调试,使学生掌握8位定点补码乘法器的工作原理,并培养学生分析和解决实际问题的能力,同时增强学生的动手能力。二、总体方案1定点补码乘法的基本原理“补码乘数”是采用补码作为操作数进行乘法运算,最后乘积仍为补码,能自然得到积的正确符号。从乘数的最低位开始,每次取一位乘数与被乘数相乘,经(N+1)次“相加右移”操作的过程完成乘法运算的过程被称作“补码一位乘数” 设被乘数X补=X0.X1X2Xn, 乘数Y=Y0.Y1Y2Ym, XY补=X补(0,Y1Y2Yn)+-X补Y0从而可以推出串行逻辑实现的分步算法,将上式展开加以变换: XY补=X补(-Y0+Y1+ Y2+ +Yn)=X补-Y0+(Y1-Y1) + (Y2- Y2)+ +(Yn- Yn) =X补(Y1-Y0)+( Y2-Y1) +(Y3- Y2) + (Yn-Yn-1) +(0-Yn) =X补)式中,YN+1是增设的附加位,初值为0。上式为部分积累加的形式。若定义P0补为初始部分积,P1补,P2补,PN补依次为各步求得的累加并右移后的部分积,则有:P0补=0P1补=(P0补+(Yn+1-Yn) X补)(YN+1=0)P2补=(P1补+(Yn-Yn-1) X补)Pi补=(Pi-1补+(Yn-i+2-Yn-i+1) X补)Pn补=(Pn-1补+(Y1-Y0) X补)定点补码乘法运算规则如下:1) 符号位参与运算,运算的数均以补码表示。2) 被乘数一般取双符号参加运算,部分积初始值为0。3) 乘数可取单符号位,以决定最后一步是否需要校正,即是否要加-X补。4) 乘数末位增设附加位Yn+1,且初值为0。2、定点补码乘法器的逻辑框图累加器A全 加 器Y B0存储器Y寄存器B B0计数器 C逻辑运算控制电路 到存储器 来自存储器 来自存储器来自寄存器它由累加器A,寄存器Y,寄存器B和全加器ADD组成,其中A的位数为2n ,并具有移位功能,用来存放部分积之和。Y和B都是n 位,分别用来存放被乘数和乘数,全加器ADD也是n位的,由于相加移位的过程一共需进行n 次,所以要用一个递减计数器C ,每做一次相加移位操作,计数器减1,直到计数器中的数据为0为止。部分积(A7A6A5A4A3A2A1A0)BI(i=0,1,2,3,4,5,6,7)是将寄存器B中的数据的每一位从左向右逐位与寄存器Y中的数据运算得到,寄存器B也采用移位寄存器,每次取用其最低位B0与被乘数运算,每求一次部分积,寄存器B右移一位,运算结束时,共进得了n次相加移位操作,寄存器B正好排空;与此相反的是,累加器的低n 位在运算开始时全部置0,每执行一次相加移位操作,部分积向低n 位移进一位,到运算结束,部分积恰好占满了整个整个低n 位累加器。定点补码乘法器的工作流程如图1所示A0,YMEMBMEM,CMEMAA+YB0ASRA,Ancarry,BSRB Bn A0 ,CC -1MEM A,BC=0 ? N 图.1定点补码乘法器的工作流程三、定点补码乘法器的的设计与VHDL的实现我们所设计的定点补码乘法器的实体如下ENTITY multiplier IS PORT(multiplicand, multiplier : IN BIT_VECTOR(7 DOWNTO 0); clock : IN BIT; product : INOUT BIT_VECTOR(15 DOWNTO 0);END multiplier;定点补码乘法器的结构体如下ARCHITECTURE structural OF multiplier ISBEGINPROCESS BEGIN WAIT UNTIL (clockEVENT AND clock = 1); IF clr_B = 1 THEN regY 0); ELSIF load_B = 1 THEN regY = multiplicand; ELSE regY = regY; END IF; IF clr_Y = 1 THEN regB 0); ELSIF load_Y = 1 THEN regB(k + 1) DOWNTO 1) = multiplier; regB(0) = 0; ELSIF shift_Y = 1 THEN regB = regB SRL 1; ELSE regB = regB; END IF; IF clr_rl = 1 THEN product 0); ELSIF load_rl = 1 THEN product(2*k + 1) DOWNTO (k + 1) = adderout; -add to top half product(k DOWNTO 0) = product(k DOWNTO 0); -refresh bootm half ELSIF shift_rl = 1 THEN product = product SRA 1; -shift right with sign extend ELSE product = product; END IF;END PROCESS;augend = product(2*k+1) DOWNTO (k+1);addgen : FOR i IN adderoutRANGE GENERATE lsadder : IF i = 0 GENERATE adderout(i) = tcbuffout(i) XOR augend(i) XOR comp; carries(i) = (tcbuffout(i) AND augend(i) OR (tcbuffout(i) AND comp) OR (comp AND augend(i); END GENERATE; otheradder : IF i /= 0 GENERATE adderout(i) = tcbuffout(i) XOR augend(i) XOR carries(i-1); carries(i) = (tcbuffout(i) AND augend(i) OR (tcbuffout(i) AND carries(i-1) OR (carries(i-1) AND augend(i); END GENERATE; END GENERATE; adder_ovfl = carries(k-1) XOR carries(k);tcbuffout = NOT regY WHEN (comp = 1) ELSE regY;PROCESS BEGIN WAIT UNTIL (clockEVENT AND clock = 1); IF boostate 2*(k + 1) THEN boostate = boostate + 1; ELSE boostate = 0; END IF;END PROCESS;PROCESS(boostate)BEGIN comp = 0; clr_Y = 0; load_Y = 0; shift_Y = 0; clr_B = 0; load_B = 0; clr_rl = 0; load_rl = 0; shift_rl = 0; IF boostate = 0 THEN load_Y = 1; load_B = 1; clr_rl = 1;ELSIF boostate MOD 2 = 0 THEN shift_Y = 1; shift_rl = 1; ELSE IF regB(0) = regB(1) THEN NULL; -refresh pp ELSE load_rl = 1; -update product END IF; comp = regB(1); END IF;END PROCESS;END structural; 四、乘法器仿真波形与数据分析 图2 选择编译文件的环境 图3 编译文件在该实体中有输入端口multiplicand(被乘数)和multiplier(乘数),输出端口product(结果),clock为时钟脉冲。在输入端输入4和2(二进制数),结果如下: 图4在相同的条件下,输入十进制的4和2,结果如下: 图5在相同的条件下,输入八进制的4和2,结果如下: 图 5五、课程设计的收获及体会这次课程设计给我的体会和收获都蛮多的,首先是做课程设计的工具-VHDL语言不在我们的教学里,我们要自己去学这门语言,而且时间又短,我们不得不争分夺秒地去看书。每个同学都跑到图书馆去借书,一借就是好几本,以至到后面书都没得借。这是我们初次接触到描述硬件方面的语言。虽说我们没有学过汇编语言,但在这之前我们学过C 语言和C+语言,尽管这两种语言描述的是软件方面,但给了我们很大的帮助。这让我们学VHDL的语法变得更容易。我觉得学VHDL的语法并不难,倒是对于它所描述的硬件没有一种感性上的认识。以前更多的是用手工去演算,这次课程设计让我更清楚乘法器的工作过程。乘法是基于加法运算的,通过部分积的右移以及各部分积相加得到。位移乘法器的原理就好像小学的乘法一样,做过完相乘后再加起来,只是进位不是以十为单位,而是以二为单位进位。做乘法器时,用到了寄存器,加法器,还有计数器等。这次课程设计让我学会了独立去学习,在大学里老师并不能什么都教你,很多东西都要自己去自学,就像次用到的VHDL语言一样,你要自己去查资料,自己去解决问题。如果你等老师去教你的话,那你将一事无成。在大学里老师扮演得更多的是指引的角色。还有就是学会了知识融会贯通的重要性,虽说这次是计算机组成原理课的课程设计,但这次课程设计用到的知识很广。有计算机语言,计算机组成原理,还有一个就是数字电路,其中计算机语言我们要联系到在C语言和 C+语言的思维方式。而在设计实体时,我们要联系到数字电路里的芯片,包括芯片的管脚和它的脉冲信号等。六、参考资料 1 陈华光. 计算机组成原理M.北京:机械工业出版社,2004 2 侯伯亨等. VHDL硬件描述语言与数字逻辑电路设计(修订版),西安:西安电子科技大学出版社,1999 计算机科学与技术系课程设计评分表课题名称: 8位定点补码乘法器的设计与实现 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:综合成绩按优、良、中、及格和不及格五级评定。)七、附录附件:8位定点补码乘法器的VHDL程序library IEEE;use IEEE.Std_logic_1164.all;ENTITY multiplier IS PORT(multiplicand, multiplier : IN BIT_VECTOR(7 DOWNTO 0); clock : IN BIT; product : INOUT BIT_VECTOR(15 DOWNTO 0);END multiplier;ARCHITECTURE structural OFmultiplier ISSIGNAL regY, adderout, carries, augend, tcbuffout : BIT_VECTOR(k DOWNTO 0);SIGNAL regB : BIT_VECTOR(k + 1) DOWNTO 0);SIGNAL adder_ovfl : BIT;SIGNAL comp ,clr_Y ,load_Y ,shift_Y ,clr_B ,load_B ,clr_rl ,load_rl ,shift_rl : BIT;SIGNAL boostate : NATURAL RANGE 0 TO 2*(k + 1);BEGINPROCESS BEGIN WAIT UNTIL (clockEVENT AND clock = 1); IF clr_B = 1 THEN regY 0); ELSIF load_B = 1 THEN regY = multiplicand; ELSE regY = regY; END IF; IF clr_Y = 1 THEN regB 0); ELSIF load_Y = 1 THEN regB(k + 1) DOWNTO 1) = multiplier; regB(0) = 0; ELSIF shift_Y = 1 THEN regB = regB SRL 1; ELSE regB = regB; END IF; IF clr_rl = 1 THEN product 0); ELSIF load_rl = 1 THEN product(2*k + 1) DOWNTO (k + 1) = adderout; -add to top half product(k DOWNTO 0) = product(k DOWNTO 0); -refresh bootm half ELSIF shift_rl = 1 THEN product = product SRA 1; -shift right with sign extend ELSE product = product; END IF;END PROCESS;augend = product(2*k+1) DOWNTO (k+1);addgen : FOR i IN adderoutRANGE GENERATE lsadder : IF i = 0 GENERATE adderout(i) = tcbuffout(i) XOR augend(i) XOR comp; carries(i) = (tcbuffout(i) AND augend(i) OR (tcbuffout(i) AND comp) OR (comp AND augend(i); END GENERATE; otheradder : IF i /= 0 GENERATE adderout(i) = tcbuffout(i) XOR augend(i) XOR carries(i-1); carries(i) = (tcbuffout(i) AND augend(i) OR (tcbuffout(i) AND carries(i-1) OR (carries(i-1) AND augend(i); END GENERATE; END
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论