电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

16页
  • 卖家[上传人]:油条
  • 文档编号:106893226
  • 上传时间:2019-10-16
  • 文档格式:DOC
  • 文档大小:671.50KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、选题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和借位c

      2、o。由于两个数相减的差有可能为正数也有可能为负数,当差为负数时表现为补码的形式,必须要将负数的补码进行修正,修正时对差的低16位求补码运算,而差的正负用借位co来表示,co=1表示差为负,否则为正。4 乘法器设计4.1 乘法器设计的原理分析乘法运算的方法可以通过以下实例来说明:设被乘数A=1110,乘数B=1101,求AB。由以上实际例子可以看出,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

      3、程序如下:process(clk,mul)-描述了一个移位脉冲计数器,产生移位脉冲 begin if mul=1 then cnt16b=00000; elsif clkevent and clk=1 then if cnt16b16 then cnt16b=cnt16b+1; end if; end if; end process;process(clk,cnt16b,mul)begin if mul=0 then if cnt16b16 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 clkevent and clk=1 then if mul=1 then shifter16=multiplier;-当 mul=1装载入乘数 else shifter16(14 downto 0)=shifter16(15 do

      4、wnto 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 clkevent 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

      5、then sum0);- 当 mul=1乘积清零 elsif clkevent 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位二进制除法器采

      6、用的是比较相减的方法,先在被除数前添加16个0,当时钟脉冲上升沿到来时将前一次高16位与除数比较,若大于或等于则将被除数的高16位减去除数,同时左移并将被除数的第1位置1,若小于则只是将被除数左移,等到下一个脉冲到来时再循环此操作,直到第16个脉冲之后停止操作。这样进行16个脉冲周期之后,被除数的高16位为余数,低16位为商。除法运算的原理可以通过以下实例来说明:设被除数A=1110,除数B=0110,求解AB的过程如下:5.2 除法器电路结构框图根据前面的算法分析,可知除法器设计要用到锁存器和移位寄存器,还有定时器判断运算过程。设计框图如图6-1。图6-1 除法器电路结构图 除法器电路由控制电路、比较电路、减法电路和移位电路组成。控制电路负责产生16个脉冲的时钟信号、转载信号、运算结束信号;比较电路则是将被除数的高16位和除数进行比较,若大于或等于则great为1,否则为0;减法电路先判断比较电路输出的great是否为1,若为1则将被除数的高16位和除数相减,否则不进行运算只保存被除数的高16位;移位电路是将被除数进行左移,并对great进行判断,若为1则将被除数的第一位置1。5.3

      7、 除法器顶层设计除法器顶层设计的端口信号定义如图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是一个44矩阵式键盘的面板配置图,其中数字09作为各种运算的数字输入键,#为清零功能键,=为运算结果键,+、-、为运算的选择键。键盘上的每一个按键其实就是一个开关,每个键都有一个上拉电阻,当

      8、某键按下时,该按键的接点会呈现低电平状态,反之,未按下时则呈现高电平状态。 图7-1 44矩阵式键盘的面板配置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 clkevent 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的计算器设计》由会员油条分享,可在线阅读,更多相关《选题3基于FPGA的计算器设计》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.