当前位置:主页 > 出版图书 > FPGA图书 >

Xilinx FPGA权威设计指南—Vivado 2014集成开发环境

来 源:未知   浏览次数:  发布时间:2015-07-03 

编辑推荐
  选择本书的3大理由:
  知名作者何宾老师最新力作,凝结了何宾老师多年工程设计、教学经验和创作的心血。
  系统介绍了Xilinx新一代集成开发环境Vivado2014.3的设计方法、设计流程和具体实现,工程实用性强。
  本书理论与应用并重,将Xilinx最新的设计理论贯穿在具体的设计实现中。
内容推荐
  Xilinx新一代集成开发环境Vivado突出基于知识产权(Intellectual Properity,IP)核的设计方法,更加体现系统级设计的思想,进一步增强了设计者对FPGA底层布局和布线的干预能力,以及允许设计者通过选择不同的设计策略,对不同的实现方法进行探索,从中找到最佳的实现解决方案。这些设计思想和设计方法,大大的提高了FPGA的设计效率。
  本书是在《Xilinx FPGA设计权威指南—Vivado集成设计环境》(清华大学出版社,2014)基础上,针对读者提出的意见和建议,对原书进行了大幅度修订。该书从原来的Vivado 2013.3集成开发环境升级到Vivado 2014.3集成开发环境,并增加了IP核设计的内容。此外,还大幅度增加了对高级约束内容的讲解,并对原书章节的顺序进行了调整,以方便读者的学习。
作者简介
  何宾 从事数字系统EDA方面的本科生和研究生相关课程的教学和科研工作,并在多个省市进行大学生电子设计竞赛FPGA专题方面的教师培训工作,在EDA教学和科研方面积累了丰富的经验。曾出版相关图书《EDA原理及应用》、《EDA原理及应用实验教程》、《片上可编程系统原理及应用》、《FPGA数字信号处理实现原理及方法》、《Xilinx可编程逻辑器件设计技术详解》、《数字与片上系统设计教程》、《EDA原理及Verilog实现》、《基于AXI4的可编程SOC系统设计》。
目录
第1章  Xilinx新一代UltraScale结构
  1.1  UltraScale结构特点
  1.2  可配置逻辑块
    1.2.1  可配置逻辑块的特点
    1.2.2  多路复用器
    1.2.3  进位逻辑
    1.2.5  分布式RAM(只有SLICEM)
    1.2.6  只读存储器(ROM)
    1.2.7  移位寄存器(只有SLICEM)
  1.3  时钟资源和时钟管理单元
    1.3.1  时钟资源
    1.3.2  时钟管理模块
  1.4  块存储器资源
  1.5  专用的DSP模块
  1.6  输入/输出块
  1.7  高速串行收发器
  1.8  PCI-E模块
  1.9  Interlaken集成块
  1.10  Ethernet模块
  1.11  系统监控器模块
  1.12  配置模块
  1.13  互联资源
第2章  Vivado集成设计环境导论
  2.1  Vivado系统级设计流程
  2.2  Vivado功能和特性
  2.3  Vivado中电路结构的网表描述
  2.4  Vivado中工程数据的目录结构
  2.5  Vivado中Journal文件和Log文件功能
    2.5.1  Journal文件(Vivado.jou)
    2.5.2  Log文件(Vivado.log)
  2.6  Vivado两种设计流程模式
    2.6.1  工程模式和非工程模式不同点比较
    2.6.2  工程模式和非工程模式命令的不同
  2.7  Vivado中XDC文件
    2.7.1  XDC的特性
    2.7.2  XDC与UCF比较
    2.7.3  约束文件的使用方法
    2.7.4  约束顺序
    2.7.5  XDC约束命令
  2.8  Vivado集成设计环境的启动方法
  2.9  Vivado集成设计环境主界面
  2.10  Vivado设计主界面及功能
    2.10.1  流程处理主界面及功能
    2.10.2  工程管理器主界面及功能
    2.10.3  工作区窗口
    2.10.4  设计运行窗口
第3章  Vivado工程模式基本设计实现
  3.1  创建新的设计工程
  3.2  创建并添加一个新的设计文件
  3.3  RTL详细描述和分析
  3.4  设计综合和分析
    3.4.1  综合过程的关键问题
    3.4.2  设计综合选项
    3.4.3  Vivado支持的属性
    3.4.4  执行设计综合
    3.4.5  综合报告的查看
  3.5  设计行为级仿真
  3.6  创建实现约束
    3.6.1  实现约束的原理
    3.6.2  I/O规划器功能
    3.6.3  实现约束过程
  3.7  设计实现和分析
    3.7.1  设计实现原理
    3.7.2  设计实现选项
    3.7.3  设计实现及分析
    3.7.4  静态时序分析
  3.8  设计时序仿真
第4章  Vivado非工程模式基本设计实现
第5章  创建和封装用户IP核流程
第6章  Vivado高级约束原理及实现
第7章  Vivado调试工具原理及实现
第8章  Vivado嵌入式系统设计实现
第9章  Vivado模型设计原理及实现
第10章  Vivado HLS原理及实现
第11章  Vivado部分可重配置原理及实现 

 

前言
  前 言
  全球知名的可编程逻辑元器件生产厂商——美国Xilinx公司,于2012年发布了新一代的Vivado集成开发环境,使得新一代FPGA的设计环境和设计方法发生了重要变化。2014年年初,Xilinx新一代UltraScale结构的FPGA也进入量产阶段。这些都标志着未来在高性能数据处理方面,FPGA将发挥越来越重要的作用。
  Xilinx新一代集成开发环境Vivado突出基于知识产权(Intellectual Properity,IP)核的设计方法,更加体现系统级设计的思想,进一步增强了设计者对FPGA底层布局和布线的干预能力,以及允许设计者通过选择不同的设计策略,对不同的实现方法进行探索,从中找到最佳的解决方案。这些设计思想和设计方法,大大提高了FPGA的设计效率。
  本书是在已出版图书《Xilinx FPGA设计权威指南—Vivado集成设计环境》的基础上,针对读者提出的意见和建议,对原书进行了大幅度修订。该书从原来的Vivado 2013.3

 

在线试读部分章节

  11.1.3 可重配置的特点
  1.降低成本和电路板的空间
  通过重配置技术解决了两个设计者普遍存在的问题。
  (1)在一个已经使用的器件中,适配更多的逻辑。
  (2)在一个更小的、更便宜的器件中,适配一个设计。
  历史上,设计者们花费数天时间,甚至几个星期,尝试新的实现开关,返工设计代码,并重新设计解决方案,将设计装入最小可能的FPGA器件中。现在通过部分重新配置技术,设计者就可以动态地时分复用部分可用的硬件资源,以减少其设计规模。同时根据设计要求来控制加载逻辑功能的能力,也大大减少了空闲逻辑,从而进一步节省了额外的空间。
  这一策略的一个例子是,在软件无线电(Software Defined Radio,SDR)系统中使用部分可重配置。在SDR中,设计者根据要求上传一个新的波形用于和一个新的通道建立通信。为了使单一的硬件平台可以支持任意数量的波形,要求只有唯一的部分比特流能用于这些波形。由于部分可重配置的“在飞行”(on-the-fly)特性,其他已经建立连接的通道不会被上传到其他的通道所破坏。
  2.增加已部署系统的灵活性
  在过去,改变现场的一个设计,要求设计新的布局和布线,以及交付整个的配置文件。当需要修改设计时,设计者不得不将系统断电。相比较之下,通过部分可重配置技术,设计者只需要布局和布线所修改的功能,然后将这个新的部分映像提交到系统中即可。
  并且,当启动并运行系统时,设计者可以动态地插入新的功能,以改善系统的性能。因此,互斥的功能可以插入到相同的空间内,而不需要重新设计系统或者将设计移植到一个更大的器件中。
  体现部分可重配置好处的另一个例子是在光纤传输网络(Optical Transport Network,OTN)的应用。类似于SDR,支持不同的协议来创建一个更高效的硬件系统,即在FPGA中只加载用于当前在任何一点特定通道的协议。因此,对于一个已经部署的系统来说,不仅可以通过使用最小的资源来处理很多不同类型的流量,而且可以使用最新的协议更新系统,而不必全部重新设计。
  3.降低功耗
  对于当前的设计者来说,功耗是最为关心的问题。但是,随着FPGA设计规模和复杂度的增加,功耗也相应增加。而带有设计技巧的综合和实现工具,能帮助设计者降低功耗。通过使用部分重配置技术,进一步降低静态和动态功耗。
  一种降低静态功率的方法是使用较小规模的器件。通过使用部分可重配置技术,设计者能将FPGA进行时间片分割,并且能独立地运行设计的一部分。由于不是设计的每个部分都需要100%的时间,因此设计能要求更小的器件或者更少数量的器件。
  部分可重配置也潜在地降低了操作功耗和静态功耗。例如,很多设计必须能高速运行,而最高的性能可能只需要一个很少的时间段,为了降低功耗,设计者使用部分重配置来暂时去除一个高性能的设计,该设计是同一设计的低功耗版本,而不使用排他性设计用于最大性能,当系统要求时,设计者可以切换回高性能的设计。
  这个原理也应用到了I/O标准,特别是当一个高功率接口并不要求100%时间的场合。低电压差分传输(Low Voltage Differential Signaling,LVDS)是一个高功耗的接口(不考虑活动性,这是由于高DC电流要求为接口提供能量)。当不要求最高性能时,设计者能使用部分可重配置将I/O从LVDS变成低功耗接口,如LVCMOS;而当要求高速传输时,再切换到LVDS。
  4.其他优点
  在一个FPGA内动态地时分复用硬件的能力,提供了其他方面的优势。
  (1)在选择用于一个应用的算法或者协议时,提供了实时的灵活性。
  (2)在一个设计安全性时,可以使用新的技术。
  (3)改善FPGA的故障容错能力。
  (4)促进可配置计算。
  (5)降低存储比特流的要求。
  11.1.4 可重配置术语解释
  为了后续章节的描述方便,下面对可重配置技术中所涉及的一些术语进行说明。
  1.Top-down synthesis(自顶向下的综合,不用于部分可重配置)
  (1)一个综合工程,该工程综合平面设计,用于优化。
  (2)经常称为平面综合。
  (3)不支持层次化实现。
  2.Bottom-up synthesis(自底向上综合)
  (1)独立综合工程,产生多个网表。
  (2)自底向上综合要求为每个分区分配一个独立的网表。
  (3)没有跨越边界的优化。这样,可以对设计的每个分区进行独立地综合。
  (4)对带有用于分区的黑盒顶层逻辑进行综合。
  3.Configuration(配置)
  一个配置是一个完整的设计,包括静态逻辑以及用于每个可配置分区的一个可配置的模块。
  在一个部分重配置FPGA工程中,可以有多个配置。每个配置生成一个充分的比特流文件,以及用于每个可配置模块的一个部分比特流文件。
  4.Configuration Frame(配置帧)
  配置帧是FPGA配置存储空间中最小的可寻址段。从这些分散的最底层元素构建配置帧。在7系列器件中,基本的可重配置的帧的大小为一个元件(CLB、BRAM、DSP)宽度和一个时钟区域高度。
  5.Internal Configuration Access Port(内部配置访问端口)
  内部配置访问端口是SelectMAP接口的一个内部版本。
  6.Partial Reconfiguration(部分重配置)
  部分重配置指当前正在修改一个正在运行的FPGA设计,这个修改是通过下载一个部分比特流实现的。
  7.Partition(分区)
  一个分区是设计的一个逻辑部分,由设计者在一个层次中进行定义。这个定义用于设计重用。一个分区是一个新的实现或者先前保留的一个实现。一个被保护的分区其功能和实现都是一致的。
  8.Partition Pins(分区引脚)
  一个分区引脚是在静态和可重配置逻辑之间的逻辑和物理的连接。
  9.Static Logic(静态逻辑)
  所有设计内的逻辑是不可重配置的,它不是可重配置分区的一部分。当对可重配置分区进行重新配置时,静态逻辑总是活动的。
  10.Static Design(静态设计)
  静态设计是设计的一部分,它在部分重配置的过程中不会变化。静态设计包括顶层和没有定义为可重配置的所有模块。静态设计由静态逻辑和静态布线所建立。
  11.Reconfigurable Module(可重配置模块,RM)
  在可重配置分区内,一个RM是网表或者HDL描述的实现。每个可配置分区内可以有多个可重配置的模块。
  12.Reconfigurable Partition(可重配置分区,RP)
  RP是在一个例化中的属性设置,其定义了该实例是可重配置的。PR是设计层次中的一个层次,在这个层次上可以使用不同的RM进行实现。典型地,一些Tcl命令,如opt_design、place_design和route_design,用于检测实例上的HD.RECONFIGURABLE属性,并且正确地处理它。
  11.1.5 可重配置的要求
  (1)可重配置要求使用Vivado 2014.3或更新的版本。
  (2)Vivado 2014.3可重配置支持下面的器件。
  ① 7系列:包括Virtex-7、Kintex-7、Artix-7以及Zynq-7000 SoC器件。
  ② UltraScale系列:KU040和VU095。
  (3)只通过Tcl或命令行支持PR。此外,不支持工程。
  (4)要求为每个元素类型进行布局规划,用于定义可重配置的域。
  ① 于最大的效率来说,7系列器件使用RESET_AFTER_RECONFIG特性,以及垂直对齐到帧/时钟区域边界。
  ② 也应用水平对齐规则。
  (5)设计者负责自底向上的综合,以及管理RM网表文件。
  ① 可以使用任何综合工具。在创建可重配置模块网表时,禁止I/O插入。
  ② 对于可重配置模块的综合,Vivado综合使用脱离上下文的模块分析流程。
  (6)支持标准的时序约束和额外的时序规划能力。
  (7)建立一个唯一的DRC集,用于引导设计者在一个成功的布线路径上完成设计。
  (8)一个PR设计必须考虑PR的初始化和部分比特流文件的传递,或者在FPGA内,或者作为系统设计的一部分。
  (9)一个PR必须包含用于分区的由可变RM所使用的所有引脚的超集。因此,这将导致对出现一些模块没有用的输入或者输出,但是这增加了PR解决方案的灵活性。在模块内没用的引脚,将引起不确定的状态。如果这对设计是一个问题,则可以将输出驱动为常量。
  (10)在生成比特流时,支持黑盒。
  11.1.6 可重配置的标准
  (1)对于7系列的器件来说,遵循下面的规则。
  ① 可重配置的资源包括CLB、BRAM和DSP元件类型,以及布线资源。
  ② 不可以重配置时钟,以及时钟正在修改的逻辑(包括BUFG、BUFR、MMCM、PLL和类似的元件),因此它们必须驻留在静态区域内。
  ③ 下面的元件不可以重配置,必须驻留在静态区域内。
  ? I/O和I/O相关的元件(ISERDES、OSERDES、IDELAYCTRL等)
  ? 串行收发器(MGT)和相关元件
  ? 单个的结构特性元件(如BSCAN、STARTUP、XADC等)
  (2)对于UltraScale器件来说,可重配置的元件范围扩大:
  ① 可重配置的资源包括CLB、BRAM和DSP元件类型,以及布线资源。
  ② 可以重配置时钟,以及时钟正在修改的逻辑(包括BUFG、BUFR、MMCM、PLL和类似的元件)。
  ③ I/O和I/O相关的元件(ISERDES、OSERDES、IDELAYCTRL等)。
  ④ 串行收发器(MGT)和相关元件。
  ⑤ PCIe、CMAC、Interlaken和SYSMON块。
  这些新元件的比特流粒度要求遵守一些规则。例如,I/O的部分可重配置要求整个组,外加该帧内所有的时钟资源一起都是可重配置的。
  只有配置元件(如BSCAN、STARTUP、ICAP、FRAME_ECC等)必须保留在设计的静态区域内。
  (3)限制到RP的全局时钟资源,这取决于这些RP所占用的器件和所占用的时钟区域。
  (4)当使用元件实现IP时,IP的使用也会受到限制:
  ? Vivado调试集线器(BSCAN和BUFG)
  ? 带有嵌入式全局缓冲区或者I/O的IP模块
  ? MIG控制器(MMCM)
  (5)必须对可重配置模块进行初始化,以保证在重配置后的开始条件。通过选择RESET_AFTER_RECONFIG特性,用一个本地复位或者一个专用的GSR事件,设计者可以手工实现该要求。
  (6)推荐去耦合逻辑。这样,在部分重配置期间,将设计中的静态部分和可重配置区域的连接断开。
  可以把到可重配置模块的时钟和其他输入去耦合,这样用于阻止在重配置期间内对存储器“虚假”写操作。如果没有使用RESET_AFTER_RECONFIG特性,则需要考虑这一点。
  (7)必须对一个可重配置区域进行布局规划。这样,模块必须是一个由Pblock保留的模块,并且满足时序的要求。如果完成该模块,推荐通过使用非PR流程运行这个设计,以得到一个对布局、布线和时序结果的初始评估。如果设计是通过非PR流程发布的,则在移动到PR流程前,必须解决这些问题。
  (8)在一个RP的引脚中,有一个分区引脚。这是一个布线点,用于将静态逻辑连接到RP上。如果一个设计有过多的分区引脚用于可用的布线资源,可能会发生布线阻塞。
  (9)Virtex-7 SSI器件(7V2000T、7VX1140T、7VH870T、7VH580T)有两个基本的要求:
  ① 可重配置的区域必须充分地包含在一个单个的SLR中。这确保全局复位事件和RM内的所有元素同步,所有的超长连线(Super Long Line,SLL)包含在设计的静态部分。SLL是不可重配置的。
  ② 如果使用ICAP发送部分比特流,必须位于主SLR,它是这些器件的SLR1。在ICAP上应用位置约束,将其只能约束到ICAP_X0Y2或者ICAP_X0Y3。比特流的格式是贯穿四个SLR的标准菊花链。

  ……