1 什么是FPGA

FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列。FPGA是在PAL、GAL、CPLD等可编程器件的基础上发展起来的新型高性能产物,是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。图1.1是Altera Cyclone V芯片。

图1.1 Altera Cyclone芯片

说到这里,不得不提ASIC,即专用集成电路(Application specific integrated circuit),ASIC无处不在,实际上比FPGA普及的多。但ASIC作为专用集成电路,功能相对来说较固定,不能让它进行任何功能和性能的改善,而这时FPGA的优势就体现出来,作为可操纵的“白纸”,我们可以灵活的在FPGA上面实现可编程,实现功能定制与修改,降低产品的失败风险和维护成本。目前FPGA也正在向高集成、高性能、低功耗、高灵活性的方向发展,已在数据传输,视频图像处理等领域得到了广泛的应用。

2 FPGA与CPLD

作为“老大哥”的CPLD,它没有FPGA性能的惊艳,但也常用到一些场合,FPGA与CPLD的区别表1.1所示。

表1.1 FPGA与CPLD比较

由上面可以看出,CPLD大多都是基于PROM或Flash来实现可编程特性,对它们进行编程时就已经配置好数据流固化好了,重新上电还能够运行固有的配置数据。FPGA大多是基于SRAM来实现可编程,通过JTAG实现在线可编程,当断电时SRAM数据丢失,不能恢复,因此FPGA通常需要外挂一个用于保存当前配置数据流的PROM或Flash芯片,通常称为“配置芯片”,CPLD则不需要。

3 FPGA 、DSP、 ARM群芳争艳

话说这三者要是放在一块,可谓是三足鼎立。各自的特点在各自的领域大有身手。ARM有丰富的外设接口,精于控制,且基于ARM架构开发的芯片具有较低的功耗,使得续航时间大大延长(移动端);DSP有优化的超强运算能力,专于运算处理;而FPGA则极其灵活,加之具备硬件独有的并行结构,使其在图像处理,接口协议等方面应用广泛。

第一,在编程语言方面,FPGA利用VHDL或Verilog语言进行编程,相比C/C++语言编程来说,在代码灵活度和开发效率上还有欠缺。

第二,从资源配置来看,ARM、DSP等处理器集成了运算单元、存储单元及大量的总线接口,只需正确配置各个寄存器参数后即可使总线接口工作在相应的模式下。而FPGA内部有大量的逻辑资源,总线接口需要自拟,会占用大量的开发时间。

第三,从工作频率来看,ARM、DSP等处理器采用的是成熟的内核结构,具有较好的时序特性,其最高频率通常为600MHz ~1.25GHz。TI等芯片厂商采用多核的设计方式,设计了具有8核DSP、8核ARM的处理器,每个核心的最大工作频率可达到1.25GHz。FPGA中不同设计系统工作频率不一样,良好的时序约束可以提高设计的最高设计频率。

第四,从算法设计来看,ARM、DSP等处理器集成了加法器、乘法器等运算单元,尤其是在DSP中,可以在一个周期内进行8x8甚至16x16的乘法运算,同时支持浮点数运算。而FPGA不擅长浮点数运算,一些简单的加法可能也会对时序产生一定的影响,进而影响最高频率。

针对上述情况,拿Altera公司来说,针对第一点,推出了Qsys等片上软核,使工程师在FPGA中可以进行更为灵活的C语言编程。Qsys中集成了常用的IP,可以方便的定制,缓解开发周期;针对第二点,Altera提供了各行各业的IP,其中部分免费,部分需要购买。针对第三点,在高速数据处理过程中,FPGA以其独有的并行结构,相比于ARM、DSP串行结构,其优势更加明显。针对第四点,Altera FPGA中内嵌了多个DSP模块,每个DSP模块中包含加法器和乘法器结构,根据系列的不同,具有不用的位宽,结合流水线的形式完成运算操作。Altera又推出了嵌入了双核28nm的ARM Cortex-A9的FPGA,同时拥有足够的DSP块和足够的乘法器资源,实现FPGA+DSP+ARM架构。以此架构来实现高速运算,并集成在单片SoC FPGA中,这必定是一种趋势。图1.2展示了Cyclone V代集成ARM的SoC芯片。

图1.2 Altera SoC

4 FPGA 厂商之争

关于FPGA最近有一个比较轰动的新闻,Intel收购Altera。其实早在2013年,Intel和Altera就已经开展合作,Altera FPGA采用Intel 14nm技术,帮助客户设计业界最先进、性能最好的FPGA。Intel收购Altera之举,算是在移动互联网(长期ARM架构占据主导地位)以及云计算物联网方面占据了一片天地,最起码和对手站在了同一起跑线上。目前Intel在未来会在FPGA+x86异构设计芯片上持续投入,将FPGA和Xeon系列处理器整合在同一硅胶模块中,这无疑会大大提升处理器速度,但能不能被市场所接受就不得而知了。

占据前三的FPGA厂商,Altera,Xilinx以及lattice,当然还有一些厂商的加入,但这都不是主业务,Atmel、Cypress公司等,其中Altera和Xilinx所占的份额最多,两厂商Xilinx和Altera纷纷推出了嵌入双核28nm Cortex-A9的SoC FPGA。Xilinx的芯片的架构是先组合,后时序,而且基于细颗粒查找表结构、丰富的寄存器资源,以及分段式路由布线结构、电路上电加载。这种架构优点在于:(1)电路的规模得到空前提高;(2)适合做加减法运算;(3)无限制更新电路。而Altera芯片中拥有高速嵌入式RAM及嵌入式PLL,其架构在于:(1)采用多选一或一对多的MUX结构,实现三态门功能;(2)ESB的Memory结构,可以构成FIFO、DPRAM、大型查找表;(3)布线资源以长线资源为主,编译速度快。Altera还有一个重要合作商就是友晶科技有限公司,在其推动下,Altera大学计划做的有声有色,其基于Altera FPGA开发的开发板DE系列也是大家最常用的开发板。图1.3是友晶公司开发的一款DE1-SOC开发板。

图1.3 DE1-SOC开发板

国内的FPGA厂商—京微雅格科技有限公司,是中国唯一一家FPGA厂商。其以FPGA+8051架构的集成,是可配置应用技术的首创者和领导者。通过可配置IP的定制,协同8051内核开发,以硬件并行操作与软件线程处理的架构,是另一种SoC FPGA。图1.4是京微雅格开发板。

图1.4 京微雅格开发板

正是上述厂商的不同特点,不断地创新技术,不断地推动社会快速发展。

5 FPGA应用场合

FPGA因其固有的灵活性和并行性,应用领域也是越来越广泛。FPGA是万能,但要其为所欲为却是万万不能的。FPGA具体应用场合如下:

(1) 实时控制,高速扫描:大型LED屏幕和超高清、高清分辨率的LCD的场合,在电机设备的驱动方面也会涉及;

(2) 高速信号的采集与预处理:高速A/D前端采集或图像的预处理,利用FPGA并行特性,在视频领域也是具有独到的优势。

(3) 高速并行数据传输:FPGA可以轻松实现以太网协议,PCI-e接口和LVDS接口等信号传输;

(4) 不同电平之间的转接板:由于不同处理芯片的内核电压和存储器的工作电压越来越低,且不同,这会涉及较多的电平匹配和转换问题,可以利用FPGA作为上述电平的转换,节省电平转换芯片的成本。

(5) 片上系统:在复杂系统中,可以利用FPGA实现NIOS软核,协同硬件完成系统处理,大大减轻单板的布线压力。

对于上述讲到的高速接口协议部分,要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。

对于片上系统部分,就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到数字信号处理方面的知识,而如果需要设计专用的接口电路则需要用到高速接口协议的知识。

就目前SOPC方向发展其实远不如其他应用的几个领域,其主要原因是因为SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机/嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。

常是在一些特种行业才会在这方面有非常迫切的需求。即使目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的情况不会有太大改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。Cypress公司的Psoc这一想法和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样其实可以满足嵌入式的那些微小的硬件接口差异,比如某个运用需要4个USB,而通常的处理器不会提供那么多,就可以用这么一块FPGA来提供多的USB接口。而另一种运用需要6个UART,也可以用同样的方法完成。

《FPGA全程进阶---实战演练》第一章之FPGA介绍的更多相关文章

  1. 《FPGA全程进阶---实战演练》第三十二章 Signal Tap II 应用实例

    还有几天就要交文章终稿了,三年的研究生生活也快要结束了,时间飞快,岁月如梭,但学习技术的热情仍然不能松懈,不懂的东西太多,需要实时保持奋斗!!过些天会继续更新<FPGA全程进阶---实战演练&g ...

  2. 《FPGA全程进阶---实战演练》第一章之如何学习FPGA

    对于很多初学者,大部分都是急于求成,熟不知越是急于求成,最终越是学无所成,到头来两手空空,要学好FPGA,必须弄懂FPGA本质的一些内容. 1.FPGA内部结构及基本原理 FPGA是可以编程的,必须通 ...

  3. 《FPGA全程进阶----实战演练》第二章之系统搭建

    1 系统方案 对于设计一款硬件平台,首先要确定整体框架,确定各个模块所需要的芯片以及电压分配情况.图2.6是笔者曾经设计的硬件平台系统. 图2.6系统框图 对于选定一个系统方案之后,接下来做的要先去查 ...

  4. 《FPGA全程进阶---实战演练》第二章之硬件平台的搭建

    学习FPGA,多多少少应该要懂得硬件电路的设计,这样不单单增加了自己的技能,而且还能够对FPGA的硬件实现有更好的了解. 1 模块划分 对于一个基本的FPGA硬件平台,常用的几个电路部分:(1)电源电 ...

  5. 《FPGA全程进阶---实战演练》第四章之实验平台软硬件使用简介

    本章主要是讲解读者在进行FPGA逻辑设计之前的准备工作,需要下载Quartus II软件和 Modelsim 软件,一个是用来进行FPGA逻辑设计,一个是用来对逻辑进行理论分析与验证. 1.1 qua ...

  6. 《FPGA全程进阶---实战演练》第五章 基于74HC595的LED操作

    1基础理论部分 1.1分频 分频,是的,这个概念也很重要.分频是指将一单一频率信号的频率降低为原来的1/N,就叫N分频.实现分频的电路或装置称为“分频器”,如把33MHZ的信号2分频得到16.5MHZ ...

  7. 《FPGA全程进阶---实战演练》第十二章 二进制码与格雷码PK

    大家在写程序的时候,可能会听闻,什么独热码,什么格雷码,什么二进制码等等,本节意在解释这几种编码之间的区别和优势以及用verilog怎么去实现,下面先介绍这几种编码的区别. 1 基础理论部分 1.1 ...

  8. 《FPGA全程进阶---实战演练》第十一章 VGA五彩缤纷

    1基础理论部分 VGA(video graphics array)即视频图形阵列,是IBM在1987年随PS/2一起推出的使用模拟信号的一种视频传输标准.VGA相比与现在的视频传输接口来说已经过时,不 ...

  9. 《FPGA全程进阶---实战演练》第二章之焊接板子及调试注意事项

    1.若是读者第一次做板子,强烈建议画完PCB板后将PCB图打印出来,然后对照你买的芯片将芯片放置对 应的位置,然后查看所有的封装格式适不适合,否则等你做出板子来后再试,为时晚矣.笔者虽然知道要这么 做 ...

随机推荐

  1. 深入理解Linux内核-Ext2和Ext3文件系统

    Ext2的一般特征: 1.创建Ext2文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳块大小(从1024B-4096B).来减少文件碎片2.创建Ext2文件系统时,系统管理员可以根据在给定大 ...

  2. android 覆盖安装问题

    1.android中覆盖安装不会导致data/data/package下的数据被删除 2.数据库会有数据库的一套升级机制 3.sharepreference 不会被覆盖,如果在app中有使用Key记录 ...

  3. js包管理工具-- yarn

    yarn对比npm的优点 根据官方文档yarn具有6大优点 离线模式 yarn会有一个缓存目录,会缓存以前安装过的软件包,再次安装时就不必从网络下载了,大大加速安装速度. 这一点很重要,npm 饱受诟 ...

  4. Python Socket网络编程详解

    Socket 简介 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. s ...

  5. MATLAB学习之内存溢出的管理方法

    今天用Matlab跑程序,由于数据量太大,又出现 Out of memory. Type HELP MEMORY for your options.的问题.看到这篇文章非常实用,转过来方便查阅~ 用 ...

  6. 缩放图片,解决bitmap 内存溢出out of memory的问题

    很多人在android开发中都遇到了生成bitmap时候内存溢出,也就是out of memory(OOM)的问题,网上对这样的问题的的解决说法不一.笔者作为一个初级开发者,在这里向大家提供一种比较实 ...

  7. 【MyBean-开源框架】进行简单的逻辑插件(演示在控制台中应用)

    [说明] 很多时候大家认为客户端插件一般是窗体.其实不然,很多功能都可以看成是插件,比如一个单据的审批功能,一个单据上面,单价的获取功能,都可以看成是插件,然后后期通过配置,可以灵活进行切换.MyBe ...

  8. MSSQL 的Top 和 MAX 效率测试

    环境: MSSQL 2008, 都在没有使用缓存的情况下面执行 表中有8W 条记录 分类1有134条记录 分别测试了3个语句 -- A select 字段1 from 表1 WHERE Ftype=' ...

  9. 使用canvas制作简单表格

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. H3C交换机SNMP配置

    1.启动/关闭SNMP Agent服务 在系统视图模式下: 启用:snmp-agent 关闭:undo snmp-agent 注:缺省情况下snmp agent是关闭的 2. 使能或禁止SNMP相应版 ...