altera器件高级特性与应用.docx
- 文档编号:5362273
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:17
- 大小:27.54KB
altera器件高级特性与应用.docx
《altera器件高级特性与应用.docx》由会员分享,可在线阅读,更多相关《altera器件高级特性与应用.docx(17页珍藏版)》请在冰豆网上搜索。
altera器件高级特性与应用
altera器件高级特性与应用
主要内容:
.时钟管理;
.片内存储器;
.数字信号处理;
.片外高速存储器;
.高速差分接口和DPA;
.高速串行收发器。
2.1时钟管理
分析设计中经常遇到的时序问题,介绍如何利用altera的时钟资源和PLL来有效地管理时钟,解决设计中的时序问题。
时序问题:
时钟偏斜(skew)和抖动(jitter)
时钟偏斜skew是指在时钟分配系统中各个时钟末端(器件内部触发器的时钟输入端)的时钟相位不一致的现象,是同一时钟源分不到不同时钟目的端的延时差。
主要由两个原因造成:
一是时钟源之间的偏差,例如同一个PLL所输出的不同的时钟信号之间的偏斜;另一个是时钟分配网络的偏斜。
时钟偏斜是永远存在的,但是其大到一定程度,就会严重影响设计的时序,因此需在设计中尽量减小其影响。
时钟抖动是指时钟边沿的输出位置和理想情况存在一定的误差,理想的时钟周期与实际的时钟周期的差别。
抖动一般可以分为确定性抖动和随机抖动,确定性抖动一般比较大,而且可以追踪到特定的来源,如信号噪声、串扰、电源系统和其他类似的来源;随机抖动一般是由环境内的因素造成的,如热干扰和辐射等,往往难以追踪。
实际环境中任何时钟都存在一定的抖动,而当时钟的抖动大到影响设计时序时就不可接受,应予以减弱。
时序余量(TimingMargin):
在一个同步设计中,可以说时序决定一切。
在设计内部的时序余量时,工程师通常会考虑的一些延时因素是:
源触发器的时钟到输出延时MicroTco,触发器到触发器的走线延时Tlogic,目的触发器的建立时间MicroTsu和保持时间MicroTh。
假设设计规格需要跑的时钟周期为T,因此需要满足时钟建立的要求:
MicroTco+Tlogic+MicroTsu<=T
同时也需要满足目的端触发器的保持时间MicroTh要求。
在同步接口的设计中,另一需要重点考虑的就是FPGA和周围(上游和下游)器件的接口时序。
由于芯片I/O管脚的输入输出存在相对较大的延时,同时还涉及到和时钟信号之间的相位关系,所以接口电路的时序往往称为设计中的难点。
如考虑到时钟偏斜skew、抖动Tjitter在内(任何芯片内部的时钟和单板系统的时钟都不是完美时钟),时序余量就要满足:
MicrTco+Tlogic+MicroTsu<=T+Tskew-Tjitter
在I/O设计中除了传统的系统同步方案以外,也有源同步方案,如动态相位调整(DPA),数据与时钟之间的相位关系不用很严格;CDR(时钟数据恢复)电路,数据串行方式传送。
使用全局时钟网络和锁相环改善时钟:
全局时钟网络可以驱动全片的所有触发器和时序电路,包括LE、IOE、RAM和DSP等资源中的触发器。
全局时钟网络的特点:
为保证到芯片的各个角落的延时尽量相等,时钟分配树首先是走到芯片的中间,再向芯片的四周分布,所以从时钟的源端到所驱动的触发器走过的路径比较长,延时比较大,但是到各个时序元件(触发器)时钟输入端等长,保证时钟偏斜skew很小。
同时全局时钟网络具有很强的驱动能力,而且在芯片设计的时候对时钟网络作了保护,尽量防止芯片内部的信号对时钟信号质量优影响,这样可以保证时钟信号引入的抖动非常小。
全局时钟的设置:
在QuartusII软件中,有全局的设置选项“autoglobalclock”,可以使得工具在实现的时候自动把一些高扇出的时钟信号走到全局网络上去,与此类似,“autoglobalregistercontrolsignals”选项同样可以自动把一些高扇出的触发器控制信号(如复位和时钟使能信号)走到全局网路上去。
【setting】——【analysis&synthesissettings】——【moresettings】——【existingoptionssettings】
如果用户不希望某个节点(管脚或内部信号)被选择使用全局时钟网络,可以再assignmentEditor中单独对该信号设置开关(assignmentname--autoglobalclock);当然,用同样的方法也可以约束某个管脚和内部节点自动使用全局时钟网络。
FPGA器件中的锁相环PLL可以用来对设计中的时钟进行管理,可以通过锁相和移相来达到调整时钟偏差的目的。
altera器件内部的模拟PLL还可以滤除输入时钟信号的抖动,提供高质量的内部和输出时钟。
局部走线:
到不同目的节点的延时可能相差较大,即偏斜skew较大,可能会带来时序麻烦。
布局布线中有对设计中的保持时间进行优化的选项,可以选择是仅优化I/O管脚还是优化所有的路径的保持时间。
【setting】——【analysis&synthesissettings】——【moresettings】——【existingoptionssettings】——【ignorLCELLBuffers】,LCELL延时原语,用以认为地增加一些延时电路以满足保持时间的要求。
锁相环应用:
PLL、DLL:
时钟管理元件,alteraFPGA内嵌模拟锁相环,而xilinxFPGA内嵌纯数字的演示锁定环,都可以通过反馈路径来消除时钟分布路径的延时,可以做频率综合(如分频和倍频),也可以用来去抖动、修正占空比移相等。
模拟锁相环的特点:
PLL工作原理:
压控振荡器VCO通过自振输出一个时钟,同时反馈给输入端的频率相位检测器PFD,PFD根据比较输入时钟和反馈时钟的相位来判断VCO输出的快慢,同时输出pump-up和pump-down信号给环路低通滤波器LPF,LPF把这些信号转换成电压信号,再用来控制VCO的输出频率,当PFD检测到输入时钟和反馈时钟边沿对齐时,锁相环就锁定了。
. 输出时钟是内部VCO自阵产生,把输入参考时钟和反馈时钟的变化转换为电压信号间接地控制VCO的评论。
. VCO输出频率有一定范围,如果输入时钟频率超过这个频率,则锁相环不能锁定。
.LPF(频率相位检测器)部件可以过滤输入时钟的高频抖动,其输出时钟的抖动主要来自VCO本身以及电源噪声,而不是输入时钟代入的抖动。
.由于是模拟电路,所以对电源噪声敏感,在设计PCB时,一般需要单独模拟电源和模拟地。
锁相环PLL的反馈模式:
Normal:
时钟输入管脚与时钟网络的末端(驱动端)同相位。
反馈路径补偿了时钟输入延时和时钟网络延时,使得FPGA输入时钟与内部使用时钟同相位。
zerodelaybuffer:
时钟输入管脚与时钟输出管脚同相位。
反馈路径补偿了时钟输入延时和时钟输出延时,使得时钟输入管脚与时钟输出管脚同相,这时锁相环就相当于一个零延时的时钟驱动器,可以用来产生镜像时钟输出。
externalfeedback:
外部反馈模式,时钟输入管脚与时钟反馈输入管脚同相位。
反馈回路是由时钟输出管脚通过PCB板上走线从反馈输入管脚输入,由于时钟延时和反馈输入延时相等,所以可以保证时钟输入管脚和反馈输入管脚锁定成同相位,如果在PCB布线时保证时钟输出PCB走线和外部反馈PCB走线两者等长,这就保证了下游芯片的时钟输入端和FPGA的反馈输入端同相位,这样,FPGA和下游器件就构成了一个同步系统,而不需要一个外部时钟驱动器。
nocompensation:
PLL的时钟输入端与PLL的时钟输出端同相位。
锁相环的反馈路径中没有任何延时单元,不补偿任何的路径延时,所以时钟输出具有最好的抖动性能
sourcesynchromous:
管脚上的时钟输入和数据输入的相位关系在到达IOE触发器输入端上保持一致(仅在stratixII上支持)
锁相环在跟踪参考时钟的过程中,锁定locked信号会出现一段时间的上下翻转,等到锁相环完全锁定,锁定信号才固定输出高电平,为了使锁定信号有稳定的输出,在stratixII的PLL中,用户可以指定一个最大20bit计数器的值,等到参考时钟计数到该值后,才把锁定信号放出来,保证这个时候锁相环已经完全锁定。
而这个参考时钟可以使用直接从管脚进来的时钟。
片内存储器:
用途:
.单端口RAM:
一个端口进行读或写操作;
.简单双端口RAM:
两个端口,一个只写,另一个只读;
.真正双端口RAM:
两个均可以读写;
.多端口RAM:
如一个端口写,两个端口读的三端口RAM;
.FIFO:
先进先出的存储器;
.ROM:
只读存储器。
alteraFPGA的三种RAM块都可以支持单端口RAM方式和简单双端口方式。
M4K和M-RAM可以支持真正双端口模式,而M512块不支持真正双端口模式;如果要实现三端口RAM,一口只写,另外两口只读,就必须用冗余的方法实现:
用一个写端口把数据同时写到两个物理的RAM块中,同时也就支持两个读端口;在M512和M4K中都支持初始化文件,使RAM内部在FPGA加载完毕后就有初始值,所以支持只读存储器ROM方式,但M-RAM不支持初始化文件和ROM方式。
alteraFPGA内嵌RAM内部的RAM都是纯同步RAM,也就是说其读和写操作都是由时钟沿触发。
在RAM块的输入地址、数据和读写使能信号均有一级寄存器输入级,中间可以看做是一个纯异步读写的RAM内核,而输出数据也有一级寄存器输入级,但该寄存器是用户可选的,如果选上,输出数据会多延时一拍。
读写冲突:
在双端口RAM方式下,无论是读或者是写都是针对同一个物理RAM块进行的。
这样,在同一个时钟上升沿,当一个端口在写RAM,另一个端口在对同一地址读操作时就发生了读写冲突。
一般来说,发生读写冲突时,写入的数据有效,读出的数据位未知。
M512和M4K内部的一种机制可以由用户选择发生读写冲突时,希望读出的输出值:
该次写操作之前的旧值old还是未知值unknown,如果选旧值,那么读操作将立即在本次时钟上升沿完成,读出旧值,而写操作将在紧跟其后的时钟下降沿完成,把新值写入RAM中,同时又避免了同一时钟的读写冲突。
M512,M4K,当两个端口的时钟不同时,那么在发生读写冲突时,读出值也只能是未知值;但是M-RAM不具有这样特性,在读写冲突时,读出值只能是未知值。
在实现单端口RAM或ROM时,如果两个RAM所占用的存储器的比特数都分别小于半个M4K的大小,而同时如果M4K资源紧张,QuartusII工具将会在实现的时候自动将这两个RAM合并到一个M4K块中实现,以节省RAM的占用。
xilinxFPGA只有一种RAM块。
逻辑单元中一个4输入LUT可以用来做一个16bitRAM,多个LUT组合在一起就可以做成较大的RAM,这种RAM为分布式RAM,用来实现一些小FIFO。
但会浪费许多逻辑资源,同时性能较差,会占用器件内部的大量布线资源,降低设计的可布线性。
分布式RAM的写操作是同步的,而读是完全异步的,用户需自己在外面增加寄存器来满足同步RAM的读时序。
RAM用作移位寄存器
M512和M4K可以支持移位寄存器模式,可用来实现移位寄存器以节省触发器资源,同时节省布线资源;但M-RAM不支持移位寄存器模式。
使用RAM来实现移位寄存器,需要在MegaWizard中调用ALTSHIFT_TAPS。
RAM实现固定系数乘法
在DSP应用中,很多情况下需要将不同的数据与同一个系数相乘。
这时,乘积由输入数据来决定,像一个ROM,不同的输入数据就是ROM地址,而乘积就是ROM中查找出来的内容。
假设输入变换的数据是D,所要与之相乘的固定系数是C。
如果D是8bit宽,而C是10bit宽,那么,就把C鱼每个可能的D值相乘的结果预先存在M4K实现的ROM中,一次为0、C、2*C、3*C……,这样就可以实现固定其中一个操作数的乘法。
如果D是16bit,相乘的结果无法放在一个M4K中,可把D分为MSB(高比特字节)和LSB(低比特字节),各8bit,分别使用一个M4K存放相乘结果,最后需要把MSB相乘的结果左移8bit再与LSB相乘的结果相加,得到最终相乘的结果;当然也可以将MSB和LSB分两拍输入到同一个M4K中,然后通过外部的累加器将两拍RAM输出相加得到最后的乘积,以节省RAM资源,但需更多时钟周期。
数字信号处理
DSP块资源:
在一些复杂系统中,如IP上的语音voiceoverIP、cdma2000以及高清电视HDTV通常都需要带宽很高的DSP功能(主要是乘加运算)来处理高速数据。
DSP资源:
LPM_MULT————选择专用的乘法器电路(如DSP块)或者用LE来实现乘法功能。
ALTMULT_ADD——用来实现乘加功能。
ALTMULT_ACCUM—用来实现乘累加功能。
ALTFP_MULT—— 用来实现浮点乘法功能。
片外高速存储器
存储器介绍:
传统的存储器主要可以分为静态存储器SRAM和动态存储器DRAM两种。
目前业界比较流行的SRAM存储单元一般都是采用六晶体管的结构,而DRAM的存储单元则一般采用单晶体管加上一个无源电容构成。
SRAM与DRAM相比,优缺点:
SRAM访问时间短,总线利用率高,静态功耗相对较低,但占用硅片面积较大,容量小,价格较贵,适用于存储容量不大,性能要求较高的领域;DRAM读写访问过程比较复杂,访问时间较长,总线利用率相对较低,而且由于电容器会不断漏电,需要周期性去刷新,所以静态功耗大,但DRAM存储容量可以做到很大,价格便宜,被大量用于计算机和服务器市场。
随着存储器的进化,SRAM发展成SSRAM到QDRSRAM和QDRIISRAM,使得SRAM容量和总线带宽逐步扩大,性能也得到提升。
DRAM分为普通DRAM和专用DRAM两类,普通DRAM分为SDRAM、DDRSDRAM和DDR2SDRAM,被大量用于PC和服务器中;专用DRAM主要是为满足一些特殊应用而设计的,包括:
. reducedLatencyDRAM(RLDRAM):
主要应用在网络设备中,实现高速路由查找表和数据包缓存,性能介于SRAM和普通DRAM之间;
. FastCycleDRAM(FCRAM):
应用于多媒体以及网络设备中,性能介于SRAM和普通DRAM之间。
.MobileDRAM:
静态功耗低,主要应用于手持设备中。
.graphicsDRAM:
主要应用于高速图像处理中。
通常,从单位比特的成本来说,SRAM最高,RLDRAM次之,DDR/DDR2SDRAM最低;从访问延时上来说,SRAM最小,RLDRAM次之,DDRAM延时最大。
处于介绍期和成长期的器件,使用的批量较小,价格偏贵,适用于早期的新产品开发阶段;在成熟期的器件,批量非常大,价格最低;而在衰落期的器件,需求逐渐转移,批量减少,供货比较紧张,价格上涨。
DSP块资源
一个DSP块包括输入级寄存器(inputregister)、乘法器、流水线级寄存器(pipelineregister)、加/减/累加(add/Sub/Acc)单元、求和单元(summation)、输出多路器(outputmux)和输出级寄存器(outputregister)。
在DSP块中的输入级、流水级和输出级寄存器都是可以旁路掉的,可以根据自己的需要选择使用。
DSP块的乘法器部分是由4个18x18的乘法器构成,可以支持有符号数和无符号数操作。
乘法器部分可以用作4个18x18的乘法器,或者拆分成8个9x9的乘法器。
如果用上DSP块中的2个加法单元和1个求综合单元,可以实现成一个36x36的乘法器。
ZBTSRAM接口设计(zerobusturnaroundSRAM):
传统的同步静态RAM在由读到写操作的过程中需要几个空操作,所以在读写操作切换比较频繁的应用中,就存在总线利用率不高的问题;ZBTSRAM是一种新的SRAM结构,好处是,其在读写操作转变时不需要任何的等待周期,可以直接切换,使得在任何操作模式下总线利用率保证100%,最大限度地利用了总线带宽。
但ZBTSRAM存在总线冲突问题。
由于读写操作之间的连续性,数据总线上的数据不断出现,增加了数据总线上冲突发生的可能性。
在数据总线的驱动源由控制芯片(如FPGA)转到RAM或由RAM转到控制芯片时,由其中一方关闭不及时或者另一方打开太早,都会造成两者的数据总线在某一时间同时为输出的情况出现,而这时,如果一方输出为低电平,另一方输出高电平,就会在两个输出驱动器之间形成一个电源VCC到地GND的直通路径,造成一个大电流,就是所谓的总线冲突现象。
一般来说,短时间的冲突可能引发器件变热,长时间的冲突会导致器件加热烧毁。
减少、避免冲突:
设计ZBTSRAM总线接口时,必须使输出数据满足SRAM建立保持时间Tsu和Th的同时,还要满足Txz和Tzx的要求,用户可以通过调整输出使能OE、输出以及输入寄存器的时钟相位(锁相环)来实现。
DDRSDRAM接口设计:
基于alteraDDR触发器的结构特点,在输出时,是高位数据先出,地位数据后出,而在输出时,必须要低位数据首先进来,然后才是高位数据,因此,在设计RAM数据接口时,必须注意在输出寄存器或输入寄存器处将数据高低位颠倒一下,保证数据的正确高低为顺序。
DDRSDRAM是目前业界主流DRAM,绝大部分应用在PC和服务器市场,集成度高、密度大、接口带宽高、价格便宜。
DDRSDRAM采用双数据速率接口,也就是在时钟的正沿或负沿都需要对数据进行采样,因此,DDRSDRAM内部的数据总线是接口数据总线的两倍宽;主频很高,达到200MHz,数据速率可以达到400Mbit/s,如果采用传统系统同步方式,必然导致时序紧张,因此DDRSDRAM的数据与采样时钟之间采用了源同步关系,读写数据的采样均由依靠随路传送的时钟来进行,这个采样时钟DQS域数据线DQ一样,是双向信号,也并不是一个总是在翻转的有效时钟信号。
在读的时候RAM在送出有效数据DQ的同时将有效的采样沿DQS送出;在写的时候,DQ也需要伴随输入的DQS信号进行采样。
DDRSDRAM和SDRAM在内部控制逻辑和存储单元上基本一致,主要区别在时钟系统以及数据信号的采样上,只要清楚DDRSDRAM的数据接口部分的原理,就可以轻松把SDRAM控制器的设计转为DDRSDRAM的控制器。
高速差分接口和DPA(动态相位调整电路)
随着数据接口速度和带宽的不断提高,许多接口逐渐撇弃了传统的LVTTL/LVCMOS电平,转而采用一些速度更高、抗干扰性更好的差分接口电平,如LVDS、LVPECL和hyperTransport等,从而减少PCB走线,提高传输带宽。
接口时钟速率的提高,同样使得传统的系统同步方式的数据接口电路变得越来越难以实现,许多接口开始采用源同步方式,其时钟伴随数据传输。
如目前业界比较流行的SPI4.2(系统信息包接口,level4,phase2)就是采用了一对LVDS时钟信号和十六对LVDS数据信号传送,如果每对数据信号工作在1Gbit/s,那么整个接口带宽可以达到16Gbit/s;业界另外一些标准接口也采用了类似的接口信号方式,如SFI-4(SERDES到“成帧器”的接口,level4)、Utopia-4等等。
但是即便是采用了源同步方式,在数据速率非常高时如1Gbit/s,由于数据与数据之间的偏斜,数据与时钟之间的偏斜,加上PCB的影响,尤其是信号连接器connector的容性阻抗的不一致性,都会加剧时钟与数据之间的偏差,导致有效采样窗口逐渐变小,以至于时钟信号在管脚处根本找不到一个有效的采样窗口把并行数据一次采样进来,这时就需要为每一个数据线找到一个合适的采样时钟相位,保证在接口处把所有的数据都正确的采样进来,用来完成这项工作的电路就叫做动态相位对准电路(dynamicphasealignment)。
器件专用资源:
我们假设需要实现一个数据速率为840Mbit/s,随路时钟为420MHz的接口电路(包括发送和接收部分),而且数据和时钟之间是对齐(edgealigned)的,介绍利用stratixII器件中的专用电路来实现数据的发送和接收。
发送接口:
如果每根数据接口信号工作在840Mbit/s,FPGA内部的逻辑显然无法工作在这个频率,假定内部将要输出的数据是8位并行数据,工作时钟频率是105MHz。
如果要传送16对840Mbit/s的LVDS数据,那么内部就是16x8位宽,105Mbit/s的数据总线。
这时,接口处需要一个串行器,把8位并行数据线转为1位的串行信号。
在普通的是stratixII器件的I/O管脚处,有一个IOE,可以支持DDR(双数据速率)、SDR(单数据速率)以及无触发器的数据通道,而在一些可以支持高速LVDS输出的管脚处,还有一个串行器serializer电路,用户可以选择使用IOE或者是serializer电路。
内部的串行器可以支持的串行化因子J可以为4、7、8、10等,也就是说串行器可以接收这几种位宽的数据输入,做并串转换,如果需要实现J为1(SDR)或者2(DDR),就需要使用IOE,而不是串行器。
在该例中,需要实现8位数据的输入,J就要选择8,同时需要输入一个840MHz的串行时钟供串行器电路使用,以及一个载入使能信号(每8个串行时钟周期有效一次)。
StratixII中的快速锁相环FastPLL就是为这种应用而设计的。
StratixIIfastPLL可以输出两个串行时钟(dffioclk0,dffioclk1),两个载入使能(loadena0,loadena1)。
高倍串行时钟是从VCO直接输出的,没有经过输出分频计数器,而载入使能是由分频器产生的。
FastPLL本身可以由分频计数器(C0~C3)来产生低速并行时钟,输出到全局时钟网络GCLK和区域网络RCLK,供内部使用。
StratixII器件允许用户把输出的差分时钟放在任意一对LVDS输出上,完全像数据一样输出,而无需采用专用的时钟输出管脚,这样,时钟输出的位置可以由用户任意指定,可以使其靠近数据输出总线,减小时钟与数据之间的偏差,减小PCB设计难度。
在输出时钟的时候,利用普通的LVDS数据输出口,在输入的并行接口输入固定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- altera 器件 高级 特性 应用