基本概念
多中央处理机即多CPU系统,我们所说的多CPU系统通常包括四种不同的形式即多处理器系统(Multiprocessor Systems)、多计算机系统(Multicomputer Systems)、 网络系统(Network Systems)和分布式系统(Distributed Systems)。
嵌入式系统硬件标准化、模块化的设计,一直以来倍受设计人员重视。微型计算机技术的快速发展,各种各样的单片机系统被开发出来,由于功能强大、价格低廉、灵活性强,所以被广泛地用来代替纯硬件电路组成的子模块,通过软件控制,使得每个子模块具有分析判断、控制能力,较纯硬件电路组成的子模块相比,有很大的优越性。另一方面,由于单片机处理速度慢、任务多,一个系统仅靠一个CPU有时难以达到技术要求。所以,目前比较复杂的嵌入式系统一般都由若干个含有CPU的子模块组成,即多CPU嵌入式系统。在多CPU嵌入式系统中,各个CPU之间的任务协调,数据传递是系统设计的关键,也是难点。
多CPU系统中的数据共享数据共享是指多个CPU之间通过一个或几个存贮器来传递相互间的信息。通常一个CPU将要传递的数据,写入到存贮器的固定区域,然后通知另一个CPU去取出数据,对数据进行处理。将处理的结果再写入到存贮器某一区域,通知有关CPU取走并进行处理。
数据共享是多CPU系统传递信息、协调任务的一种重要手段。通常共享的存贮器可以是双端口RAM,也可以是串口 。在实际中要根据系统的实时性要求进行选择。一般,对于实时性要求高、需要传输大量数据的系统宜选用双端口RAM作为共享存贮器,如音频、视频信号的分析处理,否则宜选用价格相对便宜的串口 作为共享存贮器(如24C02,93C46等),以优化设计降低成本。
多CPU之间的通信利用双端口RAM实现CPU之间通信双端口RAM是一种高速的存储器芯片,有两套地址总线、数据总线和控制总线,并有一套竞争裁决电路。因此,2个CPU在仲裁电路控制下,可以通过各自的地址总线、数据总线对其进行读写操作,方便地进行CPU之间的数据交换。常用的CMOS双口RAM有IDT7132, ID7102等。利用双端口RAM组成的多CPU系统原理如图所示:
该系统特点是数据交换量大、速度快,适用于快速数据传输,但是系统的成本较高。能否用单端口RAM实现双端口的功能呢,答案是肯定的。
利用单端口RAM实现CPU之间的通信顾名思义,单端口RAM只有一套地址总线、数据总线、控制总线。要实现双端口RAM的功能,就必须由硬件电路将一套总线变成两套总线,分属2个CPU控制。另外还必须设计一套竞争仲裁电路,防止2个CPU同时对RAM的操作冲突。好在这种接口电路的设计并不是太困难,74HC244, 74HC245再加一些门电路就能解决问题。
利用串口EPROM实现CPU之间的通信串口由于其引线少,价格低廉,在嵌入式系统中得到了广泛的应用。下面以共享25C02为例,介绍多CPU之间的数据传输。原理如图所示:
图中CPU1与CPU2通过共享25C02,CPU2与CPU3通过共享25C02完成他们之间的通信。
利用串行总线实现多CPU之间的通信随着计算机技术的发展,计算机的串口通信越来越多样化。同步串口通信、异步串口通信、 总线、SPI总线、USB等,由于其实用性好,越来越为设计者所关注。特别是在多CPU嵌入式系统中,各个CPU通过串行总线相连可以方便地进行多CPU之间的通信。
(1)用总线实现多CPU之间的通信
(Inter Intergrated Circuit)总线是由Philips公司提出并注册的一种总线接口标准,是一种主从结构的二线同步总线,其中一根是同步移位时钟SCL,另一根为数据线SDA。各CPU通过2条线相连,其原理如图所示:
系统中的CPU可以选用带有 总线接口的,如Philips公司的80C652, P87LC764等,其通信软件包可以在网上下载,对于不带 总线接口的CPU,可以通过I/O模拟Iz C总线,相应软件可从网上下载,也可自己编写。
有4种工作模式、主发送模式、主接收模式、从发送模式、从接收模式。根据各子系统需要,合理选用其工作模式即构成 总线多CPU通信系统。Iz C总线的数据传送格式如图所示:
S为Start信号,SLA为从机地址,也可以是通信地址;R/W为读写控制位;A为ACK应答位;DATA0~DATA7为数据字节;S/P为下一个start或stop信号。
(2)利用SPl总线实现多CP U之间通信
SPI( Serial Peripheral Interface)总线是由Motorola公司提出并拥有商标的一种总线接口标准,是一种4线同步串行总线。4根线分别是:片选CS;串行移位SCK;串行移位数据输入SI;串行移位输出SO。在同一时刻串行数据移位输入、输出不能同时进行,因此,可以将二者连在一起,共用一根口线(即三线同步串行并线)。
如图是典型的基于 SPI总线组成的多CPU系统:
系统中的CPU可以采用带有SPI总线接口的单片机。对于没有SPI总线接口的单片机系统,可使用普通I/O口模拟SPI总线,其通信程序自编。利用SPI总线组成的一个三级多CPU系统运行结果良好。利用串行总线实现多CPU通信,其优点是:连线简单、方便、可靠,产品性价比好;缺点是数据传输速度慢,实时性差,不宜用于数据量大、通信频繁的多CPU系统1。