新闻  |   论坛  |   博客  |   在线研讨会
答“在我的嵌入式设计中,怎样使用FPGA?”
HXW718059156 | 2011-09-14 23:34:02    阅读:6688   发布文章

从本周二开始,受Jack-Wang之邀,担任EEPW论坛嵌入式系统设计和ARM开发两个版块的版主,今天在论坛里面网友戴为亚为提了这么一个问题:“在我的嵌入式设计中,怎样使用FPGA?”,我到觉得这个问题应该问成:在FPGA中,怎么实现嵌入式系统更为恰当些。这里给出我的回复如下:
        曾经的FPGA由于逻辑资源有限,仅用于IO胶合以及一些简单的逻辑功能实现,代替以往的74系列和4000系列IC,以节省PCB面积和布线麻烦,缩小产品面积,提高系统的抗干扰性和可靠性,其最大的优势在于灵活,可编程。

     而今的FPGA,随着半导体工艺的不断进步和发展,已进入了亚微米时代,FPGA片上集成了上千万逻辑门的可编程逻辑资源。主要包括查找表(LUT)、寄存器(DF,FF),可编程互连IO块、块RAM(单端口/双端口RAM)、嵌入式IP软核或硬核、硬件乘法器、硬件DSP单元等。现在最先进的FPGA技术为Xilinx28纳米工艺的Zynq-7000 系列FPGA,其内嵌ARM Cortex-A9 MPCore双核处理器和AMBA片上总线,功能十分强劲。
现在最大的两家FPGA生产厂商是Xilinx(赛灵思)和Altera,它们都针对嵌入式市场推出了自己相应的嵌入式IP软核或硬核,前者的软核包括PicoBlaze(8位,44MIPS,比较古老了)和MicroBlaze(32位,性能高达300MIPS,视具体的软核版本和器件系列而定,所有Xilinx的FPGA都可以嵌入实现),硬核包括PowerPC(仅Virtex系列支持)和Cortex-A9 MPCore(仅最新Zynq-7000系列)处理器,其相应的开发软件为EDK,包含Xilinx Platform Studio(XPS,硬件搭建和简易代码编写编译环境)和Xilinx Platform Studio SDK(高级软件开发环境,支持操作系统调试);后者(Altera)的软核为NIOS-II(32位RSIC处理器,有硬件加速功能,能够实现用户自定义指令,处理能力同样视具体的FPGA器件系列而定,最高达近300MIPS。2000年刚推出时为16位RSIC,也是业界首款FPGA嵌入式处理器),相应的软件开发环境为SOPC Builder(硬件定制搭建软件)和Nios II IDE集成软件开发环境(自带可选的uCOS-II操作系统,省去了大量的操作系统移植工作),而其硬核则包括ARM Cortex M1和MIPS处理器。
前面,大概介绍了一下FPGA的发展现状和FPGA嵌入式处理器的发展情况。接着说一下,FPGA中嵌入式系统的实现和学习方法。
一般的FPGA嵌入式系统都会包括一个处理器(无论硬核还是软核),由相应的硬件搭建软件实现系统的MCU和外设(IP)定制,然后由相应的逻辑设计工具综合生产系统硬件(这里用户可以加入自己用FPGA逻辑资源实现的任何功能单元或个性化外设),接着,根据综合的结果,即可在相应的软件编译环境中进行C语言的嵌入式系统代码设计,最终编译得到C语言可执行代码(elf或HEX或bin文件),最后由专门的软件工具将硬件逻辑设计比特流文件和C语言编译得到的可执行文件综合在一起,下载到FPGA硬件,实现调试,总体说来,设计流程还算简单,只是EDA工具编译的时间有点长(因为一旦涉及硬件部分的更改,需要重新编译综合逻辑设计部分)。
关于FPGA中的嵌入式系统设计的学习,个人觉得需要有几个基础:首先要有FPGA逻辑设计的基础,了解FPGA原理,熟悉FPGA开发的逻辑设计EDA工具(比如说Quartus II和ISE)的使用,懂得硬件描述语言(VHDL或Verilog HDL);其次,要有C语言基础,学过单片机(比如51单片机),对MCU的工作原理及编程,编译器工作原理有所了解(当然,了解脚本语言,链接文件,makefile以及GNU工具链的使用更佳),再者,想要深入这一领域,需要具备操作系统相关的基础,比如说学过简单操作系统uCOS-II、VXWorks等,更高级的包括uCLinux和Linux嵌入式操作系统。
不具备以上条件者,贸然开始FPGA中的嵌入式系统设计,会被遇到的巨大困难所吓退,甚至失去最初的兴趣,因为,这个FPGA中的嵌入式系统还是很复杂的,牵涉的知识面比较广,软硬件都要懂,很容易遇到各种各样的麻烦问题。
从现在的发展来看,在FPGA中实现嵌入式系统尤其相对于其他DSP和MCU实现的嵌入式系统有着明显的优势,其发展前途不可估量,因为随着技术的不断发展,一方面可以在海量的逻辑资源上灵活的实现并行的DSP处理和人性化外设以及特殊指令,硬件加速等;另一方面,很多EDA软件厂商看中这样巨大潜力市场,纷纷投入到FPGA中嵌入式系统软件的研发上来,可以预见,今后的FPGA嵌入式系统开发软件环境将变得越来越高效,实用。
在这里,我给即将开始这一学习历程的同学们提个醒:路漫漫其修远兮,欲将其精通,需韧心耐性,甘于寂寞,不懂的多上google百度,勤思考,多动手,千万不要怕麻烦(PS,我个人也是从菜鸟走过来的人,懂得专研精神和保持兴趣的重要性)。
                 最后,预祝大家学习愉快~
       (注:以上仅个人见解,不当之处难免,若有不对的地方,敬请指出,也欢迎大家积极在我负责的两个论坛版块里提问,我很乐意与大家一起学习和分享自己的经验。)
                                                                    
                                                                                    胡恩伟
                                                                           2011年9月14日晚
                                                                      于重庆大学主教2601实验室

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
502593045  2011-09-19 20:30:00 

牛人啊。。。言语间透漏不凡!

jidan  2011-09-16 20:22:08 

欢迎大家关注我的微信公众号--汽车电子expert成长之路,阅读更多原创性精彩文章。如果你觉得我的文章对你的学习/工作有所帮助,也请你帮忙转发到你的朋友圈,让更多的人能够看到我的文章,大家一起学习,一起进步!
推荐文章
最近访客