从本周二开始,受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实验室 专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
s344b0x 中断问题求助!!
安森美半导体业绩显示终端市场趋于稳定
深圳有没有熟悉QT开发,想兼职的?
简单实用的四线点阵液晶驱动方式
可编程控制器EDA教程 13
利用DVI实现双屏幕超宽图像显示
如何使用vxworks的轮询机制
可编程控制器EDA教程 10
利用晶体振荡器理解变容管和基于PLL的调频生成
SS0001的内电路原理图
可编程控制器EDA教程 12
台积电称英特尔没有要求投资——否认存在合作、合资谈判
因涉嫌向中国泄露DRAM技术被捕的三星、海力士前高管获保释
【6.2】强烈要求在贴子标题前加上发贴日期
黄仁勋称中国在芯片制造方面“落后于”美国
SS0001的主要参数
模块化LED大屏幕显示器的设计
AI终端的应用场景与产业发展探讨
Raspberry Pi 500+将Pi、16GB RAM和真正SSD放在机械键盘中
关于ARM7的应用
2025年,世界半导体产业面临结构调整
三大存储器巨头正在投资1c DRAM,瞄准AI和HBM市场
Tenstorrent与CoreLab Technology携手推出开放架构计算平台“Atlantis”,面向机器人及汽车边缘应用
HT7603内部电路原理图
基于光电隔离继电器的燃料电池堆单片电压检测系统的设计
全帧读出型面阵CCD光电传感器在图像采集中的应用
可编程控制器EDA教程 11
HT7603A~HT7603E的引脚功能
红色飓风FPGA普及行动 第一讲:FPGA系统设计基础
SS0001的典型应用电路