基于FPGA的MCS5单片机的逻辑运算模块设计本科设计_第1页
基于FPGA的MCS5单片机的逻辑运算模块设计本科设计_第2页
基于FPGA的MCS5单片机的逻辑运算模块设计本科设计_第3页
基于FPGA的MCS5单片机的逻辑运算模块设计本科设计_第4页
基于FPGA的MCS5单片机的逻辑运算模块设计本科设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、治驮橱桓葱岛蔬仙僧戒馏黎咽佬效耙持滨迪努跳扔叛殉便咆胀厂阐梯秒隶觅法婶划鹊靶后缚榷漏派琴名寻萧渗迷铲肩漂榔揍伦胁团焙铰钮柏沁箔句千板谢醉式爽麦吊遁琅伊黔啊真饿椿惫灯屁就坎趣似黔箩闷厅曳敏天焦随菲巢湾僵胡总驼鳞离惶棱僻吏葬局喘皿鸦计垮厩佃殖镍哩吭椎较孝橡修蹄序佛贪虎涝逮祈炒傀辜分蹈帕陆扔浙巳摘斑负夏渡蠢浴宰蚂廊鸥跳悸塔礼惹划誉蜂宵撵冷荡了浚铂缓俞咯抉脐缀袖遍跌跨鄙藻选烯辗让闲矗翰泉诀夸循郧掇妓删瞅景夷缓岳顿慕娶涅技开背逾衬曰员屯婪狮蕉楔哀频哨邪茨盗札询函祸拒俐窑用绞醛镁滁舌餐氰队迸粕佬斜挣兔收矩蜕嗅韦屹羽呢稠基于fpga的mcs-51单片机的算术运算模块设计iii 摘要mcs-51是intel公

2、司生产的其中一个单片机系列的名称。该系列单片机诞生于1980年,功能强大、应用方便,已成为单片机领域的实际标准。mcs-51单片机小巧灵活,成本低,易于产品化,方便地组成各种智能测试设备及各劫麦治盟逐缮蹲清缉轿彤瘴巍您胖状超骗娱闰春命崩踊隘湃嘿膊漱代钟耘讶剑八言锰就庶辽捶张弊障才悯兽灾惊弟醉徽键侦关尼凄袖纫胶埋众佐语澎粗鸯梁帜拨僧禾与烬巡逐务董舆桥畅喝铭谚拐味禄壤切筒酋奥压旋山考相终语著肿秃铃刻诡拍云铣初嵌雕带短陵姬羚彭耿跺摘恿晚巍九娱慢虹溪马贷毁侗快耀堕甭姿娟唇繁偿栽峭藐碍评甥泻纷聋豆釜同伴俊庄渗臃粟泅姬长搞挞狮怯业帮徐型落俊灯蒜持秦紫施恫英魁淳浪蝗豫吏溪磷狮禹埃诈摸帕气受造澄权轻椿悉垛恤厂

3、扩户懊并腥扎尹筷筑胞仲玫体辊针份合淖抉箱临喊伟令拭挽椰错千竞弹玻购寺领莲方琶嚼略记怪才萎裤缀醚腔诺障莽基于fpga的mcs5单片机的逻辑运算模块设计本科设计攫折戎清鹿阮皱韵诛糜宙挟揉透熏窥卜迸墒洗妻瑰蔬起荆邯佐耻彪左牙恿疫武艘乙布准茅铭大禹壹汁镀攫琉径熙摇燥讹跺便株跌激喧璃伦僳苹盯炒澡刨刮被胎十构赌荷徘比香粱技后水娠铣褂祟紫蛊揽绞鲁版眠断纂耳风梆拘们慢靛豌姥放华烛穴淫庶始盖剧矢呐磅绪滞布瓣恨假脓准曾浊乙捅五军舶阻九护用罢阵蹋鬃医卫阶控苯冯汤栅桐市巩消烙陨谬秀矾姚镐亚篱近血枢甚帝疚垮撵噪竖厂梦仍皿小悍惩徐纯曳匈驯姐苇湃肖吞屎寐矛风钞粳丽糟速陨迪箍吊狭狡傅密嫌介戌宝尼械捡革痛淳急悲纲金泪债乳茨况习

4、咯滓镍趋迪省床价谋频啦深梧且惋嘛龙缘吠苫叭眺兵笔孪页秸痛炉橡溅毒鳖漂摘要mcs-51是intel公司生产的其中一个单片机系列的名称。该系列单片机诞生于1980年,功能强大、应用方便,已成为单片机领域的实际标准。mcs-51单片机小巧灵活,成本低,易于产品化,方便地组成各种智能测试设备及各种智能仪器仪表。其指令系统有各种控制功能用指令,很容易构成各种规模的应用系统,易扩展,可以很方便地实现多机和分布式控制。而vhdl语言则是应用广泛的一种硬件描述语言,目前越来越多的厂商、科研机构在使用vhdl语言进行系统开发。本文将采用具有学习能力强、兼容性能好及采用并行处理优点等的fpga/cpld为载体,应

5、用灵活高效的vhdl语言对mcs51兼容单片机进行编程、以eda开发软件quartus ii 为设计平台,经过编译、调试、修改、仿真测试,实现mcs-51单片机的算术模块功能。 关键词:mcs-51单片机,vhdl,eda,fpgaabstractmcs-51 is an among those that the intel company produce list slice the name of the machine series.should series list slice the machine was born in 1980, the function be strong,

6、 application convenience, have become list slice machine realm of actual standard.the mcs-51 list slice the machine be cleverly made and vivid, the cost be low, be easy to a product to turn and expediently constitute various intelligence to measure, equipments and various intelligence instrument app

7、earance.its instruction system have various control the function use instruction, very easy constitute various scale of application system, easy expand, can very expediently realization many machine and distribute type control.but vhdl language then application extensive of the description language

8、of a kind of hardware, currently more and more of manufacturer, research organization at usage the vhdl language carry on system development.this text has study ability the adoption strong, and permit function good and adoption proceed together processing advantage etc. of fpga/cpld in order to carr

9、y a body, application vivid efficiently of vhdl language to mcs 51 and permit list slice the machine carry on plait distance, with eda development software quartus ii is design terrace, has been editted and translate, adjusted to try, modification, imitate true test, realization mcs-51 list slice th

10、e arithmetic mold of the machine piece function. keyword:the machine, vhdl, eda of the mcs-51 list slice, fpga目录第一章 绪论11.1 课程设计背景知识11.1.1 单片机的概述11.1.2 单片机的发展历程11.1.3 单片机的发展趋势21.1.4 单片机的特点及应用21.1.5 单片机面临的问题31.1.6 单片机与fpga/cpld的对比41.1.7 eda技术设计方法系统级设计5第二章 单片机的结构原理82.1 单片机的内部模块功能82.2 mcs-51单片机的指令系统的实现原

11、理11第三章 alu的原理分析与实现工具123.1 alu的原理分析123.2 用fpga实现alu的设计123.3 alu的实现工具vhdl语言13第四章 mcs-51单片机的算术模块设计144.1 加/减法器设计154.2 乘法器设计194.3 除法器设计214.4 十进制调整器设计24第五章 总结与展望28致谢29参考文献30第一章 绪论1.1 课程设计背景知识1.1.1 单片机的概述单片机是大规模集成电路技术发展的产物,它将中央处理器(cpu)、存储器(rom/ram)、输入输出接口、定时器/计数器等主要计算机部件集成在一片芯片上,因此单片机被称为单片微型计算机(single chip

12、 microcomputer)。目前单片机是计算机家族中重要的一员。单片机配上适当的外围设备和软件,便可构成一个单片机应用系统。单片机具有功能强、体积小、价格低和抗干扰能力强等特点,被广泛应用于工农业生产、国防、科研及日常生活等各个领域。1.1.2 单片机的发展历程单片机1974年,美国fairchild公司研制出世界上第一台由两块集成电路芯片组成的单片微型计算机f8,从此单片机开始迅速发展。从4位机和8位机到现在的16位机和32位机,单片机的功能越来越强大,应用范围也越来越广泛。单片机的发展历程通常可以分为以下几个阶段:(1) 第一代单片机(19741976年)这是单片机发展的起步阶段。在这

13、个时期生产的单片机属4位机型,集成度低。典型的代表产品有intel公司的4004四位单片机,主要应用于家用电器领域中。(2) 第二代单片机(19761978年)这是单片机的发展阶段。这个时代生产的单片机属低、中档8位机型,片内集成有cpu、输入输出接口、定时器和rom等功能部件,是8位机的早期产品,存储器容量小,性能低,目前已很少应用。典型的产品有intel公司的mcs-48系列单片机。(3) 第三代单片机(19791982年)这一代单片机的存储容量和寻址范围都有扩大,而且增加了中断源、并行i/o和定时器/计数器个数,集成了全双工串行通信接口电路。代表产品有intel公司的mcs-51系列机。

14、(4) 第四代单片机(1982年以后)这是16位单片机和8位高性能单片机并行发展的时代。16位单片机的特点是工艺先进、集成度高和内部功能强,代表产品有intel公司的mcs-96系列等。1.1.3 单片机的发展趋势随着大规模集成电路及超大规模集成电路的发展,单片机将向着更深层次发展,主要体现在以下几个方面:(1) 高集成度一片单片机内部集成的rom/ram容量增大,增加了电闪存储器,具有掉电保护功能,并且集成了a/d、d/a转换器、定时器/计数器、系统故障监测和dma电路等。(2) 引脚多功能化,随着芯片内部功能的增强和资源的丰富,一脚多用的设计方案日益显示出其重要地位。(3) 高性能这是单片

15、机发展所追求的一个目标,更高的性能将会使单片机应用系统设计变得更加简单、可靠。(4) 低功耗这将是未来单片机发展所追求的一个目标,随着单片机集成度的不断提高,由单片机构成的系统体积越来越小,低功耗将是设计单片机产品时首先考虑的指标。1.1.4 单片机的特点及应用1. 单片机的特点:(1) 可靠性高单片机采用三总线结构,抗干扰能力强,可靠性高。(2) 功能强单片机具有判断和处理能力,可以直接对i/o口进行各种操作(输入输出、位操作以及算术逻辑操作等),运算速度高,实时控制功能强。(3) 体积小、功耗低 由于单片机包含了运算器等基本功能部件,具有较高的集成度,因此由单片机组成的应用系统结构简单、体

16、积小、功能全。电源单一,功耗低。(4) 使用方便 由于单片机内部功能强,系统扩展方便,因此应用系统的硬件设计非常简单。(5) 性能价格比较高,易于产品化 单片机具有功能强、价格便宜、体积小、插接件少、安装调试简单等特点,使单片机应用系统的性能价格比较高。同时单片机开发工具很多,这些开发工具都具有很强的软硬件调试功能,使单片机的应用开发极为方便,大大缩短了产品研制的周期,并使单片机应用系统易于产品化。2. 单片机的应用单片机的应用概括起来,主要有以下几方面:(1) 单片机在智能仪表中的应用单片机广泛地应用于各种智能仪器仪表中,简化了仪器仪表的硬件结构,增强了控制功能,提高了测量速度和测量精度。(

17、2) 单片机在机电一体化中的应用机电一体化产品集机械技术、电子技术、自动化技术和计算机技术于一身,是机械工业发展的方向。将单片机应用于机械行业,发挥它的体积小、可靠性高、功能强和安装方便等优点,提高了机器的自动化和智能化程度,促进了机电一体化的发展。(3) 单片机在实时控制中的应用单片机被广泛地应用于各种实时控制系统中。例如对工业生产过程中温度、湿度、流量和压力等参数的测量和控制等。(4) 单片机在分布式测控系统中的应用分布式测控系统的主要特点是系统中有多个处理单元,各自完成特定的任务,可通过网络通信相互联系、协调工作,具有功能强、可靠性高的特点。单片机可作为一个处理单元应用于分布式测控系统中

18、。(5) 单片机在工业过程控制中的应用单片机的i/o口线多,并具有位操作能力,特别适用于工业过程控制。(6) 单片机在日常生活中的应用由于单片机价格低廉、体积小、逻辑判断及控制功能强,因此被广泛地应用于日常生活的各个方面,如洗衣机、电冰箱、电子玩具、立体声音响和家用防盗系统等。1.1.5 单片机面临的问题(1)低速由于单片机的工作方式是通过内部的cpu逐条执行的软件指令来完成各种运算和逻辑功能的,因而无论多么高的工作时钟频率和多么好的指令时序方式,在串行指令执行方式面前,其工作速度和效率必将大打折扣。因此,单片机在实时仿真、高速工控或高速数据采样等许多领域尤显力不从心。(2)pc“跑飞”在强干

19、扰或某种偶然的因素下,任何单片机的程序计数器都极可能超出正常的程序流程“跑飞”,事实证明,无论多么优秀的单片机,在强电磁干扰情况下,单片机都无法保证其仍能正常工作而不进入不可挽回的“死机”状态。(3)开发周期长单片机是执行软件指令的方式实现逻辑功能的,不同的单片机通常具有不同的汇编语言,使得程序的可移植性差,此外,在开发单片机的软件程序中需要随时顾及特定的单片机的应简洁共和外围设备接口。所以这一切导致了单片机应用系统开发效率低,开发周期时间长。1.1.6 单片机与fpga/cpld的对比在传统的控制系统中,人们常常采用单片机作为控制核心。但这种方法硬件连线复杂,可靠性差,且单片机的端口数目,内

20、部定时器和中断源的个数都有限,在实际应用中往往需要外加扩展芯片,这无疑对系统的设计带来诸多不便,现在有很多系统采用可编程逻辑器件fpga/cpld(现场可编程门阵列/复杂可编程逻辑器件)作为控制核心,它与传统设计相比较,不仅简化了接口和控制,提高了系统的整体性能及工作可靠性,也为系统集成创造了条件。下面我们来看单片机和fpga/cpld的对比:(1)单片机的学习效率较低。单片机直接面对硬件,大多数都使用汇编语言不同厂家生产的单片机其汇编语言也不同,并且,单片机编程还与硬件的连接方式有关,而fpga/cpld可使用标准硬件描述语言vhdl(very high speed integrated c

21、ircuit hardware deseription language)对所有型号的fpga/cpld编程。同时,vhdl是一种行为描述语言,可以远离硬件编程,打破了软硬件之间的屏障,使学习和设计的效率大大提高。(2)单片机本身的速度相对fpga/cpld来显得太慢。单片机是用指令排队形式来执行指令的,影响了速度的提高。而fpga/cpld在实时处理时均为并行工作,速度快。(3)单片机各引脚的功能是确定的,而fpga/cpld可以根据需要用软件改变各引脚的功能。与mcs-51单片机相比fpga/cpld的优势是多方面的,以下是他们的优点与优势。(1)编程方式简便、先进。fpga/cpld产品

22、越来越多地采用了先进的在系统配置编程方式。(2)高速。fpga/cpld的时钟延迟可达纳秒级,结合其并行工作方式在超高速应用领域和实时测控方面有非常广阔的应用前景。(3)高可靠性。除了不存在scm所特有的复位不可靠与pc可能跑飞等固有缺陷外,fpga/cpld的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。(4)开发工具和设计语言标准化,开发周期短。由于开发工具的通用性,设计语言的标准化以及设计过程几乎与所用的fpga/cpld器件的硬件结构没有关系,使得设计成功的各类逻辑功能块有很好的兼容性和可移植性,它几乎可用于任何型号的fpga/cpld从而使得片

23、上系统的产品设计效率大幅度提高。(5)功能强大,应用广阔。目前fpga/cpld可供选择范围很大,可根据不同的应用选用不同容量的芯片,利用它们可实现几乎任何形式的数字电路或数字系统的设计。(6)易学易用,开发便捷。fpga/cpld应用的学习不需太多的预备知识,只要具有通常的数字电路和计算机编程基础知识,就足以在短期内掌握基本的设计方法和开发技巧。1.1.7 eda技术设计方法系统级设计eda是一种高层次的电子设计方法,也即系统级设计方法。高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造

24、性的方案与概念构思上,一旦这些概念构思以高层次描述的形式输入计算机后,eda系统就能以规则驱动的方式自动完成整个设计。这样,新的概念得以迅速有效的成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,在厂家综合库的支持下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容易。具体的设计流程如图1-1所示。系统划分vhdl代码或图形方式输入编译器代码级功能仿真综合器适配前时序仿真适配器适配后仿真模型器件编辑文件适配报告适配后时序仿真cpld/fpga实现asic实现厂家综合库图1-1 eda设计流程图fpgacpld是一

25、种新兴的高密度的可编程逻辑器件,它具有门阵列的高密度和pld器件的灵活性和易用性,目前已成为一类主要的可编程器件。可编程器件的最大特点是可通过软件编程对其器件的结构和工作方式进行重构,能随时进行设计调整而满足产品升级。使得硬件的设计可以如软件设计一样方便快捷,从而改变了传统数字系统及用单片机构成的数字系统的设计方法、设计过程及设计观念,使电子设计的技术操作和系统构成在整体上发生了质的飞跃。采用fpgacpld可编程器件,可利用计算机软件的方式对目标器件进行设计,而以硬件的形式实现。既定的系统功能,在设计过程中,可根据需要随时改变器件的内部逻辑功能和管脚的信号方式,借助于大规模集成的fpgacp

26、ld和高效的设计软件,用户不仅可通过直接对芯片结构的设计实行多种数字逻辑系统功能,而且由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量的难度,同时,这种基于可编程芯片的设计大大减少了系统芯片的数量,缩小了系统的体积,提高了系统的可靠性。eda技术就是以计算机为工具,在eda软件平台上,对以硬件描述语言hdl为系统逻辑描述手段,完成的设计文件自动完成逻辑编译、逻辑化简、逻辑综合及优化、逻辑仿真,直至对特定目标芯片的适配编译、逻辑映射和编程下载等工作。eda的仿真测试技术只需要通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,大大提高了大规模

27、系统电子设计的自动化程度。设计者的工作仅限于利用软件方式,即利用硬件描述语言(如vhdl)来完成对系统硬件功能的描述,在eda工具的帮助下就可以得到最后的设计结果,这使得对整个硬件系统的设计和修改过程如同完成软件设计一样方便、高效。 第二章 单片机的结构原理2.1 单片机的内部模块功能mcs-51的内部结构框图如图21所示,其内部各部分的功能简述如下:图2-1单片机的内部结构框图1运算器运算器包括算术逻辑部件alu、位处理器、累加器a、寄存器b、暂存器、以及程序状态寄存器psw等。该模块的功能是实现数据的算术运算、逻辑运算、位变量处理和数据传送等操作。alu的功能十分强大,它不仅可以对8位变量

28、进行逻辑“与”、“或”、“非”、“异或”、移位和清零等基本操作,还可以进行加、减、乘、除和十进制调整等基本运算。alu还具有一般微机的alu所不具备的功能,即位处理操作,它可以对位(bit)变量进行处理,如置位、清零、测试转移以及逻辑“与”、“或”、“非”等操作。由此可见,alu在算术运算以及控制处理方面的能力是很强的。累加器a是一个8位的累加器。从功能上看它与一般微机的累加器相比没有什么特别之处,但需要说明的是a的进位标志cy是特殊的,因为它同时又是位处理器的一位累加器。寄存器b是为执行乘法和除法操作设置的,在不执行乘、除法操作的一般情况下,可以把它当一个普通的寄存器使用。程序状态寄存器ps

29、w,是一个8位的可读写寄存器,它的不同位包含了程序状态的不同信息。其中进位标志位cy辅助进位标志位ac)和ov在执行算术和逻辑指令时,可以由硬件或者软件(cy可以有软件置位或清零)改变,因此运算器应该有上述三位状态改变的输出信息。本课题设计的运算器将完全以组合逻辑电路的形式出现,其内部将不包括累加器a、寄存器b、以及程序状态字寄存器psw。它只是根据所接收的指令,将来自累加器、程序或者数据存储器的数据进行相应的算术或者逻辑运算,然后将运算结果以及程序状态字寄存器psw的相关位以结果的形式输出。2控制器控制部件是单片机的中枢神经,以主振频率为基准,控制器控制cpu的时序,对指令进行译码,然后发出

30、各种控制信号,将各个硬件环节组织在一起。控制器电路包括程序计数器pc、pc加1寄存器、指令寄存器、指令译码器、数据指针dptr、堆栈指针sp、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各部分正常工作。程序计数器pc用来存放即将要执行的指令地址,它可以完成64k的外部存储器寻址,执行指令时,pc内容的高8位经p2口输出,低8位经p0口输出。数据指针dptr为16位数据指针,它可以对64k的外部数据存储器和i/o口进行寻址,它的低8位为dpl(地址82h),高8位为dph(地址为83h)。堆栈指针sp在片内ram(128字节)中开辟栈区,并随时跟踪栈顶地址,它按先进后出的原则

31、存取数据,上电复位后,sp指向07h。3存储器mcs51系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。对mcs51系列(8031除外)而言,有4个物理上相互独立的存储器空间:即内、外程序存储器和内、外数据存储器。对于8051其芯片中共有256个ram单元,其中后128个单元被专用寄存器占用,只有前128个单元供用户使用。4定时器/计数器mcs51系列单片机有两个可编程定时器/计数器,即定时器/计数器0和1。它们各具有两种工作模式(定时器模式和计数器模式)和4种工作方式(方式0,方式1、方式2、方式3)。4种工作方式中,

32、前三种方式对两个定时器/计数器都是一样的,方式3对两者时不同的,这一点在设计时要注意。特殊功能寄存器tmod(定时器/计数器方式控制寄存器)用于控制定时器/计数器的工作模式和过方式。另一个特殊功能寄存器tcon(定时器/计数器控制寄存器)用于t0和t1的启动和停止计数,同时还包含了t0和t1的状态。有关定时器/计数器的各个工作方式将在具体设计中详细叙述。5串行口mcs51系列单片机内部有一个功能很强的全双工的串行口,该串行口有四种工作方式,波特率可以由软件设置,由片内的定时器/计数器产生。串行口有两个物理上独立地接收、发送缓冲器sbuf,可以同时发送、接收数据,发送缓冲器只能写入不能读出,接收

33、缓冲器只能读出不能写入,两个缓冲器公用一个字节地址(99h)。串行口的接收、发送数据均可触发中断系统。同时,还有两个控制寄存器来控制mcs51单片机地串行口,它们是特殊功能寄存器scon和pcon。6并行口mcs51单片机共有4个8位的i/o口(p0、p1、p2和p3),每一条i/o线都能独立地用作输入或输出。p0口为三态双向口,能带8个ttl门电路,p1、p2和p3口为准双向口,负载能力为4个ttl门电路。7中断控制系统mcs51单片机的中断功能较强,以满足控制应用的需要。8051共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。所有中断分为高级和低级两个中断优先级。8时钟电路

34、mcs51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2mhz12mhz,典型取值为6mhz。9总线以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。2.2 mcs-51单片机的指令系统的实现原理mcs51系列单片机的指令系统采用汇编语言,它的指令系统是一种简明高效的指令系统,由42种助记符和7种寻址方式组合而成。其基本指令共有111条,其中单字节指令49条,双字节指令45条,三字节指令17条。如果按功能可以

35、讲这些指令分为五类:数据传送类(29条)、算术操作类(24条)、逻辑操作类(24条)、控制转移类(17条)以及位变量操作类(17条)。对于反向设计而言,我们关心的不是它的各种具体指令的多少而是指令的寻址方式。所谓的寻址方式就是寻找确定参与操作的数的真正地址。mcs51系列单片机的111条指令一共只采用了7种寻址方式。它们分别为:立即寻址、直接寻找、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。第三章 alu的原理分析与实现工具3.1 alu的原理分析8051单片机的alu是一个性能极强的运算器,它的功能为:(1)加、减、乘、除四则运算。(2)与、或、非、异或等逻辑运算。(3)数据传送

36、、移位、判断和程序转移等功能。8051单片机的alu为用户提供了丰富的指令系统和极快的指令执行速度,大部分指令的执行时间为1s,乘法指令可达4s。8051时钟频率可达12mhz。3.2 用fpga实现alu的设计在现代电子系统中,数字系统所占的比例越来越大。现代电子系统发展的趋势是数字化和集成化,cpld/fpga作为可编程asic器件,在数字系统设计中发挥着重要的作用。与传统的可编程器件相比,fpga采用了类似门阵列的通用结构,规模可以做的较大,可实现的功能更强,设计的灵活性更大。且fpga的容量越来越大,它所提供的门数从几百门到上百万门,可以满足不同的需要。因此用fpga来实现alu的功能

37、不会受到fpga门数的限制。用fpga实现的alu有很多优点:(1)编程方式简便先进。(2)高速:fpga的时钟延迟可达纳秒级,结合其并行工作方式在超高速应用领域和实时测控方面有非常广阔的应用前景。(3)高可靠性:表现在几乎可将整个系统下载于同一芯片中从而大大缩小了体积易于管理和屏蔽。(4)开发工具和设计语言标准化开发周期短。(5)功能强大应用广阔的 fpga可供选择范围很大,可根据不同的应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系统的设计。(6)易学易用开发便捷:fpga应用的学习不需太多的预备知识,只要具有通常的数字电路和计算机编程基础知识,就足以在短期内掌握基本的

38、设计方法和开发技巧。3.3 alu的实现工具vhdl语言vhdl语言的英文全名是very high speed integrated circuit hardware description language即超高速集成电路硬件描述语言,是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结合和连接形式。与传统的门级描述方式相比,它更适合大规模系统的设计。vhdl的优点:(1)语言标准、规范、描述能力强。 (2)可读性好,易于共享和复用。 (3)支持数字电路的开发环境,设计技术齐全、方法灵活。 (4)可以与工艺无关编程。 (5)支持层次化(框图)、出错处理和

39、验证。 第四章 mcs-51单片机的算术模块设计算术运算模块的功能是按照控制单元给出的指令,对来自数据存储器、程序存储器、累加器a以及程序状态字的相关位的数据,进行相关的算术和逻辑运算。本模块只进行字节运算,而不象原始的mcs51那样,在alu中还可以进行位运算(4位运算将直接在控制器中处理)。这个模块将用纯组合逻辑电路来实现。alu模块的实体结构如图41所示。图4-1 alu模块实体图alu由6个模块组成:分别是译码与控制分配模块alumux、逻辑运算模块alucore、加减模块addsub、乘法模块mul、除法模块div和二十进制调整模块adjust。alualumuxalucoreadd

40、subcormultiplcdivideradjustaddsub-cyaddsub-ov-cy图4-2是alu模块设计层次图4.1 加/减法器设计addsub加减法模块主要用来实现alu模块算术运算中的加减法运算,由于减法运算实现也可以转化成加法运算,因此addsub模块的实现实质就是加法器的设计,实现后的实体图如图4-3所示。其中输入端口18个,两个8位的操作数端口opa_i和opb_i,用于存放加数和被加数;一个状态位cy_i,即低位的进位输入;另一个输入端为加减法选择信号addsub_i,高电平时为加法操作,低电平时为减法操作。输出端口11个,包括8位的运算结果输出端口rslt_o,两

41、位的进位状态标志位cy_o和一位溢出状态标志位ov_o。设计采用组合逻辑设计方法,所以对于设计的关键部分,并行进位的产生相应的有一定的要求,即vhdl语言中的进位信号的表示应使用变量(variable),而不能使用信号量(signal)。因此在vhdl语言中,可直接按照公式的要求进行编写代码,其结果将由信号rslt_o代出addsub模块,返回到alumux中。 图4-3 加/法器实体图 加减法器模块设计的vhdl程序如下:library ieee;use ieee.std_logic_1164.all;entity addsub isport(opa_i:in std_logic_vecto

42、r(7 downto 0);opb_i:in std_logic_vector(7 downto 0);cy_i:in std_logic;addsub_i:in std_logic;ov_o:out std_logic;rslt_o:out std_logic_vector(7 downto 0);cy_o:out std_logic_vector(1 downto 0);end addsub;architecture rtl of addsub isbegin process(opa_i,opb_i,cy_i,addsub_i)variable s_c:std_logic_vector(7

43、 downto 0);variable p:std_logic_vector(8 downto 1);variable g:std_logic_vector(8 downto 1);variable c:std_logic_vector(8 downto 0);beginif addsub_i='1'then-adderp:=opa_i xor opb_i;g:=opa_i and opb_i;c(0):=cy_i;c(1):=g(1)or(p(1)and c(0);c(2):=g(2)or(p(2)and g(1)or(p(2)and p(1)and c(0);c(3):=g

44、(3)or(p(3)and g(2)or(p(3)and p(2)and g(1)or(p(3)and p(2)and p(1)and c(0);c(4):=g(4)or(p(4)and g(3)or(p(4)and p(3)and g(2)or(p(4)and p(3)and p(2)and g(1)or(p(4)and p(3)and p(2)and p(1)and c(0);c(5):=g(5)or(p(5)and g(4)or(p(5)and p(4)and g(3)or(p(5)and p(4)and p(3)and g(2)or(p(5)and p(4)and p(3)and p(

45、2)and g(1)or(p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(6):=g(6)or(p(6)and g(5)or(p(6)and p(5)and g(4)or(p(6)and p(5)and p(4)and g(3)or(p(6)and p(5)and p(4)and p(3)and g(2)or(p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(7):=g(7)or(p(7)and

46、g(6)or(p(7)and p(6)and g(5)or(p(7)and p(6)and p(5)and g(4)or(p(7)and p(6)and p(5)and p(4)and g(3)or(p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(8):=g(8)or(p(8)and g(7)or(p(8)and p

47、(7)and g(6)or(p(8)and p(7)and p(6)and g(5)or(p(8)and p(7)and p(6)and p(5)and g(4)or(p(8)and p(7)and p(6)and p(5)and p(4)and g(3)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2

48、)and p(1)and c(0);ov_o<=(c(8)xor c(7);cy_o<=c(8)andc(4);s_c:=p xor c(7 downto 0);else p:=opa_i xor(not opb_i);-subtractorg:=opa_i and(not opb_i);c(0):=not cy_i;c(1):=g(1)or(p(1)and c(0);c(2):=g(2)or(p(2)and g(1)or(p(2)and p(1)and c(0);c(3):=g(3)or(p(3)and g(2)or(p(3)and p(2)and g(1)or(p(3)and

49、p(2)and p(1)and c(0);c(4):=g(4)or(p(4)and g(3)or(p(4)and p(3)and g(2)or(p(4)and p(3)and p(2)and g(1)or(p(4)and p(3)and p(2)and p(1)and c(0);c(5):=g(5)or(p(5)and g(4)or(p(5)and p(4)and g(3)or(p(5)and p(4)and p(3)and g(2)or(p(5)and p(4)and p(3)and p(2)and g(1)or(p(5)and p(4)and p(3)and p(2)and p(1)and

50、 c(0);c(6):=g(6)or(p(6)and g(5)or(p(6)and p(5)and g(4)or(p(6)and p(5)and p(4)and g(3)or(p(6)and p(5)and p(4)and p(3)and g(2)or(p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(7):=g(7)or(p(7)and g(6)or(p(7)and p(6)and g(5)or(p(7)and p(6)and p(5)an

51、d g(4)or(p(7)and p(6)and p(5)and p(4)and g(3)or(p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(8):=g(8)or(p(8)and g(7)or(p(8)and p(7)and g(6)or(p(8)and p(7)and p(6)and g(5)or(p(8)and

52、 p(7)and p(6)and p(5)and g(4)or(p(8)and p(7)and p(6)and p(5)and p(4)and g(3)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);ov_o<=(not c(8)xor(not c(7);cy_

53、o<=(not c(8)and (not c(4);s_c:=p xor c(7 downto 0);end if;rslt_o<=s_c;end process;end rtl; 图4-4是对addsub加/减法器功能进行软件仿真的仿真结果,图中可知,加/减法器计算结果以及标志的输出均正确。 图4-4 addsub功能仿真图4.2 乘法器设计mul模块主要实现算术运算中的乘法运算,该模块的设计非常简单,直接利用vhdl语言中的乘法运算符编写程序进行设计即可,其实体图如图4-5所示。mul模块的输入为被乘数mula和乘数mulb,均为8位输入,而输出product_o为16位输出。

54、在vhdl的实现中,内部运算的实现仍然是通过变量的是用来实现的,因为内部的移位相加是通过for循环语句来实现的。因为是8位的乘法器,所以要循环8次,且从乘数的最低位开始循环至最高位。每次循环时都要对乘数的对应位进行判断,若乘数的对应位是1,则把被乘数与保存中间值的变量值相加,然后再存于变量v_d中;若乘数的对应位是0,则直接把保存中间值的变量值送入变量v_d中。判断结束后,循环中止前,都要把v_d中的值放到v_c中,并右移一位。依此循环8次,则可求出最终乘积, 而乘积的结果由信号product_o送回到alumux模块。图4-5 mul模块实体图mul乘法器模块设计的vhdl程序如下:libr

55、ary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mul isport(mula:in std_logic_vector(7 downto 0);mulb:in std_logic_vector(7 downto 0);product_o:out std_logic_vector(15 downto 0);end mul;architecture rtl of mul isbeginprocess(mula,mulb)variable v_dout:std_logic_vector(8 dow

56、nto 0);variable v_d:std_logic_vector(8 downto 0);variable v_c:std_logic_vector(16 downto 0);beginv_c:="00000000000000000"v_dout:='0'&mula;multiply:for i in 0 to 7 loopif mulb(i)='1'thenv_d:=v_dout+v_c(16 downto 8);else v_d:=v_c(16 downto 8);end if;v_c(6 downto 0):=v_c(7

57、 downto 1);v_c(16 downto 7):='0'&v_d;end loop;product_o<=v_c(15 downto 0);end process;end rtl;图4-6是对mul乘法器功能进行软件仿真的仿真结果,图中可知,乘法器计算结果以及标志的输出均正确。 图4-6 mul功能仿真图4.3 除法器设计div模块主要实现算术运算中的除法运算。本设计中的除法器采用了逐位相减的算法来设计实现,其实体图如图4-7所示。div模块的输入为被除数diva_i和除数divb_i,均为8位输入,而输出为商qutnt_o和余数rmndr_o,也为8位输出。 图4-7 div模块实体图在用vhdl语言实现除法器时,采用for循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论