嵌入式系统/可编程控制器
原始的 8086 处理器附带了一些外设芯片,它们各自执行不同的任务。这些芯片中包括可编程中断控制器、可编程定时器和可编程 I/O 芯片,它们可以处理原始计算机的许多任务,从而减轻 8086 的计算负担。在英特尔芯片的新版本(486、奔腾等)中,许多外设芯片已被集成到处理器中,以试图加快整个计算机的速度。但是,即使在当今的高端计算机系统中,许多功能仍然存在。
定时器在执行许多不同的操作时非常有用。例如,许多多线程操作系统通过设置定时器来运行,然后在每次定时器触发时切换到另一个线程。可编程定时器芯片通常可以编程为提供各种不同的定时功能,以减轻微处理器的负担。
定时器的另一种常见应用是跟踪以小时和分钟为单位的人类时间,通常还有年、月和日。通常这种实时时钟(RTC)有一个电池,即使在通常连接到电源的系统中也能使其保持运行。这种定时器可以通过两种方式节省功耗
- 当我们想知道现在是什么时间时——例如,当数码相机对刚拍的照片进行时间戳时——系统可以从实时时钟读取它。其他确定时间的方法需要更多的能量。
- 当系统需要定期执行某项操作时——例如,每 10 秒测量一次室外温度,并将其无线传输到室内显示屏——系统可以关闭除实时时钟以外的所有电源,然后等待时钟唤醒它。
您可以看到一些 8086 兼容定时器芯片,如 8253/54,它们内部有三个独立的定时器,但 8254 可以使用更高的频率,用于生成中断,如内存刷新中断、时间中断和最后一个用于生成扬声器频率。
如今出售的几乎所有微控制器都在同一芯片上包含集成的定时器“外设”。大多数嵌入式系统要么 (a) 完全没有外部定时器芯片,只使用内部定时器,(b) 使用外部实时时钟,要么 (c) 尝试与模拟 8253 兼容定时器和实时时钟的“南桥”芯片兼容。
原始的 8086 处理器只有一个用于发出中断信号的引脚,因此可编程中断控制器将处理大部分中断调用的复杂细节。此外,可编程中断控制器可以用于监控输入端口,例如在收到输入时触发中断例程。
由于内存读/写操作比微处理器的其他操作需要更长的时间,因此应避免移动大块内存。幸运的是,原始的 8086 配备了可编程直接内存访问控制器 (DMA),用于自动复制和移动内存段。DMA 还可以用于实现内存映射 I/O,方法是将其编程为自动将内存数据移动到输出端口或从输出端口移动。
DMA 内存复制还可以通过允许 CPU 与 DMA 控制器并行执行代码来显著提高系统性能,DMA 控制器自动执行内存复制。
外设接口控制器采用多种形式。每种类型的端口都有一个不同的控制器,微处理器将与其交互以发送该端口上的输出。例如,有用于并行端口和更现代的 USB 端口的控制器。这些控制器用于控制输出上的设置,例如定时和设置输出/输入端口上的不同模式。