欢迎来到天天文库
浏览记录
ID:49979823
大小:178.00 KB
页数:16页
时间:2020-03-03
《简易计算器设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、摘要:计算器(calculator;counter)一般是指“电子计算器”,该名词由日文传入中国。计算器能进行数学运算。计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。使用简单计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算。本次设计只完成加(+)、减(-)、乘(*)、除(/)运算。关键字:加减乘除、优先级、进制
2、转换、数据选择、有效数字、正负1设计内容与设计要求1、1基本内容:设计一个简易计算器1、2基本要求:①实现最大输入两位十进制数字的四则运算(加减乘除)②能够实现多次连算(无优先级,从左到右计算结果)如12+34×56-78÷90+9=36.75③最大长度以数码管最大个数为限,溢出报警④有正负数区分;⑤除法不能除尽时小数保留2位有效数字1、3扩展要求:能够区分运算优先级(先乘除,后加减)如12+34×56-78÷90+9=1924.132方案选择能够进行区分优先级的计算,先乘除,后加减。乘除运算同步进行,从左
3、往右;乘除结束后的数据进行加减运算。163系统具体设计3、1总体框架(总电路图附录1)数据(包括正负)除乘若出现加减符号或第一次计算,结果反馈的都是输入的数据结果反馈输出选择乘或除的结果输出乘法运算包括一个乘法器乘法运算包括一个乘法器结果输出或数据选择输出进行加减法运算根据加减法选择数据正负,a-b即a+(-b)注:各主要模块都加reset复位进制转换输出3、2各个模块设计①乘法模块(VHDL附录2)当乘法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn;当乘法符号的
4、下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由乘法器计算得到;结果的正负号即为两个相乘数据的正负号取异或。16数据为保留两位小数,输出的当成被乘数的数乘上100。元件例化:②除法模块(VHDL附录3)当除法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn;当除法符号的下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由除法器计算得到;结果的正负号即为两个相除数据的
5、正负号取异或。数据为保留两位小数,输出的当成被除数的数乘上100。元件例化:③乘或除数据选择输出模块(VHDL附录4)乘或除的数据及正负在各自符号的下降沿时输出,在输出时确定输出的是乘的结果还是除的结果。即预期在乘符号的下降沿时输出乘的结果;在除符号的下降沿时输出除的结果。又由于两个时钟信号不能控制同一个变量,所以把clk1当成是清零信号,clk2当成时钟信号,当clk2的下降沿的时候输出数据2(即除的结果),clk2为1时,输出数据1(即除的结果)。又为了防止clk2为1与其后面要用到的上升沿冲突,故添加
6、dout。元件例化:16④结果反馈及输出模块(VHDL附录5)当第一次进行运算或出现过加减再进行乘除的第一次运算时读取输入的数据值,否则读取前一级的结果值。其中clr为恢复信号(加or减),当其为1时,恢复到第一次运算的模式。clk本为乘或除,又为了避开与上一级的清零错位,故其变为(乘or(除andnotdout))元件例化:⑤加减选择模块(VHDL附录6)减法是加法的逆运算,A-B等同于A+(-B),即减法运算只需在进行加法运算前把数据的正负取反,所以当减法的下降沿时输出的正负为输入的取反,加法的下降沿时
7、输出的正负为输入的,实现方法与乘除选择模块一致。元件例化:⑥加减运算模块(VHDL附录7)由于上一级已考虑加减情况,此模块只需实现加法运算。A+B有四种情况:1、A>0,B>0输出数据A+B,正负号为正2、A>0,B<0
8、A
9、>
10、B
11、输出数据
12、A
13、-
14、B
15、正负号为正16
16、A
17、<
18、B
19、输出数据
20、B
21、-
22、A
23、正负号为负3、A<0,B>0
24、A
25、>
26、B
27、输出数据
28、A
29、-
30、B
31、正负号为负
32、A
33、<
34、B
35、输出数据
36、B
37、-
38、A
39、正负号为正4、A<0,B<0输出数据A+B,正负号为负其中clk为加or减,上升沿时读新数据并计
40、算。元件例化:⑦数据输出选择模块(VHDL附录8)当按下等号时输出计算结果,否则输出输入的数据。当输出为负时:第一个数码管显示F;当输出为负时:第一个数码管显示E;当数据超出范围溢出是第一个数码管显示C。元件例化:⑧进制转换模块28位二进制数(根据7个数码管为限,最大输出为十进制的9999999,后两位为小数位)以十进制的方式显示到数码管上,采用各位求余分别显示的方法。其中除数分别为十进制的1000000、100
此文档下载收益归作者所有