工程师须知:FPGA 的演进、优势、设计、改进
FPGA - 数字经济时代的基石
科技在近20年里发生了翻天覆地的变化,背后的推动主要来自于半导体技术的飞速发展,其中最大的革命是天才的人们通过模数变换,把自然界的一切模拟量变换到数字域,在数字域里用我们5千年来练就的功力 - 数学来描述并处理模拟的世界,在数字逻辑的基础上人们又发明了基于指令的计算、数字信号处理等技术,于是有了我们今天的压缩视频、数字通信、无线网络、互联网等等,可以说"数字"是当今半导体科技的主旋律,我们正处于一个"数字时代",正如本年度的CES也把主旋律定义成了"数字经济"。从事电子技术的同仁们都知道,数字逻辑的基本单元就是"门",由众多的"门"构成各式各样无论多么复杂的逻辑功能。FPGA - "现场可编程""门阵列",也就成了数字领域的"乐高",用它可以搭建出任意的作品。
FPGA的演进
让我先来回顾一下历史。1989年我第一次接触到电路板的时候,上面密布着一系列的TTL、CMOS芯片,一颗14~20只管脚的芯片中一般只有4-6个简单的"门",十几个芯片的大板子也就完成寻址、译码之类的功能,使用起来是非常的痛苦,如果要修改逻辑,只能用手术刀切割电路板并进行飞线。94年的时候我开始使用GAL(当时是Lattice的16V8,20V8),觉得那简直是一个革命,竟然可以用软件编程修改芯片内部的逻辑而不用切割电路板,当时GAL不方便的地方在于输入、输出管脚都已经固定好,不能够在线编程,每次修改逻辑都需要使用暴力把芯片从板座上拔下来放回编程器上进行修改。不久Lattice、AMD(好像还有Philips)都推出了能够在线编程的PLD(CPLD/EPLD),专业术语叫ISP(In System Programming),I/O管脚已经可以任意定义,管脚数量也达到44个以上,非常适合中等规模的数字逻辑设计。1995年后期由于项目的需要,PLD已经无法满足我们系统的要求,因为我们需要芯片内部要有大量的寄存器做Buffer, FIFO等。于是Altera, Xilinx以及他们的代理商轮番去拜访我们的实验室,给我们推荐新的器件 - FPGA。FPGA跟PLD有很大的不同:第一,PLD是可以通过再编程修改逻辑的器件,一旦编程好了,就如同功能固定的逻辑功能块可以做它该做的事情了,FPGA就像白痴一样,一掉电里面的东西全不见了,每次板子上电的时候需要从外部PROM(比小容量的FPGA还贵,而且原厂提供的一般都是只能一次编程的)把逻辑加载进来。第二,FPGA的结构跟PLD是不一样的,PLD的优势在于速度,主要用途在于灵活地构建各种组合和时序逻辑,而FPGA拼的是内部的存储器,后期的FPGA内部有大量的块状存储器(可方便地配置成SRAM,双口RAM、FIFO等)以及分立的存储器,适用于需要大量内部存储器的应用,比如数据采集,通信系统中的交织、去交织,在FPGA内部构建带有一定容量存储器的微处理器 - 8031、RISC等,在PLD里面你是没有任何可能的。因为当今的大多数设计中都会用到微处理器,FPGA厂商争相针对这些需求开发了一些软核,比如Xilinx的PicoBlaze(8位的)、MicroBlaze(32位的),后来觉得不过瘾干脆把PowerPC给硬化进去了,一颗不够,有的芯片里面还要塞4颗。
当年我们项目中采用了Xilx的XC40xx,设计采用原理图输入,非常的原始但是很直观。美中不足的地方在于Xilinx的软件界面不太友好。2000年到美国后仍然从事硬件设计,还是使用Xilinx的FPGA,不过设计的方式先进了很多 - 用上了Verilog,比较自豪的工程 - 完整的QAM调制器、基于USB的数字示波器、任意波形发生器以及一系列的通信系统应用模块。
在前后十年多的时间里,可编程逻辑器件尤其是FPGA从结构、容量、速度、编程软件、服务模式等方面都有了巨大的变化,小到最基本的数字逻辑,大到复杂的通信网络、视频编解码系统乃至ASIC原型设计,无处不见FPGA的身影。今天如果一个研发用的电路板上没有FPGA,这个研发项目的技术含量基本不高;如果一个工程师不会使用FPGA,他根本不好意思跟别人说自己是做硬件的;如果一个理工科院校还没有FPGA的课程,这个学校一定十分不靠谱,需要Xilinx大学计划的帮助。
FPGA的优势:
根据应用的不同,设计者所采用的解决方案也会不同,在大规模数字芯片中比较典型的技术主要有:微处理器、DSP、专用集成电路ASIC等,相对于这些技术的应用来讲,FPGA有什么优势呢?
1. 微处理器:今天的微处理器(包括微控制器)品种繁多,结构也各不相同,从4位、8位、16位、32位到64位,有8051,PIC,RISC、ARM、MIPS、Xtensa以及X86等,他们大多有丰富的接口同各
- 基于视觉的ADAS解决方案,近在咫尺!(05-07)
- 精通信号处理设计小Tips(6):卷积是怎么得到的?(11-24)
- 精通信号处理设计小Tips(7):应用极其广泛的相关(12-01)
- 精通信号处理设计小Tips(8):检测淹没在噪声中的信号(02-06)
- 精通信号处理设计小Tips(9):估算信号在模拟通道的延时(02-10)
- 什么是OpenCL?面向FPGA的OpenCL有何优点?(03-12)