AG32看上去像是一款平淡无奇的MCU产品,兼容了通用STM32(从103到407),表面上跟市场上大部分32位兼容MCU的大路货没什么不同,价格比大牌友商要低,但比内卷的兼容MCU稍微要高一点。
但是它隐藏在外表下面的核心部分完全不同。
AG32的用法可以说是千变万化,在有想象力的客户手里可以玩出各种花来,只把它当成兼容MCU用就太可惜了。
大量的工业客户场景中,都同时使用了MCU和FPGA(或CPLD)。内置了CPLD可编程逻辑的MCU,最大的优势是客户既可以将其作为纯MCU使用,又可以当成独立的CPLD使用,还可以同时使用MCU+CPLD。由于AG32的管脚可以通过配置文件全部灵活重定义,为客户的设计带来巨大便利,且CPLD逻辑可以灵活模拟出客户额外所需的接口功能。
[2颗芯片的功能,1颗芯片的体积,半颗芯片的价格]
用法一:IO口的复用
AG32和其他MCU的最大区别,是数字I/O口可以设置到任意位置,哪怕用最小封装,也可以使用以太网等任何外设。
传统的低端MCU由于I/O口数量不足导致部分功能无法实现,用户需要使用数字集成芯片进行扩展,如74LS系列移位寄存器,但是这种集成芯片也会由于引脚数量限制而无法确保单片机端口的充分扩展,用户也常通过CPLD(如EPM1270)进行扩展,根据实际需求扩展对应数量的端口。以下是通过Altera CPLD扩展IO口的一个案例。
AG32系列定义的PIN_XX可以用软件定义成任意数字接口,如UART,SPI,IIC, PWM,IO等等。除了模拟部分,ADC, DAC,CMP,usb外,其它接口都能任意定义。这样根据PCB布局来调整数字接口部分的顺序,2层板就轻松搞定。这样布出来的板子不但美观大方,而且性能更加可靠,基本上不存在交叉走线的情况。
AG32的管脚可以通过配置文件全部灵活重定义,给内核中的MCU和CPLD使用,因此可提供超出STM32的GPIO口数量,最大可能地利用所有管脚资源,有效降低了客户的BOM成本。
用法二:MCU+CPLD混用场景
传统工业应用场景,有很多场合需要同时用到MCU和CPLD(或FPGA),比如说在高速数据采集的应用中,传统的数据采集方案,很多通过STM32加上CPLD来完成。MCU主要负责数据处理和与上位机的通信,而CPLD则负责控制信号的输入和输出以及数据的存储。客户采用AG32的二合一方案后,有效地降低了BOM成本。
FPGA最擅长的就是大数据量的并行采集分析处理。高速AD数据采样即使使用了DMA数据读取,也会频繁与MCU抢占AHB总线,导致MCU的运行效率极其低下。如果用FPGA来做缓存就好很多了,会大幅减少AHB总线的抢占情况。使MCU有更多的时间来刷新波形的显示,以及一些人机界面的操作。FPGA同时还能对采集到的数据进行缩放、过滤等,尽可能帮助MCU完成波形显示前的数据处理。MCU和CPLD通过芯片内部AHB总线高速通信,速度远超传统外接SPI的方式。
还有很多场景会需要同时用到MCU和CPLD(或FPGA),比如伺服驱动、逆变器、激光控制器等,如果所需的2K逻辑数量够用,那么方案的性价比会超过STM32+CPLD。
用法三:接口定制
CPLD逻辑可以用来定制出客户需要的各种定制接口,这是兼容MCU没法做到的。
-某数字示波器客户,通过AG32里的FPGA实现了高速AD9288的数据接口,这个时钟的速度高达100Mhz,普通的MCU没有类似这种同步机制的接口来读数据。
-某客户需要MCU实现两路CAN接口,AG32已经支持一路CAN接口,其利用CPLD逻辑实现了第二路CAN接口。
-某客户需要USB转以太网标准模块,AG32支持USB FS+OTG和以太网MAC,并且提供了标准例程,包括网络Lwip和USB的开发例程,上层应用调tinyUSB的接口即可。客户自行实现了接口转换逻辑。
-其他的一些实现案例包括了74HC164,138甚至高速UWB收发接口。
用法四:算法加速
由于CPLD/FPGA中的逻辑单元是可编程的,可针对特定的应用而定制硬件,用硬件来换取速度和简单性。因此,仅使用所需要的硬件即可,而不必做出任何板级变动(前提是FPGA中的逻辑单元足够用)。
算法可以用软件,也可用硬件实现。FPGA使软件模块和硬件模块的相互交换更加简便,不必改变处理器或进行板级变动。设计者可以在速度、硬件逻辑、存储器、代码大小和成本之间做出折衷。利用FPGA可以设计定制的嵌入式系统,以增加新的功能特性及优化性能。
比如CRC算法的硬件加速,由于大量且重复的计算,循环冗余校验(CRC)算法或任何“校验和”算法都是硬件加速的不错选择。下面的应用中,在以太网图像传输上的应用,CPLD截取MAC传输的数据,加上了自定义的CRC值,再通过MAC传输出去,相当于对实时图像数据进行了简单的CRC加密。
如需对数据进行加密,也可以利用CPLD实现对数据的AES算法加密操作,原理大体相同。
此外,在音视频有大量的应用可以通过可编程逻辑进行性能优化。