- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 16
摘要:
计算器(calculator ;counter)一般是指“电子计算器”,该名词由日文传入中国。计算器能进行数学运算。计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。使用简单计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算。本次设计只完成加(+)、减(-)、乘(*)、除(/)运算。
关键字:
加减乘除、优先级、进制转换、数据选择、有效数字、正负
1 设计内容与设计要求
1、1基本内容:设计一个简易计算器
1、2基本要求:
①实现最大输入两位十进制数字的四则运算(加减乘除)
②能够实现多次连算(无优先级,从左到右计算结果)
如 12+34×56-78÷90+9=36.75
③最大长度以数码管最大个数为限,溢出报警
④有正负数区分;
⑤除法不能除尽时小数保留2位有效数字
1、3扩展要求:
能够区分运算优先级(先乘除,后加减)
如12+34×56-78÷90+9=1924.13
2 方案选择
能够进行区分优先级的计算,先乘除,后加减。
乘除运算同步进行,从左往右;
乘除结束后的数据进行加减运算。
3 系统具体设计
3、1总体框架(总电路图附录1)
数据(包括正负)
数据(包括正负)
除乘
除
乘
若出现加减符号或第一次计算,结果反馈的都是输入的数据结果反馈输出选择乘或除的结果输出乘法运算包括一个乘法器乘法运算 包括一个乘法器结果输出或数据选择输出进行加减法运算根据加减法选择数据正负,a-b即a+(-b)
若出现加减符号或第一次计算,结果反馈的都是输入的数据
结果反馈输出
选择乘或除的结果输出
乘法运算
包括一个乘法器
乘法运算
包括一个乘法器
结果输出
或数据选择输出
进行加减法运算
根据加减法选择数据正负,a-b即a+(-b)
注:各主要模块都加reset复位
注:各主要模块都加reset复位
进制转换输出
进制转换输出
3、2各个模块设计
①乘法模块(VHDL附录2)
当乘法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn;
当乘法符号的下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由乘法器计算得到;结果的正负号即为两个相乘数据的正负号取异或。
数据为保留两位小数,输出的当成被乘数的数乘上100。
元件例化:
②除法模块(VHDL附录3)
当除法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn;
当除法符号的下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由除法器计算得到;结果的正负号即为两个相除数据的正负号取异或。
数据为保留两位小数,输出的当成被除数的数乘上100。
元件例化:
③乘或除数据选择输出模块(VHDL附录4)
乘或除的数据及正负在各自符号的下降沿时输出,在输出时确定输出的是乘的结果还是除的结果。即预期在乘符号的下降沿时输出乘的结果;在除符号的下降沿时输出除的结果。
又由于两个时钟信号不能控制同一个变量,所以把clk1当成是清零信号,clk2当成时钟信号,当clk2的下降沿的时候输出数据2(即除的结果),clk2为1时,输出数据1(即除的结果)。又为了防止clk2为1与其后面要用到的上升沿冲突,故添加dout。
元件例化:
④结果反馈及输出模块(VHDL附录5)
当第一次进行运算或出现过加减再进行乘除的第一次运算时读取输入的数据值,否则读取前一级的结果值。
其中clr为恢复信号(加or 减),当其为1时,恢复到第一次运算的模式。clk本为乘或除,又为了避开与上一级的清零错位,故其变为(乘or(除and not dout))
元件例化:
⑤加减选择模块(VHDL附录6)
减法是加法的逆运算,A-B等同于A+(-B),即减法运算只需在进行加法运算前把数据的正负取反,所以当减法的下降沿时输出的正负为输入的取反,加法的下降沿时输出的正负为输入的,实现方法与乘除选择模块一致。
元件例化:
⑥加减运算模块(VHDL附录7)
由于上一级已考虑加减情况,此模块只需实现加法运算。A+B有四种情况:
1、A0,B0 输出数据A+B,正负号为正
2、A0,B0 |A||B| 输出数据|A|-|B| 正负号为正
|A
文档评论(0)