EDA实习之8位乘法器设计_第1页
EDA实习之8位乘法器设计_第2页
EDA实习之8位乘法器设计_第3页
EDA实习之8位乘法器设计_第4页
EDA实习之8位乘法器设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、移位相加8位硬件乘法器设计 学号:10446234常 州 大 学EDA 技 术 课 程 设 计 报 告题 目: 移位相加8位硬件乘法器设计 学 生: 朱京 学院(系): 信息科学与工程学院 专 业 班 级: 电子102 指导教师: 李文杰 移位相加8位硬件乘法器设计一、设计题目 移位相加8位硬件乘法器设计二、设计背景 纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器。基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。由8位加法器构成的以时序逻辑方式设计的8位乘法器,具有一定的实用价值。其乘法通过逐项移位相加来实现,从被乘数最低位开始,若为1,则

2、乘数左移后与上次的和相加,若为0,左移后与全0相加,直至被乘数的最高位。三、设计内容及要求设计内容:设计移位相加8位硬件乘法器,完成8位被乘数A7.0和8位乘数B7.0的乘法运算,得到16位的乘法运算输出DOUT15.0。(1)设计8位移位寄存器SREG8B,当被乘数加载于SREG8B后,随时钟节拍,最低位在前,由低位至高位逐位移出。(2)设计与门,根据移位寄存器输出是否为1,决定输入加法器的是8位乘数还是全零。(3)设计8位加法器,将8位乘数或全零与16位锁存器的高8位进行相加。(4)设计16位锁存器REG16B,在时钟到来时,锁存来自加法器的输出至高8位,并右移低8位。要求:1)根据系统设

3、计要求,采用自顶向下的方法,划分系统主要模块,画出整体设计原理框图。2)根据工作原理、用硬件描述语言对设计内容实现,列出设计程序清单,给出仿真波形图和调试中存在问题及解决方法。3)设计内容下载至目标芯片,在EDA的GW48型实验箱进行功能验证。4)谈谈该课题的课程设计中遇到的问题,获得哪些技能和体会,以及建设性意见。四、设计步骤和安排:(1)题目安排;图书馆查相关资料;(2)设计原理研究,总体设计;(3)各主要模块的VHDL设计。各模块的设计仿真分析。 (4) 完成系统顶层文件设计,系统总体功能的仿真分析。 (5) 将设计内容进行硬件配置,在GW48实验箱上进行调试。 (6) 撰写课程设计报告

4、、答辩并提交报告。14移位相加8位硬件乘法器设计 目 录1产品设计介绍11.1 概念:11.2 意义:11.3主要功能:11.4设计平台:11.4.1硬件平台:11.4.2软件平台:12方案设计及实现22.1系统实现原理22.2 设计步骤22.2.1系统介绍:22.2.2原理框图:22.3主要模块之8位右移寄存器模块的设计42.3.3源代码:42.3.4仿真图:52.3.5仿真分析:52.4主要模块之8位加法寄存器模块的设计62.4.3源代码:6 2.4.4仿真图:62.5主要模块之选通与门模块的设计72.5.3源代码:72.5.4仿真图:82.5.5仿真分析:82.6主要模块之16位锁存器的

5、设计92.6.4仿真图:102.6.5仿真分析:102.7系统总体仿真112.7.1仿真图:112.7.2仿真分析:113硬件调试113.1调试方法:113.2调试步骤:113.3调试结果及分析:124心得体会及总结125参考文献126附录136.1引脚锁定136.2功能扩展131产品设计介绍 1.1 概念:该乘法器是由8位加法器构成的以时序方式设计的8位乘法器。 1.2 意义:纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器。基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。由8位加法器构成的以时序逻辑方式设计的8位乘法器,具有一定的实用价值

6、。其乘法通过逐项移位相加来实现,从被乘数最低位开始,若为1,则乘数左移后与上次的和相加,若为0,左移后与全0相加,直至被乘数的最高位。1.3主要功能: 乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。1.4设计平台: 1.4.1硬件平台:GW48 EDA实验系统 1.4.2软件平台: MAX+plus II;Windows72方案设计及实现 2.1系统实现原理在下图中,START信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A7.0向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号。

7、CLK为乘法时钟信号。当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,与门ANDER打开,8位乘数B7.0在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数的移出位为0时,与门全零输出。如此往复,直至8个时钟脉冲后,乘法运算过程中止。此时SREG16B的输出值即为最后的乘积。此乘法器的优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。本设计采用层次描述方式,且用原理图输入和文本输入混合方式建立描述文件。下图是乘法器顶

8、层图形输入文件,它表明了系统由8位右移寄存器(SREG8B)、8位加法器(ADDER8)、选通与门模块(ANDER)和16位锁存器(SREG16B)所组成,它们之间的连接关系如下图所示。 2.2 设计步骤 2.2.1系统介绍:此移位相加8位硬件乘法器分为四大部分。第一部分:8位寄存器设计第二部分:选通与门设计第三部分:8位带进位加法器第四部分:16位锁存器 2.2.2原理框图:16位锁存器8位寄存器加法器选通与门clk输入输出高8位移位相加硬件乘法器电路原理图2.3主要模块之8位右移寄存器模块的设计2.3.1 模块说明:输入为clk、load和din,输出为q;2.3.2 模块功能:模块的主要

9、功能是数据右移。8位右移寄存器工作流程图clk=1结束YYNYN输出最低位装载新数据开始load=0数据右移 2.3.3源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity SREG8B isport(clk,load:in std_logic; din:in std_logic_vector(7 downto 0); q:out std_logic);end SREG8B;architecture behave of SR

10、EG8B issignal reg8:std_logic_vector(7 downto 0);beginprocess(load,clk)beginif(clk'event and clk='1')then if(load='0')thenreg8<=din; else reg8(6 downto 0)<=reg8(7 downto 1); end if;end if;end process; q<=reg8(0);end behave; 2.3.4仿真图: 2.3.5仿真分析: 在上升沿脉冲到来且load为0的时候,装载新数据,并输

11、出din(0);在load为1的时候,进行数据右移,并输出din(0)。2.4主要模块之8位加法寄存器模块的设计2.4.1模块说明:输入为a、b,输出为q;2.4.2模块功能:模块的主要功能是实现两个8位数的加法运算8位加法寄存器的工作流程图开始q<=a+b结束 2.4.3源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ADDER8 isport(a:in std_logic_vector(7 downto 0); b:in std_logic_vector(7 dow

12、nto 0); q:out std_logic_vector(8 downto 0);end ADDER8;architecture behave of ADDER8 isbeginq<=a+b;end behave; 2.4.4仿真图:: 2.4.5仿真分析: 这是一个8位带进位加法器,输出q为输入a与输入b的和,最高位q(8)是进位位2.5主要模块之选通与门模块的设计2.5.1模块说明:输入为abin和din,输出为q;2.5.2模块功能:模块的主要功能是完成8位与1位运算。选通与门模块的工作流程图abin=1q<="00000000"开始结束q<=d

13、in 2.5.3源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ANDER isport(abin:in std_logic; din:in std_logic_vector(7 downto 0); q:out std_logic_vector(7 downto 0);end ANDER;architecture behave of ANDER isbeginprocessbeginif(abin = '1')thenq<=din;elseq<=

14、"00000000"end if;end process;end behave; 2.5.4仿真图: 2.5.5仿真分析: 在abin为1的时候,输出q=din;在abin为0的时候,输出q=“00000000”。 2.6主要模块之16位锁存器的设计 2.6.1模块说明:输入为clk、clr和din,输出为q; 2.6.2模块功能:模块的主要功能是将数据锁存。16位锁存器工作流程图开始结束清零锁存输入值并右移低8位clr=0clk=1YYN输出16位结果 2.6.3源代码:library ieee;use ieee.std_logic_1164.all;use ieee.s

15、td_logic_unsigned.all;use ieee.std_logic_arith.all;entity SREG16B isport(clk,clr:in std_logic; din:in std_logic_vector(8 downto 0); q:out std_logic_vector(15 downto 0);end SREG16B;architecture behave of SREG16B issignal reg16:std_logic_vector(15 downto 0);beginprocess(clr,clk)beginif(clr = '0

16、9;)thenreg16<="0000000000000000"elsif(clk'event and clk='1')then reg16(15 downto 7)<=din; reg16(6 downto 0)<=reg16(7 downto 1);end if;end process; q<=reg16;end behave; 2.6.4仿真图: 2.6.5仿真分析: 当clr为0的时候,输出清零;在clr为1且上升沿脉冲到来的时候,输入din锁存至输出的高9位且将低8位右移一位。 2.7系统总体仿真 2.7.1仿真图:

17、 2.7.2仿真分析: 将输入A设定为21,输入B设定为32,按下START(键8),连续来8个脉冲后,输出为0672,与理论计算结果相同。 3硬件调试 3.1调试方法: 在GW48 EDA实验箱上选择电路模式1,8位输入A、B分别锁定键1、2、3、4,START信号锁定键8,16位输出锁定数码管5、6、7、8,CLK信号选择2KHz。 3.2调试步骤: 1.输入A设定为21,输入B设定为32;2.CLK选择2KHz,按下START(键8);3.观察数码管5、6、7、8。 3.3调试结果及分析: 结果:在第8个脉冲到来时,数码管上显示0672;分析:与仿真波形的结果相同,更改输入A,B的数据,

18、数码管的输出结果与仿真波形都相同,达到设计要求。 4心得体会及总结 4.1总结 在长达十天的课程设计当中,我更加熟悉了MAX+plus II 软件的使用,比如说实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。 加深了对VHDL编程语言的理解,尤其是本课题中锁存器的设计让我更清楚进程、变量、信号的使用及它们之间的区别。 EDA这门课程还是非常重要的。通过这次EDA课程设计,意识到了其重要性。当然,团队合作也很重要,非常感谢其他组员的配合,才能让这次的EDA课程设计快速的完成。 4.2遇到的问题 在调试过程中,其输出结果与仿真波形总是不一致,但是一直找不到错误。后来,想到了原因

19、是因为引脚锁定时锁定错误。一个非常低级的错误,让我多走了一些弯路。提醒自己在做各种事情的时候要小心谨慎,不要粗心大意。5参考文献【1】 朱正伟编著EDA基础及应用【2】 韩学超,张小鸣编著EDA技术开发系统GW48实验指导书6附录 6.1引脚锁定 选择器件FLEX EPF10K10-PLCC84-4名称引脚号名称引脚号A(0)5B(0)17A(1)6B(1)18A(2)7B(2)19A(3)8B(3)21A(4)9B(4022A(5)10B(5)23A(6)11B(6)24A(7)16B(7)25START81CLK43DOUT(0)27DOUT(1)28DOUT(2)29DOUT(3)30D

20、OUT(4)35DOUT(5)36DOUT(6)37DOUT(7)38DOUT(8)39DOUT(9)47DOUT(10)48DOUT(11)49DOUT(12)50DOUT(13)51DOUT(14)52DOUT(15)53 6.2功能扩展以下内容是为了显示本次课程设计的题目”4:MUTIPLY”,采用verilog语言。代码如下:module lcd(clk, rs, rw, en,dat); input clk; output 7:0 dat; output rs,rw,en; reg e; reg 7:0 dat; reg rs; reg 15:0 counter; reg 4:0 c

21、urrent,next; reg clkr; reg 1:0 cnt; parameter set0=4'h0; parameter set1=4'h1; parameter set2=4'h2; parameter set3=4'h3; parameter dat0=4'h4; parameter dat1=4'h5; parameter dat2=4'h6; parameter dat3=4'h7; parameter dat4=4'h8; parameter dat5=4'h9; parameter dat6

22、=4'hA; parameter dat7=4'hB; parameter dat8=4'hC; parameter dat9=4'hD; parameter dat10=4'hE; parameter dat11=5'h10; parameter nul=4'hF;always (posedge clk) begin counter=counter+1; if(counter=16'h000f) clkr=clkr;endalways (posedge clkr)begin current=next; case(current)

23、 set0: begin rs<=0; dat<=8'h30; next<=set1; end set1: begin rs<=0; dat<=8'h0c; next<=set2; end set2: begin rs<=0; dat<=8'h6; next<=set3; end set3: begin rs<=0; dat<=8'h1; next<=dat0; end dat0: begin rs<=1; dat<="4" next<=dat1; end dat1: begin rs<=1; dat<=":" next<=dat2; end dat2: begin rs<=1; dat<="M" next<=dat3; end dat3: be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论