电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

选题3基于FPGA的计算器设计

  • 资源ID:106893226       资源大小:671.50KB        全文页数:16页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

选题3基于FPGA的计算器设计

选题3 实验讲义实验名称:基于FPGA的计算器设计1 基于VHDL的运算系统设计原理分析本设计是基于VHDL的运算系统设计,目的是为了实现4位BCD码的加、减、乘、除的运算功能。运算时能够通过键盘输入运算类型和运算所需要的数据,然后通过BCD码转二进制电路将数据转化成运算所需要的二进制数,再将数据和运算类型反馈到相应的运算电路得到运算结果,最后将运算结果通过译码电路传送给数码管将结果显示出来。整个设计过程是在Quartus 的环境中进行的,采用自顶向下的设计方法,系统的结构框图如图2-1所示。图2-1 系统结构框图2 加法器设计 为了能够实现4位BCD码的加法运算,设计中被加数和加数都为16位二进制数,由于2个16位二进制数相加可能会产生进位,同时为了方便数码管显示,和采用了20位二进制。此外还有清零信号rst和加法使能信号add,当rst=1时对和进行清零,否则当add=1时进行加法运算。3 减法器设计 为了实现4位BCD码的减法运算,设计中被减数和减数为16位二进制数,差为20位二进制数。输入的信号有清零信号rst、减法使能信号sub、被减数a、减数b,输出的信号有差cha和借位co。由于两个数相减的差有可能为正数也有可能为负数,当差为负数时表现为补码的形式,必须要将负数的补码进行修正,修正时对差的低16位求补码运算,而差的正负用借位co来表示,co=1表示差为负,否则为正。4 乘法器设计4.1 乘法器设计的原理分析乘法运算的方法可以通过以下实例来说明:设被乘数A=1110,乘数B=1101,求A×B。由以上实际例子可以看出,16位二进制乘法运算可以使用移位相加的方法来实现,被乘数左移16次,乘数右移16次,当时钟上升沿到来时都对乘数的最低位进行判断,如果乘数的最低位为1则乘积加上已经移位的被乘数,否则加0。4.2 乘法器电路结构框图 根据乘法原理,采用移位相加的办法来实现乘法运算,如图5-1。图5-1 乘法器设计结构框图4.2.1 乘法器控制电路设计由于此次设计的是16位二进制乘法器电路,被乘数和乘数必须要移动16次,因此必须要使时钟信号只有16个脉冲。控制电路采用计数的办法,当乘法运算使能信号mul=1时,将计数值cnt16b清零,否则当cnt16b小于16时,cnt16b加1且cp等于clk;否则cp等于0,这样就保证了cp输出只有16个脉冲。关键的VHDL程序如下:process(clk,mul)-描述了一个移位脉冲计数器,产生移位脉冲 begin if mul='1' then cnt16b<="00000" elsif clk'event and clk='1' then if cnt16b<16 then cnt16b<=cnt16b+1; end if; end if; end process;process(clk,cnt16b,mul)begin if mul='0' then if cnt16b<16 then cp<=clk; else cp<='0' end if; else cp<=clk;end if;end process;4.2.2 乘数右移电路设计乘数右移的目的是为了判断乘数的最低位是0还是1,如果为0则乘机加上移位后的被乘数,否则加上0。关键的VHDL程序如下:process(clk,mul)begin if clk'event and clk='1' then if mul='1' then shifter16<=multiplier;-当 mul='1'装载入乘数 else shifter16(14 downto 0)<=shifter16(15 downto 1);-将乘数右移一位 end if; end if; qb<=shifter16(0);end process;4.2.3 被乘数左移电路设计 被乘数左移在乘法运算中是必须的,根据乘法运算的原理,当乘数的最低位为1时左移后的被乘数作为加法电路的一个加数。当乘法运算使能信号mul为1时,在被乘数前添加16个0,之后当脉冲到来的时候左移一位。关键的VHDL程序如下:process(mul,clk)begin if mul='1' then seg8<="0000000000000000"&multiplicand;-当mul='1'在被乘数前添加16个0 elsif clk'event and clk='1' then seg8(31 downto 1)<=seg8(30 downto 0); seg8(0)<='0' end if;end process;4.2.4 加法电路 加法电路负责判断右移后的乘数的最低位是0还是1,如果是1则将乘积和左移后的被乘数相加,否则加0。当乘法运算使能信号mul为1时,乘积初始化为0。关键的VHDL程序如下: process(mul,clk)beginif mul='1' then sum<=(others=>'0');- 当 mul='1'乘积清零 elsif clk'event and clk='1' then if qb='1' then sum<=sum+d; end if;end if;end process;4.3 乘法器顶层设计将控制电路、乘数右移电路、被乘数左移电路以及加法电路都打包后,采用原理图的方式将各个模块连接成顶层电路,顶层实体端口定义如图5-2。图5-2 乘法器顶层实体端口信号说明:clk :时钟脉冲 mul :乘法运算使能信号 a:被乘数 b:乘数product:乘积乘法器顶层电路的连接图如图5-3。图5-3 乘法器顶层连接图4.4 波形仿真及结果分析利用QUARTUS 软件将乘法器电路的顶层电路运行后,进行时序仿真,仿真波形如图5-4。 图5-4 乘法运算时序仿真波形在波形仿真时设置被乘数a=9999,乘数b=998,从波形图可以看出,运算完成时的乘积为9979002这说明运算结果正确。在mul=1,时候开始进行乘法运算,经过16个脉冲之后得到乘积,综上所述,4位BCD码乘法器电路已经设计完成。5 除法器的设计5.1 除法器设计原理分析此次设计的16位二进制除法器采用的是比较相减的方法,先在被除数前添加16个0,当时钟脉冲上升沿到来时将前一次高16位与除数比较,若大于或等于则将被除数的高16位减去除数,同时左移并将被除数的第1位置1,若小于则只是将被除数左移,等到下一个脉冲到来时再循环此操作,直到第16个脉冲之后停止操作。这样进行16个脉冲周期之后,被除数的高16位为余数,低16位为商。除法运算的原理可以通过以下实例来说明:设被除数A=1110,除数B=0110,求解A÷B的过程如下:5.2 除法器电路结构框图根据前面的算法分析,可知除法器设计要用到锁存器和移位寄存器,还有定时器判断运算过程。设计框图如图6-1。图6-1 除法器电路结构图 除法器电路由控制电路、比较电路、减法电路和移位电路组成。控制电路负责产生16个脉冲的时钟信号、转载信号、运算结束信号;比较电路则是将被除数的高16位和除数进行比较,若大于或等于则great为1,否则为0;减法电路先判断比较电路输出的great是否为1,若为1则将被除数的高16位和除数相减,否则不进行运算只保存被除数的高16位;移位电路是将被除数进行左移,并对great进行判断,若为1则将被除数的第一位置1。5.3 除法器顶层设计除法器顶层设计的端口信号定义如图6-2。 图6-2 除法器电路顶层实体信号说明:clk::系统时钟脉冲load: 除法运算使能信号(即装载信号)a:被除数b:除数q:商r:余数除法器顶层电路的连接图如图6-3。图6-3 除法器顶层连接图5.4 除法器波形仿真及结果分析利用QUARTUS 软件将除法器电路的顶层电路运行后,进行时序仿真,仿真波形如图6-4。 图6-4 除法器时序仿真波形在波形仿真时设置被除数a=9999,除数b=534,从波形图可以看出,运算完成时的商q为18,余数r为387,这说明运算结果正确。在load=1,时候开始进行除法运算,经过16个脉冲之后得到商和余数,综上所述,4位BCD码除法器电路已经设计完成。6 键盘扫描电路设计6.1 矩阵式键盘的原理矩阵式键盘是一种常见的输入装置,在日常生活中,矩阵式键盘在计算机、电话、手机等各式电子产品上已经被广泛应用3。图7.1是一个4×4矩阵式键盘的面板配置图,其中数字09作为各种运算的数字输入键,#为清零功能键,=为运算结果键,+、-、×、÷为运算的选择键。键盘上的每一个按键其实就是一个开关,每个键都有一个上拉电阻,当某键按下时,该按键的接点会呈现低电平状态,反之,未按下时则呈现高电平状态。 图7-1 4×4矩阵式键盘的面板配置6.2 扫描电路设计6.2.1 键盘扫描电路原理对键盘采用015计数的方式,输入信号为键盘的列信号,对键盘进行逐行扫描。扫描键盘的编码方式如图7-2,当没有按下键盘时,键盘输入到按键检测电路col的值均为1,此时key=1;否则当使用者按下键盘按钮时,键盘检测到按键电路col的值为0,此时key=0 4。 图7-2 扫描键盘的编码方式6.2.2 键盘扫描电路组成键盘扫描电路由键盘扫描计数器电路、键盘检测电路、键盘消抖动电路以及键盘编码电路组成。6.3 键盘扫描计数器电路时钟信号clk频率为1KHz,按键(key_pressed)为使能信号,当未按下键盘时key_pressed=1,此时由015反复计数,并将计数值作为按键检测电路的输入信号,直到按下键key_pressed=0时计数器停止输出计数值。扫描计数器电路的关键VHDL程序如下:process(clk,key_pressed) begin if clk'event and clk='1' then if key_pressed='0' then q<=q+1; end if; end if;end process; 6.4 按键检测电路按键检测电路的输入信号为col和scan_cnt,输出信号为row和key_pressed。检测电路根据计数值scan_cnt判断row和key_pressed,scan_cnt的低2位用于判断扫描的列,scan_cnt的低2位“00”、“01”、“10”、“11”分别代表第一列、第二列、第三列、第四列;而scan_cnt的高2位“00”、“01”、“10”、“11”分别代表第一行、第二行、第三行、第四行。按键检测电路的关键VHDL程序如下:row<="1110" when scan_cnt(3 downto 2)="00" else "1101" when scan_cnt(3 downto 2)="01" else "1011" when

注意事项

本文(选题3基于FPGA的计算器设计)为本站会员(油条)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.