账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
CPLD──新一代MCU解决方案
 

【作者: Steve Prokosch】2003年07月05日 星期六

浏览人次:【16778】

MCU(Micro Controller Unit;MCU)已被广泛应用在各个层面,从消费性产品到通讯系统,支援各种不同的工作。其中,8位元MCU因为同时拥有低成本及处理密集运算作业的能力而广受欢迎。 MCU特别擅长串联(sequential)处理以及支援各种非高速型(non-time critical)作业,一般运作速度约在20MHz左右,但有些MCU核心会切分内部时脉,让单一指令可有多组时脉周期运作。例如,较早期的CISCMCU,通常使用25组较简单的指令来执行一组乘法运算。


现今业者采取的作法则是利用多组RISC MCU,以较低的耗电量达到单时脉(clock)指令周期的模式;例如Atmel AVR MCU能在1MHz的时脉下达到1MIPS的处理效能。在如此优越的效能下,MCU可完成绝大多数的作业。这类MCU的体积相当小,但是可以用不同的简单的ALU单元与通用型I/O元件记忆体执行不同的多功能类比功能与汇流排介面差异化作业。


CPLD与MCU功能比较

因为可编程逻辑元件(PLD)能满足市场对于低耗电可编程逻辑解决方案的需求,大幅提升其在MCU市场的市占率,像是CPLD之类的可编程逻辑元件,也被应用在类似的领域。微处理器与CPLD主要的差异在于串联与平行的处理模式,MCU有时会以分支常式(branch routines)的模式执行指令。而CPLD则以平行(parallel)模式处理输入与输出的指令,故能达到更高的速度以及可预知的时序结果。对于已中断再趋动(interrupt driven)的元件而言,CPLD能达到大幅提升的速度。


CPLD速度极高,且系统速度能轻易超过300MHz;CPLD的时序特性经常以奈秒为单位而不以MHz为单位(100MHz等于10奈秒,200MHz等于5奈秒),输入与输出延迟为3.0奈秒的元件,其速度等于385MHz。 (图一)显示CPLD功能区块图;对于CPLD而言,这种架构经常被应用在各种元件。不同系列元件的差异点包括时脉速度、I/O标准以及安全功能。对于MCU而言,其架构大致相近,但大多数的系统增加了如时脉、ADC、DAC等功能。



《图一 CPLD功能区块图》
《图一 CPLD功能区块图》数据源:图片来源:Texas Instruments

CPLD与MCU相似性

由于CPLD与MCU有类似的功能,因此拥有相似的特色,像是两者都具有可重复编程的能力,且通常支援JTAG测试功能,并能应用在类似的产品等。 (表一)列出两者之间的类似处。


表一 CPLD与MCU之相似性比较
元件类型 编程支援 支援语言 测试 研发工具 成本
CPLD 协力厂商 HDL 或 schematic JTAG 时序/功能模拟 0.80 至35.00美元
MCU 协力厂商 C 或其它支援的程式语言 JTAG 即时模拟 0.60 至40.00美元

有些厂商提供内线路(in-circuit)硬体除错器,能支援MCU以及嵌入型软体核心MCU;例如Nohau 就针对MCU与软体核心处理器提供多款除错器。


CPLD与MCU之差异性

但是MCU与CPLD亦有许多不同的地方。 CPLD可以打开电源时就立即启动,不需要开机程序,此外CPLD亦有极精准的时序模式,且运用平行模式处理,故能比以串联运作模式的MCU提供更高的效能。但是MCU则有其他可选择的附加功能,例如像A/D、专属I/O汇流排连结埠以及特定的针脚功能。 (表二)列出MCU与CPLD之间的差异。


表二 CPLD与MCU之差异性比较
元件类型 封装演进 速度 关机模式 指令集 类比功能
CPLD 额外增加正反器与逻辑元件 500MHz序列385MHz混合 DataGATE (输入闸) 依设计而异(数量不一)
MCU 额外功能 (A/D、DAC等.) 12~50MHz 待机/睡眠模式 通用(25~70) 有(有些差异)

虽然MCU提供较多的功能,但客户不一定会用到MCU全部的功能,而必须付出成本增加的代价;例如若要设计一套内含50组GPIO的8通道ADC,即可能要为其中用不到的功能付出成本。功能与价格之间的抉择,往往让人难以取舍,但选用恰好符合设计需求的方案,总比支付更多元件成本、承担设计失败的风险来的聪​​明。


在要求高安全性的产业中,像是电信业与工业设备市场,对以上差异性的风险已注意许久。这类设备依其性能以各种故障测试机制测试,通过各种检验,业者若运用可预测功能的可重复逻辑元件,通过检验则比较简单,若运用MCU,有更多复杂状态需要列入考虑。检验过程中会评估一串指令序列所可能产生的结果,而分支指令(branch instruction)通常会让检验流程复杂化,因为电压下降或停电会造成运作结果难以掌控。若采用CPLD,系统在电力回复后可重新载入原先的逻辑状态,故使用者可预测元件原本预设的状态,元件可根据预先定义的电力故障状况进行设计。系统测试方面,可将难以模拟的中断处理功能建置在PLD中,让测试作业更流畅。


如何在CPLD与MCU之间做选择

比较这两项功能相似但架构不同的产品其实相当有趣。类似之处,如MCU及CPLD软体核心微控制器都需要撰写程式;撰写组译程式码以应用于处理器或可重编程逻辑元件上。不过,不同的是可重编程逻辑元件可自行选用不同密度与功能的系列元件。市面上亦有许多专为可编程逻辑元件所开发的参考设计方案,例如像SPI、I2C及SMBus。


值得注意的是,就重复使用性及可移动性(portability)而言,可编程逻辑元件拥有更佳的成功率。运用VHDL等高阶语言进行硬体合成,比使用不同制造商提供的处理器更容易预测结果。透过VHDL,可重新编程逻辑元件的运用,可依目标环境与MCU特定功能之改变而改变。业者亦可能因矽元件升级或变更作业系统,被迫重新设定程式码。


同时使用CPLD与MCU

在某些状况下,这两种元件能相辅相成。对于非关效能的作业而言,CPLD提供针脚对针脚的快速效能及可预测之时序,而MCU则提供像是ADC、DAC及像是CAN与USB等汇流排介面。虽然这些功能会限制通用型I/O的数量,但我​​们可运用CPLD作为MCU连结埠的扩充器,满足这方面的需求。为了I/O数量购买尺寸较大之MCU,其成本远高于拥有必要功能的简化型MCU。 CPLD提供32至250组I/O,并能在I/O封装中加入更多的逻辑资源。CPLD的价格随着几何排列空间缩小持续下滑,让设计业者在需求、效能与价格之间取得最佳的平衡上能有更多的选择。


CPLD软体核心MCU介绍

以一套8位元的CPLD软体核心MCU设计方案PicoBlaze为例,该方案支援8位元资料汇流排与16位元指令汇流排,如(图三)。设计采用RISC(reduced instruction set computer)之「Harvard 架构」模型,内含独立的资料与指令连结埠。业者将C语言开发的程式码经交叉组译器组译成程式,使用VHDL程式语言,能运用对照组译器直接追踪架构的运算流程。



《图二 CPLD软件核心MCU功能架构图》
《图二 CPLD软件核心MCU功能架构图》

从许多角度来看,CPLD软体核心MCU是一套以常数为基础的元件。程式指定的常数主要支援下列应用:


  • (1)以固定的资料值在ALU运算中应用;


  • (2)以固定的连接埠位址存取外部的特定资讯或控制逻辑;


  • (3)以固定的位址值控制程式执行序列。



指令集编码的功能是让任何指令字元都能指定常数,因此使用的常数不会增加程式体积或造成执行上的负担。这种效率模式能将简单的指令集扩展为整个范围的「模拟执行单元」,所有指令在两个时脉周期内执行完毕。在程式处于被嵌入至即时环境的状态时,一致化的执行速度有助于程式执行时间上的判断。程式长度为256个指令,所有位址值为8位元,且储存于指令编码中。固定的记忆体大小让模组能维持固定的效能。若有必要,设计方案可进行扩充借以支援较大的记忆体范围。


指令集

指令集的状况亦相当类似。但对于CPLD软体核心MCU而言,其指令集是可变的;例如可根据本身的需求加入或删除特定的指令。 (表三)比较RISC MCU与CPLD软体核心MCU的指令集。


表三 RISC MCU与CPLD软体核心MCU指令集比较
元件 RISC MCU CPLD软体核心MCU
基本指令集 ADD、ADC、ADIW、SUB、SUBI、SBC、SBCI、SBIW、AND、ANDI、OR、ORI、EOR、COM、NEG、SBR、CBR、INC、DEC、RST、CLR、SER、RJMP、IJMP、RCALL、 ICALL、RET、RETI、PSE、CP、CPC、CPI、SBRC、SBRS、SBIC、SBIS、BRBS、BRBC、BREQ、BRNE、BRCS、BRCC、BRSH、BRLO、BRMI、BRPL、BRGE、BRLT、BRHS、BRCH、 BRTS、BRTC、BRVS、BRVC、BRIE、BRID、MOV、LDI、LD、LDD、LDS、ST、STD、STS、LPM、IN、OUT、PUSH、POP、SBI、CBI、LSL、LSR、ROL、ROR、 ASR、SWAP、BSET、BCLR、BST、BLD、SEC、CLC、SEN、CLN、SEZ、CLZ、SEI、CLI、SES、CLH、NOP、SLEEP、WDR(以及各种衍生指令) JUMP、CALL、RETURN、INPUT 、OUTPUT、RETURN ENABLE、SR、SR1、SRX、SRA、RR、REURN DISABLE、RETURN ENABLE、INTERRUPT ENABLE、INTERRUPT DISABLE、LOAD、AND、OR、XOR、ADD、ADD、SUB、SUBCY、SL0、SL1、SLX、SL、RL (以及各种衍生指令)

新增或删除指令

CPLD软体核心MCU的优点在于让能视本身需求扩充或删除元件的功能。例如仅须将VHDL程式码不需要的指令加上注解符号,就可将该指令从指令集中删除。可视需要将指令从组译器中移除,但这个动作其实是不必要的,若有些程式必须运用现有指令以外的指令,亦可自行加入指令。设计者亦能同时删除与新增指令;例如大多数程式开发人员在日常的程式中使用约20组指令,可先选出这20种经常使用的指令再移除其余部份,再开始撰写程式码。若发觉加入专为特定作业设计的指令可突破「内部回圈」(inner loop)的效能瓶颈,亦可自行撰写VHDL程式码。 CPLD软体核心MCU能运用处理器中的DualEDGE正反器,在时脉的开始与结束处执行运算。


DSP 范例

为展现CPLD软体核心MCU的弹性,以下举一个DSP的范例,将汇流排中的程式码与位元进行反置,采用快速傅立叶转换技术(Fast Fourier Transforms),求出的值通常根据位址管线进行处理,这个流程是基本演算法的重要步骤。若要运用「标准」指令执行这些演算,须执行多组「遮罩与与转换」指令,这将造成处理效率上的瓶颈。


(表四)列出组译器的基本运作流程,以显示暂存器的内容。演算流程一开始是载入一个标为A-H的资料位元组。这个位元组第一步先进行内部切换(四次转换),之后内部位元依序以AND/OR布林运算式(Boolean)推出至外层,然后每次以两个位元为单位将结果储存至目标暂存器。经过一个流程(pass)后,最终暂存器储存的内容正好是原始资料的倒序值。依照演算法的细节不同,整个流程须使用12至18个指令。在这个范例中,我们以指标(pointer)与计数器来管理回圈,并展出其演算内容


表四 位元反序排列步骤
步骤编号 状态 注解
1 |A|B|C|D|E|F|G|H| 原始状态
2 |E|F|G|H|I|J|K|L| 切换半位元
3 |0|0|0|1|0|0|0|1| 遮罩2位元
4 |0|0|0|H|0|0|0|D| OR INT结果
5 |D|E|F|G|H|A|B|C| 右侧ROOT 切换
6 |0|0|H |0|0|0|D|0| 左侧ROT INT 结果
7 |0|0|0|1|0|0|0|1| 遮罩2位元
8 |0|0|H|G|0|0|D|G| OR INT结果
9 |C|D|E|F|G|H|A|B| 右侧ROOT 切换
10 |0|H|G|0|0|D|C|0| 左侧ROT INT 结果
11 |0|0|0|1|0|0|0|1| 遮罩2位元
12 |0|H|G|F|0|D|C|B| OR INT结果
13 |B|C|D|E|F|G|H|A| 右侧ROOT 切换
14 |H|G|F|0|D|C|B|0| 左侧ROT INT 结果
15 |0|0|0|1|0|0|0|1| 遮罩2位元
16 |H|G|F|E|D|C|B|A| OR INT结果

在(图四)中,我们将「反置」(flip)指令加入VHDL,再重新编译程式码,此时处理器就会「重新布线」并加入这组关键指令。这种作法能将许多指令透过各种合成工具,结合成逻辑闸重新布线的效果。许多位元层级的运算演变成对CPU重新布线,最重要的是由合成器执行全部的工作。


《图三 反序处理》
《图三 反序处理》

指令改良

先前提到的步骤是指令集最佳化,但无法借此加入新功能。许多MCU在机板中内建许多功能区块,其作用超越指令集。例如许多8位元的MCU内建周边计数器或计时器、中断控制器及DMA线路。运用CPLD软体核心MCU,业者可根据所选用之CPLD的密度,在晶片中加入适当的周边功能。 (表五)列出各种扩增功能使用到的巨单元(macrocell)估计值。


表五 巨单元估计值
功能 巨单元
IrDA 与UART 87
计时器 16 以上
DMA 埠 16-32
Manchester 编码器/解码器 55
无线收发器 156
16b/20b 编码器/解码器 76
Flash NAND 介面 135
UART 61
SPI 介面 135
DDR SDRAM 介面 128
SMBus 控制器 158

在选择加入功能时须注意一项重点,即选用实际需要的功能,才能得到最佳的使用效率。大多数业者根本不需要通用型非同步接收器/传送器(universal asynchronous receiver/transmitter),而仅需要收发器(RT)功能。因此业者选用内含50种功能的方案,却仅用到其中的2种。这造成花钱购来的元件中,内含许多从未用到电路,形成不必要的浪费。为了避免这种浪费,仅须选用需要的功能,才能尽可能取得最低廉、最快速、最省电的解决方案。


提升效能

下一步就是充份发挥设计方案的资源,典型的改良方法是进行「调校」(tune)──先观察效能行为,找出处理器执行各种作业所耗用的时间,判断作业的内容,再思索最佳的改良途径。之后再建置新版本的架构以及/或程式码,然后再进行评估。


其中一种建置方式就是运用CPLD研发工具电路板,如(图五)所示。许多设计方案可轻易搭配电路板上的256-macrocell XC2C256。电路板上留有空置的针脚接点,可加入一组64 macrocell XC2C64,其讯号已与XC256相互连结。运用计时器与计数器可轻易在64 macrocell CPLD中建构一个小型硬体效能监视器,能计算256 macrocell CPLD中不同程式区段所耗费的时间,并能回报执行时间。透过检查位址空间与时间方面的行为,就可判断出各种作业所耗用的时间。


《图四 CPLD研发工具电路板》
《图四 CPLD研发工具电路板》

对照组译器

如先前所述,CPLD软体核心MCU对照组译器有完善的注解,能直接处理组译码与设计档案中的VHDL程式码。转译器本身是使用ANSI-C语言所撰写,并在Microsoft组译器上进行编译。交叉组译器具有极高的移植能力,并支援多种输出档案格式;例如它产生的二进位输出档案,能以英特尔的十六进位程式码(Intel hex)格式载入至外部EPROM。交叉组译器亦能为VHDL模拟器产生重要的模组档案。可以运用高速模拟器立即分析程式码,判断已建置程式码的功能与效率。最后再将程式码载入至CPLD研发工具电路板,检查实际的执行结果是否如先前所预期。


结论与建议

运用CPLD软体核心MCU,设计者可自行开发适合的系统,避免MCU被淘汰的窘境。此外,在学会如何变更指令以及分析指令的使用状况后,​​亦可让本身的应用程式达到最佳的效能,可将处理器设定成16或什至32位元,甚至是非二进位的模式。


(Xilinx美商智霖公司行销经理)


相关文章
人工智慧引动CNC数控技术新趋势
高频宽电源模组消除高压线路纹波抑制干扰
当磨床制造采用Flexium+CNC技术
电动压缩机设计ASPM模组
【新闻十日谈#40】数位检测守护健康
comments powered by Disqus
相关讨论
  相关新闻
» 美光针对用户端和资料中心等市场 推出232层QLC NAND
» 摩尔斯微电子在台湾设立新办公室 为进军亚太写下新里程碑
» 爱德万测试与东丽签订Micro LED显示屏制造战略夥伴关系
» 格斯科技携手生态系夥伴产学合作 推出油电转纯电示范车
» Arm:因应AI永无止尽的能源需求 推动AI资料中心工作负载


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84RCPAEX6STACUKR
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw