可以将哪类外设功能集成到MCU中?
扫描二维码
随时随地手机看文章
近年来,随着工艺与IP的逐渐成熟,32位的MCU增长迅速,风头之劲乃至16位的MCU基本上被跳过了。现在说嵌入式MCU,要么就是8位,要么就是32位,16位的MCU产品型号屈指可数。
在半导体领域,微控制器(MCU)是一个很卷的赛道。为了能够从众多竞争者中脱颖而出,MCU产品一直在不断添加新“技能”,以适应市场环境的新要求。因此,时至今日,如果你“打开”一颗MCU,会发现其早已不再是一颗传统意义上简单的计算和控制芯片,而是集成了CPU内核以及丰富外设功能模块的SoC。
尤其是在CPU内核趋向同质化的今天,想要在产品设计上实现差异化,MCU厂商更是要在CPU内核之外的外设功能的集成上大做文章,让自己的产品具有与众不同的卖点。
“可以将哪类外设功能集成到MCU中”,对于这个问题,MCU厂商已经进行了诸多尝试:存储器、定时器、模拟外设、通信接口,甚至是射频收发器……不一而足。今天,Microchip更是脑洞大开,给出了一个新思路——将一个“微型FPGA”集成到MCU中!
在8位MCU中集成可编程逻辑
电子工程师都知道,在相当长的时间里,MCU和以FPGA为代表的可编程逻辑,是两个特性迥异的开发平台:前者是在通用CPU架构的基础上,通过软件编程去满足不同应用的设计要求,具有较高的灵活性和可扩展性,不过代价就是在性能和功耗上有所折中;而后者由于具有硬件可编程特性,开发者可以根据应用“定制”所需的硬件电路,在性能和功耗上自然更胜一筹,不过开发门槛相对较高。
之前也有⼚商将两者结合在⼀起,开发出兼具灵活性和⾼能效的异构平台,不过它们⼤都定位于中⾼端的产品。将可编程逻辑与8位MCU整合在⼀起的尝试,并不多⻅。⽽Microchip正是找到了这个独特的市场切⼊点,推出了PIC16F13145 系列MCU。
具体来讲,与传统的8位MCU不同,PIC16F13145系列的外设中,除了ADC、DAC、⽐较器和定时器等这些“常规”配置,还有⼀个特别的可配置逻辑块(CLB)模块。
CLB由32个基本逻辑元件(BLE)阵列(每个BLE都能够模拟AND / OR / NAND / NOR⻔)以及缓冲器/反相缓冲器、D触发器、JK触发器、多路复⽤器或四输⼊LUT构成。
这意味着,开发者可以利⽤CLB直接在MCU内创建基于硬件的定制组合逻辑功能,实现⾃⼰想要的硬件电路,⽽不受通⽤MCU固定硬件架构的限制,就好像在MCU中添加了⼀个“微型FPGA”。
那么8位的MCU的情形又如何,很多嵌入式工程师都有一些误解,下面来简单分析下。
01
8位MCU正在被淘汰
这是最常见的误解,先说事实,根据最新的Gartner的市场报告,8位的市场营收额和增长额跟32位的相比都仅仅差几个百分点。考虑到8位的单个芯片比32位芯片要便宜很多的事实,8位的出货量其实远高于32位的。
打个直观的比方,现在我们有了高铁,是不是所有传统的普快、特快火车都要立即淘汰呢?显然事实并非如此,至于原因就太多了。现实情况就是8位 MCU曾经的应用领域并不能立即用32位的MCU直接替代。
02
8位处理器缺乏创新
不少人会认为既然现在市场的宠儿是32位的MCU,厂商们是不是都没有投入研发资源在8位产品上了。
这么想的人可能一想到8位的MCU,脑海中会浮现40DIP的“经典8051”的形象,事实上芯片厂商们并没有停止创新。
比如CIP-51内核因为采用了一个时钟周期等同于一个指令周期的设计,瞬间将同频率的8051性能提高了12倍。国内的一些半导体厂商也有基于8051或其他8位内核的创新。
03
8位处理器难以使用C/C++语言编程
如果你了解Arduino的设计原理,这个误解就不攻自破。
当然坦白讲,8位的MCU使用高级语言编程确实比32位的MCU要困难些,主要障碍就是内存地址的不统一。
比如8051内核的内存地址就分为CODE、data、sfr、idata和xdata。如果涉及到banking就更复杂了,8位的PIC还有硬件Stack这样更加“非主流”的设计,但是这些障碍都可以通过工具的优化来缓解。
04
8位处理器专为简单应用而生
这个观点倒是有几分真实,但是嵌入式应用本身就是简单应用居多。嵌入式系统应用的本身特点决定了8位依然有很多用武之地。外设和编译器的进化将慢慢拓展8位处理器的应用范畴。
05
8位处理器不能胜任IoT应用需求
IoT应用不是一个单独的应用,而是一个复合应用。
智能手表、智能音箱、主控制器、网关这种当然需要复杂的处理器来实现。
但是IoT应用还包含大量的传感器节点、执行节点和转换节点。
这种节点用低功耗的8位处理器来实现更加适合。
06
8位处理器响应慢
这个就是完全的误解了。典型的嵌入式应用中,响应速度主要跟中断响应和唤醒延迟相关。8位处理器有天然的优势(地址转换工作量小、IP单元实现门数少),不输于32位的处理器。
07
8位处理器的能效低于32位处理器
曾经看过ARM公司的权威工程师写的一本书,书中观点是32位处理器的能效比高于8位的MCU,理由是32位处理器能快速处理完任务,休眠时间的比例更大。
但是这个结论包含一个假设,就是任务有一定复杂度。
如果任务本身非常简单,唤醒过程的功耗也很大,那么这个假设不成立。
针对不同应用场景,不能简单说8位、32位哪个能效比更高。至少非常简单的应用中,8位的能效比要高。如果再加上单独响应,无需CPU干预的一些任务,8位的能效比甚至能高出很多。
08
相同价格的32位处理器功能远强于8位处理器
这个也有一定程度的可信度,但是不要忘记有相当大的一部分应用使用8位的MCU就已足够在这种情况下,非要购买平均价格高一点的32位 MCU,成本就会上升。对于很多基本上标准化了的嵌入式产品来说,8位MCU还是具有一定的成本优势的。
09
8位处理器设计的应用不能适应未来变化
这是个思维角度问题,作为嵌入式程序员,更应该考虑当前的任务。不管是什么类型的MCU,如果产品形态变化了或者需求本身变化了,就要重新设计。未来谁都看不清,何必考虑那么多没有实际意义的前瞻。
10
8位处理器开发工作更繁重且没有升级路径
32位处理器的处理更加以软件为中心,可以做更多的代码复用。
而8位处理器更多地利用硬件外设来完成任务。
综合而言,没有绝对的差别。
只要是嵌入式处理器,升级路径都不大明确。
如果你采用既有8位,又有32位的产品的厂家,你会发现很多外设都很相似。
考虑到现在图形化配置外设的趋势,升级路径逐渐变得不那么重要,反正都是图形化或者脚本化来生成基础驱动代码。