本文介绍了一种採用PLD和数据通路(datapath)来解放微控制器系统中CPU任务的方案。在大多数微控制器结构中,智慧的CPU身边总会环绕着一系列不可程式的週边设备。週边设备的功能有限,通常它们只负责数据形式的转换。例如,I2C週边设备只是实现串列和平行数据格式之间的转换,而ADC则实现类比到数位讯号的转换。CPU因此不得不完成所有的数据处理工作,实际上它还能做些更有用的事情。此外,管理週边设备将会导致CPU韧体异常复杂,并可能需要一个快速高效的CPU在即时的时序限制下执行这些韧体。这又会导致更多的潜在程式漏洞,因而需要使用更复杂和昂贵的除错设备等。
但是如果週边设备具备足够的复杂度、灵活度与智慧,是否能有效地减轻CPU的许多任务呢?复杂的设计可以透过结构重建,变为一组分佈在CPU和週边设备中间的简单设计。CPU将可以执行更少的任务,或进行更少的中断处理,因而使程式漏洞更容易被发现和修正。整体设计将使系统具有更好的稳定性,并且便于再使用部份设计。CPU处理任务减少就可以执行在较低的速度,因而降低功耗,或者这些额外可用频宽可用来实现市场部规划的下一代产品。然而,週边设备设计仍需具成本效益,否则整个微控制器可能变得太贵。本文将展示如何把智慧、灵活、低成本、可定製的数位週边设备设计到微控制器并配置,以帮助实现稳定的分佈式系统设计。
智慧逻辑选择─PLD还是数据通路?
通常有两种方法建构一个智慧的可配置週边设备。首先是使用PLD。如图1所示,PLD有一个驱动若干巨集单元的积和(sum of products)逻辑闸阵列。‘T’和‘C’符号表示每一个乘积项都能产生一个真值或补数(反向)输出,这样无论是正、负逻辑都可以支援。
图1:一个PLD实例(包括12个输出项、8个乘积项、4个巨集单元)。
图1显示了一个简单的PLD例子。PLD可以有成百上千的巨集单元,每个巨集单元最高由16个乘积项驱动。乘积项裡的与闸和或闸可以互联形成高度灵活的定製逻辑功能。巨集单元是典型的时脉架构,它们的输出可以反馈到乘积项阵列,因此允许製作状态机。
大规模PLD可以用来形成复杂的逻辑功能,甚至是完全的CPU,因此PLD当然可以用来实现智慧数位週边设备。然而,很多闸可能只是实现诸如计数器或加法器等简单的逻辑功能,但对于更复杂功能的实现,基于PLD的方案就会变得很贵。从某种程度上说,使用真正的CPU会更合理。
CPU的一个非常简单的形式是基于算术逻辑单元(ALU)的数据通路,也称为奈米处理器(nano-processor)。数据通路只是实现几个常用函数,但会比使用PLD实现的效率更高。图2:显示了一个基于ALU的简单的数据通路。典型的ALU可以进行各种作业,通常是8位元作业:向上计数(递增)、向下计数(递减)、加、减、逻辑与、逻辑或、逻辑异或,左位移、右位移。这裡有两个8位元累加器,它们能够为ALU输出充当输入数据暂存器或记忆体。一个输入时脉讯号沿产生一次作业。函数选择暂存器用来控制:
图2:基于ALU的数据通路。
* 产生什么作业。
* 该作业的源暂存器。
* 输出的目的暂存器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)