简易计算器设计
简易计算器c课程设计

简易计算器c 课程设计一、课程目标知识目标:1. 让学生掌握简易计算器C的基本结构,包括算术表达式、运算符和操作数。
2. 使学生了解计算器C中的数据类型及其在内存中的存储方式。
3. 让学生理解顺序结构程序设计的原理,并能够运用到简易计算器C的开发中。
技能目标:1. 培养学生运用计算器C编写简单程序的能力,如加减乘除运算。
2. 培养学生分析问题、解决问题的能力,能够针对特定需求设计相应的计算器功能。
3. 提高学生的编程实践能力,通过动手编写代码,实现简易计算器的功能。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发他们主动探索新知识的欲望。
2. 培养学生团队协作意识,学会与他人共同分析问题、解决问题,共同进步。
3. 培养学生严谨、细致的学习态度,养成良好的编程习惯,为今后的学习打下基础。
课程性质:本课程属于编程启蒙课程,以实践操作为主,结合理论讲解,让学生在动手实践中掌握编程基础。
学生特点:本课程面向的学生为具有一定计算机操作基础,对编程感兴趣的年级学生。
教学要求:教师需结合学生特点,以实例为主线,引导学生主动参与课堂,注重培养学生的动手实践能力和团队协作精神。
通过本课程的学习,使学生在掌握计算器C基本知识的同时,提高编程技能和综合素质。
二、教学内容1. 计算器C基本语法:介绍计算器C的数据类型、变量、常量的定义及使用,让学生掌握基本语法规则。
- 教材章节:第一章 计算器C概述- 内容列举:数据类型、变量定义、常量定义、运算符、表达式。
2. 算术表达式:讲解算术表达式的构成,以及加减乘除运算符的使用方法。
- 教材章节:第二章 算术表达式- 内容列举:算术表达式构成、运算符优先级、括号的使用。
3. 顺序结构程序设计:引导学生学习顺序结构程序设计,掌握程序的基本执行流程。
- 教材章节:第三章 程序结构与控制流程- 内容列举:顺序结构、程序执行流程、输入输出语句。
4. 简易计算器C程序设计:结合前面的知识,设计一个简易计算器C程序,实现加减乘除运算。
简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的内部工作原理,掌握其基本功能操作。
2. 学生能运用计算器进行基本的算术运算,包括加、减、乘、除以及百分比计算。
3. 学生理解并掌握计算器上各个按键的功能及其在数学运算中的应用。
技能目标:1. 学生能够使用计算器辅助解决实际问题,如购物找零、面积计算等。
2. 学生通过计算器的使用,提高数据输入、结果读取和运算过程纠错的能力。
3. 学生能够结合数学知识,利用计算器进行数据的简单统计分析。
情感态度价值观目标:1. 培养学生对待科学技术的积极态度,认识到计算器在日常生活和学习中的便捷性。
2. 增强学生的团队协作意识,通过小组活动,学会分享和交流使用计算器的经验。
3. 培养学生遵守计算器使用的规则,养成良好的计算器使用习惯,珍惜公共资源。
本课程设计针对的学生群体为小学高年级学生,他们已经具备了一定的数学基础和操作简单电子设备的能力。
课程性质为实用技能型,旨在通过简易计算器的教学,将理论知识与实践操作相结合,提高学生解决实际问题的能力。
在教学要求上,注重培养学生的动手操作能力和创新思维,同时强调情感态度的培养,使学生在学习技能的同时,也能形成正确的价值观。
通过具体学习成果的分解,教师可进行有针对性的教学设计和学习效果评估。
二、教学内容本章节教学内容依据课程目标,结合教材内容,科学系统地组织以下部分:1. 简易计算器基础知识:介绍计算器的发展历程、种类及简易计算器的结构组成,对应教材第二章第一节。
2. 计算器按键功能:详细讲解各按键的功能及其在数学运算中的应用,对应教材第二章第二节。
3. 基本运算操作:教授如何使用计算器进行加、减、乘、除以及百分比计算,对应教材第二章第三节。
4. 计算器在实际应用中的使用:结合实际案例,如购物找零、面积计算等,展示计算器的实用性,对应教材第二章第四节。
5. 数据的简单统计分析:利用计算器进行数据输入、处理和简单统计分析,对应教材第二章第五节。
简易计算器设计的课程设计

简易计算器设计的课程设计一、课程目标知识目标:1. 学生能够理解简易计算器的基本原理,掌握其设计流程。
2. 学生能够运用所学编程知识,实现简易计算器的功能。
3. 学生能够了解并掌握计算器界面设计的基本原则。
技能目标:1. 学生能够运用所学的编程技能,独立完成简易计算器的设计与开发。
2. 学生能够通过编写代码,实现计算器的加、减、乘、除等基本运算功能。
3. 学生能够运用调试工具,对计算器程序进行测试和优化。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,增强信息素养。
2. 学生通过团队协作,培养沟通能力和团队精神,学会共同解决问题。
3. 学生在设计与开发简易计算器的过程中,体验创新实践的过程,培养创新思维和动手能力。
课程性质:本课程为信息技术课程,旨在帮助学生将所学的编程知识运用到实际项目中,提高学生的编程实践能力和创新能力。
学生特点:六年级学生具备一定的编程基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践,培养创新思维。
在教学过程中,关注学生的个体差异,鼓励学生相互交流、合作,共同完成学习任务。
通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高解决问题的能力。
二、教学内容1. 计算器原理:介绍计算器的基本工作原理,包括算术运算逻辑、数据存储与处理等。
教材章节:第三章 计算机硬件基础2. 编程语言基础:回顾所学的编程语言(如Python),重点掌握变量定义、数据类型、运算符、条件语句和循环语句等。
教材章节:第二章 编程语言基础3. 界面设计:讲解计算器界面设计的原则和技巧,如布局、颜色、字体等。
教材章节:第四章 用户界面设计4. 编程实现计算器功能:引导学生运用所学知识,编写程序实现计算器的加、减、乘、除等基本运算功能。
教材章节:第五章 算法与程序设计5. 程序调试与优化:教授学生如何使用调试工具,对计算器程序进行测试、调试和优化。
简易加减计算器设计

简易加减计算器设计一、引言计算器是一种用于进行数学计算的设备,它可以帮助我们进行各种加减乘除等运算。
本篇文章将介绍如何设计一个简易的加减计算器,该计算器基于数字电路的原理,通过逻辑门电路实现加法和减法运算。
二、设计思路1.确定输入和输出2.设计加法电路加法可以通过逻辑门电路实现,其中最基本的逻辑门是异或门。
我们可以使用多个异或门来实现加法,具体的实现方法如下:-使用8个异或门分别对两个二进制数的对应位进行异或运算,得到8个中间结果;-使用7个与门分别对中间结果和进位信号进行与运算,得到7个进位信号;-使用7个或门分别对进位信号进行或运算,得到进位输出;-使用一个或门对中间结果和进位输出进行或运算,得到最终的结果。
3.设计减法电路减法可以通过将减数取反然后与被减数进行加法运算来实现。
具体的实现方法如下:-对减数取反,可以使用8个反相器实现;-将取反后的减数和被减数输入到加法电路中进行加法运算,得到结果。
三、电路实现根据上述设计思路,我们可以使用数字集成电路来实现加减计算器。
以下是一个基于数字集成电路74LS83A的简易加减计算器电路图:```______________,---,A+B,----,S_______,,_____________,______---,M,---_______,,_________________-----------,B'+1=B__________```在上述电路图中,A和B分别表示两个8位二进制数的输入,S表示计算结果的输出,M表示减号操作符的输入,B'+1表示减数的取反。
四、测试与验证为了验证电路的正确性,我们需要进行测试。
我们可以编写一个测试程序,将各种情况的输入输入到电路中,并检查输出结果是否符合预期。
测试例子如下:输入:M=0预期输出:输入:M=1预期输出:通过编写测试程序,并根据预期结果检查输出结果,可以验证电路设计的正确性。
五、总结本篇文章介绍了如何设计一个简易的加减计算器,该计算器基于数字电路的原理,通过逻辑门电路实现加法和减法运算。
课程设计 简易计算器的设计制作

1一. 设计任务简易计算器的设计制作二.设计内容利用16个4脚按键开关组合成4×4的键盘,4根行线和4根列线接至单片机的另一并行输出口上,作为输出设备;再配合使用电源,时钟电路,复位电路即可构成一基于51单片机的最小输入,输出系统。
三.设计要求1、设计简易计算器,要求能对0-99之间的数进行加、减、乘、除运算。
2、用4×4的键盘作为输入设备。
3、用LED 或LCD 进行显示。
4、编写无符号数加、减、乘、除运算、输入和显示的程序。
5、对系统的进行综合和调试,使其具有对0-99之间的数进行加、减、乘、除运算的功能。
6、编写课程设计的总结 四.参考选取元器件见附录1 五.设计方案论证液晶显示模块与单片机的连接方式通常有两种,一种为直接访问方式(总线方式),另一种为间接控制方式(模拟口线)。
直接访问方式就是将液晶显示模块的接口作为存储器或I/O 设备直接挂在单片机总线上,单片机以访问存储器或I/O 设备的方式控制液晶显示模块的工作。
间接控制方式是单片机通过自身的或系统中的并行接口与液晶显示模块连接,单片机通过 对这些接口的操作,达到对液晶显示模块的控制。
间接控制方式的特点是电路简单,可省略单片机外围的数字逻辑电路,控制时序由软件产生,可以实现高速单片机与液晶显示模块的接口,故本次设计采用间接控制方式。
(1)模拟口线2图2-2-1(2)总线方式图2-2-2六.设计原理1.逻辑框图(由于实际电路与任务电路有部分出入,但原理相同,见图2-2-3)图2-2-3 2.键盘结构及其原理图2-2-4如图2-2-4所示,键盘中有无键按下是由列线送入全扫描字,然后读LCD 显示AT89C51矩阵键盘输入时钟电路 复位电路入行线状态来判断。
具体是:向列线输出全扫描字00H,将全部列线置为低电平,然后将行线的电平状态读入累加器A中。
如果有键按下,总会有一根行线电平被拉至低电平,从而使输入不全为1。
键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态实现的。
简易计算器的设计与实现

简易计算器的设计与实现设计一个简易计算器涉及以下几个方面:1.需求分析:-定义计算器的功能-确定计算器支持的数学运算,如加法、减法、乘法、除法等2.用户界面设计:-设计计算器的界面布局,包括数字按键、运算符按键、等号按键等-考虑使用框架或库来构建用户界面3.输入处理:-设计解析用户输入的算式-处理用户点击按键时的输入4.运算处理:-实现各种数学运算的算法-将用户输入的算式传入运算处理函数进行计算5.显示结果:-将计算结果显示在计算器的界面上下面是一个简易计算器的实现示例,使用Python语言和PyQt库来构建:```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGridLayout, QPushButton, QLineEdit class Calculator(QWidget):def __init__(self):super(.__init__self.setWindowTitle("简易计算器")yout = QVBoxLayoutself.input_box = QLineEdityout.addWidget(self.input_box)self.buttons =['7','8','9','/'],['4','5','6','*'],['1','2','3','-'],['0','.','=','+']self.grid_layout = QGridLayoutfor i in range(4):for j in range(4):button = QPushButton(self.buttons[i][j])button.clicked.connect(self.button_clicked)self.grid_layout.addWidget(button, i, j)yout.addLayout(self.grid_layout)self.setLayout(yout)self.equal_clicked = Falsedef button_clicked(self):button = self.sendertext = button.textif text == '=':self.calculateelse:self.input_box.setText(self.input_box.text( + text) def calculate(self):expression = self.input_box.texttry:result = eval(expression)self.input_box.setText(str(result))except Exception as e:self.input_box.setText("错误:{}".format(e))if __name__ == '__main__': app = QApplication(sys.argv) calculator = Calculator calculator.showsys.exit(app.exec_()。
51单片机简易计算器设计

51单片机简易计算器设计一、设计思路计算器的基本功能包括加法、减法、乘法和除法。
我们可以使用按键作为输入方式,将输入的数字和操作符暂时保存在内存中,然后根据操作符进行相应的运算。
最后再将运算结果显示在数码管上。
具体设计思路如下:1.确定计算器所需的硬件组件:数码管、按键、51单片机和相关电路。
2.定义按键与数字和操作符的对应关系。
3.编写51单片机的程序,实现按键输入、运算和结果显示的功能。
二、硬件设计1.数码管:使用常见的7段数码管作为显示器,通过引脚连接到51单片机的IO口。
2.按键:使用4个按键分别表示数字输入键、加法键、减法键和等于键。
三、软件设计1.初始化:将数码管引脚设为输出模式,将按键引脚设为输入模式。
2.按键处理:采用中断方式检测按键输入,通过编程判断所按的键。
3.数字输入:将按键所对应的数字保存在变量中,最多支持四位数的输入。
4.操作符输入:将按下的操作符保存在变量中。
5.运算:根据保存的操作符进行相应的运算,并将结果保存在变量中。
6.结果显示:将结果显示在数码管上。
四、代码实现下面是一个示例代码的框架,供参考:```c#include <reg52.h>sbit SDA = P0^0; // I2C总线数据线sbit SCL = P0^1; // I2C总线时钟线//定义按键的IO口sbit BUTTON0 = P1^0; // 数字输入键sbit BUTTON1 = P1^1; // 加法键sbit BUTTON2 = P1^2; // 减法键sbit BUTTON3 = P1^3; //等于键unsigned char num1 = 0; // 第一个操作数unsigned char num2 = 0; // 第二个操作数unsigned char op = 0; // 操作符unsigned char result = 0; // 运算结果//判断按键所对应的数字或操作符void buttonif (BUTTON0 == 0) // 数字输入键//将按键所对应的数字保存在变量中//显示数字}else if (BUTTON1 == 0) // 加法键//保存操作符为加号}else if (BUTTON2 == 0) // 减法键//保存操作符为减号}else if (BUTTON3 == 0) //等于键//根据保存的操作符进行相应的运算//将结果保存在变量中//显示结果}void mainwhile (1)button(; // 按键处理}```五、总结通过以上的设计思路和示例代码,我们可以轻松地实现一个简易的计算器。
c简易计算器课程设计

c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。
2. 学生能够运用所学知识,解决生活中简单的数学问题。
3. 学生了解计算器的发展历程,认识到科技对生活的影响。
技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。
2. 学生通过实际操作,培养动手能力和问题解决能力。
3. 学生能够运用计算器辅助学习,提高数学学习效率。
情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。
2. 学生在合作交流中,培养团队意识和沟通能力。
3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。
课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。
学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。
教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。
在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。
通过本课程的学习,使学生达到预期的学习成果。
二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。
2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。
3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。
4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。
教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。
第二课时:四则运算的操作方法,实践练习。
第三课时:计算器在数学学习中的应用,解决实际问题。
教材章节:《信息技术》第四章:计算器与计算机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:计算器(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.132 方案选择能够进行区分优先级的计算,先乘除,后加减。
乘除运算同步进行,从左往右;乘除结束后的数据进行加减运算。
3 系统具体设计3、1总体框架(总电路图附录1)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、A>0,B>0 输出数据A+B,正负号为正2、A>0,B<0 |A|>|B| 输出数据|A|-|B| 正负号为正|A|<|B| 输出数据|B|-|A| 正负号为负3、A<0,B>0 |A|>|B| 输出数据|A|-|B| 正负号为负|A|<|B| 输出数据|B|-|A| 正负号为正4、A<0,B<0 输出数据A+B ,正负号为负其中clk 为加or 减,上升沿时读新数据并计算。
元件例化:⑦ 数据输出选择模块(VHDL 附录8)当按下等号时输出计算结果,否则输出输入的数据。
当输出为负时:第一个数码管显示F ;当输出为负时:第一个数码管显示E ;当数据超出范围溢出是第一个数码管显示C 。
元件例化:⑧进制转换模块28位二进制数(根据7个数码管为限,最大输出为十进制的9999999,后两位为小数位)以十进制的方式显示到数码管上,采用各位求余分别显示的方法。
其中除数分别为十进制的1000000、100000、10000、1000、100、10,需要输出的是每次相除后的商及最后一个余数。
元件例化:其实现电路:numer[27..0]denom[19..0]quotient[27..0]remain[19..0]divide8lpm_constant2lpm_constant3lpm_constant4lpm_constant5lpm_constant6numer[19..0]denom[19..0]quotient[19..0]remain[19..0]divide1numer[19..0]denom[15..0]quotient[19..0]remain[15..0]divide2numer[15..0]denom[11..0]quotient[15..0]remain[11..0]divide3numer[11..0]denom[7..0]quotient[11..0]remain[7..0]divide4numer[7..0]denom[3..0]quotient[7..0]remain[3..0]divide5lpm_constant1⑨数据输入模块(VHDL 附录9)受限于输入按键有限,输入的两位二进制数有计数器实现,每按下clk 加1,到99后恢复零元件例化:reset clkdataout[7..0]leijiainst104 系统测试4、1 波形仿真及部分仿真结果仿真的式子为12+34×56-78÷90+9结果数据为192414,代表1924.14 正负为E ,代表正 理论结果为1924.13,仿真结果符合。
仿真的式子为(-12)+34×(-56)-78÷90+9 结果数据为190786,代表1907.86正负为F , 代表负理论结果为-1907.87,仿真结果符合。
仿真的式子为90*90*90结果数据为0,代表0正负为C,代表溢出理论结果为27000.00,为溢出,仿真结果符合。
4、2 下载到实验箱进行验证输入:key4:加key3:减key2:乘key1:除key5:正、负(不亮时为正,亮时为负)key6:等号(不亮时为输出为数据,亮时输出为计算结果)key7:复位key8:数据累加输入输出显示:从左到右,第一个数码管显示正负或溢出,后七个输出输入数据或结果。
验证:1、按正确方式按入式子1+2×3÷4-5÷6×15+25输出结果E 0 0 0 1 5 0 0 代表正15.00和理论值15一致。
2、按正确方式按入式子12+25÷31×(-45) -46输出结果F 0 0 0 7 0 2 9 代表正-70.29和理论值70.29一致。
3、按正确方式按入式子10×10×10×10×10输出结果C 0 0 0 0 0 0 0 代表溢出理论值为100000,溢出,符合要求。
5 实验结论:由仿真结果和下载验证结果可知:设计的计算器能够:实现最大输入两位十进制数字的四则运算(加减乘除);最大长度以数码管最大个数(数据显示7个,正负号或溢出显示为1个)为限,溢出报警;有正负数区分;结果保留2位小数;能够区分运算优先级(先乘除,后加减);附录2(乘法模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mul isport( clk : in std_logic;reset: in std_logic;data : in std_logic_vector(7 downto 0);data_pn : in std_logic;res : in std_logic_vector(27 downto 0);res_pn: in std_logic;data1: out std_logic_vector(27 downto 0);data2: out std_logic_vector(7 downto 0);data1_pn:out std_logic;data2_pn:out std_logic);end entity mul;architecture behave of mul issignal temp1:std_logic;signal temp2:std_logic;process(reset,clk)beginif(reset='0')thenif(clk'event and clk='1')thendata1<=res; data1_pn<=res_pn;end if;if(clk'event and clk='0')thendata2<=data; data2_pn<=data_pn;end if;else data1<="0000000000000000000000000000";data2<="00000000"; end if;end process;end behave;附录3(除法模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity div isport( clk : in std_logic;reset: in std_logic;data : in std_logic_vector(7 downto 0);data_pn : in std_logic;res : in std_logic_vector(27 downto 0);res_pn: in std_logic;data1: out std_logic_vector(27 downto 0);data2: out std_logic_vector(7 downto 0);data1_pn:out std_logic;data2_pn:out std_logic);end entity div;architecture behave of div issignal temp1:std_logic;signal temp2:std_logic;process(reset,clk)beginif(reset='0')thenif(clk'event and clk='1')thendata1<=res; data1_pn<=res_pn;end if;if(clk'event and clk='0')thendata2<=data; data2_pn<=data_pn;end if;else data1<="0000000000000000000000000000";data2<="00000000"; end if;end process;end behave;附录4(乘或除数据选择输出模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tt isport(reset:in std_logic;pn1:in std_logic;pn2:in std_logic;res1:in std_logic_vector(27 downto 0 );res2:in std_logic_vector(27 downto 0 );clk1: in std_logic;clk2: in std_logic;resout: out std_logic_vector(27 downto 0 );pnout:out std_logic;dout:out std_logic);end entity tt;architecture behave of tt issignal temp:std_logic;begindout<=temp;process(clk1,clk2)beginif(reset='0')thenif(clk1='1')then temp<='0';elsif(clk2'event and clk2='0')thentemp<='1';end if;if(temp='1')thenresout<=res2;pnout<=pn2;else resout<=res1;pnout<=pn1;end if;else temp<='0';end if;end process;end behave;附录5(结果反馈及输出模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity res_cs isport( reset:in std_logic;data: in std_logic_vector(7 downto 0);data_pn: in std_logic;clr: in std_logic;clk: in std_logic;res: in std_logic_vector(27 downto 0);res_pn:in std_logic;result: out std_logic_vector(27 downto 0);result_pn:out std_logic);end entity res_cs;architecture behave of res_cs issignal cn:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif(reset='0')thenif(clr='0')thenif(cn="0000")then result<="0000000000000"&(data*"1100100");result_pn<=data_pn;else result<=res;result_pn<=res_pn;end if;if(clk'event and clk='1')thencn<=cn+1;end if;else cn<="0000";end if;else cn<="0000";end if;end process;end behave;附录6(加减选择模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tt2 isport( reset:in std_logic;pn:in std_logic;clk1: in std_logic;clk2: in std_logic;pnout:out std_logic;dout:out std_logic);end entity tt2;architecture behave of tt2 issignal temp:std_logic;begindout<=temp;process(clk1,clk2)beginif(reset='0')thenif(clk1='1')then temp<='0';elsif(clk2'event and clk2='0')thentemp<='1';end if;if(temp='1')thenpnout<=not(pn);else pnout<=pn;end if;else temp<='0';end if;end process;end behave;附录7(加减运算模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add isport(clk :in std_logic;reset:in std_logic;data:in std_logic_vector(27 downto 0);data_pn:in std_logic;dout :out std_logic_vector(27 downto 0);dout_pn:out std_logic);end entity add;architecture behave of add issignal temp: std_logic_vector(27 downto 0):="0000000000000000000000000000"; signal temp_pn:std_logic:='0';begindout<=temp;dout_pn<=temp_pn;process(clk,reset)beginif(reset='1')then temp<="0000000000000000000000000000";temp_pn<='0';elsif(clk'event and clk='1')thenif(temp_pn='0')thenif(data_pn='0')then temp<=temp+data;temp_pn<='0';elseif(temp>data or temp=data)then temp<=temp-data;temp_pn<='0';else temp<=data-temp;temp_pn<='1';end if;end if;elseif(data_pn='1')then temp<=temp+data;temp_pn<='1';elseif(temp<data or temp=data)then temp<=data-temp;temp_pn<='0';else temp<=temp-data;temp_pn<='1';end if;end if;end if;end if;end process;end behave;附录8(数据输出选择模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity choose_out isport( reset: in std_logic;equal : in std_logic;data: in std_logic_vector(7 downto 0);data_pn : in std_logic;res : in std_logic_vector(27 downto 0);res_pn: in std_logic;result:out std_logic_vector(27 downto 0);result_pn:out std_logic_vector(3 downto 0)--正输出E 负输出F 溢出输出C );end entity choose_out;architecture behave of choose_out isbeginprocess(reset,equal)beginif(reset='0')thenif(equal='0')thenresult<="00000000000000000000"&data;if(data_pn='0')then result_pn<="1110";else result_pn<="1111";end if;elseif(res>"100110001001011001111111")thenresult<="0000000000000000000000000000";result_pn<="1100";else result<=res;if(res_pn='0')then result_pn<="1110";else result_pn<="1111";end if;end if;end if;else result<="0000000000000000000000000000";result_pn<="0000"; end if;end process;end behave;附录9(数据输入模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity leijia isport( reset:in std_logic;clk: in std_logic;dataout: out std_logic_vector(7 downto 0));end entity leijia;architecture behave of leijia issignal temp:std_logic_vector(7 downto 0);begindataout<=temp;process(clk,reset)beginif(reset='0')thenif(clk'event and clk='1')thenif(temp="01100100")then temp<="00000000";elsetemp<=temp+1;end if;end if;else temp<="00000000"; end if;end process;end behave;。