几篇务虚的文章系列之一……谁嵌入谁,这是一个问题 1
0赞其实把ARM和FPGA结合起来并不是什么新的想法,这个想法已经早在10年前就出现了。当时Altera就曾经尝试过把ARM嵌入到自己的FPGA中。但很不幸的是这一想法在当时并未获得成功。
其原因很多,包括工具链的不完善、市场接收程度等等。但我个人认为最重要的还是没有解决一个最核心的问题:谁嵌入谁?
当年的ARM还是很低端的,当年的FPGA容量也不大,把这两个东西放在一起不免有了很多尴尬。
再后来两家FPGA厂商都开始玩自己的软核,Altera搞了Nios,Xilinx搞了MB。后来Xilinx还嵌入了PowerPC。
为什么要在FPGA中嵌入处理器呢?在上次实验室搬家的时候,我翻出了Altera2004年的培训资料,里面列举了要使用Nios的理由。但第一条,我个人也认为其实应该是最重要的初衷是:使用Nios处理器替代复杂状态机……
对于数字系统而言,可以将其分为两大块,数据通路和控制逻辑。所谓数据通路,就是用于运算的逻辑。什么加减乘除法器之类的。对于这种逻辑而言,从计算的角度看解决的是如何算问题。而控制逻辑可以有多种实现形式,但其核心是要解决算什么的问题?
如下面所示一段代码
if(……)
a= a-b
else
b=b-a
在这里面需要用到一种运算:减法运算。而到底是怎么去算减法,却依赖于条件。换言之依赖于外部的控制。而如何实现外部的控制呢?在数字系统中常用的一种办法是状态机,根据当前的状态、输入条件得到输出信号,也就完成了不同条件下产生不同的控制信号去控制运算逻辑如何做运算。
而当控制条件非常复杂的时候,依靠状态机来控制整个电路运行就会导致状态非常复杂而繁琐。在设计的时候难度很大。而处理器却不存在这一点。处理器本身就是一个天然的应激系统,在指令的驱动下按照外部的输入反应出一种输出。这就使复杂的状态机设计编程了编写一段代码(其实这也是嵌入式系统诞生早期MCU在系统中所起的作用——控制外围的电子、机械部件工作),从而简化了设计。
但随着后面的发展,Altera也好,Xilinx也好,在推广软核处理器的道路上无疑都开始跑偏了(这一点Altera尤甚)。越来越多的让大家关注到了软核处理器本身多么多么NB,可以做越来越多的事情。而在整体的产品定位上陷入了迷茫……如果仅仅就是为了使用处理器的话,何苦要先搞个FPGA再整个软核呢?设计的差异性到底如何体现呢。
最终到底是谁嵌入谁,把处理器嵌入FPGA是对是错耶?
且听下回分解。
各位看官觉得好的就点下投票。觉得不好的就在下面留言指正。