如果告诉便携式电子设计人员有一种低功耗数字器件能使他们利用软件程序来重新配置硬件工作,他们中的十个会有九个认为这是某种微控制器。这是可以理解的。丰富的特性和封装、大量的软件开发工具,以及庞大的应用代码库,无处不在的微控制器" title="微控制器">微控制器几乎能够用在所有便携式应用中。然而,随着低功耗 CPLD 的出现,设计人员有了新的选择 来 实现以前由微控制器完成的功能。
本白皮书讨论什么时候适合采用 CPLD 来替代微控制器,什么时候可以采用 CPLD 作为微控制器的辅助器件。根据其功能和复杂程度,本白皮书中的例子可以分成三类。第一类是 I/O 管理,主要针对引脚级应用。第二类是端口管理,重点是器件之间的各种接口。第三类是系统管理,面向使用引脚或者端口来控制系统级功能的应用。
第一次接触可编程逻辑的设计人员会发现 CPLD 设计在很多方面和传统的微控制器设计类似。下面简单说明 CPLD 设计流程:
1
利用软件开发工具,采用 Verilog 或者 VHDL 等高级语言编写设计。
2
对设计进行仿真,以验证功能是否正确。
3
验证是否满足资源占用和时序通路等物理要求,将设计 “ 适配 ” 到 CPLD 中。
4
对设计进行仿真,以验证时序是否正确。
5
设计被编程至物理器件中。
一个主要不同是 复杂的 在电路仿真器功能 ,以验证 微控制器。然而,一旦理解了可编程技术的细微差别后,微控制器设计人员便能够很好地进行 CPLD 设计
CPLD" title="CPLD">CPLD替代微控制器的实例
以下部分介绍了CPLD能够有效替代微控制器的某些应用。
I/O管理
当考虑是使用CPLD还是微控制器来进行I/O管理时,所需要的I/O数量和类型是两个关键因素。微控制器的好处是体积小而且价格低,当然还有大量的小型低成本微控制器供设计人员选择。然而,如果某一应用需要大量的通用I/O,那么CPLD在成本上通常可以和微控制器相竞争。小型低成本微控制器一般受限于串口,它最多有几个通用I/O引脚。
设计人员发现,I/O数量较多的微控制器体积也不小,而且价格也昂贵。而另一方面,CPLD趋于有较多的I/O;小外形封装CPLD有50多个I/O是比较常见的。例如,5mm x 5mm封装的Altera® MAX® IIZ EPM240Z CPLD有80个I/O。除了I/O数量优势以外,一般情况下,CPLD要比微控制器更加灵活。除了某些例外,大部分CPLD I/O都能够用于任意目的。
可编程电平转换
很多产品都需要使用电压不同的各种逻辑器件。为支持多电压应用,设计人员要经常连接不同电平的器件。而采用微控制器几乎不可能实现这一切,因为微控制器的I/O资源数量有限,一般采用一个电压源工作。而CPLD有大量的I/O,并分成多个块。相应的为每个I/O块分配一个电压源。因此,开发电平转换器只需要将一个块中一种电压的所有I/O分在一起,将相关的电压参考连接到这些I/O所需的电源上(图1)。使用CPLD不但能够很好地完成电平转换,它更大的优势在于和电平转换相结合的可编程功能。例如,如果某一应用需要LCD显示器,但主处理器并不支持这种显示器,而且电平不同,那么可以采用CPLD来实现主处理器和LCD显示器之间的电平转换时序控制功能。
图1. 使用MAX IIZ CPLD来进行电平转换
脉冲宽度调制
一般而言,设计人员针对某一功能选择一款微控制器,例如脉冲宽度调制(PWM),这些功能也可以采用CPLD来实现。在PWM中,方波的时间周期不变,而信号保持高电平的时间在变化或者受到调制。这样,信号的占空比(tON)是变化的。PWM为数字系统中的模拟电路控制提供了有效的方法。便携式应用中常用的一种方法是利用PWM来调节LED的亮度。
CPLD并没有专用PWM电路,但是实现PWM输出并不难。例如,MAX IIZ CPLD的内部振荡器可以用作频率源,计数器可以用于调制所产生的频率。
模数转换器
设计人员经常选择微控制器来实现模数转换器(ADC)。然而,在某些情况下,例如键盘解码,可能不需要ADC。
然而,CPLD也是一种选择。加入一个简单的低成本外部电容后,MAX IIZ CPLD可以利用其内部振荡器、施密特触发器I/O以及高密度算法可编程逻辑架构来完成模数转换(1)。
上电排序
MAX IIZ器件针对大量的系统管理功能进行了优化,例如多电压系统上电和系统复位上电排序功能,以及片选信号生成等。这两类应用一般集成在一个非易失、瞬时接通器件中。多电压系统上电排序功能需要采用瞬时接通器件,该器件能马上管理PCB上其他器件的上电顺序。因此,相对于在毫秒量级上电的微控制器,能够在几微秒内上电的CPLD是上电排序功能更好的选择。
看门狗定时器
很多系统管理应用需要采用定时器。设计人员可能会吃惊地发现CPLD可以用于实现通常由微控制器完成的定时器功能。利用几个分立电容、电阻、二极管和金属氧化物开云棋牌官网在线客服场效应晶体管(MOSFET),设计一个简单但是有效的电阻电容(RC)定时器电路,周期性的对CPLD上电。在图4的实例电路中,设置RC值来建立一个10秒定时器。可以利用三个外部电容(C1、C2和C3)来扩展这一基本定时器,三个电容被用于建立一个简单的非易失二进制计数器。这样,在MAX IIZ EPM240Z CPLD中利用19%的逻辑就可以完全实现从10秒到80秒的间隔周期(2)。
GPIO引脚扩展
在常见的通用I/O(GPIO)引脚扩展应用中,设计人员把低成本小型微控制器的可编程功能和CPLD的通用IO资源结合起来使用。CPLD构建一组内部寄存器,微控制器通过I2C或者SPI等串口来访问这些寄存器,使微控制器能够使用现有的I/O资源来扩展其I/O总数量。利用扩展I/O,设计人员还可以使用CPLD进行电平转换,从而提高了CPLD的实用性(3)。