英语原文共 16 页,剩余内容已隐藏,支付完成后下载完整资料
单片机可以轻松编程
作者:比尔·休斯顿
作者来自:摩托罗拉公司
作者地址:德克萨斯州·奥斯汀
摘要
大多数单片机使用分体存储的哈佛体系结构,少数的单片机是使用冯·诺依曼架构,即使用公共存储器,所以其路线可以被大型计算机记录。这两种架构主要的区别是:基于哈佛大学架构的单片机成本低、形式不容易失真;而基于冯诺依曼架构的单片机则更容易扩展、更容易编程。
如果不是由于基于哈佛架构的单片机名字由于“哈佛大学”而异常著名,人们的关注点就会放在冯·诺依曼的易于编程的好处上:既可以降低编程成本同时又可以增加程序的可靠性、可以更灵活地处理 RAM和ROM的数据组织、可以更快地吸纳程序的改变、更容易理解一般的的指令集。下面以M6805系列的单片机来说明这些好处。
架构的比较
和大多数的主流产品一样,单片机的发展是一系列的不断进步,而不是如天才般的横空出世。所有受欢迎的4 位单片机和很多8 位单片机都是由计算器为基础逐渐演化的。有一些8 位单片机起源于对大型计算机的改造,这两个不同进化路径是通过对两个体系结构做比较而产生的。
哈佛大学结构体系
图1中所示的体系结构的特征是:拥有单独的内存(ROM)程序和数据组织(RAM)、每种类型的内存有一个专用寄存地址、ROM地址寄存器是程序计数器、RAM 地址寄存器有各种各样的名字。分离的地址寄存器允许对寄存器的长度和互连进行优化。例如,一个6 位RAM地址可以使用10位ROM地址。
在分离的内存体系结构中,从ROM读取数据然后直接送入指令译码器。同样,RAM的输出只往 ALU。因此,RAM和ALU中的4位数据宽度的并不符合8 位ROM指令大小。
图1
有时,分割程序和数据的内存体系结构被称为哈佛结构(或艾肯建筑)。这一点与今天所有使用冯 ·诺依曼(或普林斯顿)体系结构的大型计算机形成了对比。在哈佛大学教授 HowardAiken的指导下,哈佛大学体系结构目前在一些非常一流的机电设备和电子计算机之中使用。内存技术在1940 年代依然非常落后,因为分离的存储技术被用于程序(纸带)和数据(电话10 步继电器),这种分离的内存体系结构是自然而然形成。正如今天,单片机的硬件组件和互连是很少专用的拆分存储。作为高精度计算器的数学参考数据,如导航和弹道表,Harvard Mark I计算机已经使用超过 了10 年。当处理器用法很简单的时候,哈佛结构体系是非常好的,甚至更优越一些,然而当需求更复杂时便出现了问题。
例如,若要允许一个子程序,程序计数器寄存器放在电脑旁边,这并没有怎么影响哈佛结构体系的互连的效率。然而当三个或更多PC寄存器使用大量的昂贵的硅保存到串联的交换机的时候,哈佛大学结构体系的好处很快就会消失。有时程序允许读取和写入到寄存器,以添加更多的个人电脑。
专用互连到如图1所示的结构中,以及遇到不平等的字大小的问题。有时一个单片机包括堆栈指针和RAM中的PC缓存,这样可以使得在图1中的内存读/写路径加倍。地址计算是哈佛结构的另一个比较困难的例子。图 1 表明,所有的单片机有一条从RAM地址寄存器到ALU路径。当一个4 位ALU 用一个 6 位 RAM 地址时,RAM 数据结构尺寸就会受到限制。哈佛结构体系使用一个或多个指令来计算 RAM 地址寄存器的容量,然后是一个或多个指令用于 RAM 内容的获取和操作,没有单一指令计算 RAM 的地址,然后在RAM的目录里运转。
一些 单片机对计算 ROM 的地址没有规定。ROM 地址寄存器不能用ALU,所以相对寻址是不可能的。在这种情况下它不能读取ROM中的数据表,因此,I/O PL a简单的 BCD---七段转换已经实施。在某些情况下,哈佛结构体系进一步扭曲,从而允许程序读取和向寄存器写入一个 ROM 地址。在这种情况下,在图 1的结构中有两个输入到 ROM 的解码器:程序计数器和一个程序可以访问的 ROM 地址寄存器。
作为 1940 年代后期和 1950 年代早期的计算机先进发现,当谈到通常的用途时,哈佛大学架构体系已经受到了严重的限制。因而在当今较为先进的哈佛结构单片有了大量的扭曲。结果,通过计算可知哈佛大学体系结构的经济动机在是迷失在常用的单片机里面的。额外专用的寄存器和 ALU 数据路径被添加到单片机的含硅区,这一方式增加单片机的价格。因此相比之下,若要进行进行编程,哈佛结构更加困难 (昂贵)。
冯 ·诺依曼体系结构单片机已被 M6805 系列成功证明是成本低(少硅模具区域) 和更易于编程的。
冯诺依曼体系结构
图2显示了一个通用的可寻址的内存和只读存储器区域以及输入/输出基本的结构差异。与使用点对点的相互连接的图1不同,图2显示了数据和地址的共同总线。该程序寄存器也更为常用。
图2
冯·诺依曼教授在普林斯顿首次记录了利用数据把一个程序存储在一个普通存储器中的概念。主要的好处是内在的操作地址和数据的能力,程序和数据表指针可以保存在RAM中。索引其他地址的计算也包括在内。不过冯·诺依曼结构体系也有一些缺点。只有当有足够的点通过管理双向总线的使用从而能够辨认三种状态的控制公共总线能够节省互连区域。所有地址和数据元素必须符合总线宽度的标准。
在现实当中,八位总线、寄存器、被使用的算术逻辑单元,意味着有一些元素比在4位单片机的元素更大,大于总线地址的元素。例如,占用超过1总线周期,用一个8位总线,扩展到16位的寻址能力能够容易处理10位地址。
本文的其余部分侧重于冯·诺依曼体系结构的编程的好处,特别是作为应用到M6805 单片机系列。
人们曾经认为生产处很低的成本可编程 集成电路会是非常简单的。编写的程序都很简短,而且编程工作由于工作量大而会摊销。今天这种观点在许多应用程序中却已经变成过时的了,这些应用程序可以比几年前的微波炉更复杂。程序不是只写一次就被遗忘;他们会被更改,在某些情况下还会被修改很多次。改写程序所花费的的费用也应考虑成摊销成本。
冯 · 诺依曼 架构体系的单片机也可以有更多的灵活性程序设计,使用折中的内存器将会更简单。系统的硬件功能可以被程序控制,这些工具以让程序更可靠。对单片机程序来说,最重要的影响效率的因素的是 ROM 使用效率 — — 拟合最进一个给定的 ROM 大小的功能。
程序可变性
只有不成功的程序才不会被更改。因为很少有项目从一开始就是计划将来不会成功,所有项目都需要考虑程序的可变性。对原型的现场测试并指出原程序中的错误可以作为改善的措施。对源程序频繁要求(比如客户和营销人员)可以推断出他们不确切地知道他们想要的是什么。同样,管理人员、 营销人员和客户总是可以提出一些可取的新要求以实现新功能。这些都只是对缘产品的改变。
也有对生成的衍生物的程序的更改。单片机是可编程,这是众所周知的。每个人都想利用可编程 的集成电路,从而想起衍生产品。可变性必须从一开始就被计划在内。编程成本因此包括程序后期的改变所产生的成本,以及最初的编程工作所产生成本。通常更改的内容是由不同的程序员组合起来的。程序可变性成本因此也包括一个新的程序员计算出上一个程序员做过些什么所化的时间。
单片机的结构体系可以限制程序所包含的附加功能的扩展。在这种情况下,程序的改变成本包括重组为一个新的单片机。专业化编程技术,比如利用单片机的一些奇特的功能或者使用未用过的奇特的存储方式会限制未来的可变性。使用常用的单片机架构体系可以避免主要的编程成本,比如不让程序员异想天开的在五磅的只读存储器尝试七磅的功能。最终产品的功能可以通过与给定的存储组织的变化而紧密地交织在一起,甚至有些明显简单的,可以送程序员一个Square 1魔方程序。
相比第一次猜想,单片机的结构体系在程序的变化上有更多影响,。冯·诺伊曼架构允许程序最初写得更快,能更快速地被一个不同的程序员理解,从而更迅速的改变。
更少的代码行
'编程时间是和程序语句的数量成正比'的。从编译器语言业务数据处理项目到汇编语言微处理器中的应用程序,这个公理已被广泛接受。这个公理也是适用于单片机的。功能定义、 功能流程图和用户
文档的工作量对于单片机来讲是独立的选择。然而,详细流程图、 编码、 程序核对时和程序文件阶段与代码的行数成正比。在典型的项目中,编码和程序核对代表大多数编程量的大小。
如果单片机的架构允许程序用更少的代码行直接写入,这样可以节省大量的编程费用。评测表明 M6805 系列方案需要大约典型的 4 位 单片机的一半多的代码行来完成给定的任务。这些评测的内容包括全部的应用程序以及比较典型的子程序。因此可以节约50%的程序编码和核对时间 。更多的关于M6805 系列体系结构的详细信息包含在之后,但有助于程序的存储的特点在这里列出。地址计算,包括表查找索引是指令的一部分,必须在操作的说明之前。在两个操作数说明,如添加说明、和、比较,一个操作数是可寻址内存字节,从而节省了频繁的寄存加载。在一个单一的指令中,如设置了一个位或者增加一个字节的情况下,内存位和字节可以直接修改而不会干扰任何寄存器。可以用一条指令设置、清除、测试所有 的输入/输出管脚。自动中断保存和恢复所有寄存器。
当应用程序变得更加复杂,编程时间会成为最终产品的成本的较大一部分。在许多情况下一个更大的的好处是:最终产品将会更快出现。很多产品采用单片机进入竞争市场,在这里保存几个月可以明显提高市场份额。当变化能更快地被吸收,新产品也可以达到的市场竞争领先位置。
ROM 与 RAM 的权衡
单片机程序员编程时经常没有足够内存。产品成本目标可以使单片机有更多的内存。因此必须努力重新设计直到它适合该程序。
当只有 ROM 或 RAM 重载、 权衡技术可以用来减少其中使用的多的一个。冯 · 诺依曼结构体系的共同存储再一次显示了它的优势,对ROM 和RAM 是访问是同级的,所以功能可以更容易来回移动。
可以拥有任何数目的子例程级别的灵活性给了用户 在ROM 和 RAM的组合和使用上相当大的控制权。更多的子例程级别需要更多RAM 用于子程序返回地址。所以当备用的RAM 是可用的,可以通过使用更多的子程序来减少代码的行数。可当RAM使用超负荷,通过增加 ROM 使用量,只有较少的子程序可以使用。有效位和字节处理指令,比如M6805 系列单片机,允许 RAM 数据包装每个字节的多个元素。
I/O 与 ROM 的权衡
指令和寻址模式的复杂化的增加使得冯 · 诺依曼架构体系的单片机可以用软件来代替以往的硬件功能。尽管硬件与软件的权衡是依赖于应用程序,但只有通常的例子被引用。
一些单片机应用程序使用一个片外 A/D 转换器,有一系列的可以考虑的备选办法。一种方法是使用在单片机上就有A/D的单片机;第二种方法是,可以转换的模拟值对变频调速或脉冲宽度,这被单片机的定时器或一个程序测量;第三个方法是使用中断程序计算它配上一个比较器而产生的渐变的周期。也许在模拟传感器或在 A/D 转换的精度上也可以节约不少钱。一种低成本传感器可能会产生非线性输出,但程序可以通过使用索引的转换非线性表或平滑的公式来补偿。目标是最低的总系统成本,而不是最低的 单片机成本。有很多时候要考虑到若要实现程序的功能需要借助其他的单片机的外部硬件。
程序错误
单片机程序的可靠性应该被考虑到。由于一个错误而严重到将整个产品的扼杀在摇篮之内的情况看起来似乎不大可能,但这种情况确实已经发生。这种以旧换新是编程的一部分成本。软件的成本常被认为是分期偿还成本,唯一的例外是程序发生错误时对其进行维护所需要的经常性费用。程序错误是由于对程序核对进行的不足,这一现象由于经常存在更改而发生。
程序错误经常导致在最终产品中显示的一个怪现象,而不是使最终产品面目全非。这样的错误会导
致一系列的经常性费用 (费用与使用量成比例,而不一次性费用)。指令手册用于解释出现的问题。人们受到的训练也不会将其解释为一个失败的问题,但也会花时间向抱怨的顾客解释,这些是直接的、 可衡量的程序错误成本。
程序错误的间接成本是善意的损失。顾客不得不忍受一个公认的问题时候会非常的厌烦,有些顾客会在下一次选择使用其竞争对手的业务,这些不是一次性编程成本。
程序的不可靠性也带来风险从而承担法律责任。一些程序错误可能被解释为造成生命、 肢体或财产的损失
很明显,使用好的编程技术是减少程序不可靠性风险最好的方式,单片机的结构体系可以有助于鼓励开发良好的编程技术。
写一个给定的程序,代码错误率与代码数目的大小成比例。一个处理器使用较少的语句来执行一个函数,也更容易使程序员的头脑保持清醒。如前面所指出的,有序的转变是减少错误风险最好的机会。在这种情况下,否则一个易于理解的不可测因素,一致的指令设置一些古怪的事情也有重大价值。当应用程序功能与存储和输入/输出特征是紧密相连的,变化可以是很多的,因此容易出错。关键是要对程序的可靠性有敏感性,同时在一个单片机结构体系中鼓励更好的规划。
ROM 使用效率
能使用的最小的 ROM 区域是选择单片机的非常重要的标
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[150659],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。