FPGA技术及系统设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于FPGA的数字系统概述FPGA系统的设计流程及注意事项FPGA系统设计的基本原则FPGA设计中的时序分析及异步设计注意事项总结后续讨论设计参考(ToBeUpdated)FPGA市场占有率最高的两大公司Xilinx公司和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后FPGA恢复为白片,内部逻辑消失。这样FPGA不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM编程器即可。Actel、QuickLogic等公司还提供反熔丝技术的FPGA,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。Lattice是ISP技术的发明者,在小规模PLD应用上有一定的特色。早期的Xilinx公司产品一般不涉及军品和宇航级市场,但目前已经有多款产品进入该类领域。高密度FPGAStratixIIIStratixIVCPLDMAXIIMAXIII应用于高速收发器的FPGAStratixIIIGXStratixIVGX结构化ASICHardCopyIIHardCopy低成本FPGACycloneIICycloneIIIVirtex-7终极系统集成平台1.高性能逻辑单元2.集成DualCortexA9Core原型验证平台Z7Virtex-61.Virtex-6LX高性能逻辑2.Virtex-6SX超高性能信号处理3.Virtex-6FX嵌入式处理和串行连接功能Spantan3成本最低的FPGA1.Spantan-3以IO为核心2.Spantan-3E以门电路为核心3.Spantan-3L低功耗CoolRunner-II成本最低、功耗最低的CPLD1.CoolRunner-II具有多达512个宏单元2.CoolRunner-IIA具有附加的IO组合最小的封装FPGAASIC适合小批量生产适合中度及大批量生产编程方式可变,灵活设计不可变(ECO)NRE(nonrecurringengineering)费用小工具和掩膜版的NRE成本高开发周期短开发周期长只适合数字电路设计适用于数字模拟混合信号电路设计功耗大较低功耗和散热逻辑单元小逻辑单元大片内运行速度低(受逻辑资源影响明显)片内运行速度高(基本不受资源影响)接口逻辑控制提供前所未有的灵活性1.ISA、PCI、PCIExpress、PS2/UART/I2C/SPI/SDIO、USB2.0/3.0、VGA/HDMI等接口控制器2.SDRAM、DDRSDRAM、QDRSDRAM、NANDFlash、NORFlash等接口控制器3.电平转换、LVDS、TTL、CMOS、SSTL等高速信号处理(DSP)提供前所未有的计算力1.无线通信领域,如软件无线电(SDR)2.视频图像处理领域,如高清数字电视(HDTV)3.军事和航空领域,如雷达、声纳其他应用领域1.汽车,如网关控制器/车用PC,远程信息处理系统2.军事,如安全通信,雷达和声纳,卫星通信,电子战3.测试和测量,如通信测试和监测,半导体自动测试设备,通用仪表仪器4.消费产品,如显示器/投影仪,数字电视/机顶盒,家庭网络5.医疗,如超声设备,生命科学等6.通信设备,如蜂窝基础设施,宽带无线通信一个完整的软件是由程序、数据和文档三部分组成的。在FPGA电路设计中,撰写完善的设计文档是非常重要的。对于一个比较复杂的设计来说,各个子单元的功能各不相同,实现的方法也不一样,各子单元之间信号时序和逻辑关系也是纷繁复杂的。因此,在设计文档中对整个设计进行详细的描述,可以保证使用者能够在较短时间内理解和掌握整个设计方案,同时设计人员在对设计进行维护和升级时,完善的设计文档也是非常有用的。1.设计所要实现的功能;2.设计所采用的基本思想;3.整个设计的组织结构;4.各个子单元的设计思路;5.各个子单元之间的接口关系;6.关键节点的位置、作用及其测试波形的描述;7.I/O引脚的名称、作用及其测试波形的描述;8.采用的FPGA器件的型号;9.片内各种资源的使用情况;10.该设计与其它设计的接口方式等。在电路描述时,必须摒弃软件思维方式,一切从硬件的角度去思考代码的描述;在具体的项目实践中,必须先画好模块的接口时序图,然后画出或者在脑子中形成模块内部的原理框图,最后才是代码实现;企图一开始就依靠“软件算法”思维进行代码实现,最后才分析时序和电路图,是非常不可取的;硬件思维的形成,需要一定的硬件设计训练才能达到,熟练了之后才可能科学地在初始阶段完成模块划分和时序设计。时序是设计出来的,不是仿出来的,更不是凑出来的。先写总体设计方案和逻辑详细设计方案总体方案主要是设计模块划分,模块之间的接口信号和时序LogicDesign的难点在于系统结构设计和仿真验证提高代码覆盖率及测试覆盖率设计文档化设计思路,详细实现等写入文档代码规范化所有源文件中都应包含头信息内容作者信息修改记录目标描述可用参数复位机制和时钟关键时序、异步接口测试方法应该有一个标准模板顺序每行一个端口,并准确注释;先列输入信号,再列输出信号;参考顺序:时钟、复位、使能、其他控制信号、地址总线、数据总线......合理规则设计敏感信号的选取一个模块尽量只用一个时钟尽量在底层模块上做出逻辑,在高层尽量做例化,顶层模块只能做例化,禁止出现任何胶连逻辑(gluelogic)进入FPGA的信号先同步避免使用Latch多看RTL门级电路多用同步电路,少用异步电路(reset全局异步,本地同步)多用全局时钟,少用门控时钟所有模块的输出都要寄存器化,以提高工作频率,这对设计做到时序收敛也是极有好处的避免在端口映射中使用表达式数字系统中,各模块应采取(寄存输入和)寄存输出,优点:模块化清晰(特别是寄存输出);提高系统最高工作速率;有利于整个系统和单个模块进行静态时序分析。下载配置方式的选取供电电压VCCINTVCCIO电源的滤波空闲I/O的处理时钟的走线输出调试信号器件选取引脚连接PintoPin兼容I/O引脚上的信号电压必须满足GND≦V≦VCC不用的保留I/O引脚应当不连接输出负载(大多为阻抗和/或容性)保证目标器件能够提供负载所需要的电流和速度对于阻抗负载(如TTL输入、终端总线和分立的双极型晶体管),输出电流的驱动能力决定了最大负载,同时能维持必要的输出电压,如果不满足要求,需要使用高电流缓冲器或者分立的电流开关应将器件输出的负载电容减至最小,如信号通路彼此垂直,信号走线尽量短,一个源驱动多个负载时使用大电流缓冲器信号到所有负载的时间相等电源使用VCC和GND平面去耦电容高速PCB板的设计噪声、信号反射、地线毛刺进行电源滤波与电源分配信号与传输线的端接阻抗匹配和端接电阻串扰逻辑单元I/O个数驱动能力工作环境PLL,Buffer_G/R,Clkctrl_mfDSP模块RAM大小硬件乘法器个数乒乓结构和流水线设计异步时钟的处理同步状态机的设计毛刺的消除应用于数据流控制通过“输入数据选择单元”和输出数据选择单元按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。节约缓冲空间输入数据流通过“输入数据选择单元”将数据流登时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM、单口RAM、FIFO等。以定长包为单位的处理提高数据处理的并行性提高数据传输速率隔离时钟域之间的冲突66MHz,33MHz,8MHz双口RAM与同步器流水线技术几乎是最常用的提供系统工作速率的强有力手段;面积换取速度思想的另一种具体体现考虑一个电路每个时钟周期执行N个操作,工作频率为F,则可以认为系统吞吐量为N*Fops/sec;Pipeline本质上是通过增加F来提高吞吐量,达到Latency和Area的TradeOff;什么决定了最高工作频率呢?StaticTimingAnalysis在flipflops之间的最大延时时序电路之间的组合电路延时决定了整个电路的速度,即最大工作时钟频率,故不可太复杂最小时钟周期:T=Tco+Tdelay+Tsetup最快时钟频率:F=1/T其思想是利用寄存器将一个长路径切分为几段小路径,从而达到提高工作速率的作用。假设原路径延时为t,加入2级流水线并且假设路径分割均匀,则路径延时可以减少到约为t/3,从而系统速率可以提高到原来的3倍左右。当然要注意的是输出同时会往后推迟3个时钟周期,所以才用流水线技术时,要记得进行时序调整。乒乓结构和流水线设计异步时钟的处理同步状态机的设计毛刺的消除数字电路中,时钟是整个电路最重要、最特殊的信号。第一,系统内大部分器件的动作都是在时钟的跳变沿上进行,这就要求时钟信号时延差要非常小,否则就可能造成时序逻辑状态出错.第二,时钟信号通常是系统中频率最高的信号.第三,时钟信号通常是负载最重的信号,所以要合理分配负载。出于这样的考虑在FPGA这类可编程器件内部一般都设有数量不等的专门用于系统时钟驱动的全局时钟网络。这类网络的特点是:负载能力特别强,任何一个全局时钟驱动线都可以驱动芯片内部的触发器;时延差特别小;时钟信号波形畸变小,工作可靠性好。因此,在FPGA设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发器。同步设计时,全局时钟输入一般都接在器件的时钟端,否则会使其性能受到影响。对于需要多时钟的时序电路,最好选用一个频率是它们的时钟频率公倍数的高频主时钟。各个功能模块要使用统一的复位电路。在使用带时钟的触发器、计数器等有复位端的库器件时,一般应尽量使用有同步复位的器件。注意复位时保证各个器件都能复位,以避免某些寄存器的初始状态不确定而引起系统工作不可靠。许多系统要求在同一设计内采用多时钟,常见的例子是两个异步微处理器之间的接口,或微处理器和异步通信通道的接口。由于两个时钟信号之间要求一定的建立和保持时间,所以上述应用引进了附加的定时约束条件,它们会要求将某些异步信号同步化。如果一个系统中存在多个独立(异步)时钟,并且存在多时钟域(ClockDomain)之间的信号传输,那么电路会出现亚稳态。出现亚稳态的平均时间间隔常用“平均无故障时间”(MTBF,MeanTimeBetweenFailure)来表示。单个触发器MTBF为:•tr:不引起SynchronizerFailure的前提下,亚稳态可持续的最长时间(MetaStabilityResolutionTime);•τ和T0:与触发器电气特性有关的常数;•fin:异步输入信号的频率;•fclock:起同步作用的触发器时钟频率。此外,温度、电压、辐射等因素都对MTBF有影响clockinrffTtMTBF0)/exp(触发器时钟频率为10MHz,异步输入信号频率为3KHz:优点:实现简单;成本低缺点:不能完全消除亚稳态导致延时增加在许多应用中只将异步信号同步化还是不够的,当系统中有两个或两个以上的非同源时钟的时候,数据的建立和保持时间很难得到保证,设计人员将面临复杂的时间分析问题。最好的办法是将所有的非同源时钟同步化。这是就需要使用带使能端的D触发器,并引入一个高频时钟来实现信号的同步化。这种信号命名和模块划分的方法有如下优点:有利于检查信号通过的时钟域;有利于各模块进行单独的静态时序分析;有利于在静态时序分析中快速地设定falsepathfalsepath:异步信号穿越时钟域时,这些信号与异步时钟之间的相位关系数是无穷的,所以在整个系统静态时序分析时必须忽略这些信号路径。输入、输出的延时(芯片间、PCB布线、一些驱动接口元

1 / 121
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功