FPGA与软件开发(c语言)前途比较
微处理器用C,FPGA用HDL,这个不用说了吧。
论算法实现速度,FPGA肯定比微处理器快多了,因为FPGA可以算准每一个时钟周期的任务,而微处理器执行C程序可能会浪费很多时钟周期。
论算法实现难度,如果放在几年前,复杂算法肯定不会用FPGA做,太麻烦了,C语言的顺序设计思想则很方便许多,但现在随着各个FPGA厂商推出DSP工具,用FPGA 实现复杂算法倒简单了很多,几乎一行代码不用写,直接用图形界面就设计完了,类似画流程图一样。
说道门槛,用微处理器实现算法,重点在算法,而不是微处理器硬件,因为厂商会把微处理器各个硬件模块做得更简单、更好用,内嵌更多简单的DSP器件,比如乘累加器、FFT模块等,程序优化的自动化程度越来越高。
FPGA则不同,你不仅要精通算法,你还要知道怎么样用数字电路去搭建你的算法,也就是说你要知道你写的代码生成的是怎么样的电路(行业里叫“综合”,就是把代码综合成具体的数字电路),不同的数字电路形式,完成算法的效率完全不一样,所以说FPGA是硬件,不是纯软件,如果你是数字系统设计高手,你在设计FPGA的算法前,都会直接画出一个算法的数字电路结构图,然后照图用HDL代码去设计。
当然,就像我前面说的,现在做算法很多都用图形界面了,不需要你写代码了,但你还是要懂FPGA内部硬件结构,这样才能更好地实现你的算法。
总的来说,FPGA入门容易,但提升就很难了,需要不断地积累经验,和嵌入式技术不同,FPGA在国内没有多少人给你指点 。
关于FPGA,它的什么过程算是硬件啊??
你还没有入门吧??推荐给你一本书《Altera FPGA/CPLD设计 基础篇》,网上有PDF格式的,看看就知道了。
“什么过程算是硬件啊??”这句话没看懂,它的所有过程都是硬件,包括VHDL和Verilog HDL程序设计也是硬件范畴,一般称之为编写“逻辑”。
DSP和FPGA不同,它里面的电路是定死的,不可改变。
举个例子假如说一款DSP集成AD功能,你绝对不可能通过改变程序把DSP的AD功能功能删除掉。
但FPGA不同,你可以用逻辑语言自己在其内部设计一个“纯硬的单片机或DSP”,别且你还可以把他们删除掉。
总的来说DSP和FPGA都是有门电路和一些附属电路组成的,这是他们的共同点,不同的是DSP里面的电路和一些附属电路是不能够重新组合的,软件程序只能在其提供的硬件功能的基础上进行软件应用编程,超出范围的则不能实现,而FPGA里面的电路和一些附属电路是可以通过VHDL和Verilog HDL这些硬件语言对其进行重新组合的,这就是硬件语言的强大,而DSP程序设计也是偏硬的软件设计,因为它与VC++、C#和JAVA不同,它必须依赖硬件才能运行,现在也应该属于硬件审计范畴,VC++、C#和JAVA则完全不依赖于硬件。
硬件的定义很简单,看得见摸得着的都是硬件范畴,但现在的硬件范畴已经扩大了,比如包括VHDL和Verilog HDL这些硬件语言、底层驱动的编写等等,并且逐渐和软件的界限变得模糊。
进行FPGA开发需要那些软、硬件工具?
PLD/FPGA开发软件和PLD/FPGA本身。
PLD/FPGA开发软件已经发展的相当完善,用户甚至可以不用详细了解PLD的内部结构,也可以用自己熟悉的方法:如原理图输入或HDL语言来完成相当优秀的PLD设计。
PLD/FPGA的开发软件包括Altera公司的 QuartusII 、Xilinx 公司的ISE WebPack、Lattice 公司的isplever Base。
对于PLD产品,一般分为:基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的中小规模PLD,以及基于查找表(Look-Up table)技术,SRAM工艺的大规模PLD/FPGA。
EEPROM工艺的PLD密度小,多用于5,000门以下的小规模设计,适合做复杂的组合逻辑,如译码。
SRAM工艺的PLD(FPGA),密度高,触发器多,多用于10,000门以上的大规模设计,适合做复杂的时序逻辑,如数字信号处理和各种算法。
fpga技术的发展前景如何?
FPGA技术高频疲劳试验机控制器 FPGA简介 现场可编程门阵列FPGA(FieldProgrammable Gate Array)是美国Xilinx公司于1984年首先开发的一种通用型用户可编程器件。
FPGA既具有门阵列器件的高集成度和通用性,又有可编程逻辑器件用户可编程的灵活性。
FPGA由可编程逻辑单元阵列、布线资源和可编程的I/O单元阵列构成,一个FPGA包含丰富的逻辑门、寄存器和I/O资源。
一片FPGA芯片就可以实现数百片甚至更多个标准数字集成电路所实现的系统。
FPGA的结构灵活,其逻辑单元、可编程内部连线和I/O单元都可以由用户编程,可以实现任何逻辑功能,满足各种设计需求。
其速度快,功耗低,通用性强,特别适用于复杂系统的设计。
使用FPGA还可以实现动态配置、在线系统重构(可以在系统运行的不同时刻,按需要改变电路的功能,使系统具备多种空间相关或时间相关的任务)及硬件软化、软件硬化等功能。
鉴于高频疲劳试验机控制器控制规模比较大,功能复杂,故我们在研制过程中,在传统试验机控制器的基础上,通过FPGA技术及微机技术两者的结合,来全面提升控制器系统的性能,使整机的工作效率、控制精度和电气系统可靠性得到了提高,且操作方便而又不乏技术的先进性。
2 控制器结构及内容 本控制系统的总体结构,下位机是整个高频疲劳试验机控制器的核心。
用于实现产生控制试验机的控制信号和数据,反馈信号的处理,以及和上位机进行数据通信。
其控制功能强弱也直接影响着整个控制器性能的好坏。
图中波形发生器是用于激励和保持电磁激振器的振动。
在此,波形发生器应输出正弦波。
3 系统采取的技术路线 系统在实现技术参数、功能要求的基础上,结合目前微机及FPGA等微电子技术,采取了以下主要技术路线: (1)下位机是系统控制的核心。
由于本系统控制规模相对比较复杂,控制对象具一定特殊性(如高频率,高负荷等),且牵涉到控制电机,故不采用传统的8位机,而是考虑采用功能相对更强大,速度更快的16位机—87C196系列。
(2)激振器要求输入波形为正弦波,试验的频率范围为80~250Hz。
另外,系统还应该能够进行扫频试验。
在扫频试验中,系统以1Hz为步长进行扫频(粗调),再在粗调的基础上进行微调(以0.1Hz为步长),以确定系统的共振点。
可以看出,能产生精度为0.1Hz波形的电路模块是整个系统设计中很关键的一部分,也是设计难点之一。
这部分如通过单片机或其它专用芯片则不能或很难实现。
系统采用FPGA作波形发生器,见图1中虚线框所示部分。
这样做的优点是:高速(一般芯片频率至少几十兆,甚至上百兆)且能满足上述精度要求;采用数字电路实现,抗干扰性好;能把其它逻辑电路也集成至该芯片中,省掉了许多分立元件,同时也减少了体积;能够按需改变波形。
(3)直流调速通过变压实现,而变压则通过采用晶闸管的可控整流器来完成。
通过单片机输出可变电压给移相触发器,触发器输出可控导通角给可控整流器,实现电机速度的调整。
有利于提高系统的可靠性。
(4)系统部分重要信号用数字滤波器滤波,该数字滤波器用FPGA实现。
与软件滤波相比,此方法有利于改善信号的滤波效果,且滤波速度得到很大提高。
4 部分模块设计 FPGA部分可划分成两个模块,其中正弦波发生器模块又可细分成几个小模块,如图2所示。
4.1 锁存器设计 锁存器用来将单片机送来的频率数据锁存稳定在FPGA中,可以用片内的锁存器资源(或用触发器)来构成。
4.2 运算器设计 运算器是用来将频率数据转换成正弦波点与点之间的定时数据。
该运算器实际上最终可转换成一除法器。
该除法器描述如下: —VECTOR(WIDTH— R-1 DOWNTO 0)); END COMPONENT; 上述描述实际上是调用了Altera公司的参数化模块库(LPM)中的一个元件。
元件描述后,只要在程序中用Generic map和port map语句映射该元件即可。
所要注意的是,上述口信号remainder是numerator和denominator模运算的结果,所以应将remainder与denominator/2相比较,实际结果应在比较的基础上决定加1还是不加1。
4.3 定时器设计 定时器根据运算器传来的定时数据定时。
它可以通过对基准时钟计数来实现,当定时时间一到,就触发波形的输出。
设计中采用了两个计数模块来同时计数,一个模块计数时钟的上边沿,而另一模块则计数时钟的下边沿。
这样相当于使系统时钟频率提高了一倍,充分利用了系统资源。
4.4 波形输出 波形输出是当定时器满足定时要求触发后就输出此时的正弦值,多个点的触发输出就形成了一个正弦波。
为节省芯片资源,这部分求某时正弦值的功能不采用构造运算器来算出正弦值,而是利用查表结构。
象Xilinx公司FPGA芯片则可以利用CLB块来配置RAM或直接利用Logiblox来生成。
还有象Altera公司的Flex10k系列就用查找表结构(LUT)来构建片内ROM或RAM。
在工程文件中创建RAM或ROM块以后,可以通过将各时刻的正弦值(以ASCII字符表示)写进MIF文件(初始化文件)中,从而存储在RAM或ROM块中。
在定时器触发后生成该时的地址,通过查询该RAM或ROM块就可输出该时得正弦值。
5 芯片的具体实现 本...
FPGA和CPLD的区别
FPGA与CPLD的概念及其区别 一、FPGA与CPLD的基本概念 1.CPLD CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。
由于 CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
到90年代,CPLD发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线可编程等高级特性。
较常用的有Xilinx公司的EPLD和Altera公司的CPLD。
2. FPGA FPGA通常包含三类可编程资源:可编程逻辑功能块、可编程I/O块和可编程互连。
可编程逻辑功能块是实现用户功能的基本单元,它们通常排列成一个阵列,散布于整个芯片;可编程I/O块完成芯片上逻辑与外部封装脚的接口,常围绕着阵列排列于芯片四周;可编程内部互连包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或I/O块连接起来,FPGA在可编程逻辑块的规模,内部互连线的结构和采用的可编程元件上存在较大的差异。
较常用的有Altera、Xinlinx和Actel公司的FPGA。
FPGA一 般用于逻辑仿真。
电路设计工程师设计一个电路首先要确定线路,然后进行软件模拟及优化,以确认所设计电路的功能及性能。
然而随着电路规模的不断增大,工作 频率的不断提高,将会给电路引入许多分布参数的影响,而这些影响用软件模拟的方法较难反映出来,所以有必要做硬件仿真。
FPGA就可以实现硬件仿真以做成模型机。
将软件模拟后的线路经一定处理后下载到FPGA,就可容易地得到一个模型机,从该模型机,设计者就很直观地测试其逻辑功能及性能指标。
二、FPGA与CPLD区别 尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点: ①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。
换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FPGA比CPLD具有更大的灵活性。
CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
⑤CPLD比FPGA使用起来更方便。
CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。
而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。
这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。
CPLD又可分为在编 程器上编程和在系统编程两类。
FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。
其 优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
随著复杂可编程逻辑器件(CPLD)密度的提高,数字器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市常许多设计人员已经感受到 CPLD容易使用。
时序可预测和速度高等优点,然而,在过去由于受到CPLD密度的限制,他们只好转向FPGA和ASIC。
现在,设计人员可以体会到密度 高达数十万门的CPLD所带来的好处。
FPGA从事的工作是什么啊?
FPGA介绍:FPGA(Field-Programmable Gate Array)是现场可编程门阵列的简称,简单来说是一种逻辑数字电路设计的方法。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。
并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。
FPGA从事的工作主要分为硬件部分和软件部分:硬件工程师主要根据FPGA的数据手册分析其内部构架,工作环境及相关驱动条件来构造硬件平台,需具备良好的英语水平,深厚的模电数电功底,电路与系统、信号完整性及EMC相关知识,和精通一款制图软件;FPGA软件工程师主要负责一些相关的算法,并以软件代码加以实现,你做什么行业的产品就要掌握什么行业的一系列专业课程,和一种编程语言(V/VHDL)-硬件描述语言。
EMC解释::(Electro Magnetic Compatibility)-电磁兼容性,是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的能力。
为什么在FPGA上使用OpenCL
对异构计算的需求导致出现了新程序语言,推动新硬件的开发。
一个例子就是苹果公司首创的OpenCL。
OpenCL是一种编程框架,可在异构平台(包括CPU、GPU、DSP、FPGA和其他类型的处理器)上执行。
OpenCL包括一种开发核心程序(在硬件器件上执行的功能)以及定义和控制各种平台的应用程序接口(API)的语言。
OpenCL支持基于任务的并行计算以及基于数据的并行计算。
在过去十年左右,处理器硬件频率遇到了所谓的功率墙,使得处理器无法进一步提高频率。
近几年中,您最后一次听说英特尔等CPU制造商以时钟速度宣传处理器性能是什么时候?相反,CPU制造商一直都在忙着往CPU中添加更多的处理内核,增强其指令集,保证系统可以同时执行多条指令,提高程序执行速度,而无需提高时钟频率。
软件公司也一直忙于开发一种通过计算机代码组(即“线程”)以真正的并行方式执行程序的软件。
在并行计算中,线程是在单独的处理器内核,而不是以前的伪并行处理器(线程不是在单独的处理器内核上执行,而是被操作系统进行了时间分割,表面上看是并行运行的)上执行的。
FPGA在本质上是并行的,因此,与OpenCL并行计算能力完全吻合。
FPGA提供了一种流水线并行方法,可通过在任务中应用推拉配置,利用先前任务中的不同数据(无论是否存在主机交互)完成任务。
这是典型数据级并行或任务并行的又一选择。
OpenCL支持您在熟悉的C程序语言环境中,利用OpenCL提供的多种功能来编写代码。
您无需学习FPGA设计人员的底层HDL编码工作,即可将这些内核程序发送至FPGA。
通常,使用OpenCL编写FPGA代码,可以为软件开发人员和系统设计人员带来一些优势。
? 简单方便的进行开发:大多数软件开发人员都对C编程语言十分熟悉,而对低层HDL语言并不十分了解。
OpenCL使您能够在更高层面上编程,让更多的软件开发人员都能采用您的系统。
? 代码分析:您可以使用OpenCL分析代码,确定性能关键的部分,通过FPGA中的内核进行硬件加速。
? 性能:每瓦性能指标是系统设计的最终目标。
使用FPGA,您可以在高能效解决方案中均衡的实现高性能。
? 效率:FPGA是一种精细粒度并行体系结构,使用OpenCL,只生成所需要的逻辑,功耗是其他硬件方案的五分之一。
? 异构系统:使用OpenCL,可以针对FPGA、CPU、GPU和DSP无缝开发内核程序,从而实现真正的异构系统设计。
? 代码重用:软件开发的“圣杯”是实现代码重用。
通常,代码重用是软件开发人员和系统设计人员难以企及的目标。
OpenCL内核支持代码移植,可用于不同项目、不同系列、不同代的FPGA,延长代码的生命周期。
目前,OpenCL是由技术联盟科纳斯组织负责开发和维护的。
大多数FPGA制造商都可以为FPGA的OpenCL开发提供软件开发套件(SDK)。
计算机多媒体好还是软件技术好?工资那,哪个好就业
您好,我是程序软件编程工程师,软件开发工程师,下面我给你说一下软件技术方面的,计算机多媒体这方面我不怎么清楚,我只针对软件,就拿我的软件技术来给你说一下。
1、问:软件工程师课程的特点体现于哪些方面? 国际化:教材应紧跟市场调研,应面向市场、面向IT企业;使教育水平与国际IT产业技术同步发展,使学员的知识更具实用性、更加符合社会需求。
(2)系统化:课程,因此应按照软件开发人员需要的知识和技能设置课程,循序渐进、系统性强、课程内容又涵盖了当前各大软件公司和IT企业正在使用的流行软件、实用方法学、工业标准和开发工具等(3)本地化:为了让国内学员更易理解和掌握,应将教材进行汉化,使之更符合中国的国情和特点。
2、我是女孩,学软件工程师合适吗?一般人认为IT行业是男性的天地,这是对女性能力的亵渎。
不管是在学校还是在社会上,很多女性表现出来的能力都要超过男性,如在学校,很多学生会主席,很多奖学金获得者都是女学生,而在社会上,在各行各业也涌现出了很多女强人。
对软件开发工作而言,也是如此,而且女性更为细致,在代码编程方面有一种大部分男性不可比拟的优势。
3、学完什么样的课程就能够就业?不同的培训机构有不同的课程设置,如北大青鸟课程,学完第一期后可以胜任以下工作:Java初级程序员,简单的管理信息系统开发和维护人员,网页制作和客户端脚本程序编写人员,初级数据库管理和维护人员。
第一期学完后,可以做一些简单的C/S结构的阶段项目,实用数据库和编程语言做一些简单的管理系统。
比如小型图书管理系统,超市收银系统等。
如果学习完所有课程,就能够胜任任何公司的软件开发工作。
发展前景当今社会不论什么职业的都需要一个不断学习的环节,软件工程师也一样。
虽然软件工程师的工作不同于程序员但是一个软件工程师其前身必定是一个优秀的程序员,软件的开发工具、开发技术在不断地发展。
在校学生所能学到的东西很难跟得上发展的需要但是也不能说那些东西完全没有用,只有在完全理解了相应的基本技能之后你才能很轻松地掌握新的技能,软件技术都是一个循序渐进的过程。
所以学好学校所能提供的专业课程是相当重要的。
就业职位主要有数据库开发工程师、网站开发工程师、电子商务开发工程师、VB程序员、VB高级程序员、C++程序员;网页开发人员;非IT专业信息部门的管理信息系统设计、开发、维护岗位,JAVA程序员,易程序员;测试工程师;文档编写工程师 JAVA工程师;.NET工程师;初级分析、设计人员;单片机软件工程师、嵌入式软件工程师、ARM软件工程师、FPGA软件工程师、易软件工程师等。
软件工程师城市之间差异比较大,一级城市(如深圳、上海等)一般的程序员在开始试用时会有2500到4000那样子,转正以后至少也有5000元以上,做到项目开发经理了年薪至少在10万以上,做到高级工程师了年薪更高,当然在中小城市的话也没有工程师合适的工作,因为那边没有这些高薪技术类的公司,有的话也是做些简单的工作,不用开发的,所以工资就自然低了很多了,但工作量大,繁琐枯燥。
那么如果是软件开发工程师,高级的程序开发人员具有丰富的技术经验,这个月的工资远远超过了程序软件编程的工程师,那么软件开发工程师是属于高级的程序开发人员月工资达到10万一个月,如果软件开发工程师即担任软件工程师的话,月工资就达15一个月。
cpld与fpga工作原理有什么不同
1、FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
2、CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
3、FPGA和CPLD的区别:①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。
换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FPGA比CPLD具有更大的灵活性。
CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
⑤CPLD比FPGA使用起来更方便。
CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。
而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。
这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。
CPLD又可分为在编 程器上编程和在系统编程两类。
FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。
其 优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
随著复杂可编程逻辑器件(CPLD)密度的提高,数字器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市常许多设计人员已经感受到 CPLD容易使用。
时序可预测和速度高等优点,然而,在过去由于受到CPLD密度的限制,他们只好转向FPGA和ASIC。
现在,设计人员可以体会到密度 高达数十万门的CPLD所带来的好处。
关于FPGA的有关介绍?
FPGA 是英文Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC) 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。
在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐。
1984 年,在硅谷工作的Bernie Vonderschmitt、Ross Freeman 和 Jim Barnett 共同构建了一个设想,他们梦想创立一家不同于一般的公司。
他们希望创建一家在整个新领域内开发和推出先进技术的公司。
并且,他们还希望以这种方式领导它:在这里工作的人们热爱他们的工作、享受工作的乐趣,并对他们所从事的工作着迷。
创造性地推出了“无晶圆半导体”公司的概念。
2009 年2 月18 日,Ross Freeman 因他的这项发明——现场可编程门阵列 (FPGA) 而荣登2009 美国发明家名人堂。
Freeman 先生的发明是一块全部由“开放式门”组成的计算机芯片,其专利号为 4,870,302。
采用这种芯片,工程师可以根据需要进行编程,添加新的功能,满足不断发展的标准或规范要求,并可在设计的最后阶段进行修改。
对PROM、EPROM、E2PROM 熟悉的人都知道这些可编程器件的可编程原理是通过加高压或紫外线导致三极管或MOS 管内部的载流子密度发生变化,实现所谓的可编程,但是这些器件或只能实现单次可编程或编程状态难以稳定。
FPGA 则不同,它采用了逻辑单元阵列LCA(Logic Cell Array) 这样一个新概念,内部包括可 配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block) 和内部连线(Interconnect)三个部分。
FPGA 的可编程实际上是改变了CLB 和IOB 的触发器状态,这样,可以实现多次重复的编程由于FPGA 需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。
查找表可以很好地满足这一要求,目前主流FPGA 都采用了基于SRAM 工艺的查找表结构,也有一些军品和宇航级FPGA 采用Flash 或者熔丝与反熔丝工艺的查找表结构。
通过烧写文件改变查找表内容的方法来实现对FPGA 的重复配置。
根据数字电路的基本知识可以知道,对于一个n 输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n 种结果。
所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。
FPGA 的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
查找表(Look-Up-Table) 简称为LUT,LUT 本质上就是一个RAM。
目前FPGA 中多使用4 输入的LUT,所以每一个LUT 可以看成一个有4 位地址线的 的RAM。
当用户通过原理图或HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表( 即结果) 事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
从表中可以看到,LUT 具有和逻辑电路相同的功能。
实际上,LUT 具有更快的执行速度和更大的规模。
由于基于LUT 的FPGA 具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。
其组成部分主要有可编 程输入/ 输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有赛灵思、Altera、Lattice、Actel、Atmel 和QuickLogic 等公司,其中最大的是美国赛灵 思公司,占有可编程市场50% 以上的市场份额,比其他所有竞争对手市场份额的总和还多。
FPGA 是由存放在片内RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的RAM 进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA 芯片将EPROM 中数据读入片内编程RAM 中,配置完成后,FPGA 进入工作状态。
掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。
FPGA 的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM 编程器即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA 的使用非常灵活。
如前所述,FPGA 是由存放在片内的RAM 来设置其工作状态的,因此工作时需要对片内RAM 进行编程。
用户可根据不同的配置模式,采用不同的编程方式。
Xilinx FPGA 的常用配置模式有5 类:主串模式、从串模式、elect MAP 模式、Desktop 配置和直接SPI 配置。
目前,FPGA 市场占有率最高的两大公司赛灵思公司和Altera 生产的FPGA 都是基于SRAM ...