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

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

ID:1261763

大小:671.50 KB

页数:16页

时间:2017-11-09

选题3基于fpga的计算器设计_第1页
选题3基于fpga的计算器设计_第2页
选题3基于fpga的计算器设计_第3页
选题3基于fpga的计算器设计_第4页
选题3基于fpga的计算器设计_第5页
资源描述:

《选题3基于fpga的计算器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、选题3实验讲义实验名称:基于FPGA的计算器设计1基于VHDL的运算系统设计原理分析本设计是基于VHDL的运算系统设计,目的是为了实现4位BCD码的加、减、乘、除的运算功能。运算时能够通过键盘输入运算类型和运算所需要的数据,然后通过BCD码转二进制电路将数据转化成运算所需要的二进制数,再将数据和运算类型反馈到相应的运算电路得到运算结果,最后将运算结果通过译码电路传送给数码管将结果显示出来。整个设计过程是在QuartusⅡ的环境中进行的,采用自顶向下的设计方法,系统的结构框图如图2-1所示。图2-1系统结构框图2加法器设计为了能够实现4位BCD码的加法运算,设计中被加数和加数都为16位二

2、进制数,由于2个16位二进制数相加可能会产生进位,同时为了方便数码管显示,和采用了20位二进制。此外还有清零信号rst和加法使能信号add,当rst=’1’时对和进行清零,否则当add=‘1’时进行加法运算。3减法器设计为了实现4位BCD码的减法运算,设计中被减数和减数为16位二进制数,差为20位二进制数。输入的信号有清零信号rst、减法使能信号sub、被减数a、减数b,输出的信号有差cha和借位co。由于两个数相减的差有可能为正数也有可能为负数,当差为负数时表现为补码的形式,必须要将负数的补码进行修正,修正时对差的低16位求补码运算,而差的正负用借位co来表示,co=‘1’表示差为负

3、,否则为正。4乘法器设计4.1乘法器设计的原理分析乘法运算的方法可以通过以下实例来说明:设被乘数A=1110,乘数B=1101,求A×B。16由以上实际例子可以看出,16位二进制乘法运算可以使用移位相加的方法来实现,被乘数左移16次,乘数右移16次,当时钟上升沿到来时都对乘数的最低位进行判断,如果乘数的最低位为1则乘积加上已经移位的被乘数,否则加0。1.1乘法器电路结构框图根据乘法原理,采用移位相加的办法来实现乘法运算,如图5-1。图5-1乘法器设计结构框图1.1.1乘法器控制电路设计由于此次设计的是16位二进制乘法器电路,被乘数和乘数必须要移动16次,因此必须要使时钟信号只有16个脉

4、冲。控制电路采用计数的办法,当乘法运算使能信号mul=‘1’时,将计数值cnt16b清零,否则当cnt16b小于16时,cnt16b加1且cp等于clk;否则cp等于0,这样就保证了cp输出只有16个脉冲。关键的VHDL程序如下:process(clk,mul)--描述了一个移位脉冲计数器,产生移位脉冲beginifmul='1'thencnt16b<="00000";elsifclk'eventandclk='1'thenifcnt16b<16thencnt16b<=cnt16b+1;endif;endif;endprocess;process(clk,cnt16b,mul)begi

5、nifmul='0'thenifcnt16b<16thencp<=clk;elsecp<='0';endif;elsecp<=clk;endif;16endprocess;1.1.1乘数右移电路设计乘数右移的目的是为了判断乘数的最低位是0还是1,如果为0则乘机加上移位后的被乘数,否则加上0。关键的VHDL程序如下:process(clk,mul)beginifclk'eventandclk='1'thenifmul='1'thenshifter16<=multiplier;--当mul='1'装载入乘数elseshifter16(14downto0)<=shifter16(15down

6、to1);--将乘数右移一位endif;endif;qb<=shifter16(0);endprocess;1.1.2被乘数左移电路设计被乘数左移在乘法运算中是必须的,根据乘法运算的原理,当乘数的最低位为‘1’时左移后的被乘数作为加法电路的一个加数。当乘法运算使能信号mul为‘1’时,在被乘数前添加16个0,之后当脉冲到来的时候左移一位。关键的VHDL程序如下:process(mul,clk)beginifmul='1'thenseg8<="0000000000000000"&multiplicand;--当mul='1'在被乘数前添加16个0elsifclk'eventandclk=

7、'1'thenseg8(31downto1)<=seg8(30downto0);seg8(0)<='0';endif;endprocess;1.1.3加法电路加法电路负责判断右移后的乘数的最低位是‘0’还是‘1’,如果是‘1’则将乘积和左移后的被乘数相加,否则加0。当乘法运算使能信号mul为‘1’时,乘积初始化为0。关键的VHDL程序如下:process(mul,clk)beginifmul='1'thensum<=(others=>'0');

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。