Xilinx FPGA开发要点介绍
- 格式:pdf
- 大小:600.27 KB
- 文档页数:17
FPGA设计的八个重要知识点,你都会吗1. 面积与速度的平衡与互换这里的面积指一个设计消耗/的规律资源的数量,对于FPGA可以用消耗的FF(触发器)和LUT(查找表)来衡量,更普通的衡量方式可以用设计所占的等价规律门数。
面积和速度这两个指标贯通FPGA/CPLD设计的时钟,是设计质量的评价的终极标准——面积和速度是一对对立统一的冲突体。
要求一个同时具备设计面积最小、运行频率最高是不现实的。
更科学的设计目标应当是在满足设计时序要求(包括对设计频率的要求)的前提下,占用最小的芯片面积。
或者在所规定的面积下,是设计的时序余量更大、频率跑的更高。
这两种目标充分体现了面积和速度的平衡的思想。
作为冲突的两个组成部分,面积和速度的地位是不一样的。
相比之下,满足时序、工作频率的要求更重要一些,当两者矛盾时,采纳速度优先的准则。
从理论上讲,假如一个设计时序余量较大,所能跑的速度远远高于设计要求,那么就通过功能模块的复用来削减囫囵设计消耗的芯片面积,这就是用速度的优势换取面积的节省。
反之,假如一个设计的时序要求很高,一般办法达不到设计频率,那么普通可以通过将数据流串并转换,并行复制多个操作模块,对囫囵设计实行乒乓操作和串并转换的思想运行。
2. 硬件原则硬件原则主要针对HDL代码编写而言:是采纳了C语言形式的硬件的抽象,它的本质作用在于描述硬件,它的终于实现结果是芯片内部的实际。
所以评判一段HDL代码的优劣的终于标准是:其描述并实现的硬件电路的性能,包括面积和速度两个方面。
评价一个设计的代码水平较高,仅仅是说这个设计是由硬件想HDL代码这种表现形式的转换越发流畅、合理。
而一个设计终于性能,在更大程度上取决于设计工程师所构想的硬件实现计划的效率以及合理性。
(HDL代码仅仅是硬件设计的表达形式之一)初学者片面追求代码的干净、简短,是错误的,是与HDL的标准南辕北辙的。
正确的编码办法,首先要做到对所需实现的硬件电路心中有数,对该部分的硬件的结构和衔接非常清楚,然后再用适当的HDL语句表达出来即可。
共62页产品名称Xilinx 篇yyyy/mm/dd日期2001/09/15日期深圳市华为技术有限公司版权所有 不得复制修订记录内部公开请输入文档编号FPGA 设计高级技巧目 录414.3 减少关键路径的逻辑级数.............................................404.2IF 语句和Case 语句揭开逻辑级数未变速度更快SRLVirtexIIXilinx篇626.3.3 专有资源的利用................................................616.3.2 Distributed RAM 代替通道计数器...................................616.3.1 Distributed RAM 代替BlockRAM ....................................616.3 如何降低芯片面积..................................................616.2.9 迂回策略为关键路径腾挪空间进行位置约束.....................................616.2.7 关键路径单独综合.......................................616.2.5 专有资源的利用................................................616.2.4 基本设计技巧..................................................616.2.3 采用BUFGS ...................................................616.2.2 对线延时比较大的netTIG 和Multi-Cycle-Path ...................606.2 如何提高芯片速度..................................................606.1 可能成为关键路径的电路.............................................606 综合运用..............................................................605.4 TimingAnalyzer 的作用...............................................595.3 FloorPlanner 的作用..................................................595.2 FPGA Editor 的作用..................................................595.1.3 正确看待map 之后的资源占用报告..................................585.1.2 布局布线策略设计方案阶段对关键电路的处理.......................585.1 布局布线..........................................................585 如何使用后端工具.......................................................574.16 LFSR 加1计数器...................................................574.15 SRL 的使用.......................................................574.14 Block SelectRAM 的使用.............................................564.13 Distributed RAM 的使用.............................................554.12 高效利用IOB ......................................................544.11 利用LUT 四输入特点减少扇出巧妙地延时................................494.7 组合逻辑和时序逻辑分离.............................................474.6流水线................................................464.5.4 综合工具与资源共享............................................464.5.3 子表达式共享..................................................454.5.2 loop 语句......................................................444.5.1 if 语句........................................................444.5 资源共享..........................................................434.4 合并if 语句赋予关键路径最高优先级............................内部公开请输入文档编号FPGA设计高级技巧627 感谢 (62)6.3.4 基本设计技巧..................................................表目录33表5 VirtexII 的DCM 分布表.................................................27表4 VirtexII乘法器速度表.......................................25表3 带奇偶校验位的Block RAM 配置表........................................24表2 VirtexII 的BlockRAM 分布表顶部上半部分58图65 15位基本型LFSR 计数器在VIRTEX 器件中的实现...........................57图64 采用Distributed RAM 实现多路加1计数器..................................55图63 输入输出寄存器移入IOB 中............................................55图62 VirtexE IOB 结构示意图...............................................54图61 采用三态电路实现电路选择............................................54图60 多路选择..........................................................53图59 扇出较小..........................................................53图58 扇出较大..........................................................52图57 组合逻辑在前..............................................52图56 组合逻辑在后..............................................49图55 Mealy 状态机的基本结构...............................................49图54 采用流水线之后的电路结构............................................48图53 采用流水线之前电路结构..............................................46图52 资源共享后一个加法器................................................45图51 资源共享前4个加法器................................................45图50 资源共享后2个加法器...............................................42图48 critical 信号只经过一级逻辑............................................42图47 critical 信号经过2级逻辑...............................................41图46 case 语句完成电路选择................................................40图45 if-else 完成多路选择..................................................39图44 并行加法电路.......................................................39图43 串行加法电路.......................................................39图42 超前进位..........................................................38图41 串行进位..........................................................37图40 No-read-on-write mode ................................................37图39 Write first mode ......................................................36图38 Read first mode ......................................................36图37 完整的单端口Block Select RAM .........................................35图36 门数增加但资源占用减少FPGA设计高级技巧关键词速度与面积压缩线延时腾挪空间摘 要以速度和面积为主题缩略语清单:ASICConfigurable Logic Block DCIDigital Clock ManagerDDRDelay-Locked Loop FPGAGeneral Routing MatrixIOBLinear Feedbak Shift RegisterLUTSum of Product SRLCustom Constraints File 参考资料清单:内部公开请输入文档编号FPGA 设计高级技巧时钟资源1 前言随着HDL 硬件描述语言综合工具及其它相关工具的推广连线等工作解脱开来极大地提高了工作效率有利就有弊现在越来越多的工程师不关心自己的电路实现形式我只要将功能描述正确工程师在用HDL 语言描述电路时或者非常模糊映射到芯片中又会是什么样子遇到问题容量更大的FPGA 器件更为要命的是更不了解与器件结构紧密相关的设计技巧工具不行导致问题迟迟不能解决导致开发成本急剧上升我们的设计规模越来越庞大几百万门的电路屡见不鲜我们所采用的器件工艺越来越先进而在对待深亚微米的器件上要更多地关注以前很少关注的线延时ASIC 设计以后也会如此此时设计技巧上有所提高而且从节约公司成本角度出发本文从澄清一些错误认识开始以速度和面积为主题本文对读者的技能基本要求是如加法器RAM 等熟悉基本的同步电路设计方法对FPGA 的结构有所了解2 综合工具与代码风格硬件描述语言和综合工具的产生然而一种不好的现象也在逐步蔓延只关注功能是否实现很少考虑电路到底是如何实现的如速度如果将设计看成是一个化学变化我们所掌握的背景知识才是参加化学反应的分子因此不能完全指望工具只有我们才是决定设计成败的关键一般包括如下两个过程前者是把行为级的描述通过一定的算法转化成门级的描述与用户约束无关通过算法映射到相应的工艺库中的器件上是映射到厂商的Gate 库中是映射到FPGA器件的单元结构中当设计代码的的风格不一样时对ASIC来说器件库一般也是GateÎÒÃDz»ÄÑÀí½âCode Style 对FPGA设计的重要性如下的16选1MUXÈçcase语句后者使用BUFT的描述图2 使用内部三态线描述的Mux2.2不同综合工具的性能不同综合工具的针对目标不一致和各综合工具的不同性能目前Design CompilerFC2Leonardo 其中DC主要是用于ASIC的综合工具其中Leonardo 是做FPGA 综合工具的先驱Synplicity公司出品但无论哪家综合工具都必须紧密结合各FPGA厂家的FPGA结构从目前来看优选Synplify 或Leonardo 综合工具到目前为止如Virtex 系列的进位链目前是这样因为综合工具一直在升级因此无法得到更好的性能则可综合出来Synplicity公司的综合工具比较优秀一点不过价格太贵导致设计性能变差若想得到更好的性能但这种基于FPGA器件的代码设计FPGA设计与ASIC设计的兼容性因此要采取恰当的风格对FPGA设计而言1. 资源共享的应用限制在同一个module里综合工具才能最大限度地发挥其资源共享综合作用这样3. Critical path所在的module与其它module分别综合对其它module采用面积优先的综合策略4. 尽可能Register所有的Output¶Ô¼ÓÔ¼Êø±È½Ï·½±ãÕâ¶Ô×ۺϷdz£ÓÐÀûËÙ¶È˫ӮµÄÄ¿µÄ¾ßÌå´óС6. 一个module尽量只有一个时钟更多的代码风格verilog代码书写规范3 FPGA器件结构许多工程师在做设计时不关心自己的电路是怎么实现的并且认为至于它是如何实现的这实际是轻实现其结果是在我们的设计中人为地制造了一大堆第一个设计有20~30µ±È»Èç¹û´ó¼ÒÔÚÒ»¸ö¸ßÊÖÈëÔÆµÄ»·¾³Ï½øÐÐѬÌÕÎÒÃÇÔÚÇ°ÃæÌáµ½¶øÇÒ¹¤¾ß±¾ÉíÒ²²»Ò»¶¨·Ç³£ÖÇÄÜÏëÒ»ÏëÄÇôËü»¹ÓÐÓÅ»¯µÄÓàµØÂðÎÊÌâ×Ü»áÔ½À´Ô½¶àÔÚÕâÖÖÇé¿öÏÂÁ˽âÎÒÃǵÄÉè¼ÆÊÇÈçºÎʵÏÖµÄÈç½øÎ»Á´IOB中的register等如果没有如修改代码或者是一个非常行之有效的手段只有工具与大脑完美结合主要目的是想让读者知道了解FPGA器件结构对做好FPGA设计有多么重要可参见一书3.1器件结构对Coding Style的影响3.1.1 FPGA结构Altera 的FPGA一般的结构都是由一些CLB 的宏单元组成LUT时序单元如Altera 的FPGA和Xilinx的FPGA都采用4输入的查找表Component的延时是固定的我们知道对FPGAÈçÀûÓÃÁ˶àÉÙ¼¶µÄ²éÕÒ±íÏßÑÓʱÔò·´Ó³ÔÚCLB与CLB的互连上就需要越长的互连线在FPGA中如进位链等目的是减少对CLB数目的使用如Virtex 系列中但不占用LUT的资源可以用来实现快速进位的加法器或宽输入的函数因此就应该考虑如何更好地利用FPGA器件中的这些特点或标准单元其线延时不象FPGA那样因此深亚微米级时但更多的是与门因此3.1.3 Coding Style的对比由于器件结构的不同针对ASIC和FPGAFPGA器件的设计性能很大程度依赖于Coding ¶ÔGate Array或shandard cellÉè¼ÆÒ²²»±ØÒªÇóºÜ¸ßµÄCoding 技术66M 就很容易实现我们很少看见几十层逻辑级的设计8 级逻辑级一般只能实现到50M左右因此要达到高速和好的性能则需要好的代码风格和好的设计策略那就是提到Code Style 时往往忽略了对器件结构的了解对FPGA而言是以减少LUT的个数为主要手段不一定能提高速度和降低面积注意门数和面积不一定成正比至于为什么自然会明白可提供如下功能提供更高密度的FPGA资源xc2v40xc2v10000最高支持420M内部时钟频率和840Mb/s 的I/O支持19 种 single-ended 标准的IO 和 9种差分IO 标准VirtexII 具有XCITE 功能IOB中集成了DDR 寄存器支持可编程的sink current在RAM上 对外RAM接口性能提高400M b/s DDR-SDRAM 接口400Mb/s FCRAM 接口333Mb/sQDR-SRAM 接口600Mb/s Sigma RAM 接口567ÔöÇ¿ÁËÒÔÍùDLL 功能16个全局时钟8.15um 技术3.3 结构概述VirtexII 器件结构示意图如下3 VirtexII 结构示意图VirtexII 器件在结构上与Virtex 和VirtexE 是相似的但增加了一个专有乘法器结构在IOB 和CLB 中也有点不同3.3.1 CLBVirtexII 的CLB 与Virtex Family 和VirtexE Family 结构有点不一样在结构的安排上如下示意图Xilinx篇图4 VirtexII 的CLB结构示意图与以往不同的是4个Slice 按照如上图的阵列排布GRM在CLB中保证4个slice 之间快速的互联每列两个slice µ«Á½Áй²ÓÃÒ»¸öÒÆÎ»Á´3.3.2 SliceSlice基本元件包括G函数FFX一般用做D触发器另外Slice中还集成了carry logicmultiplexers等元件高性能电路图5 SLICE结构示意图内部公开请输入文档编号FPGA设计高级技巧值得大家注意的是由于设计者没有注意利用Slice中的一些高速特性或者FPGA资源实际利用率不高图6 VirtexII 的Slice 结构图VirtexII 的Slice 增加了不少的结构3.3.3 LUT每个Slice 包含两个4输入的LUT4000系列的功能也就是当做组合逻辑电路这两个功能在随后的章节会详细介绍它的4个输入G1F函数F4通过对RAM中各存储单元进行配置4输入任意组合逻辑这本身就是它原来的特点也可配置成双端口RAM1与此有关详情参见本章部分要提醒大家注意的是不管你是几输入的函数还可参见本章补充说明部分SRL从而大大节省线延时和面积如下图所示CLB的4个Slice的的SRL16移位输出可串成一个大的移位链LUT的MC15就是移位的输出作为F函数移存器的shiftin图7 SRL的移位链在使用SRL时请注意一个Shift Registers LUT只能有一个数据输出和一个数据输入VirtexII 的Slice 增加了MUXF7MUXF5F的输出可在一个CLB中实现4选一的MUXMUXFX MUXF7ÊäÈëΪFXINA输出为FX F7或F8要看Slice 具体位置用于MUX相邻两个Slice 的MUXF5的输出X1Y0两个Slice 的MUXFX可例化成MUXF6两个Slice¼´¿ÉÔÚÒ»¸öCLB中实现8选1的MUXMUXF7Òò´ËÖ»ÄÜÊÇX0Y1 这个Slice 的MUXFX可例化成MUXF7ʵÏÖ´óÓÚ8选1的MUX般工具无法直接利用该功能但通过F7可在一个CLB 中的4个Slice 实现一个16选1 的MUX用于MUX 相邻两个Slice 的F7通过MUXF8实现更宽的函数MUXF5FFF F 图8 VirtexII 的MUXFX 连接图3.3.6 Carry Logic 和Arithmetic Logic GatesArithmetic Logic Gates 包括一个XOR 和一个MULTIAND VirtexII 的Slice 结构图与基本Slice 中的进位链结构一样数据流从下往上进位链结构如下图所示图9 进位链结构示意图下图是一个采用进位链实现3bit全加器示意图图10 使用进位链实现加法器采用进位链如下图所示图11 使用进位链级联实现高速宽函数运算由于乘法器可看成累加器使用专有进位链还可实现乘法器与以往的器件不同的是如下图所示图12 VirtexII 的两个独立进位链注意3.3.7 SOPVirtexII 的每个Slice 中有一个OR 用于把Slice 中的进位链在水平方向上级联起来灵活的SOP链内部公开请输入文档编号FPGA设计高级技巧图13 VirtexII 的SOP 链上图中横向的ORCY连接成4输入的或门只是提供了4个attribute SRLOW前两者用于描述SR¿ØÖƵĸ´Î»ÊôÐÔ后两者用于描述在没有外部复位信号时configuration 或通过全局的GSR网络复位为0或为1´æ´¢µ¥Ôª½á¹¹ÈçÏÂʾÒâ14 FFX/FFY结构示意图上图的DY是G函数发生器输出信号Y在Slice 外部直接反馈进来的信号VirtexII 的Slice 结构示意图当配置成单端RAM时当配置成双端RAM时且是一端口可读可写一个VirtexII的CLB含4个Slice下面两图是Distributed RAM的应用例子图15 单端口32x1 RAM图16 双端口16x1 RAM3.4.2 Block RAMVirtexII 的Block RAM资源比以往的增加很多在整个VirtexII 系列中4列或6列的规律进行分布图17 VirtexII 的Block RAM 分布规律其中的N 等于该器件CLB的列数除以4±í2 VirtexII 的BlockRAM 分布表由于块RAM有18bit ÿ¸ö¶Ë¿Ú¿ÉÅä³ÉÈçϽṹ表3 带奇偶校验位的Block RAM 配置表VirtexII 的block RAM支持三种写模式new data is written 图18 Write first 模式Read first图19 Read first 模式NO CHANGE图20 No Change 模式关于Block RAM 更多的内容sp_block_mem.pdf3.5 乘法器资源VirtexII 系列提供有专门的乘法器结构VirtexII 的乘法器资源分布图与Block RAM 的分布图一样共用4个 开关矩阵内部公开请输入文档编号FPGA 设计高级技巧图21 乘法器与Block RAM器件中乘法器位置如下图图23 乘法器块乘法器可实现高速的低工耗的乘法器速度如下表Xilinx篇表4 VirtexII 乘法器速度表3.6 IOB一般的IOB I/Obuf存储单元包括输出寄存输入三态控制线也可以不经过寄存IOB中提供5中I/O Buf IBUF输出buf OBUFT双向buf IBUFGVirtex II 的IOB 基本结构与基本的IOB一样增加了一些IO标准和DCI功能IOB的位置有较大的改变VirtexII的所有用户IO 可配成差分信号因此5个IOB共用一个开关矩阵如下示意图图24 VirtexII的IOBVirtexII的IOB与基本的IOB结构相似I/Obuf 和输入延时线DELAY构成用于实现DDRÁ½¸ö´æ´¢µ¥ÔªÍ¨¹ýDDR MUX来实现DDRÒªÇóͨ¹ýDCM来产生DDR的正反沿时钟信号图25 VirtexII 的IOB中的DDR具体的结构如下26 VirtexII 的IOB 实际结构3.6.2 Select I/OVirtexII 的Select I/O 支持的标准有所增加每个banks 提供VRN和VRP参考电压VirtexII 提供19 种signal-ended IO 标准--LVTTL, LVCMOS (3.3V, 2.5V, 1.8V, and 1.5V)--PCI-X at 133MHz, PCI (3.3V at 33MHz and 66MHz)--GTL, GTLP--HSTL (Class I, II, III, and IV)--SSTL (3.3V and 2.5V, Class I and II)--AGP-2X提供如下的差分标准VirtexII 集成了DCI功能在芯片内部提供IO管脚的特定匹配电阻简化单板设计3.7 Clock ResourceVirtexII 的时钟资源比以往增加了很多如果想要了解更多的信息Virtex³õ¸å8个分布在芯片的顶部这些时钟管脚还可以当作普通管脚使用以顶部时钟为例由开关矩阵切换出16个时钟信号线16根时钟信号线通过8个时钟MUXÓëµ×²¿µÄ8个全局时钟信号组成全芯片的16个全局时钟信号图27 VirtexII 的Clock Pads具体的结构如下图各有一个开关矩阵8个时钟信号连到顶部的开关矩阵切换出16个时钟信号连到下面的8个时钟MUX 上28 VirtexII 的时钟在VirtexII 的器件中可以保证芯片的4个区域内最多都可以获得8个全局时钟信号在安排时钟管脚时必须考虑一下图29 VirtexII 的时钟资源分布原理3.7.2 CLK MUX在VirtexII 的器件中因此全局时钟资源可由时钟管脚BUFGMUX 的结构如下顶部Xilinx篇图30 VirtexII 的BUFGMUX该BUFGMUX 可有如下几种配置即普通的全局时钟BUFͼ31 VirtexII 的BUFGBUFGCE如下结构图图32 VirtexII 的BUFGCEBUFGMUX如下结构图内部公开请输入文档编号FPGA设计高级技巧图33 VirtexII 的BUFGCE3.7.3 DCMVirtexII 器件结构对Virtex 的DLL做了增强Digital Clock Manager DCM一般分布在芯片的底部和顶部如下画出V2250芯片的8个DCM4个在底部图34 VirtexII 250 的DCM 位置VirtexII 系列器件的DCM分布表如下表5 VirtexII 的DCM分布表VirtexII 的DCM 的符号如下35 VirtexII 的DCMDCM是对DLL的增强DLL延时锁相环通过该延时锁相环可保证DCM的输入DPS数字相移器DFS数字频率合成器DSS数字扩频本节所有内容来自个人推测3.8.1 LUT 如何配置成组合逻辑电路门数增加但资源占用减少之谜前面本文提到它的4个输入其实是RAM 的地址线它是怎么实现组合电路的呢以LUT 中的F函数为例F3F= F4F2F4F2表示非运算.or时1其它的值都是F4与门F4LUTÎÒÃÇÖ»Òª½«µØÖ·Îª和的存储单元置为则该RAM 的功能实际就是F3与门在实际实现时111111101ͬʱF1固定接或我们可以得出结论在实际实现时都会变成4输入的组合电路对于在一个LUT 内可以实现的组合电路对LUT 而言3. 只要是在一个LUT 内实现的逻辑逻辑延时基本一样面积优化对Xilinx 而言根据上述结论如果想速度更快而不是逻辑级数则应当努力减少LUT 的个数这一点与ASIC 设计完全不一样内部公开请输入文档编号FPGA设计高级技巧图36 门数增加但资源占用减少我们知道一个LUT 只有一个输出后面的2个三输入或门要各占用一个LUTLUT 级数是2级虽然增加了一个2输入与门也是2级它只占用2个LUTÏÔÈ»ÃÅÊýÔö¼Óµ«×ÊÔ´Õ¼ÓüõÉÙµäÐͰ¸ÀýÎÒÃÇÖ»ÒªÕÆÎÕÁ˵¥¶Ë¿ÚRAM本节以单端口RAM 为例进行说明Xilinx篇图37 完整的单端口Block Select RAM上图是一个完整的单端口RAM结构我们这里准备讲的单端口RAM是上图中的核心部分Block MemoryËüµÄдÓÐÈýÖÖ²Ù×÷ģʽRead FirstNo Change根据其输入输出信号相位关系图38 Read first mode图39 Write first mode图40 No-read-on-write mode图中可以等价看成Distributed RAM¾-³£Óöµ½ËÙ¶È»òÃæ»ýÎÊÌâÉè¼ÆÒªÃ´ËٶȲ»Âú×ãÒªÇó»òÕßÁ½Õß¶¼²»Âú×ãÉè¼ÆÒªÇó±¾ÕÂ×ÅÖØ´ÓËٶȺÍÃæ»ý½Ç¶È³ö·¢ÒÔ»ñµÃ×î¼ÑµÄЧ¹ûÓÐЩ·½·¨ÊÇÒÔÎþÉüÃæ»ýÀ´»»È¡ËÙ¶ÈÒ²ÓÐЩ·½·¨¿Éͬʱ»ñµÃËٶȺÍÃæ»ýµÄºÃ´¦Ó¦µ±ÒÀ¾Ýʵ¼ÊÇé¿ö¶ø¶¨向关键路径要时间部分为了获得更高的速度尽量压缩线延时在非关键路径上尽量优化电路结构特别提醒本文提到的一些设计技巧可能在绝大部分情况下已经失效在一些复杂电路因此是为了让大家在遇到困难时可以尝试本文所提供的设计技巧注意本章节所举的代码都采用的是VHDL语言我们认为语言是次要的另外可参见每一个VHDL信号赋值每个信号代表一条信号线能将不同的实体连接起来下面的VHDL实例为加法器的进位链电路的两种可能的描述串行进位链-- A is the addend-- B is the augend-- C is the carry-- Cin is the carry inC0 <= (A0 and B0) or((A0 or B0) and Cin);C1 <= (A1 and B1) or((A1 or B1) and C0);图41 串行进位例并行结构c1 <= g1 or (p1 and g0) or(p1 and p0 and cin);图42 超前进位显然但面积大但面积小从其实现结构来看由于进位链是FPGA的专有资源4.1.2使用圆括号处理多个加法器控制设计结构的另一种方法是使用圆括号来定义逻辑分组例图43 串行加法电路用圆括号重新构造的加法器分组如下所示Z <= (A + B) + (C + D);图44 并行加法电路上述两种方法的在速度和面积上的区别是第一种方法但整体速度慢如果信号D 是关键路径或者BD无关第二种方法但整体速度快BD的时序要求都比较苛刻4.2IF 语句和Case 语句而Case 语句生成的逻辑是并行的IF 语句可以包含一套不同的表达式通常但占用面积较大IF-Else 结构速度较慢如果对速度没有特殊要求则可用IF-Else 语句完成编解码为了避免较大的路径延时用IF 语句实现对延时要求苛刻的路径时Critical Signal有时可以将IF 和Case 语句合用用IF-Then-Else 完成8选1多路选择器MUX6to1:process(sel,in)beginif(sel= "000") then out <= in(0); elseif(sel = "001") then out <= in(1); elseif(sel = "010") then out <= in(2); elseif(sel = "011") then out <= in(3); elseif(sel = "100") thenout <= in(4);else out <= in(5); end if;end process;内部公开请输入文档编号FPGA设计高级技巧图45 if-else 完成多路选择下面的例子是用Case 语句完成8选1多路选择器的VHDL 实例Virtex 可以在单个CLB 中完成一个8选1的多路选择器因此例process( C, D, E, F, G, H, I, J, S )begin case S iswhen 000 => Z <= C;when 001 => Z <= D;when 010 => Z <= E;when 011 => Z <= F;when 100 => Z <= G;when 101 => Z <= H;when 110 => Z <= I;when others => Z <= J; end case;end process;图46 case 语句完成电路选择4.3 减少关键路径的逻辑级数在FPGA 中critical pathΪÁ˱£Ö¤ÄÜÂú×ãʱ¼äÔ¼Êø¼õÉٹؼü·¾¶ÑÓʱµÄ³£Ó÷½·¨ÊǸø×î³Ùµ½´ïµÄÐźÅ×î¸ßµÄÓÅÏȼ¶ÏÂÃæµÄʵÀýÃèÊöÁËÈçºÎ¼õÉٹؼü·¾¶ÉϵÄÂß¼-¼¶ÊýÇ°ÃæÌáµ½µÄ´®Ðмӷ¨Æ÷Ò²ÊÇÒ»¸ö°¸Àý4.3.1 通过等效电路此例中critical 信号经过了2级逻辑if (clk'event and clk ='1') then内部公开请输入文档编号FPGA设计高级技巧if (non_critical='1' and critical='1') thenout1 <= in1;elseout1 <= in2;end if;end if;图47 critical信号经过2级逻辑为了减少critical路径的逻辑级数critical信号只经过了一级逻辑图48 critical信号只经过一级逻辑注意4输入LUT特点但对ASIC而言4.3.2调整if语句中条件的先后次序设计者习惯用if语句来描述电路功能也采用有优先级概念的if语句来描述If 条件1 thenDo action1Else if 条件2 thenDo action2Else if 条件3 thenDo action3在实际情况中条件2ÔòÉÏÊöif语句无所谓谁优先是关键路径应当改成提高设计速度前面提到即便是在没有优先级的电路中例如信号置1Else if 条件2 then信号置0Else if 条件3 then信号置1Else if 条件4 then信号置0如果上述条件没有优先级我们建议合并if语句中各条件否则下面的VHDL实例说明如何使用资源共享来减少逻辑模块的数量没有资源共享时用了4个加法器完成if (...(siz = "0001")...) thencount <= count + "0001";else if (...((siz = "0010")...) thencount <= count + "0010";else if (...(siz = "0011")...) thencount <= count + "0011";else if (...(siz == "0000")...)thencount <= count + "0100";end if;利用资源共享可以节省2个加法器if (...(siz = "0000")...) thencount <= count + "0100";else if (...) thencount <= count + siz;end if;例if (select = '1') thensum<=A +B;elsesum<=C +D;end if;图49 资源共享前利用资源共享只用2个选择器和1个加法器实现if (sel ='1') thentemp1 <=A;temp2 <=B;elsetemp1 <=C;temp2 <=D;end if;sum <= temp1 + temp2;图50 资源共享后运算符占用更多的资源综合工具必须对所有的条件求值综合工具用4个加法器和一个选择器实现req²Å½¨Òé²ÉÓÃÕâÖÖ·½·¨end if;end loop;图51 资源共享前4个加法器如果信号不是关键信号这样在执行加法运算前修改代码如下for i in 0 to 3 loopif (req(i)='1') thenoffset_1 <= offset(i);end if;end loop;sum <= vsum + offset_1;图52 资源共享后一个加法器4.5.3子表达式共享一个表达式中子表达式包含2个或更多的变量应共享这些运算通过声明一个临时变量存储子表达式下面的VHDL实例描述了用相同的子表达式完成一组简单的加法运算4.5.4 综合工具与资源共享通过设置FPGA CompilerII/FPGA Express的相应选项而不需声明一个临时变量存储子表达式如下sum1 <= A + B + C;sum2 <= D + A +B;sum3 <= E + (A +B);则sum1和sum3 可共享(A +B),但与sum2不共享3. 必须在同一block中如下但与S1不可共享最好尽量自行编写共享资源代码所采用的综合工具在FPGA 阶段和转ASIC 阶段可能不同PipeliningËüµÄ»ù±¾Ë¼ÏëÊǰÑÔ-À´±ØÐëÔÚÒ»¸öʱÖÓÖÜÆÚÄÚÍê³ÉµÄ²Ù×÷·Ö³É¶à¸öÖÜÆÚÍê³ÉÒò´ËÌá¸ßÁËÊý¾ÝÍÌÍÂÁ¿ËùÒÔ¶ÔFPGA 设计而言而又不耗费过多的器件资源采用流水线后必须特别考虑设计的其余部分在定义这些路径的延时约束时必须特别小心其延时为源触发器的clock-to-out 时间多级逻辑的走线延时和目的寄存器的建立时间之和采用流水线最终的结果是系统的工作频率提高了采用流水线前的电路内部公开请输入文档编号FPGA设计高级技巧process(clk, a, b, c) begin if(clk'event and clk = '1') thena_temp <= a;b_temp <= b;c_temp <= c;end if;end process;Process(clk, a_temp, b_temp, c_temp)beginif(clk'event and clk = '1') thenout <= (a_temp * b_temp) + c_temp;end if;end process;图53 采用流水线之前电路结构例Xilinx篇c_temp2 <= c_temp1;end if;end process;process(clk, mult_temp, c_temp2)beginif(clk'event and clk = '1') thenout <= mult_temp + c_temp2;end if;end process;图54 采用流水线之后的电路结构4.7组合逻辑和时序逻辑分离包含寄存器的同步存储电路和异步组合逻辑应分别在独立的进程中完成这样在综合后面积和速度指标较高Mealy状态机的基本结构如下图所示图55 Mealy状态机的基本结构内部公开请输入文档编号FPGA设计高级技巧由图可看出当前状态寄存器和输出逻辑三部分组成当前状态寄存器为时序逻辑Mealy 机可由三个进程实现例Xilinx篇。
FPGA设计技巧与案例开发详解FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,它可以根据用户的需求重新配置其内部的电路结构,从而实现不同的功能。
在FPGA设计中,有一些技巧和案例开发的经验可以帮助设计者提高设计效率和设计质量。
本文将详细介绍一些常用的FPGA设计技巧和案例开发的方法。
一、FPGA设计技巧1. 合理分配资源:FPGA拥有有限的资源,包括逻辑单元(LUTs)、寄存器、DSP(Digital Signal Processing)等。
在设计过程中,需要合理分配这些资源,以充分利用FPGA的性能。
可以通过对设计进行优化,如减少逻辑层数、使用更小的数据宽度等,来减少资源的使用。
2.使用IP核:FPGA提供了许多现成的IP核,如UART、SPI、I2C等。
使用这些IP核可以减少设计的复杂性,加快设计的速度。
同时,使用IP核还可以提高设计的可重用性,便于后续的维护和升级。
3.时序约束:FPGA设计中的时序是一个重要的考虑因素。
通过合理设置时序约束,可以确保时序要求的满足,避免出现时序失效的问题。
时序约束包括时钟频率、时钟延迟、数据到达时间等方面的要求。
4.时钟域划分:在FPGA设计中,会存在多个时钟域的情况。
为了确保时钟域之间的同步和数据的正确流动,需要进行时钟域划分。
可以使用时钟域划分器件(如时钟分频器、时钟锁相环等)来实现时钟域的划分和同步。
5.状态机设计:FPGA设计中经常会使用状态机来实现复杂的控制逻辑。
在状态机设计中,需要考虑状态的转移条件、状态的数量、状态的稳定性等因素。
合理设计状态机可以使设计更加简洁、高效。
1. UART通信:UART(Universal Asynchronous Receiver Transmitter)是一种常用的串行通信接口。
在FPGA设计中,可以使用UART实现FPGA与外部设备的通信。
具体实现过程包括接收和发送数据的时序控制、数据格式的解析等。
目前FPGA芯片仍是基于查找表技术的,但其概念和性能已经远远超出查找表技术的限制,并且整合了常用功能的硬核模块(如块RAM、时钟管理和DSP)。
图1-1所示为Xilinx公司FPGA的内部结构示意图(由于不同系列的应用场合不同,所以内部结构会有一定的调整),从中可以看出FPGA芯片主要由 6部分组成:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
图1-1 FPGA芯片的内部结构每个模块的功能如下:1.可编程输入输出单元(IOB)可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,提供输入缓冲、输出驱动、接口电平转换、阻抗匹配以及延迟控制等功能,其一般示意结构如图1-2所示。
FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。
通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。
目前,I/O口的频率也越来越高,一些高端的FPGA 通过DDR寄存器技术可以支持高达2Gbps的数据速率。
外部输入信号可以通过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个输入、一些选型电路(多路复用器等)和触发器组成。
FPGAxilinx开发环境Vivado介绍Zynq7000中PS和PL进⾏协同⼯作,其性能架构需要更好的开发⼯具和⼿段。
为提⾼设计效率,简化设计流程,Xilinx推出了以知识产权((Intellectual Property,IP)和系统为中⼼的Vivado设计套件[25-27]。
该套件包括硬件平台设计和开发⼯具Vivado IDE(Vivado Itegrated Development),嵌⼊式开发⼯具Xilinx SDK(Software Development Kit)以及⾼层次综合Vivado HLS(High-Level Synthesis)。
为更好的理解基于Zynq7000的软硬件协同设计流程,⾸先对上述开发⼯具进⾏介绍:(1)Vivado IDE:Vivado IDE将寄存器传输级(Register-Transfer Level,RTL)的电路设计和基于IP核的系统级设计集成在⼀个设计环境中,并且提供了IP集成器和IP封装器等⾼效的设计⼯具,⽤户可以直接调⽤套件提供的IP核,也可以根据⾃⾝需求编写RTL代码,利⽤IP封装器封装后直接例化使⽤。
为⽅便⽤户设计,Vivado IDE⽀持MicroBlaze软处理器的总线接⼝和IP端⼝⾃动连接,编译综合后可直接⽣成PS配置⽂件和PL⽐特流⽂件。
(2)Xilinx SDK:SDK是基于Eclipse平台开发的软件设计⼯具,⽀持Zynq7000系列器件。
SDK⽀持C或C++语⾔,为所有IP核提供驱动程序。
并且SDK内部配备各种软件调试⼯具,⽀持断点设置、单步调试以及内存监控等功能,可以与Vivado IDE内部的集成逻辑分析仪(Integrated Logic Analyzer,ILA)协同调试,提⾼了软硬件协同处理系统的设计效率。
(3)Vivado HLS:Vivado HLS是⼀种算法级的设计⼯具,⽀持C或C++等⾼级编程语⾔。
该⼯具可将实现算法的⾼级编程语⾔转化为RTL 级硬件电路。
7020fpga开发步骤7020FPGA开发步骤FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以通过编程来实现不同的电路功能。
而7020FPGA是一款由Xilinx公司生产的高性能FPGA芯片。
在进行7020FPGA开发时,有一系列的步骤需要遵循。
本文将介绍7020FPGA开发的基本步骤。
1. 硬件准备在开始7020FPGA开发之前,首先需要准备相应的硬件设备。
主要包括7020FPGA开发板、电源适配器、数据线等。
确保硬件设备的正常连接和供电是开发的基础。
2. 硬件描述语言编程硬件描述语言(Hardware Description Language,HDL)是一种用于描述硬件行为的语言。
常用的HDL包括VHDL和Verilog。
选择一种适合自己的HDL,并进行相应的编程工作。
在编程时,需要了解7020FPGA的架构和资源分配情况,合理利用FPGA的资源。
3. 设计电路根据实际需求,设计相应的电路。
可以通过画图工具进行电路图设计,也可以直接在HDL中进行电路描述。
设计电路时需要考虑电路的功能、时序、资源占用等因素。
4. 仿真验证在将电路烧录到FPGA之前,需要进行仿真验证。
通过仿真可以验证电路的功能和时序是否符合设计要求。
可以使用仿真工具对设计的电路进行功能仿真和时序仿真,确保电路的正确性。
5. 约束文件设置在将电路烧录到FPGA之前,需要进行约束文件的设置。
约束文件用于描述电路的时序和资源约束,确保FPGA能够正确地实现设计的功能。
约束文件的设置需要根据具体的FPGA芯片和设计要求来进行。
6. 综合与实现综合是将HDL代码转换为逻辑网表的过程,而实现是将逻辑网表映射到FPGA的过程。
在进行综合与实现时,需要选择合适的综合工具和实现工具,并进行相应的设置。
综合与实现的过程中,会生成相应的bitstream文件,用于烧录到FPGA中。
7. 烧录与调试将生成的bitstream文件烧录到FPGA中。
Xilinx Kintex-7FPGA KC705评估开发方案Xilinx公司的7系列FPGA包括Artix™-7,Kintex™-7和Virtex®-7三个系列,具有超高端连接带宽,逻辑容量和信号完整性,提供低成本,小型尺寸和大容量的要求最严格的高性能应用.其中的Kintex-7FPGA具有最高的性价比,其所组成的收发器从600Mbps到最高的6.6Gbps,高达到28.05Gbps,主要用在航空电子,LED背光的平板电视和3D TV,LTE基带,手持超声设备,多模式无线电,Prosumer数码单反照相机和视频IP网关.本文介绍了7系列FPGA主要特性, Kintex-7FPGA系列主要特性和应用优势,以及评估板KC705主要特性,方框图,评估板KC705主要元件,配置电路图,详细电路图和材料清单.Xilinx®7series FPGAs comprise three new FPGA families that address the complete range of system requirements,ranging from low cost,small form factor,cost-sensitive,high-volume applications to ultra high-end connectivity bandwidth,logic capacity,and signal processing capability for the most demanding high-performance applications.The7series devices are the programmable silicon foundation for Targeted Design Platforms that enable designers to focus on innovation from the outset of their development cycle.The7series FPGAs include:•Artix™-7Family:Optimized for lowest cost and power with small form-factor packaging for the highest volume applications.•Kintex™-7Family:Optimized for best price-performance with a2X improvement compared to previous generation,enabling a new class of FPGAs.•Virtex®-7Family:Optimized for highest system performance and capacity with a2X improvement in system performance.Highest capability devices enabled by stacked silicon interconnect(SSI)technology.Built on a state-of-the-art,high-performance,low-power(HPL),28nm,high-k metal gate (HKMG)process technology,7series FPGAs enable an unparalleled increase in system performance with2.9Tb/s of I/O bandwidth,2million logic cell capacity,and5.3TMAC/s DSP, while consuming50%less power than previous generation devices to offer a fully programmable alternative to ASSPs and ASICs.All7series devices share a unified fourthgeneration Advanced Silicon Modular Block(ASMBL™)column-based architecture that reduces system development and deployment time with simplified design portability.7系列FPGA主要特性:•Advanced high-performance FPGA logic based on real6-input lookup table(LUT)technology configurable as distributed memory.•36Kb dual-port block RAM with built-in FIFO logic for on-chip data buffering.•High-performance SelectIO™technology with support for DDR3interfaces up to1,866Mb/s.•High-speed serial connectivity with built-in multi-gigabit transceivers from600Mb/s to maximum rates of6.6Gb/s up to28.05Gb/s,offering a special low-power mode,optimized for chip-to-chip interfaces.•A user configurable analog interface(XADC),incorporating dual12-bit1MSPS analog-to-digital converters with on-chip thermal and supply sensors.•DSP slices with25x18multiplier,48-bit accumulator,and pre-adder for high performance filtering,including optimized symmetric coefficient filtering.•Powerful clock management tiles(CMT),combining phase-locked loop(PLL)and mixed-mode clock manager(MMCM)blocks for high precision and low jitter.•Integrated block for PCI Express®(PCIe),for up to x8Gen3Endpoint and Root Port designs.•Wide variety of configuration options,including support for commodity memories,256-bit AES encryption with HMAC/SHA-256authentication,and built-in SEU detection and correction.•Low-cost,wire-bond,lidless flip-chip,and high signal integrity flipchip packaging offering easy migration between family members in the same package.All packages available in Pb-free and selected packages in Pb option.•Designed for high performance and lowest power with28nm,HKMG,HPL process,1.0V core voltage process technology and0.9V core voltage option for even lower power.7系列FPGA特性比较表:Kintex-7FPGA系列主要特性:Kintex-7FPGA系列主要应用和特点: Application DescriptionAvionics Kintex-7FPGA price-performance drives SWAP-C benefits for aircraft video data bus systems.LED Backlit Flat Panel Displays and3DTV Kintex-7FPGA offers capabilities that enable flat panel display manufacturers to improve image quality,reduce power consumption,and reduce cost.LTE Baseband Meet stringent latency requirements and enable a common platform supporting Multiple Air Interface Standards such as LTE,WiMAX, and CDMA in a single component with Kintex-7FPGA.Portable Ultrasound High I/O bandwidth and DSP processing power make Kintex-7 FPGAs highly effective for both front and back-end Ultrasound Processing.Multi-mode Radio Kintex-7FPGAs help you to reduce cost and power consumption, deliver scalable platforms,and support multiple air interface standards.Prosumer Digital SLR Cameras Kintex-7FPGA enables manufacturers of Prosumer Digital SLR cameras to implement control functions in auto-focus lenses and rapidly deploy enhancements in camera body controller/image processing ASICs.Video over IP Gateway Reduce cost for Video over IP Gateways by integrating four3:1, 3G-SDI-to-10GbE bridges in a single FPGA.1.Kintex-7FPGA系列在LTE通信应用Kintex-7FPGAs offer the best price-performance so designers can meet stringent latency requirements for LTE baseband processing in a common platform.•Programmability enables a cost-effective common platform supporting multiple air interfaces such as LTE,WiMAX,and WCDMA•Reduce total cost of ownership with the ability to scale and reuse designs from picocell to macrocell•3x capacity at the same cost of previous-generation FPGAs while consuming40%less power•Support for9.8Gbps CPRI/OBSAI for high throughput•Support for6.144Gbps CPRI/OBSAI in a low-cost package option图1.Kintex-7FPGA单片LTE通信基带框图(2x4MIMO)2.Kintex-7FPGA系列在医疗电子应用Support for 6.144Gbps CPRI/OBSAI in a low-cost package optionHigh I/O bandwidth and 144GMACS DSP processing power in chip-scale packaging make the Kintex-770T FPGA highly effective for both front-and back-end ultrasound processing.Designers can deploy a fully programmable128-channel ultrasound implementation that scales up to196or256channels for high-end cart solutions or down to64or32channels for hand-held solutions.•128-channel implementation in a modular set of five Kintex-770T FPGAs offers44%lower power,45%lower cost,and57%smaller form factor compared to previous-generation FPGAs•Kintex-770T FPGAs offer144GMACS from240DSP slices(288GMACS for symmetric filters)•Built-in support for eight PCI Express Gen1/Gen2channels enables high-bandwidth interface to host system•Chip-scale packaging for small form factor图2.Kintex-7FPGA系列在手持超声设备的应用框图3.Kintex-7FPGA系列在广播设备的应用Kintex-7FPGAs enable cost-effective,low-power bridging of the serial digital interface(SDI) protocol onto IP technology for long-distance WAN transport to link local studios/live events, broadcast facilities,and satellite uplink stations using standard IP networks.•Reduce power by64%and reduce cost by85%with a single XC7K160T FPGA implementation of a12x3G-SDI over4x10GbE bridge compared to the equivalent function implemented in two Virtex-6XC6L130T devices•Reduce cost further with high-bandwidth interfaces that shrink BOM:72-bit x1,600Mbps DDR3 memory interface capability enables a single memory buffer that would require two or four memory buffers in previous-generation FPGAs图3.Kintex-7FPGA系列在视频IP网关的应用框图Kintex-7FPGA系列评估板KC705The KC705evaluation board for the Kintex™-7FPGA provides a hardware environment for developing and evaluating designs targeting the Kintex-7XC7K325T-2FFG900C FPGA.The KC705board provides features common to many embedded processing systems,including a DDR3SODIMM memory,an8-lane PCI Express®interface,a tri-mode Ethernet PHY,general purpose I/O,and a UART interface.Other features can be added by using mezzanine cards attached to either of two VITA-57FPGA mezzanine connectors(FMC)provided on the board. High pin count(HPC)and low pin count(LPC)FMCs are provided.评估板KC705主要特性:•Kintex-7XC7K325T-2FFG900C FPGA•1GB DDR3memory SODIMM•128MB Linear BPI Flash memory•128Mb Quad-SPI Flash memory•Secure Digital(SD)connector•USB JTAG via Digilent module•Clock Generation•Fixed200MHz LVDS oscillator(differential)•I2C programmable LVDS oscillator(differential)•SMA connectors(differential)•SMA connectors for GTX transceiver clocking•GTX transceivers•FMC HPC connector(four GTX transceivers)•FMC LPC connector(one GTX transceiver)•SMA connectors(one pair each for TX,RX and REFCLK)•PCI Express(eight lanes)•Small form-factor pluggable plus(SFP+)connector •Ethernet PHY SGMII interface(RJ-45connector)•PCI Express endpoint connectivity•Gen18-lane(x8)•Gen28-lane(x8)•SFP+Connector•10/100/1000tri-speed Ethernet PHY•USB-to-UART bridge•HDMI codec•I2C bus•I2C MUX•I2C EEPROM(1KB)•USER I2C programmable3.3V LVDS oscillator•DDR3SODIMM socket•HDMI codec•FMC HPC connector•FMC LPC connector•SFP+connector•I2C programmable jitter-attenuating precision clock multiplier •Status LEDs•Ethernet status•Power good•FPGA INIT•FPGA DONE•User I/O•USER LEDs(eight GPIO)•User pushbuttons(five directional)•CPU reset pushbutton•User DIP switch(4-pole GPIO)•User SMA GPIO connectors(one pair)•LCD character display(16characters x2lines)•Switches•Power on/off slide switch•Configuration mode DIP switch•VITA57.1FMC HPC Connector•VITA57.1FMC LPC Connector•Power management•PMBus voltage and current monitoring via TI power controller •XADC header•Configuration options•Linear BPI Flash memory•Quad SPI•USB JTAG configuration port•Platform cable header JTAG configuration port图4.评估板KC705方框图图5.评估板KC705外形图评估板KC705主要元件:图6.评估板KC705配置电路图。
fpga现代数字系统设计教程——基于xilinx可编程逻辑在当今的数字系统设计领域中,基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)技术的应用日益普遍。
Xilinx是其中一家领先的FPGA厂商,其可编程逻辑芯片被广泛应用于各个领域。
本教程旨在介绍FPGA现代数字系统设计的基本概念与技术,重点关注基于Xilinx可编程逻辑的实践应用。
一、引言FPGA是一种可重构的硬件平台,具有高度的灵活性与可定制性。
通过不同的配置,FPGA可以实现各种数字电路功能,比如逻辑运算、数字信号处理、嵌入式系统等等。
Xilinx提供了一套完整的开发工具与设计流程,使得FPGA的设计与实现更加高效与简便。
二、FPGA基础知识介绍1. FPGA的基本结构与工作原理在FPGA中,逻辑资源(如逻辑门、寄存器)通过可编程的内部连接资源相互连接,形成不同的数字电路。
FPGA采用按位编程的方式,通过配置存储器将逻辑连接进行设定,从而实现不同的功能实现。
2. Xilinx系列FPGA概述Xilinx公司生产的FPGA主要分为Artix、Kintex、Virtex等系列,每个系列有不同的性能与资源规模适用于不同的应用场景。
本节将介绍主要的Xilinx系列FPGA及其特点。
三、FPGA设计实践1. 集成开发环境(Integrated Development Environment,IDE)概述设计FPGA系统需要使用特定的软件工具,例如Xilinx提供的Vivado开发环境。
本节将介绍Vivado的基本功能与使用方法。
2. 基于Xilinx可编程逻辑的数字电路设计通过Vivado IDE,我们可以使用硬件描述语言(HDL)如VHDL或Verilog来描述数字电路。
本节将介绍如何使用HDL进行FPGA设计,包括逻辑门设计、时序控制、状态机设计等。
3. FPGA系统集成设计除了单个模块的设计,FPGA设计还需要进行系统级集成。
fpga知识点
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,是
在PAL、PLA和CPLD等可编程器件的基础上进一步发展起来的一种更
复杂的可编程逻辑器件。
它是ASIC领域中的一种半定制电路,既解决
了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
FPGA的基本结构包括可编程输入输出单元、可配置逻辑块、数字时钟
管理模块、嵌入式块RAM、布线资源、内嵌专用硬核、底层内嵌功能单元。
FPGA的设计流程包括算法设计、代码仿真以及设计、板级调试,设计
者根据实际需求建立算法架构,利用EDA建立设计方案或HDL编写设
计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至FPGA芯片中,验证实际运行效果。
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构,查找表(Look Up Table,LUT),可以很好地满足这一要求。
LUT实质就是一个RAM,由布尔代数理论可知,对于一个n输入的逻辑运算,最多产生2^n个不同的组合。
所以,如果预先将相应的结果保存在一个
存储单元中,就相当于实现了与非门电路的功能。
以上信息仅供参考,建议查阅专业书籍或者咨询专业人士了解更多信息。
FPGA开发板使用手册一、硬件概述FPGA开发板是一种基于可编程逻辑器件(FPGA)的嵌入式系统开发板,它为电子工程师提供了一个高度灵活和可定制的平台,可用于开发各种数字系统,如通信、控制、数据处理等。
本手册旨在帮助用户了解和使用这款FPGA开发板,充分发挥其性能和功能。
二、开发板规格本开发板规格如下:1. 尺寸:90mm x 60mm x 1.6mm。
2. FPGA型号:Xilinx XC7020。
3. 内存容量:128MB DDR3。
4. 存储器:8GB eMMC。
5. 接口类型:USB 2.0,以太网 10/100Mbps,RS232等。
6. 电源电压:5V。
7. 重量:约15克。
三、硬件连接本开发板可通过以下方式与外围设备连接:1. USB接口:用于连接电脑进行编程和调试。
2. 以太网接口:用于连接网络。
3. RS232接口:用于连接其他串口设备。
4. GPIO接口:用于连接其他数字设备。
5. I2C接口:用于连接I2C总线设备。
6. SPI接口:用于连接SPI总线设备。
7. HDMI接口:用于显示输出。
8. SRAM接口:用于高速数据存储。
9. UART接口:用于串口通信。
四、FPGA设计工具安装与使用FPGA设计工具是用于编写和调试FPGA逻辑代码的软件环境。
本开发板支持的FPGA设计工具有Xilinx Vivado和Intel Quartus等。
用户需要根据所选工具,下载并安装相应的软件,然后按照软件说明进行安装和配置。
在安装过程中,请注意选择与本开发板兼容的版本和配置。
安装完成后,用户可以使用FPGA设计工具编写逻辑代码,并通过开发板的接口将代码下载到FPGA中运行。
五、FPGA设计基本原则在FPGA设计中,需要遵循以下基本原则:1. 模块化设计:将复杂问题分解为多个简单的子问题,逐个解决,便于调试和维护。
2. 尽量使用硬件加速器:利用FPGA的并行处理能力,提高系统性能。
今天的内容
v ISE 设计流程
Ø设计输入
Ø综合
Ø设计实现
Ø验证
Ø器件配置
ISE (Integrated Software Environment)是Xilinx 公司提供的用于开发其PLD 产品的工具链,包括设计开发与仿真验证所需的全部功能,覆盖PLD 开发的完整流程;借助该工具可以使开发人员从容地面对复杂的设计,轻松地解决各种设计难题。
v ISE: Xilinx PLD 的开发利器
v ISE 的开发流程
设计输入就是将一个概念设计转化为硬件描述的过程,ISE 支持多种输入方式。
v 设计输入
•Core Generator
•第三方网表
•原理图
•HDL 描述
•设计约束
设计综合就是将HDL 描述转化为针对特定架构的网表描述的过程,ISE 还会进行架构级的逻辑优化。
v 综合的概念
•ISE 的综合工具:
XST (Xilinx ®Synthesis Technology )•XST 输入: VHDL 、Verilog 源文件和综合库。
•XST 输出:NGR 、NGC 网表文件,分别对应RTL Viewer 和Technology Viewer 。
v 综合的流程
•语法检查
•HDL 综合
将HDL 描述转化为硬件电路原语、硬件宏(如MUX 、RAM 等)等,并进行状态机提取及编码优化,对硬件宏进行资源共享优化等逻辑优化。
•低层次优化
将HDL 综合的网表进行架构级的逻辑优化。
v 综合的要点
•充分挖掘某些Xilinx 特有的资源(查找表、进位链、块RAM 、移位寄存器等)。
•对FPGA 而言此低层次优化过程是时序驱动的,依据的是Period 、Offset 、Inpad To Outpad 等时序约束信息。
•支持多种逻辑优化手段,如Incremental Synthesis 、Register Balancing 、Pack I/O Register into IOBs 等。
v 设计实现
将综合输出的逻辑网表适配到特定的器件上,并生成用于配置FPGA 的位流文件。
•翻译
主要完成统一标准的工作,即将各种不同形式的网表文件(如EDN 、NGC 、NMC 等)及其约束文件统一翻译成Xilinx 标准的UGD 文件格式,全部由各种NGD 原语构成。
起到承上启下的作用,从此开始与特定硬件相结合,为后续工作做好铺垫。
v 设计实现
•映射
注意:与特定器件的可用资源关系紧密。
映射具体的工作就是把由NGD 原语描述的网表映射到特定FPGA 器件中的相应资源(如CLB 、IOB 等)。
输入为NGD 文件,输出为本地电路描述文件(NCD ),该文件是由目标器件的特定资源所表示的原始设计。
v 设计实现
•布局布线
布局是把在NCD 文件中所描述的资源(如CLB 、IOB 等)根据约束条件、互联的情况及可用的布线资源情况映射到FPGA 器件中的特定位置;布线则根据布局情况把各模块间的连接分配到FPGA 的内部互联网络上。
输入输出均为NCD 文件,但文件中将根据布局布线情况添加或修改与目标器件特定资源有关的使用信息。
v 设计实现
•生成配置文件
将FPGA 器件内部全部可用资源的配置信息输出,用于控制芯片以实现特定功能。
v 设计实现要点
•只有原厂的工具可用,别无选择;
•布局布线工具会对网络延迟产生直接的影响,从而对系统性能造成很大的冲击;
•设计实现阶段真实的电路时序延迟信息可以被反标,从而得到时序仿真网表用于静态时序分析(STA ),以指导系统优化;
v 验证
对设计所要求的功能完整性及系统性能进行的检查和测试。
•仿真
行为仿真、功能仿真和时序仿真
•STA
静态时序分析
•In-Circuit 验证
板级验证
v 回头再看看ISE 的开发流程
让我们一起讨论!。