首页->【FPGA/CPLD助学小组】

16 0

Xilinx Artix-7 FPGA快速入门、技巧与实例连载2——FPGA基础概念

 

更多资料共享

       链接:https://share.weiyun.com/53UnQas

1.jpg

 

 FPGA是什么

简单来说,FPGA就是“可反复编程的逻辑器件”。如图1.1所示,这是一颗Xilinx公司面向中端市场的Artix-7 FPGA器件,从外观上看,貌似和一般的CPU芯片没有太大差别。

2.jpg

图1.1 Xilinx公司的Artix-7 FPGA器件

FPGA取自Field Programmable Gate Array这四个英文单词的首个字母,译为“现场(Field)可编程(Programmable)逻辑阵列(Gate Array)”。该芯片的“可编程性”是针对“数字电路”而言,与CPU中软件的可编程是完全不同的。采用该芯片,工程师可以根据需要进行灵活编程,添加各种新功能,以满足不断发展的协议标准或规范,工程师们甚至可以在设计的最后阶段对它进行修改和升级。低成本、高灵活性的FPGA是各种应用中定制芯片的绝佳替代品。

而至于FPGA到底是什么,能够干什么,又有什么过人之处?下面我们就把它和它的“师兄师弟”们摆在一起,一一呈现这些问题的答案。

 

FPGA与ASIC

抛开FPGA不提,大家一定都很熟悉ASIC。所谓ASIC,即专用集成电路(Application Specific Integrated Circuit)的简称。电子产品中,它们无所不在,还真是比FPGA普及得多得多。但是ASIC的功能相对固定,它是为了专一功能或专一应用领域而生,希望对它进行任何的功能和性能的改善往往是无济于事的。打个浅显的比喻,如图1.2所示,如果说ASIC是布满铅字的印刷品,那么FPGA就是可以自由发挥的白纸一张。

3.jpg

图1.2 ASIC和FPGA就如同印刷品和白纸

使用了FPGA器件的电子产品,在产品发布后仍然可以对产品设计作出修改,大大方便了产品的更新以及针对新的协议标准作出的相应改进,从而可以加速产品的上市时间,并降低产品的失败风险和维护成本。相对于无法对售后产品设计进行修改的ASIC来说,这是FPGA特有的一个优势。由于FPGA可编程的灵活性以及近年来电子技术领域的快速发展,FPGA也正在向高集成、高性能、低功耗、低价格的方向发展,并且逐渐具备了与ASIC相当的性能,使其被广泛地应用在各行各业的电子及通信设备中。

FPGA与ASIC最大的区别就是功能的可编程性不同,我们再举一个实际的例子说明FPGA与常见ASIC的这个最大区别。门电路芯片NC7SZ08是单路的逻辑与门,如图1.3所示,该芯片除了需要电源(VCC和GND)外,输入A和B经过芯片内部的“逻辑与”后,输出结果Y。

4.jpg

图1.3单通道逻辑与门芯片

若是我们在电路板中设计了一颗NC7SZ08芯片,那么毫无疑问,我们只有可怜的3个IO引脚可用,并且它的功能非常单一,就是2个输入芯片“逻辑与”后输出结果,仅此而已。但是,如图1.4所示,无任何功能的FPGA其实什么也不是,一片空白,但是这一片空白中却潜藏着万千种可能,这万千种可能就把握在你我手中,FPGA的可编程性可以让它实现我们希望实现的任意数字电路功能,譬如这个实例中,我们就在FPGA中编程实现了与门逻辑,那么它就等同于我们的NC7SZ08芯片。当然了,这只是非常简单的一个FPGA可编程应用实例,工程实践中也没有人会因为仅仅为了一个与门电路动用FPGA。换句话说,真正需要动用FPGA的应用,往往是一般的ASIC所实现不了的功能(实际情况也许并不是实现不了,而是这样的应用太小众,没有市场和利益可图,也就没有芯片厂商愿意花代价设计这样的芯片),那么此时用FPGA编程实现这样的定制化数字电路就能解燃眉之急了。

5.jpg

图1.4 FPGA中编程实现与门功能

    当然,FPGA与ASIC的开发过程有一些共通之处(当然并不完全一样,区别也是有的),例如它们都可以使用硬件编程语言Verilog或VHDL,它们在时序设计、仿真验证方面的基本原理、方法或优化技巧基本是相通的。ASIC开发通常分为前端和后端,前端是后端的输入,前端最终的产出是一个能够描述所实现功能的逻辑门电路及其连接的网表,FPGA在综合后也是得到一个类似的网表;ASIC设计后端的任务是把前端得到的网表通过布局布线(需要人工参与)映射到具体的物理结构上,而FPGA上与此类似的映射过程通常完全由开发工具包办了,它并不需要设计者太多的参与。当然了,从这样简单的开发对比也可以多少体会到ASIC和FPGA在成本、功耗或性能上为何存在差异。

 

FPGA、ARM和DSP

与ASIC相比,FPGA、ARM和DSP都具备与生俱来的可编程特性。或许身处开发第一线的底层工程师要说No了,很多ASIC不是也开放了一些可配置选项,实现“可编程”特性吗?是的,但相比于FPGA、ARM、DSP可以通过编程实现嵌入式系统的大多数功能,ASIC的那点“可编程”性的确摆不上台面。当然,换个角度来看,FPGA、ARM和DSP都或多或少集成了一些ASIC功能,正是这些ASIC功能,加上“可编程”特性,使得它们相互区别开了,并且各自独霸一方。

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。由ARM公司设计的处理器风靡全球,大有嵌入式系统无处不ARM的趋势。我们通常所说的ARM,更多的是指ARM公司的处理器,即ARM处理器。ARM通常包含一颗强大的处理器内核,并且为这颗处理器量身配套了很多成熟的软件工具以及高级编程语言,这也是它倍受青睐的原因之一。当然了,ARM不只是一颗处理器而已,因为在ARM内核处理器周边,各种各样精于控制的外设比比皆是,什么GPIO、PWM、AD/DA、UART、SPI、IIC……一列一箩筐。ARM的长处在控制和管理,在很多工业自动化中大有用武之地。

6.jpg

图1.5 ARM处理器

DSP(digital singnal processor),即数字信号处理器,是一种独特的微处理器,有自己的完整指令系统,能够进行高速、高吞吐量的数字信号运算处理。它不像ARM那么“胡里花俏”,它更“专”。它只专注一件事,就是对各种语音、数据和视频做运算处理;或者也可以这么说,DSP是为各种数学运算量身打造的。

7.jpg

图1.6 DSP处理器

相比之下,套用近些年Xilinx提出的一句很经典的广告词“All Programmable”来形容FPGA再合适不过了。ARM虽然有很多外设,DSP虽然具备强大的信号运算能力,但是FPGA眼里,这些都不过是“小菜一碟”。或许说得有些过了,但是,毫不夸张的讲,ARM能做的,DSP能做的,FPGA一定也都能做;而FPGA可以做的,ARM不一定行,DSP也不一定行。这就是很多原型产品设计过程中,时不时的有人会提出基于FPGA的方案了。在一些灵活性要求高、定制化程度高、性能要求也特别高的场合,FPGA再合适不过了,甚至有时会是设计者别无选择的选择;当然了,客观的来看,FPGA固然强大,它高高在上的成本、功耗和开发复杂性还是会让很多潜在的目标客户望而却步,而在这些方面,ARM和DSP正好弥补了FPGA所带来的缺憾。

8.jpg

图1.7 FPGA器件

    之所以会有ARM、DSP和FPGA的存在,和实际应用情景是非常相关的。对于ARM,它的主要应用情景常常是有一些低速数据的采集、简单的处理和传输,也还需要一些人机交互手段的存在。前面提到,ARM处理器周边通常外设丰富,且它本身就精于控制,所以就很适合此类应用。对于DSP,有无人机交互就无所谓了,它的应用情景最主要的特点一定是高速数据的实时采集、较复杂的运算处理和传输。那么对此作过专门优化的DSP就能轻松胜任。而FPGA,可以这么说,它是可以补前面二者的“缺”和“漏”,FPGA可以在ARM和DSP之外满足各种定制化的需求。笔者在参观过一家专门为航空、医疗和工控行业做小批量电路板代工的企业后,印象最深的就是在琳琅满目的电路板中,往往都能找到一颗FPGA器件,而这在大批量生产、成本敏感的消费电子领域中,是不可想象的。换句话说,ARM和DSP在大批量、低成本的应用中较为常见;而FPGA则更多的在小批量、定制化、成本不敏感的行业中应用。

总而言之,在嵌入式系统设计领域,FPGA、ARM和DSP互有优劣,各有所长。很多时候它们所实现的功能无法简单的相互替代,否则我们就不会见到如TI的达芬奇系列ARM中有DSP、Xilinx的Zynq或Altera的Soc FPGA中有ARM的共生现象了。FPGA、ARM和DSP,它们将在未来很长的一段时间内呈现三足鼎立的局面。

 

Verilog与VHDL

说到FPGA,我们一定关心它的开发方式。FPGA开发本质上就是一些逻辑电路的实现而已,因此早期的FPGA开发通过绘制原理图(和现在的硬件工程师绘制原理图的方式大体相仿)完成。而随着FPGA规模和复杂性的不断攀升,这种落后的设计方式几乎已经被大家遗忘了,取而代之的是能够实现更好的编辑性和可移植性的代码输入方式。

说到FPGA的设计代码,经过近三十年的发展,只有Verilog和VHDL二者最终脱颖而出,成为了公认的行业标准。这两种语言都是通过一系列分层次的模块来表示复杂的数字系统,逐个模块的仿真验证后,再集成各个模块交由综合工具生成门级的网表,最后由布局布线工具将其映射到最终的FPGA器件上。

大家在学习这两种语言时,一定发现VHDL完全是一门“异类”语言,在我们已有的各种编程语言中,应该是找不出语法、格式都类似的“兄弟”,所以学习起来也一定非常痛苦。但是反观Verilog语言,大家一定会产生莫名的好感,为啥?你可能一激动就喊出来了“这基本就一C语言变种吧”,没错,Verilog语言就是在C语言的基础上,增加一些特殊的约定而产生的。

Verilog是在1983年由Gateway Automation公司的Philip Moorby发明,此人也是目前EDA行业鼎鼎有名的Cadence公司的第一合伙人。时隔10年,1993年,几乎所有的ASIC厂商都开始支持Verilog,当然FPGA厂商也不例外,此时,IEEE(电气和电子工程师协会)正式将当时的Verilog2.0作为标准的提案。1995年,IEEE制定了Verilog的标准IEEE 1364-1995,即称之为Verilog-95的标准。2001年,在进行了一番修正和扩展之后,发布了IEEE 1364-2001标准,即Verilog-2001。2005年,Verilog再次做出了细微的修正,发布了IEEE1364-2005标准,即Verilog-2005。

9.jpg

图1.8 Verilog代码

VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,也是诞生于上世纪80年代初期,但它与Verilog的民间背景不同,VHDL则是美国军方研发,且早在1987年就被IEEE和美国国防部确认为标准硬件描述语言,并公布了VHDL的标准版本IEEE-1076-1987(简称87版)。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本(简称93版)。

10.jpg

图1.9 VHDL代码

大多数工科生在大一或大二基本都已经接触过C语言了,多少已经有了一些先入为主的观念,所以学习起Verilog语言来会更容易一些。换句话说,Verilog相对VHDL有着快速上手、易于使用的特点,所以博得了更多工程师的青睐。而VHDL虽然有着天生的不惹人爱的特点,但是话说“存在即是合理”,VHDL最大的特点是语法“严谨”,只要你上手了,基本它能“严谨”到你不容易在语言本身上随便犯错,这就是VHDL的厉害之处。所以,还是有不少公司或组织会毅然决然的选择VHDL。

无论如何,语言只是FPGA开发的一个手段或方式,它本身并不存在好坏优劣之分,就看设计者怎么使用。而对于一个合格的FPGA工程师而言,无论是Verilog还是VHDL,一定要精通其中的一门语言,能够“信手捻来”的服务于开发设计工作;但也绝不能对另一门语言一窍不通,毕竟在实际工作中,很多情况下也会涉及到另一门语言的使用。因此,两门语言都不能落下,精通一门是必须的,也能够熟练的使用另一门语言那是最好不过。

 

Altera与Xilinx

相比于互联网的那些“暴发户”,半导体行业则更讲究历史底蕴,“今天丑小鸭,明天白天鹅”的故事要少得多,因此两家历史最为久远的FPGA供应商Altera和Xilinx凭着一直以来的专注,确保了它们在这个行业的统治地位。当然了,很大程度上也是由于FPGA技术相对于一般的半导体产品有着更高的门槛,从器件本身到一系列配套的工具链,再到终端客户的技术支持——这一箩筐的麻烦事,让那些行业大佬们想想就头疼,更别提插足捣腾一下了。

目前FPGA器件的主流厂商Altera公司(已被Intel公司收购)和Xilinx公司,它们的可编程逻辑器件在全球市场上占到了将近90%。从明面上的“竞争对手”到今天暗地里还客气的互称“友商”,不难看出两家公司走过历史长河,虽然有“明争暗斗”,但确也不经意间的彼此促进,互相激励。的确,翻看FPGA的发展史,往往充斥着这两家公司不断上演的“你方唱罢我登场”的情节,并且偶尔也会有第三者如Microsemi或Lattice小弟的“插足”戏份。不过这好在新千年过后,各方重新定位,Altera和Xilinx便牢牢把持住象征统治地位的中高端市场;Microsemi 高度聚焦于 FPGA 的安全应用领域,比如国防和航空;而Lattice也只能在低端市场找找“山中无老虎,猴子称大王”的感觉了。

11.jpg

图1.10 四大FPGA厂商

不论是Altera、Xilinx、Microsemi还是Lattice,甚至一些后来者,如笔者接触过的国内FPGA厂商京微雅格(目前处于苦苦挣扎之中),它们的FPGA器件内部结构虽然略有差异,但在开发流程、开发工具乃至原厂提供的各种支持上,都是“换汤不换药”的。所以,这对对用户而言,绝对是一个福音,只要好好的掌握一套方法论,任何厂商的器件都可以通吃。

 

 

更多资料共享

       链接:https://share.weiyun.com/53UnQas

 

 


楼主可见