使用PLD和低开销的串行总线扩展系统控制功能
在进行复杂系统的架构开发时,架构师和设计师很少对设计的系统控制方面予以重视。最好的情况是,系统控制在整个系统的设计考虑中排第二位。而最坏的情况是直接被遗忘,直到设计后期,板上只有很小的空间能实现系统控制功能,也不可能再有时间来重新进行架构设计。
过去,设计师常常会使用一些方法来解决这些问题:请软件设计师想办法在软件中实现某些控制功能;在电路板上四处增加小的PLD,因为受到电路板空间限制而不得不忍受布局布线的不便和拥挤;或者,以时间进度为由,牺牲某些功能。这些方法听起来都不怎么样。我们需要一种方法,最大限度地减少电路板的面积和布线,同时减少微处理器的使用并且实现所需的功能。
CPLD和小型FPGA往往是这种情况下的首选解决方案。使用CPLD和FPGA,设计人员可以不再需要集中监测和控制,而更多的采用本地化控制和分配。创建一条通信路径,尽可能地减少中央处理器和分布的PLD之间的连接,将会是一个最接近理想的解决方案。幸运的是,串行外设接口(SPI)标准和内部集成电路(I2C)标准就是理想的低开销的通信路径,他们最初分别由Motorola公司和Phillips公司开发。这两个标准并非设计用于提供大多数数据路径所需的高吞吐量,但它们在监控和控制应用中表现良好,相比之下这些应用中的延迟问题不是那么重要。
将FPGA和CPLD的灵活性和这些低开销总线相结合,为系统设计师提供了大量的系统控制功能,同时最大限度地减少所需的电路板面积。
低速串行总线
从物理学和电气学的角度来看,SPI和I2C都是低开销的总线标准,一般从电路板实现的角度来看就很容易理解。I2C只需要两个信号来实现:SDA(数据线)和SCK(时钟线)。这些线路都是漏极开路,并要求端接上拉电阻。这些连线可以跨越多个主器件和从器件,如图1所示。该电路还需要的唯一一个额外要求就是使用适当的端接上拉电阻来处理线路电容。两线总线上的多个主器件的问题需要使用总线仲裁来处理消息冲突。但是使用一个简单的专用总线结构和一个主器件,这些问题就可以全部解决。
![](../img/eep/emb/emb-33095epgnposcp4o.jpg)
图1——典型的I2C连接
SPI是一个4线串行总线,由于总线上仅允许有一个主器件因而无需总线仲裁。此外,还有两个数据引脚,都不是真正的双向引脚。MOSI(主器件输出,从器件输入)线负责将数据发送给外设;MISO(主器件输入,从器件输出)负责将数据发送给主器件。时钟(SCLK)和从器件选择(SS)信号提供总线控制,它们都是由主器件驱动。虽然这种安排避免了总线仲裁的需要,但是需要使用更多的信号。
![](../img/eep/emb/emb-33096kbojkpiutm2.jpg)
图2——典型的三个从器件的SPI总线
今天使用哪种串行总线方面的限制相对较少。截至2006年,NXP(原Phillips)不再需要许可证即可使用I2C协议。应当指出的是,获取I2C从器件地址仍需收取费用。然而,对于外设无需与外界通信的应用,这是没有必要的。而SPI是一个没有正式规范文档而被广泛使用的标准。然而,该标准已经在许多不同的嵌入式处理器中实现,由此看出虽然它没有正式规范文档,但是并未阻碍其广泛使用。
低开销的I2C和SPI两种标准被广泛采用并且集成到微控制器和外设中。
系统监测和控制
单块电路板上的应用监测和控制相对比较简单。复位、中断线路和选择线路可以直接由微控制器或本地PLD控制。然而,在多块电路板的系统中则需要进行集中控制,因而尽量减少连接的数量是很重要的。这可以通过使用低开销的串行总线与PLD进行通信来实现,如图3中所示。
![](../img/eep/emb/emb-33097rqmgirbu4sx.jpg)
图3——将PLD用作一个串行IO扩展器
接下来就需要一个协议,定义从微控制器到外部PLD的数据流的指令和寻址机制。对于基于SPI的实现,无需太多担心。SPI不需要数据流中的任何信息进行寻址,因为SS和SCLK信号已经根据协议提供了控制寻址。因此,用户只需控制整个数据有效载荷的传输。
外部PLD的I2C实现稍微复杂一些。首先,在将数据传输到总线上之前,要对器件寻址,必须识别出这个PLD。这种差异正是选择这两种串行总线架构时需要考虑权衡的地方:SPI架构不需要一个指令翻译器来寻找到特定的从器件,但比I2C结构需要更多引脚。
远程故障记录
考虑到外部的非易失性存储器成本低,以及便于通过串行总线如I2C或SPI接口进行连接,将外部非易失性存储器与PLD结合使用,可以为用户提供极具成本效益的方式来实现系统中的远程故障记录管理。图4显示了一个典型的系统应用,不仅使用了之前重点介绍的IO扩展功能,也说明了怎样将外部存储器纳入系统架构中使用。
![](../img/eep/emb/emb-33098osdaj5byrvw.jpg)
图4——远程故障记录
在这个架构中,PLD主要负责监测、控制和与
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- 用CPLD实现FIR数字滤波器的设计(08-07)
- 基于DSP+CPLD的交流电机调速在水处理控制中的应用(11-27)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于DSP和CPLD的宽带信号源的设计(07-26)