本文介绍了一种採用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的数据通路。
* 产生什么作业。
* 该作业的源暂存器。
* 输出的目的暂存器。
根据数据通路的具体设计,其可能会做一系列复杂作业,如表1显示。
表1:数据通路函数的实现举例。
这个函数选择模组实际上可以是一个小容量的sram,预加载所需的函数选择位元,sram的地址线可以用来选择执行哪个作业。最后,多数据通路可以用进位和移位讯号链在一起,以便可以进行多位元组作业数。
由于数据通路只有少数特定功能函数,很容易最佳化设计,因此其製作成本较低。然而,对于实现复杂的逻辑,数据通路远远没有pld那么灵活。那么,对于製作智慧、灵活、低成本的数位週边设备来说,哪一种方法是更好的呢?是pld还是数据通路?答案是,将两者相结合。下面是一个实例,来看看是如何实现的。
通用数位模组
同时使用pld和数据通路的系统实例是cypress半导体的psoc3和psoc5晶片。每个系统包含最高24个通用数位逻辑子系统,称为通用数位模组(udb),其结构如图3所示。一个udb包含两个图1所示的pld,一个数据通路以及状态机和控制暂存器。有两个链路路径,一个用于pld,一个用于数据通路。由一个路由通道来连接各udb子区块之间以及udb之间的讯号。pld配置、数据通路和路由透过写入udb配置暂存器来实现(图中未显示)。
图3:通用数位模组(udb)结构图。
udb的pld设计在图1中进行了描述。如图4,udb数据通路类似于图2所示的基本的数据通路,但是它更精密复杂,因为拥有更多暂存器和更多的功能。
图4:udb数据通路结构图。
* 8位元alu可以实现所有的七个基本函数─递增、递减、加、减、与、或以及异或,并且它有单独的位移和位元遮罩模组来进行alu结果后处理(8位元alu传输功能只需透过alu传送一个值完整移和位元遮罩模组)。位移模组可以做左位移、右位移、半位元组交换和传输。遮罩模组可以和单独的遮罩暂存器裡的内容逐位元相与(图中未显示)。
* 作业可以使用两个累加器(a0,a1)和两个数据暂存器(d0,d1)来完成。两个fifo暂存器(f0、f1)可用来在数据通路和cpu之间传输数据。fifo深度可达4位元组。这一结构可以使多任务处理变得简单;在不同的时间,独立作业可以在暂存器子集完成。例如,a0、d0、f0可以用于一个任务,而a1、d1、f1则适用于不同的任务。
* 广泛的状态条件(例如:比较、零检测、所有个体检测、溢出检测)可以应用到累加器,数据暂存器,以及路由到元件其它地方。
灵活的路由
虽然udb在pld和数据通路两个子系统都有很多特色,但广泛的数位路由让它们如虎添翼。讯号可以在pld和数据通路之间路由,遍及整个udb和元件的其它地方,形成了复杂的数位系统互连(dsi)结构。
实例
本例中,用一个udb数据通路来製作一个带重载(reload)功能的8位元数位计数器。为了实现这点,连接一个状态条件回到控制存贮sram地址线,如图5所示。
图5:用udb数据通路製作带重载功能的计数器。
在这个设计中,a0是计数暂存器,d0是重载暂存器。需要两个函数,一个用来递减计数,一个从週期暂存器重载计数器;这些函数在控制储存ram裡预载了。
逻辑如下:当a0不为0时,状态输出将会变低,在地址0会执行递减作业。当a0为0时,状态输出将为高,在地址1会执行重载作业。
所有作业都产生在时脉输入的上升沿,可以记录时脉沿数量。时脉输入可以来自各种时脉源。状态输出可以透过dsi路由,包括到dma和中断请求输入。使用数据通路链和遮罩模组,该计数器的大小可以是任何位数,不受限于8的倍数。
图5所示为减法计数器。它可以很容易的转换成加法计数器,可以透过使用不同的状态输出(a0= =d0)和控制储存sram裡的不同函数:a0=a0+1和a0=a0a0。异或任何值的结果永远为0。
透过使用pld这个简单的设计可以创造更复杂的应用。以一个红绿灯控制器为例,红绿灯控制器週期由绿、黄、红叁种状态构成,因此需要一个状态机。每个状态变化到下一个状态之前会持续一定时间,所以必须有一个计数器。为了简单起见,假设‘绿灯’时间和‘红灯’是相同,但‘黄灯’时间不同。
只需要使用3个数据通路暂存器(假设为8位元计数值)就可以实现这个时序结构。a0为计数暂存器,d0为‘绿’和‘红’状态保持计数器重载值,d1为‘黄’状态保持计数器重载值。模组结构图如图6显示。
图6:採用udb pld和数据通路建构的红绿灯控制器结构图。
要保存在控制储存ram裡的作业是:
a0 = a0 - 1 // 计数
a0 = d0 // 重载‘绿’或‘红’
// 计数值
a0 = d1 //重载‘黄’值
状态机在pld裡实现。数据通路条件输出反馈到pld,以显示需要改变状态了。pld也有这样的逻辑,根据目前的状态和从数据通路反馈的讯号,控制执行哪个数据通路作业和哪个灯要点亮。
超越基础
红绿灯控制器是一种简单的应用类型,通常使用cpu编程。然而,我们已经看到,除了初始化程式码,这个功能可以完全和cpu没关係而可以由智慧的可配置週边设备完成。这个功能可以很容易地扩展以支援附加需求,例如转换讯号、行人行走讯号、车辆检测感测器、流量/紧急事件转发器。
cpu需要做什么
透过使用pld和数据通路的有效组合,可以製作智慧的、灵活的、低成本的週边设备,以减轻cpu的负担。然而,如果这么多的功能都由週边设备处理了,那还留着cpu做什么呢?在许多情况下,cpu不需要做很多事,在某些情况下系统初始化后,cpu就可以关掉了。不过,更实用的方案是使用cpu做cpu能做得最好的事情,例如:
* 复杂的运算
* 字符串和文本处理
* 资料库管理
* 通讯管理
* 系统管理
例如,在我们的红绿灯应用中,cpu可以用于以下几个方面:
* 检测车辆闯红灯
* 使用相机拍摄牌照
* 从照片上撷取车牌文字资讯
从国家资料库中查阅车主资讯,以及* 向车主发送罚单
透过由智慧週边设备完成很多任务,cpu可以轻鬆地去做更有价值的任务。
Su’scon冠坤电子专注车载产品开发 专利认证独步业界
2020高交会应急安全科技展开幕 科技示范引领应急安全先行
一文知道液位传感器的原理和优点
镭拓手提式光纤激光焊接机四合一功能升级版来了
美光首席执行官“做客”中国紫光引发业界猜想
PLD设计实例:超越基础,释放嵌入式控制器中的CPU资源
分析PCB开关电源设计中电源不稳定的原因
俄媒感叹:韩国机器人太贵,俄罗斯工厂将由中国机器人重启
一种简单的,循序的方式讲解神经网络
需求停滞,日本PCB产量下滑了11个月
集成电路IP核现状,積體電路IP核現狀,Status of IC IP Core
数字化成型是3D打印技术下个发展的方向
“高价回收手机”团伙拆机藏零件 千余元变300元
新品速递|电感器:TDK 推出用于电源电路的业内最低剖面电感器
TD-LTE商用提速 产业链重点转移
用ESP8266控制墨水屏来显示天气信息
要提高功率密度,除改进晶圆技术之外,还要提升封装性能
48v转12v简单电路图(五款48v转12v简单电路设计原理图详解)
PCB图审核有什么原则
ART Pi Smart基于RT-Thread Smart系统的LVGL移植