我学过ARM一年多的时间,现在做FPGA也已经一年了,项目快完成了,对ARM及FPGA也有了一些新的认识。
选用FPGA是因为里面可配置32位软核(100MIPS),性能比ARM7稍微高一些,可根据需要选择多核。我们就用一个做主处理器,跑uclinux,另外一个做算法处理,利用其IP库中的IP实现了一些接口功能,利用自定义逻辑实现了一些具体功能,这样一个芯片集成度比较高。但是现在ARM的集成度也很高,还集成模拟器件(除ACTEL外,大部分FPGA还无此功能),可选用的型号很多,价格还要更便宜一些。从这一点看,FPGA的集成度优势不明显,却又缺乏模拟器件集成的软肋,唯一的优势就是硬件可配置性了。从开发环境来看,FPGA的开发环境确实很强大,从动不动就要几G的硬盘安装容量也可见一斑。从SOPC BUILDER, DSP
BUILDER 、NIOS II(就ALTERA的使用环境而言),到外围配合的matlab model_sim,功能强大、全面却难说方便,最大的问题是编译时间,如果你用惯嵌入式开发环境编译工具的话,那用FPGA工具简直是一种折磨,编译一个小时往往是正常不过的事情。就开发环境而言,跟ARM开发环境相比,FPGA开发环境功能占优势,使用便利性占劣势。就开发难度及对个人能力要求而言,我认为还是FPGA的要求要高些,功能软件开发感觉没太多区别,但uclinux的移植及FPGA硬件开发明显要麻烦一些,主要是针对软核的uClinux资料太少,相对应的驱动也少。最大的难题还是在硬件开发,硬件综合,时序分析需要一定的功底,如果前期的IO及时序约束做得不好,后期出现时序违规就会比较多,而且难于消除。而硬件实现方面,由于时钟频率较高,电源要求也相对较高、负载重,因此信号完整性、电源完整性,功耗分析也是必须考虑的,当然对于ARM布板而言,这同样也是问题。
综上所述,FPGA性价比、开发难度较ARM为大,但从长远而言,它还是很有潜力的。毕竟它的并行性是一个无可比拟的优势,对于熟悉HDL开发又有嵌入式开发背景的电工而言,又暂时对成本不敏感,不妨一试。 |