本书系统地论述了Xilinx FPGA开发方法、开发工具、实际案例及开发技巧,内容涵盖Xilinx器件概述、Verilog HDL开发基础与进阶、Xilinx FPGA电路原理与系统设计、基于ISE Foundation的逻辑设计、时序分析、逻辑开发专题、基于EDK的嵌入式系统设计、基于System Generator的DSP系统设计、数字信号处理专题以及SERDES技术专题共10章。各章均以实战开发为目的,结合版本的软硬件特征,覆盖了FPGA的各主要应用领域。配套光盘中包含了书中所有的实例代码,便于读者快速动手实践。书中融汇了作者多年的工程开发经验,希望能够极力帮助读者提高工程开发能力。
本书适合作为电子信息工程、通信工程、自动化、计算机科学与技术等相关专业的高年级本科生及研究生的教学用书,也可以作为从事FPGA设计工作的工程师的参考图书。
徐文波:京邮电大学信号与信息处理专业博士,现执教于北京邮电大学信息与通信工程学院,长期从事信号处理理论及实际开发的教学与研究工作,发表多篇相关学术论文。
田耘:北京邮电大学信号与信息处理专业硕士学位,长期从事信号处理领域中的FPGA技术开发,博学FPGA技术专家,著有多部FPGA相关技术图书。
1.2.3软核、硬核及固核
1.2.4Xilinx主流FPGA
1.3Xilinx软件工具
1.3.1ISE Foundation软件
1.3.2EDK开发工具
1.3.3System Generator DSP工具
1.3.4ChipScope Pro
1.3.5PlanAhead
1.4本书案例验证平台--S6 CARD开发板
1.4.1S6 CARD开发板的组成与功能
1.4.2S6 CARD板卡引脚约束说明
本章小结
第2章Verilog HDL开发基础与进阶
2.1Verilog HDL语
第3章Xilinx FPGA电路原理与系统设计
FPGA器件基于SRAM结构来实现可编程特性,具有集成度高、逻辑功能强等特点,但掉电后编程信息立即丢失,芯片在每次加电时,都必须重新下载设计文件所生成的配置数据。正是这一特性使得用FPGA来实现数字系统时,不但能减小电路板的面积、缩短开发周期、提高系统运行的性,而且还可无限次重复擦写,能够完成数字系统的在线重配置,易于设备功能的更改和升级。因此,如何快速、高效地将配置数据写入目标器件,并且保障其在掉电后再次上电能自动地恢复配置,就成为整个系统的关键所在。目前,配置FPGA的方式有多种,可以通过JTAG口配置(一般用在调试过程),可以通过PROM、Flash来配置,也可以通过CPU或者CPLD进行配置。本章主要介绍Xilinx FPGA常用配置电路的原理以及相应的软件操作。3.1FPGA配置电路FPGA配置电路可看成用户设计和硬件电路之间的连接纽带。随着制造工艺的发展和应用范围的扩展,FPGA配置电路呈现多元化发展,最终目的都是在一定的外部条件下,、快速地实现FPGA系统配置。只有正确地理解了配置电路,才能在实际开发中选择的解决方案。本节主要从宏观上介绍FPGA配置电路的组成、工作流程以及不同方式之间的差异。3.1.1Xilinx FPGA配置电路FPGA芯片是基于SRAM工艺的,不具备非易失特性,因此断电后将丢失内部逻辑配置。在每次上电后,都需要从外部非易失存储器中导入配置比特流。硬件配置是FPGA开发的最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进而调试并最终实现相应的功能。完成FPGA配置,必须要有类似于单片机仿真器的下载电缆才能完成,典型的FPGA配置系统如图3-1所示。
图3-1FPGA配置系统组成
在FPGA配置系统中,编程软件由FPGA提供商提供,设计人员要掌握其操作方法; 下载电缆是固定的JTAG电路,只要将其连接在PC上以及目标板上即可; 只有目标板上的配置电路需要设计人员设计。其中,JTAG链路是器件编程的关键传输枢纽。因此JTAG链路的工作原理、FPGA的各种配置电路以及编程软件的操作是本章的重点内容。将配置数据从PC上加载到Xilinx FPGA芯片中的整个配置过程,可分为以下步骤。 1. 初始化通上电后,如果FPGA满足以下条件: Bank2的I/O输出驱动电压Vcc0_2大于1V; 器件内部的供电电压Vccint为2.5V,器件便会自动进行初始化。在系统上电的情况下,通过对PROG引脚置低电平,便可以对FPGA进行重新配置。初始化过程完成后,DONE信号将会变低。2. 清空配置存储器在完成初始化过程后,器件会将INIT信号置低电平,同时开始清空配置存储器。在清空完配置存储器后,INIT信号将会重新被置为高电平。用户可以通过将PROG或INIT信号(INIT为双向信号)置为低电平,从而达到延长清空配置存储器的时间,以确保存储器被清空。3. 加载配置数据配置存储器的清空完成后,器件对配置模式脚M[2:0]/M[1:0]进行采样,以确定用何种方式来加载配置数据。4. CRC错误检查器件在加载配置数据的同时,会根据一定的算法产生一个CRC值,这个值将会和配置文件中内置的CRC值进行比较,如果两者不一致,则说明加载发生错误,INIT引脚将会被置低电平,加载过程被中断。此时若要进行重新配置,只需将PROG置为低电平即可。5. START-UPSTART-UP阶段是FPGA由配置状态过渡到用户状态的过程。在START-UP完成后,FPGA便可实现用户编程的功能。在START-UP阶段中,FPGA会进行以下操作: (1) 将DONE信号置高电平,若DONE信号没有置高,则说明数据加载过程失败; (2) 在配置过程中,器件的所有I/O引脚均为三态,此时,全局三态信号GTS置低电平,这些I/O脚将会从三态切换到用户设置的状态; (3) 全局复位信号GSR置低电平,所有触发器进入工作状态; (4) 全局写允许信号GWE置低电平,所有内部RAM有效。整个过程需要8个时钟周期C0~C7。在默认的情况下,这些操作都和配置时钟CCLK同步。在DONE信号置高电平之前,GTS、GSR、GWE都保持高电平。如果选用JTAG配置电路,则所有操作都和JTAG电路的TCK保持同步。3.1.2Xilinx FPGA常用的配置引脚对于FPGA芯片而言,无论何种配置方式,都必须通过FPGA相应的引脚把设计加载到FPGA芯片中。和配置有关的引脚可以分为专用引脚和复用引脚两类,前者只能用于FPGA配置,而后者在配置过程结束后,还可当作普通I/O使用。专用的配置引脚有: 配置模式脚M[2:0]或者M[1:0]; 配置时钟CCLK; 配置逻辑异步复位PROG; 启动控制DONE及边界扫描TDI、TDO、TMS、TCK。非专用配置引脚有: Din、D0: D7、CS、WRITE、BUSY、INIT。当然,部分专用配置引脚在配置结束后也可作为普通引脚使用。例如,在Spartan-3A系列FPGA中,3个FPGA引脚M2、M1和M0用于选择配置模式,其配置说明如表3-1所示,M[2:0]的值在INIT_B输出变高后才有效。在FPGA配置完成后,M[2:0]可以作为普通I/O使用。
表3-1Spartan-3A配置模式选择以及特性
主串模式SPI模式BPI模式从并模式从串模式JTAG
模式配置引脚M[2:0]=UP=DOWN数据宽度单比特单比特字节宽度字节宽度单比特单比特
配置数据存储器类型Xilinx系列PROM标准SPI串行FLASHXilinx系列PROM或并行NOR FLASH外部CPU、MCU或Xilinx并行PROM外部CPU、MCU
配置时钟源FPGA提供FPGA提供FPGA提供CCLK引脚上的外部时钟TCK信号
配置所需引脚数813462180配置菊花链中的FPGA从串从串从并从并从串JTAG
是否需要额外配置主机否否否使用Xilinx并行PROM不需要,否则需要外部主机否
在Spartan-6系列FPGA中,配置模式引脚为M[1:0]的形式,只有M1和M0两个引脚。其基本原理和Spartan-3A系列FPGA中的M[2:0]一致,只是在具体选择内容上不同,如表3-2所示。
表3-2Spartan-6配置模式选择以及特性
配置模式M[1:0]总线宽度CCLK方向
主Serial/SPI011, 2, 4输出主SelectMAP/BPI008, 16输出JTAGxx1输入(TCK)从SelectMAP108, 16输入从Serial111输入
3.1.3Xilinx FPGA配置电路分类FPGA配置方式灵活多样,根据FPGA芯片是否能够主动加载配置数据分为主模式、从模式以及JTAG模式。典型的主模式都是加载片外非易失(断电不丢数据)性存储器中的配置比特流,读取配置数据所需的时钟信号(称为CCLK,通过FPGA芯片的CCLK引脚发出)由FPGA内部产生,且FPGA控制整个配置过程。从模式需要外部的主智能终端(如处理器、微控制器或者DSP等)将数据下载到FPGA中,写入数据的时钟(仍然通过CCLK引脚进入FPGA)由外围器件产生,其较大的优点就是FPGA的配置数据可以放在系统的任何存储部位,包括Flash、硬盘、网络,甚至在其余处理器的运行代码中。JTAG模式为调试模式,可将PC中的比特文件流下载到FPGA中,断电即丢失。此外,目前Xilinx还有基于Internet的、成熟的可重构逻辑技术System ACE解决方案。1. 主模式在主模式下,FPGA上电后,自动将配置数据从相应的外存储器读入到SRAM中,实现内部结构映射; 主模式根据比特流的位宽又可以分为: 串行模式(单比特流)和并行模式(字节宽度比特流)两大类。例如,主串行模式、主SPI Flash串行模式、内部主SPI Flash串行模式、主BPI并行模式以及主并行模式,如图3-2所示。2. 从模式在从模式下,FPGA作为从属器件,由相应的控制电路或微处理器提供配置所需的时序,实现配置数据的下载。从模式也根据比特流的位宽不同分为串、并模式两类,具体包括从串行模式、JTAG模式和从并行模式3大类,其概要说明如图3-3所示。
图3-2常用主模式下载方式示意图
图3-3常用的从模式下载方式示意图
3. JTAG模式在JTAG模式中,PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完成相应功能的配置。目前,主流的FPGA芯片都支持各类常用的主、从配置模式以及JTAG,以减少配置电路失配性对整体系统的影响。在主配置模式中,FPGA自己产生时钟,并从外部存储器中加载配置数据,其位宽可以为单比特或者字节; 在从模式中,外部的处理器通过同步串行接口,按照比特或字节宽度将配置数据送入FPGA芯片。此外,多片FPGA可以通过JTAG菊花链的形式共享同一块外部存储器,同样一片/多片FPGA也可以从多片外部存储器中读取配置数据以及用户自定义数据。
3.2JTAG电路的原理与设计3.2.1JTAG电路的工作原理1. JTAG电路简介
JTAG(Joint Test Action Group)即联合测试行动小组。目前,JTAG已成为一种国际标准测试协议,主要用于各类芯片的内部测试。现在大多数高级器件(包括FPGA、MCU、DSP以及CPU等)都支持JTAG协议。标准的JTAG接口是4线接口: TMS、TCK、TDI以及TDO,分别为模式选择、时钟、数据输入和数据输出信号线。JTAG电路的功能模块如图3-4所示。
图3-4JTAG电路的内部结构示意图
JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口)端口,通过专用的JTAG测试工具对内部节点进行测试。此外,JTAG协议允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。此外,JTAG接口还常用于实现ISP(In-System Programmable,在线编程),对Flash等器件进行编程。JTAG在线编程的特征也改变了传统生产流程,将以前先对芯片进行预编程再装到板上的工艺简化为: 先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。2. JTAG边界扫描电路边界扫描测试(Boundary Sean Test,BST)一般采用4线接口(在5线接口中,有一条为主复位信号),也可以通过PC的RS-232接口就能模拟BST的功能。BST标准接口是用来对电路板进行测试的,可在器件正常工作时捕获功能数据。器件的边界扫描单元能够迫使逻辑追踪引脚信号,或从器件核心逻辑信号中捕获数据,和预期的结果进行比较,根据比较结果给出扫描状态,以提示用户电路设计是否正确。典型边界扫描测试电路的结构如图3-5所示。
图3-5JTAG链扫描结构示意图
边界扫描测试提供了一个串行扫描路径,遵守IEEE规范的器件之间的引脚连接情况。IEEE 1149.1标准所规定的BST结构为: 当器件工作在JTAG BST模式时,使用4个专用的I/O引脚和一个可选引脚TRST作为JTAG引脚。这4个专用I/O引脚为TDI 、TDO、 TMS 和TCK。所有JTAG引脚的核心功能如表3-3所示。3. JTAG电路时序JTAG电路的时序如图3-6所示,所有基于JTAG的操作都必须同步于JTAG时钟信号TCK。在TCK的上升沿读取或输出有效数据,有严格的建立、保持时间要求,且JTAG电路追求稳定性,因此一般情况下JTAG的时钟不会太高。
表3-3JTAG引脚说明
引脚名名称功 能 描 述
TDI测试数据输入引脚JTAG指令和测试编程数据的输入引脚,数据在TCK信号的上升沿时刻读入TDO测试数据输出引脚 JTAG指令和测试编程数据的串行输出引脚,数据在TCK信号的下降沿时刻读出; 如果数据没有输出,则处于三态TMS测试模式选择引脚 该数据引脚是控制信号,它决定了TAP控制器的转换; TMS信号必须在TCK上升沿之前建立,在用户状态下TMS信号应是高电平TCK测试时钟输入引脚 JTAG链路的时钟信号,直接输入到边界扫描电路; 所有操作都在其上升沿或下降沿时刻发生TRST测试复位输入引脚 用于异步初始化或复位JTAG边界扫描电路,低电平有效
图3-6JTAG电路的时序关系示意图
4. FPGA芯片中JTAG扫描电路的工作流程JTAG边界扫描测试由测试访问端口的控制器管理,只要FPGA上电后电压正确,且JTAG链路完整,则JTAG电路可立即正常工作,清空JTAG配置寄存器等待外界响应,整体流程如图3-7所示。
图3-7JTAG边界扫描流程示意图
TMS、TRST 和TCK引脚管理TAP控制器的操作,TDI和TDO为数据寄存器提供串行通道。TDI也为指令寄存器提供数据,然后为数据寄存器产生控制逻辑。对于选择寄存器、装载数据、检测和将结果移出的控制信号,由测试时钟(TCK)和测试模式(TMS)选择两个控制信号决定。在4线接口标准中,利用TDI、TDO、TCK、TMS 4个信号,它们合成为TAP测试处理端口(Test Access Port); 测试复位信号(TRST,一般以低电平有效)一般作为可选的第5个端口信号。3.2.2Xilinx JTAG下载线下载线一端以JTAG的方式和FPGA/PROM芯片相连,另一端则通过USB/并口和计算机相连,为设计人员提供了由PC配置FPGA/PROM芯片的数据链路。本节介绍目前常用的Xilinx下载线,以及简易下载线的制作方法。
1. Xilinx下载线介绍根据下载线和PC连接方式的不同,可以将其分为USB下载线和并口下载线两大类。USB下载线速度快,稳定度高,当然价格也比较昂贵,目前Xilinx公司提供的USB下载线分为USB Ⅰ和USB Ⅱ。并口下载线根据下载速度的不同,可分为Parallel Cable Ⅳ(简称为PC4)和Parallel Cable Ⅲ两类(简称为PC3): PC4可适用于Xilinx公司所有芯片,速度比PC3快8倍,价格大约为USB Ⅰ下载线的1/3; PC3采用简单的EPP模式,透传式实现,成本低廉,但下载速度缓慢,且不具备配置电压自适应的功能,已经不能用于Xilinx公司新型FPGA的开发,存在一定的应用局限性。无论哪种下载线,在FPGA端都具有标准的4根JTAG接口、电源引脚以及地(VCC、GND、TCK、TMS、TDI和TDO),共6个信号端口,也被称为JTAG连接器。也有一种常见的10脚JTAG连接器,其中多了1个GND信号以及3根悬空信号(NC)。在实际工程中,有一条性能稳定的下载线,不仅能避免配置错误(如利用PC3并口下载线配置Spartan-6、Virtex-6等容量较大的芯片时失败概率非常高),还能提高配置的成功率和时间(在实际中,完整正确的配置电路也不能保障每次配置都成功)。下面对Xilinx各种下载线的特点和性能进行简要总结,如表3-4所示,供读者参考。
表3-4Xilinx下载线性能的简要总结
USB下载线Parallel Cable Ⅳ下载线Parallel Cable Ⅲ下载线
器件编号HW-USB-GHW-PC4HW-PC3
连接目标USB 1.1或USB 2.0接口PC并口(DB25)PC并口(DB25)
支持的I/O电压1.5V、1.8V、2.5V、3.3V、5V1.5V、1.8V、2.5V、3.3V、5V3.3V、5V工作电压需求USB总线供电总线供电或使用外部电源总线供电
硬件配置模式支持Xilinx全系列配置模式支持Xilinx全系列配置模式支持Xilinx全系列配置模式
支持的操作系统Windows 2000/XP/Vista/7
Red Hat Enterprise Linux Workstation 3.0&4.0
SUSE Linux 9&10
支持的芯片所有的Xilinx FPGA、CPLD、PROM
目标较大时钟速率24Mb/s5Mb/s是否支持在系统编程支持支持支持
2. PC3并行下载的电路原理图首先对PC的打印接口进行简单介绍。PC上的打印接口共有25根连线(一般也称为DB25),如图3-8所示。其中18~25都是地线,因此实际共有17根线,分成3类: 8根数据线,可进行数据输出; 5根状态线,作为输入; 4根控制线,作为输出。这3组线分别由打印口的3个寄存控制器控制,即数据口、状态口和控制口。只要对这3个寄存器读或写,就可以输入或输出数据。并口下载线主要完成PC并口和FPGA芯片JTAG接口之间的数据适配。Xilinx公司PC3并口下载电缆的原理图是公开的,结构简单,成本低廉,有兴趣的读者可以自己动手制作,在电子市场上则一般需要数十元。下载电缆的接口电路比较简单,简易连接关系见图3-8,制作时间非常短,半天时间即可。接口电路只完成了电平转换和简单的译码工作,不涉及信号时序的改变。其中74HC125为Philips公司生产的4输入三态驱动器,用来增强信号强度; LED用来给出下载信息指示。详细的元件清单如表3-5所示。下载线的供电由电路板供电,即由JTAG连接器的VCC提供,因此和电路板的距离不能太长,一般为20cm左右; 和并口连接端可以适当延长,但也不应当超过1m,一般选择50cm左右,否则容易发生下载错误。此外,肖特基二极管应选取低压降的管子,以保障下载线正常工作。
整体而言,本书具有以下三项特色:首先,从逻辑设计、数字信号处理、嵌入式系统设计和高速连接功能等四个方面系统地介绍了Xilinx FPGA的开发与应用,条理清晰、思路明确,符合FPGA目前和未来的发展趋势;其次,较为详细介绍了Xilinx FPGA的开发技巧,融入了作者的工程开发经验,对于初学者和工程开发人员来讲都具有强的可读性;,极为地介绍了赛灵思公司的ISE、System Generator以及EDK开发软件,非常系统和完整。因此,对于在校研究生、高年级本科生及从事FPGA开发的工程师来说,本书是一本较为理想的EDA教材和工程工具书,我郑重地将其推荐给大家!希望通过本书的出版,使更多的读者掌握赛灵思FPGA的开发技能,更好地促进FPGA开发技术的普及和推广。
——赛灵思(Xilinx)公司中国区大学计划经理谢凯年博士
感觉就是英文手册的翻译,Verilog那章更本就是浪费,介绍也不详细,大家都会去看转本讲Verilog的书籍。
刚刚拿到书,看了下序言和目录部分,感觉还不错!,
内容很详细、很充实,讲解的也很细致,很有帮助,送货、服务都很好
很厚,随手翻了翻,还可以,算不上最好的但也不差。工程性很强,介绍的内容也比较前沿。内容偏软件设计和编译,对demo板的调试方面没涉及。
讲解全面细致,有基础有扩展,适合想在该领域有一定作为的人看
书很好,包装不错,是正版。内容讲述通俗易懂,适合初学者,也可以作为工具书。
东西很好,是正版,不过每次都在包裹里夹楼盘广告ORZ
书是不错,可是快递也太慢了吧,明明显示的是第二天到,却过了2天才到,这就是失信!
书不错,就是没有任何包装,就一层塑料袋子,书边角都磕了凹进去了。
一次性买了三本,这一本主要讲xilinx的软件操作,挺好的。
很快,第二天就拿到了,图书质量也很也,买书一直当当,好多次了,还要来买
作为初学者来讲还是很不错的一本书,内容感觉比较容易接受,讲的也比较细致。
一部基础书,实用性还是有的,适合想上手xilinx片的同仁
我就在那么多说书页破损的。。。。为什么我买当当没遇到过一次?
感觉里面的很多东西还是没用上,尽管写得很好,应用很全,但感觉只是比较笼统,这本书比较基础,适合入门,不够深入
内容比较全面,对于xilinx的学习有帮助,不错不错
很少见 且 很实用的FPGA开发教程 新手必备啊
买了几本这样的工具书,还是这本比较有参考性
对于学FPGA的人来说很有用,顺带吐槽一下物流!
书的内容没的说,讲得挺好,就只是发来的书有划伤的痕迹,强迫症伤不起
书的内容是蛮好的,但是我收到的书有被茶水泡过的污渍,后面几是页都是皱皱的,怎么可以这样!之前买书也没有这种情况,希望当当以后发书的时候要好好检查一下!
总体来说还不错,讲Xilinx的器件比较多
书很好,物流很给力,唯一的不足就是书封面由于包装留下了划痕
FPGA很经典的一本书 对于工程师和研究生来说都很有用!!!
自学找工作用得到 内容全面清晰易懂 性价比高 是正品
这本书比较经典。适合fpga进阶。因为它不在拘泥于语言,而是寻找规律,把这些常用模式弄懂了,其实才是真正理解了硬件描述语言。推荐大家读读
相对比较满意的一本书,至少解决了我工作中不懂的问题,或者在我不清楚的地方给了提示。蛮不错的,适合用Xilinx芯片做FPGA开发的工作者自我提高。
学习FPGA很好的一本书,作为开发教程非常棒,里面的很多内容都有用
最近要用到xilinx公司的FPGA芯片,买来学习下,开卷有益。