mcu是microcontroller的缩写,中文翻译是微控制器,可以简单理解为集成在单一芯片上的微型计算机,它有运算器、控制器、存储器、总线及其他外设,采用存储程序执行的方式,对mcu的编程就是对其中的rom写入程序,系统上电后rom中的程序会像计算机内存中的程序一样得到逐条地执行。mcu相当于一个微型的计算机芯片,因此,也有地方把mcu称为单片机。mcu用途比较广,几乎所有电子产品都可以找到mcu的身影。
fpga是field programmable gate array的缩写,中文翻译为现场可编程门阵列,它是在硅片上预先设计实现的具有可编程特性的集成电路,它能够按照设计人员的需求配置为指定的电路结构,让客户不必依赖由芯片制造商设计和制造的 asic 芯片。广泛应用在asic原型验证、网络通信、汽车电子、工业控制、航空航天、视频监控、数据中心等领域。
从以上描述来看,mcu和fpga两者之间的差异还是很大的。
1、结构上的区别
mcu是一种微处理器,类似于电脑cpu,通常采用哈佛总线结构,或者冯诺依曼结构,对单片机的编程很大程度上要考虑到它的内核架构(比如arm内核)和各个寄存器的作用。fpga的结构是基于查找表(lut)的结构,lut本质上就是一个ram,fpga中多使用4输入的lut,所以每一个lut可以看成一个有4位地址线的ram。当用户通过原理图或hdl语言描述了一个逻辑电路以后,fpga开发eda软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入ram,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。fpga可以看作是纯粹的数字电路,其程序不用考虑芯片的结构,自由度非常大。从 fpga 内部结构来看,主要包括:可编程输入/输出单元(i/o)、可编程逻辑块(lc)、 完整的时钟管理(cmt)、嵌入块式 ram(bram)、布线资源、内嵌的底层功能单元和专用硬件模块等。
2、代码的执行方式上的区别
mcu无论是哈佛总线结构或者冯诺依曼结构均为取指到执行,指令是顺序执行的(即使是中断/异常,其发生后的中断服务程序也是顺序执行的);而fpga是基于逻辑门和触发器的,它是并行执行方式,没有取指到执行这种操作。简单来说,就是通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能,数字电路中所有逻辑门和触发器均可以实现,它适合真正意义上的并行任务处理。fpga程序在编译后实际上是转换为内部的连线表,相当于fpga内部提供了大量的与非门、或非门、触发器等基本数字逻辑器件,编程决定了有多少器件被使用以及它们之间的连接方式。通过编程,用户可对fpga内部的逻辑模块和i/o模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重新配置的特性,使得硬件的功能可以像软件一样通过编程来修改。只要fpga规模够大,这些数字器件理论上能形成一切数字系统,包括mcu,甚至cpu。因fpga是纯数字电路,在抗干扰和速度性能上有很大优势。
既然mcu和fpga有如此大的差异,那么有没有一些应用需要同时使用到mcu和fpga呢答案是肯定的。比如,有的应用同时需要有灵活的控制和外设接口(比如usb接口等),同时需要支持高速并行运算,如fft等,那么就要考虑使用mcu+fpga的系统架构,fpga适合并行处理,性能可以比同样主频的mcu高出上百倍,一般mcu+fpga异构架构都是把密集运算交fpga,而mcu处理逻辑复杂的业务。这种mcu+fpga系统往往要求开发人员不仅要熟悉mcu软硬件开发,也需要熟悉fpga的程序设计,更为关键的是能够设计mcu与fpga之间的数据交互模式,常见方式有并行总线方式,实现mcu与fpga之间的通信,或者通过mcu对fpga在线进行配置。典型的mcu+fpga系统的产品案例,如下图1:
图1 mcu+fpga架构的产品案例
针对上述这样的产品应用中同时需要使用mcu和fpga的情形,今天就来详细介绍我们的主角,它就是来自国产半导体厂商安路科技“小而美”的mcu+fpga soc – elf2系列。elf2内部包含了fpga资源,并且内嵌了一个arm cortex-m3硬核ip及丰富的外设资源。
fpga资源包含lut4/5混合逻辑架构,分布式ram支持,16路全局时钟,最大达670kbits bram,15个18*18 dsp,lut规模高达4480。如下图2:
图2 elf2 soc fpga基本特性
cortex-m3 mcu内核最高主频125mhz,4mbit spi flash,48kb片上sram,qspi接口支持内置/外置spi flash操作,集成timer,wdt,dma,uart,spi,i2c,adc,rtc等外设。mcu特性如下:
elf2m45 soc资源及其封装:
安路科技elf2 soc系统框图,如下图3:
图3 elf2 soc系统框图
根据lut规模大小和ram资源大小不同,elf2系列有不同的型号,elf2 soc选型表如下表1所示:
表1 elf2 soc选型表
elf2的封装形式也很丰富,一颗芯片可以实现由mcu和fpga两颗芯片实现的功能,大大简化了系统设计,还节省了pcb面积。efl2封装形式如下表2所示:
表2 elf2的封装形式
elf2 soc内部的mcu与fpga有4种数据交互方式,用户可以灵活选择其中任何一种,如下图4所示:
1、 ahb slave
2、 共享sram(sram:32kbyte)
3、 高16个gpio
4、 16位用户寄存器(mcu->fpga)
图4 elf2 soc mcu与fpga交互方式
elf2 soc软件开发需要同时使用到安路科技自主开发的td eda软件和arm公司的keil mdk软件,安路科技提供大量的demo演示示例程序供客户参考和学习。elf2 soc软件开发流程如下图5所示:
图5 elf2 soc软件开发流程
td eda软件和arm的keil mdk软件界面如下图6所示:
图6 td eda软件和arm的keil mdk软件界面
为了方便用户评估和学习,针对elf2 soc系列,安路科技特别推出了专用的开发板,如下图7所示:
图7 elf2 soc开发板
最后,我想谈谈关于国产fpga替代的观点。
全球 fpga 市场在 5g 和 ai 两大驱动因子下未来预计享有稳健增长,而目前国内 100 亿人民币市场中,国产厂商占比仅 4%,国产率极低,市场空间和潜力巨大;叠加中美贸易战的因素,终端制造业特别是各个行业的头部客户正在寻求国产替代,避免全盘使用美国公司生产的芯片,国产替代进程有明显加速的趋势。fpga行业技术门槛较高,产业比较集中,国产厂商替代增速有望显著高于行业平均。国外三大fpga厂家分别是xilinx,intel(收购原altera)及lattice,国内 fpga 厂商主要有 8 家:安路科技、紫光同创、国微电子、成都华微电子、智多晶、广州高云半导体、上海复旦微电子和京微齐力。国产fpga厂商中,安路科技的fpga产品有三大系列,分别是高端phoenix(凤凰系列)、中端eagle(猎鹰系列)和低端elf(精灵系列),数十款芯片。产品在核心架构、软件算法和系统集成等方面拥有多项技术专利。值得一提的是,在eda软件能力方面,国内fpga厂商目前只有两家具有商用软件全流程技术,安路科技就是其中一家,自主开发的全流程td软件系统和硬件芯片完美地结合在一起,提供了用户从前端综合到位流生成的完全开发平台,而其他厂商都需要外购逻辑综合工具。安路科技fpga芯片已经成功应用到通信设备、工业控制、消费电子的部分领域。安路科技是国产fpga厂商中综合实力最强,最具竞争力的品牌之一,有望在国产fpga替代及新市场开拓中继续获得越来越大的市场份额和高速的业绩增长。
由此可见,国产替代叠加行业增长及中美贸易战等因素,国产fpga厂商将进入增长快车道。润欣科技作为安路科技的合作伙伴,如您有产品应用需要用到fpga,不限于mcu+fpga异构架构的产品,都可以与我们润欣科技取得联系,我们将竭诚为您服务,协助您加速产品上市时间,提升产品性价比。
文章来源:润欣科技fortune微信公众号