1.I/O接口分类
I/O接口的分类有很多种,这里简单介绍两种最常用的分类方法。
(1)按数据传送格式分类
并行接口:接口与系统总线之间、接口与外设之间,都是以并行方式传送信息,即每次传送一个字节或字的全部代码。
串行接口:接口与外设之间采用串行方式传送数据,即每个数据是逐位依次传送,而接口与系统总线之间总是以并行方式传送数据。为此,串行接口中一般需要设置移位寄存器以及相应的产生移位脉冲的时序逻辑以实现并—串或串—并转换。
使用时选用哪种接口,一方面取决于外设本身的工作方式是串行传送还是并行传送;另一方面还与传送距离的远近有关。如外设本身是并行传送而且传送距离较短,通常采用并行接口;而当外设本身是串行传送或者传送距离较远,需降低信息传送设备的硬件成本,则一般采用串行接口。
(2)按用途分类
目前很多接口电路都已做成集成芯片,在嵌入式系统中,这些接口芯片按用途可分为两大类,即专用接口芯片和通用接口芯片。
专用接口芯片是为某种专门用途或某种I/O设备而量身设计的,例如软盘控制器8272、CRT控制器8275、图形适配器8514/A等。
通用I/O接口芯片则不是针对某种用途或某类设备而设计的,它以服务于多种用途和多种设备为目标,例如:并行接口芯片8255A、串行接口芯片8251A等。
2.I/O接口控制方式
嵌入式控制器与I/O接口间的信息传送常称为信息交换,如何控制它们之间的信息传送,就是所谓I/O接口的控制方式问题。通常I/O接口的控制方式有程序直接控制方式、中断控制方式等。I/O接口采用的控制方式不同,将直接影响接口的功能结构。然而,不论采用哪种控制方式,除了对应接口的硬件支持外,还需有关程序加以配合。
(1)程序直接控制方式(www.xing528.com)
这种方式是由程序来控制CPU与I/O接口间的信息传送。通常的方法是在用户程序中安排一段由I/O指令和其他指令组成的程序段直接控制I/O接口的输入/输出操作。这种方式又可分为无条件传送与程序查询方式两种。
①无条件传送方式。
这是最简单的程序控制传送方法。这种方法无须询问外设的状态如何,一旦程序中需要输入/输出时,就直接使用I/O指令对指定的I/O接口进行输入或输出操作。采用这种方法所需的硬件开销小,在I/O接口中只需设置输入或输出缓冲寄存器,以及端口译码线路即可。
在使用场合上,该方式主要用于CPU与具有确定状态的I/O设备之间传送信息。例如,假定输入设备是一排拨键开关,则可直接用输入指令从接口读入开关的状态;若输出设备是发光二极管LED,则可直接用输出指令将数据输出到接口供LED显示。显然在这种情况下,输入/输出操作什么时候进行只取决于I/O指令的安排而与外设的状况无关。但事实上,在很多情况下,是需要根据外设的状态决定是否进行数据输入/输出操作,这就需要采用另一种传送方法。
②程序查询方式。
通常外设的工作速度会远低于CPU的工作速度,并且外设把数据输入到接口或从接口中将数据输出的时刻是不确定的,因此当I/O接口传送数据时,CPU先要查询外设的状态是否“准备好”,若没准备好则等待后继续查询其状态,直至外设准备好,即外设已具备传送数据的条件之后才能进行数据传送。该过程是用程序实现的,因而称为程序查询方式。可见,程序查询方式体现的是一种编程策略,如果CPU同时以程序查询方式启动多台I/O设备,则编程中可采取依次轮流查询的方式处理。
查询方式一般适用于CPU工作速度不是很高,允许在I/O过程中CPU不执行其他的操作,只处于等待状态的场合。这种工作方式结构简单,所用硬件较少,但存在明显不足之处:一是在工作过程中,CPU的大部分时间处于等待状态,CPU的利用率低;第二就是如果只使用程序查询方式,则CPU就不能响应和处理来自外部的随机请求。
(2)程序中断传送方式
关于程序中断传送的详细论述,我们将在第6章给出。此处为了使读者能更好地理解I/O中断控制,下面先介绍一些有关该方式的基本概念。
在嵌入式系统中采用中断传送方式主要为了解决两个问题。一个问题是在输入或输出过程中如何提高CPU的利用率?在程序查询方式中,CPU工作在一种“查询等待”状态,因此效率低;如果能让接口在外设准备好后主动向CPU提出请求,则CPU就不用去查询外设状态,从而可以在等待外设的这段时间内继续执行程序,直到CPU接收到外设请求后才转去处理。另一个问题是在嵌入式系统的工作过程中,除了执行程序外,可能会遇到一些随机事件,例如:用户使用键盘向系统提出某种要求等,这些都是编程时无法预测的随机事件,这就要求CPU应具有响应和处理随机事件的能力,这也导致了中断方式的出现。
中断方式是指由于某些随机事件的产生,引起CPU暂停执行当前程序,而转去执行中断处理(服务)程序,以处理这些随机事件,在处理完毕后又返回原程序继续执行的过程。因此,中断过程实质上是一种程序切换过程,它暂停原来正在执行的程序,切换为针对某种随机事件而编写的处理程序;在执行完这段处理程序后,又切换回去继续执行被暂停的原程序。由于原程序被暂停执行,所以称为中断。相对被中断的原程序来说,中断处理程序是临时嵌入的一段,所以常将被中断的原程序称为主程序,而将中断处理程序称为中断子程序。为了实现程序中断方式,嵌入式系统应提供相应的软件和硬件支持。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。