




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FIFO简介First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO是队列机制中最简单的,每个接口上只有一个FIFO队列,表面上看FIFO队列并没有提供什么QoS保证,甚至很多人认为FIFO严格意义上不算做一种队列技术,实则不然,FIFO是其它队列的基础,FIFO也会影响到衡量QoS的关键指标:报文的丢弃、延时、抖动。既然只有一个队列,自然不需要考虑如何对报文进行复杂的流量分类,也不用考虑下一个报文怎么拿、拿多少的问题,即FIFO无需流分类、调度机制,而且因为按顺序取报文,FIFO无需对报文重新排序。简化了这些实现其实也就提高了对报文时延的保证。FIFO关心的就是队列长度问题,队列长度会影响到时延、抖动、丢包率。因为队列长度是有限的,有可能被填满,这就涉及到该机制的丢弃原则,FIFO使用Tail Drop机制。如果定义了较长的队列长度,那么队列不容易填满,被丢弃的报文也就少了,但是队列长度太长了会出现时延的问题,一般情况下时延的增加会导致抖动也增加;如果定义了较短的队列,时延的问题可以得到解决,但是发生Tail Drop的报文就变多了。类似的问题其它排队方法也存在。Tail Drop机制简单的说就是如果该队列如果已经满了,那么后续进入的报文被丢弃,而没有什么机制来保证后续的报文可以挤掉已经在队列内的报文。FIFO队列原理简述FIFO队列不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。FIFO队列具有处理简单,开销小的优点。但FIFO不区分报文类型,采用尽力而为的转发模式,使对时间敏感的实时应用(如VoIP)的延迟得不到保证,关键业务的带宽也不能得到保证。使用FIFOFIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位 100KSPS,那么每秒的数据量为100K16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。FIFO的宽度:也就是英文资料里常看到的THEWIDTH,它指的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。FIFO的深度:THE DEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8位的数据,FIFO的深度可大可小,个人认为FIFO深度的计算并无一个固定的公式。在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中不可能由一些参数精确算出所需的FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据由那些具体的要求来确定。满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。空标志:FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。写时钟:写操作所遵循的时钟,在每个时钟沿来临时写数据。读指针:指向下一个读出地址。读完后自动加1。写指针:指向下一个要写入的地址的,写完自动加1。读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。4FIFO的分类根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。5FIFO设计的难点FIFO设计的难点在于怎样判断FIFO的空/满状态。为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。由于同步FIFO几乎很少用到,这里只描述异步FIFO的空/满标志产生问题。在用到触发器的设计中,不可避免的会遇到亚稳态的问题(关于亚稳态这里不作介绍,可查看相关资料)。在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率将到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换(二进制码在很多情况下是很多码元在同时变化)。这就会避免计数器与时钟同步的时候发生亚稳态现象。但是格雷码有个缺点就是只能定义2n的深度,而不能像二进制码那样随意的定义FIFO的深度,因为格雷码必须循环一个2n,否则就不能保证两个相邻码元之间相差一位的条件,因此也就不是真正的格雷码了。第二就是使用冗余的触发器,假设一个触发器发生亚稳态的概率为P,那么两个级联的触发器发生亚稳态的概率就为P的平方。但这会导致延时的增加。亚稳态的发生会使得FIFO出现错误,读/写时钟采样的地址指针会与真实的值之间不同,这就导致写入或读出的地址错误。由于考虑延时的作用,空/满标志的产生并不一定出现在FIFO真的空/满时才出现。可能FIFO还未空/满时就出现了空/满标志。这并没有什么不好,只要保证FIFO不出现overflow or underflow 就OK了。很多关于FIFO的文章其实讨论的都是空/满标志的不同算法问题。在Vijay A. Nebhrajani的异步FIFO结构一文中,作者提出了两个关于FIFO空/满标志的算法。第一个算法:构造一个指针宽度为N+1,深度为2N字节的FIFO(为方便比较,将格雷码指针转换为二进制指针)。当指针的二进制码中最高位不一致而其它N位都相等时,FIFO为满(在Clifford E. Cummings的文章中以格雷码表示是前两位均不相同,而后两位LSB相同为满,这与换成二进制表示的MSB不同其他相同为满是一样的)。当指针完全相等时,FIFO为空。这也许不容易看出,举个例子说明一下:一个深度为8字节的FIFO怎样工作(使用已转换为二进制的指针)。FIFO_WIDTH=8,FIFO_DEPTH= 2N = 8,N = 3,指针宽度为N+1=4。起初rd_ptr_bin和wr_ptr_bin均为“0000”。此时FIFO中写入8个字节的数据。wr_ptr_bin =“1000”,rd_ptr_bin=“0000”。当然,这就是满条件。现在,假设执行了8次的读操作,使得rd_ptr_bin =“1000”,这就是空条件。另外的8次写操作将使wr_ptr_bin 等于“0000”,但rd_ptr_bin 仍然等于“1000”,因此FIFO为满条件。显然起始指针无需为“0000”。假设它为“0100”,并且FIFO为空,那么8个字节会使wr_ptr_bin =“1100”,, rd_ptr_bin 仍然为“0100”。这又说明FIFO为满。在Vijay A. Nebhrajani的这篇异步FIFO结构文章中说明了怎样运用格雷码来设置空满的条件,但没有说清为什么深度为8的FIFO其读写指针要用3+1位的格雷码来实现,而3+1位的格雷码可以表示16位的深度,而真实的FIFO只有8位,这是怎么回事?而这个问题在Clifford E. Cummings的文章中得以解释。三位格雷码可表示8位的深度,若在加一位最为MSB,则这一位加其他三位组成的格雷码并不代表新的地址,也就是说格雷码的0100表示表示7,而1100仍然表示7,只不过格雷码在经过一个以0位MSB的循环后进入一个以1为MSB的循环,然后又进入一个以0位MSB的循环,其他的三位码仍然是格雷码,但这就带来一个问题,在0100的循环完成后,进入1000,他们之间有两位发生了变换,而不是1位,所以增加一位MSB的做法使得该码在两处:01001000,11000000有两位码元发生变化,故该码以不是真正的格雷码。增加的MSB是为了实现空满标志的计算。Vijay A. Nebhrajani的文章用格雷码转二进制,再转格雷码的情况下提出空满条件,仅过两次转换,而Clifford E. Cummings的文章中直接在格雷码条件下得出空满条件。其实二者是一样的,只是实现方式不同罢了。第二种算法:Clifford E. Cummings的文章中提到的STYLE#2。它将FIFO地址分成了4部分,每部分分别用高两位的MSB 00 、01、 11、 10决定FIFO是否为going full 或going empty (即将满或空)。如果写指针的高两位MSB小于读指针的高两位MSB则FIFO为“几乎满”,若写指针的高两位MSB大于读指针的高两位MSB则FIFO为“几乎空”。在Vijay A. Nebhrajani的异步FIFO结构第三部分的文章中也提到了一种方法,那就是方向标志与门限。设定了FIFO容量的75%作为上限,设定FIFO容量的25%为下限。当方向标志超过门限便输出满/空标志,这与Clifford E. Cummings的文章中提到的STYLE #2可谓是异曲同工。他们都属于保守的空满判断。其实这时输出空满标志FIFO并不一定真的空/满。说到此,我们已经清楚地看到,FIFO设计最关键的就是产生空/满标志的算法的不同产生了不同的FIFO。但无论是精确的空满还是保守的空满都是为了保证FIFO工作的可靠。随机存取存储器RAM随机存取存储器(英文:random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。特点随机存取所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。1易失性当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入静态随机存取存储器一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会。对静电敏感正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。访问速度现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟笔记本电脑内存和其他涉及机械运作的存储设备相比,也显得微不足道。需要刷新(再生)现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。2类别根据存储单元的工作原理不同, RAM分为静态RAM和动态RAM。静态随机存储器(SRAM)静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。动态随机存储器(DRAM)动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,已成为大容量RAM的主流产品。13区别只读存储器ROM-read only memory只读存储器简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存动态随机存取存储器储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。ROM又分一次性固化、光擦除和电擦除重写三种类型。举个例子来说也就是,如果突然停电或者没有保存就关闭了文件,那么ROM可以随机保存之前没有储存的文件但是RAM会使之前没有保存的文件消失。内存在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。从一有计算机开始,就有内存。内存发展到今天也经历了很多次的技术改进,从最早的DRAM一直到FPMDRAM、EDODRAM、SDRAM等,内存的速度一直在提高且容量也在不断的增加。今天,服务器主要使用的是什么样的内存呢?IA架构的服务器普遍使用的是REGISTERED快速周期随机存取存储器ECCSDRAM。既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。4存储单元静态存储单元(SRAM)存储原理:由触发器存储数据单元结构:六管NMOS或OS构成优点:速度快、使用简单、不需刷新、静态功耗极低;常用作Cache缺点:元件数多、集成度低、运行功耗大常用的SRAM集成芯片:6116(2K8位),6264(8K8位),62256(32K8位),2114(1K4位)动态存储单元(DRAM)存贮原理:利用MOS管栅极电容可以存储电荷的原理,需刷新(早期:三管基本单元;之后:单管基本单元)刷新(再生):为及时补充漏掉的电荷以避免存储的信息丢失,必须定时给栅极电容补充电荷的操作刷新时间:定期进行刷新操作的时间。该时间必须小于栅极电容自然保持信息的时间(小于2ms)。优点: 集成度远高于SRAM、功耗低,价格也低缺点:因需刷新而使外围电路复杂;刷新也使存取速度较SRAM慢,所以在计算机中,DRAM常用于作主存储器。尽管如此,由于DRAM存储单元的结构简单,所用元件少,集成度高,功耗低,所以已成为大容量RAM的主流产品。5其他手机中我们经常看到ROM4G ram512M ,我们一定不要被它误导,即使ROM再大,但是RAM小了的话,还是不能玩大型游戏。所以购买手机的时候一定要注意这个信息。RAM:一种音频格式,可以用千千静听播放。RA、RAM和RM都是Real公司成熟的网络音频格式,采用了“音频流”技术,所以非常适合网络广播。在制作时可以加入版权、演唱者、制作者、Mail和歌曲名称等信息。RA可以称为互联网上多媒体传播的霸主,适合于网络上进行实时播放,是目前在线收听网络音乐最好的一种格式。RAM:角色/职责分配矩阵,就是将WBS(工作分解结构)中的每一项工作指派到OBS(组织分解结构)中的执行人员所形成的一个矩阵,是人力资源管理用词。RAM: Radar absorbing Material 雷达吸波材料,是指能够通过自身的吸收作用减小目标雷达散射截面(RCS)的材料。RAM: Relative Atomic Mass相对原子质量(原子量)。FPGA简介简介背景以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成电路)的速度要慢,无法完成复杂的设计,但是功耗较低。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。FPGA开发FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。目前国内有专业的FPGA外协开发厂家,如北京中科鼎桥ZKDQ-TECH等。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。产品比较早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器组成。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。CPLD和FPGA还有一个区别:CPLD下电之后,原有烧入的逻辑结构不会消失;而FPGA下电之后,再次上电时,需要重新加载FLASH里面的逻辑代码,需要一定的加载时间。发展历程每一个后看来很成功的新事物,从诞生到发展壮大都不可避免地经历过艰难的历程,并可能成为被研究的案例,FPGA也不例外。1985年,当全球首款FPGA产品XC2064诞生时,注定要使用大量芯片的PC机刚刚走出硅谷的实验室进入商业市场,因特网只是科学家和政府机构通信的神秘链路,无线电话笨重得像砖头,日后大红大紫的Bill Gates正在为生计而奋斗,创新的可编程产品似乎并没有什么用武之地。事实也的确如此。最初,FPGA只是用于胶合逻辑(Glue Logic),从胶合逻辑到算法逻辑再到数字信号处理、高速串行收发器和嵌入式处理器,FPGA真正地从配角变成了主角。在以闪电般速度发展的半导体产业里,22年足够改变一切。“在未来十年内每一个电子设备都将有一个可编程逻辑芯片”的理想正成为现实。1985年,Xilinx公司推出的全球第一款FPGA产品XC2064怎么看都像是一只“丑小鸭”采用2m工艺,包含64个逻辑模块和85000个晶体管,门数量不超过1000个。22年后的2007年,FPGA业界双雄Xilinx和Altera公司纷纷推出了采用最新65nm工艺的FPGA产品,其门数量已经达到千万级,晶体管个数更是超过10亿个。一路走来,FPGA在不断地紧跟并推动着半导体工艺的进步2001年采用150nm工艺、2002年采用130nm工艺,2003年采用90nm工艺,2006年采用65nm工艺。在上世纪80年代中期,可编程器件从任何意义上来讲都不是当时的主流,虽然其并不是一个新的概念。可编程逻辑阵列(PLA)在1970年左右就出现了,但是一直被认为速度慢,难以使用。1980年之后,可配置可编程逻辑阵列(PAL)开始出现,可以使用原始的软件工具提供有限的触发器和查找表实现能力。PAL被视为小规模/中等规模集成胶合逻辑的替代选择被逐步接受,但是当时可编程能力对于大多数人来说仍然是陌生和具有风险的。20世纪80年代在“megaPAL”方面的尝试使这一情况更加严重,因为“megaPAL”在功耗和工艺扩展方面有严重的缺陷,限制了它的广泛应用。然而,Xilinx公司创始人之一FPGA的发明者Ross Freeman认为,对于许多应用来说,如果实施得当的话,灵活性和可定制能力都是具有吸引力的特性。也许最初只能用于原型设计,但是未来可能代替更广泛意义上的定制芯片。事实上,正如Xilinx公司亚太区营销董事郑馨南所言,随着技术的不断发展,FPGA由配角到主角,很多系统设计都是以FPGA为中心来设计的。FPGA走过了从初期开发应用到限量生产应用再到大批量生产应用的发展历程。从技术上来说,最初只是逻辑器件,现在强调平台概念,加入数字信号处理、嵌入式处理、高速串行和其他高端技术,从而被应用到更多的领域。“90年代以来的20年间,PLD产品的终极目标一直瞄准速度、成本和密度三个指标,即构建容量更大、速度更快和价格更低的FPGA,让客户能直接享用。”Actel司总裁兼首席执行官JohnEast如此总结可编程逻辑产业的发展脉络。当1991年Xilinx公司推出其第三代FPGA产品XC4000系列时,人们开始认真考虑可编程技术了。XC4003包含44万个晶体管,采用0.7m工艺,FPGA开始被制造商认为是可以用于制造工艺开发测试过程的良好工具。事实证明,FPGA可为制造工业提供优异的测试能力,FPGA开始用来代替原先存储器所扮演的用来验证每一代新工艺的角色。也许从那时起,向最新制程半导体工艺的转变就已经不可阻挡了。最新工艺的采用为FPGA产业的发展提供了机遇。Actel公司相信,Flash将继续成为FPGA产业中重要的一个增长领域。Flash技术有其独特之处,能将非易失性和可重编程性集于单芯片解决方案中,因此能提供高成本效益,而且处于有利的位置以抢占庞大的市场份额。Actel以Flash技术为基础的低功耗IGLOO系列、低成本的ProASIC3系列和混合信号Fusion FPGA将因具备Flash的固有优势而继续引起全球广泛的兴趣和注意。Altera公司估计可编程逻辑器件市场在2006年的规模大概为37亿美元,Xilinx公司的估计更为乐观一些,为50亿美元。虽然两家公司合计占据该市场90%的市场份额,但是作为业界老大的Xilinx公司在2006年的营收不过18.4亿美元,Altera公司则为12.9亿美元。PLD市场在2000年达到41亿美元,其后两年出现了下滑,2002年大约为23亿美元。虽然从2002年到2006年,PLD市场每年都在增长,复合平均增长率接近13%,但是PLD终究是一个规模较小的市场。而Xilinx公司也敏锐地意识到,FPGA产业在经历了过去几年的快速成长后将放慢前进的脚步,那么,未来FPGA产业的出路在哪里?Altera公司总裁兼首席执行官John Daane认为,FPGA及PLD产业发展的最大机遇是替代ASIC和专用标准产品(ASSP),主要由ASIC和ASSP构成的数字逻辑市场规模大约为350亿美元。由于用户可以迅速对PLD进行编程,按照需求实现特殊功能,与ASIC和ASSP相比,PLD在灵活性、开发成本以及产品及时面市方面更具优势。然而,PLD通常比这些替代方案有更高的成本结构。因此,PLD更适合对产品及时面市有较大需求的应用,以及产量较低的最终应用。PLD技术和半导体制造技术的进步,从总体上缩小了PLD和固定芯片方案的相对成本差,在以前由ASIC和ASSP占据的市场上,Altera公司已经成功地提高了PLD的销售份额,并且今后将继续这一趋势。“FPGA和PLD供应商的关键目标不是简单地增加更多的原型客户,而是向大批量应用最终市场和客户渗透。”John Daane为FPGA产业指明了方向。理念成熟Xilinx公司认为,ASIC SoC设计周期平均是14个月到24个月,用FPGA进行开发时间可以平均降低55%。而产品晚上市六个月5年内将少33%的利润,每晚四周等于损失14%的市场份额。因此,郑馨南雄心勃勃地预言:“FPGA应用将不断加快,从面向50亿美元的市场扩展到面向410亿美元的市场。”其中,ASIC和ASSP市场各150亿美元,嵌入式处理和高性能DSP市场各30亿美元。虽然没有像蒸汽机车发明之初备受嘲笑被讥讽为“怪物”,但是FPGA在诞生之初受到怀疑是毫无疑问的。当时,晶体管逻辑门资源极为珍贵,每个人都希望用到的晶体管越少越好。不过,Ross Freeman挑战了这一观念,他大胆预言:“在未来,晶体管将变得极为丰富从而可以免费使用。”如今,这一预言成为现实。“FPGA非常适用于原型设计,但对于批量DSP系统应用来说,成本太高,功耗太大。”这是业界此前的普遍观点,很长时间以来也为FPGA进入DSP领域设置了观念上的障碍。而如今,随着Xilinx公司和Altera公司相关产品的推出,DSP领域已经不再是FPGA的禁区,相反却成了FPGA未来的希望所在。FPGA对半导体产业最大的贡献莫过于创立了无生产线(Fabless)模式。如今采用这种模式司空见惯,但是在20多年前,制造厂被认为是半导体芯片企业必须认真考虑的主要竞争优势。然而,基于过去和关系和直接、清晰的业务模式,Xilinx创始人之一Bernie Vonderschmitt成功地使日本精工公司(Seiko)确信利用该公司的制造设施来生产Xilinx公司设计的芯片对双方都是有利的,于是,无生产线模式诞生了。未来,相信FPGA还将在更多方面改变半导体产业!12工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。电源类型FPGA电源要求输出电压范围从1.2V到5V,输出电流范围从数十毫安到数安培。可用三种电源:低压差(LDO)线性稳压器、开关式DC-DC稳压器和开关式电源模块。最终选择何种电源取决于系统、系统预算和上市时间要求。如果电路板空间是首要考虑因素,低输出噪声十分重要,或者系统要求对输入电压变化和负载瞬变做出快速响应,则应使用LDO稳压器。LDO功效比较低(因为是线性稳压器),只能提供中低输出电流。输入电容通常可以降低LDO输入端的电感和噪声。LDO输出端也需要电容,用来处理系统瞬变,并保持系统稳定性。也可以使用双输出LDO,同时为VCCINT和VCCO供电。如果在设计中效率至关重要,并且系统要求高输出电流,则开关式稳压器占优势。开关电源的功效比高于LDO,但其开关电路会增加输出噪声。与LDO不同,开关式稳压器需利用电感来实现DC-DC转换。要求为确保正确上电,内核电压VCCINT的缓升时间必须在制造商规定的范围内。对于一些FPGA,由于VCCINT会在晶体管阈值导通前停留更多时间,因此过长的缓升时间可能会导致启动电流持续较长时间。如果电源向FPGA提供大电流,则较长的上电缓升时间会引起热应力。ADI公司的DC-DC稳压器提供可调软启动,缓升时间可以通过外部电容进行控制。缓升时间典型值在20ms至100ms范围内。许多FPGA没有时序控制要求,因此VCCINT、VCCO和VCCAUX可以同时上电。如果这一点无法实现,上电电流可以稍高。时序要求依具体FPGA而异。对于一些FPGA,必须同时给VCCINT和VCCO供电。对于另一些FPGA,这些电源可按任何顺序接通。多数情况下,先给VCCINT后给VCCO供电是一种较好的做法。当VCCINT在0.6V至0.8V范围内时,某些FPGA系列会产生上电涌入电流。在此期间,电源转换器持续供电。这种应用中,因为器件需通过降低输出电压来限制电流,所以不推荐使用返送电流限制。但在限流电源解决方案中,一旦限流电源所供电的电路电流超过设定的额定电流,电源就会将该电流限制在额定值以下。配电结构集中式电源结构2对于高速、高密度FPGA器件,保持良好的信号完整性对于实现可靠、可重复的设计十分关键。适当的电源旁路和去耦可以改善整体信号完整性。如果去耦不充分,逻辑转换将会影响电源和地电压,导致器件工作不正常。此外,采用分布式电源结构也是一种主要解决方案,给FPGA供电时可以将电源电压偏移降至最低。在传统电源结构中,AC/DC或DC/DC转换器位于一个地方,并提供多 个输出电压,在整个系统内分配。这种设计称为集中式电源结构(CPA),见左图。以高电流分配低电压时,铜线或PCB轨道会产生严重的电阻损耗,CPA就会发生问题。分布式电源结构CPA的替代方案是分布式电源结构(DPA),见左图。采用DPA时,整个系统内仅分配一个半稳压的DC电压,各DC/DC转换器(线性或开关式)与各负载相邻。DPA中,DC/DC转换器与负载(例如FPGA)之间的距离近得多,因而线路电阻和配线电感引起的电压下降得以减小。这种为负载提供本地电源的方法称为负载点(POL)。芯片结构主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。如图1-1所示(注:图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主 要由7部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。图1-1 FPGA芯片的内部结构FPGA芯片的内部结构每个模块的功能如下:1 可编程输入输出单元(IOB)可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。图1-2 典型的IOB内部结构示意图典型的IOB内部结构示意图外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有 一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。2 可配置逻辑块(CLB)CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。图1-3 典型的CLB结构示意图典型的CLB结构示意图Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现 2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生 器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或 64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。图1-4 典型的4输入Slice结构示意图典型的4输入Slice结构示意图3 数字时钟管理模块(DCM)业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。4嵌入式块RAM(BRAM)大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。5 丰富的布线资源布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。6 底层内嵌功能单元内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1-5所示。图1-5 典型的DLL模块示意图典型的DLL模块示意图7. 内嵌专用硬核内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Microblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。基本特点1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA内部有丰富的触发器和I/O引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。3注意事项基础问题FPGA的基础就是数字电路和VHDL语言,想学好FPGA的人,建议床头都有一本数字电路的书,不管是哪个版本的,这个是基础,多了解也有助于形成硬件设计的思想。在语言方面,建议初学者学习Verilog语言,VHDL语言语法规范严格,调试起来很慢,Verilog语言容易上手,而且,一般大型企业都是用Verilog语言,VHDL语言规范,易读性强,所以一般军工都用VHDL。工具问题熟悉几个常用的就可以的,开发环境Quartus II ,或ISE 就可以了,这两个基本是相通的,会了哪一个,另外的那个也就很Easy了。功能仿真建议使用Modelsim ,如果你是做芯片的,就可以学学别的仿真工具,做FPGA的,Modelsim就足够了。综合工具一般用Synplify,初学先不用太关心这个,用Quartus综合就OK了。思想问题对于初学者,特别是从软件转过来的,设计的程序既费资源又速度慢,而且很有可能综合不了,这就要求我们熟悉一些固定模块的写法,可综合的模块很多书上都有,语言介绍上都有,不要想当然的用软件的思想去写硬件。习惯问题FPGA学习要多练习,多仿真,signaltapII是很好的工具,可以看到每个信号的真实值,建议初学者一定要自己多动手
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产500万套玩具项目初步设计(模板)
- 年产200万吨包装纸项目实施方案(参考模板)
- 年产10亿只芯片产品项目可行性研究报告(范文)
- 2022年精彩6月毕业讲话稿
- 教育营养配餐项目实施方案(参考范文)
- 四川省雅安市名山中学2023-2024学年高一上学期12月月考政治题 含解析
- 复合材料产品设计
- 内蒙古鸿德文理学院《过程控制与自动化仪表》2023-2024学年第二学期期末试卷
- 北京科技大学《大学生心理团体辅导》2023-2024学年第二学期期末试卷
- 上海民远职业技术学院《数字传输原理与系统》2023-2024学年第二学期期末试卷
- 人教版七年级上生命的思考珍视生命微课
- 《安井食品采购成本管理问题研究【开题报告+文献综述+正文】》17000字
- 义务教育语文课程标准(2022)测试题带答案(20套)
- 05G359-3 悬挂运输设备轨道(适用于一般混凝土梁)
- 招聘与配置课程心得体会5篇
- 东芝电梯紧急救出操作指南
- 《中华民族大团结》(初中) 第1课 爱我中华 教案
- 2018年高考英语试题及答案(湖北卷)
- 2022年新人教版高中生物选择性必修三答案与提示
- 小学体育教案-足球射门教案 全国通用
- GB/T 6742-2007色漆和清漆弯曲试验(圆柱轴)
评论
0/150
提交评论