描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302286431
《Xilinx FPGA开发实用教程(第2版)》系统地论述了Xilinx FPGA开发方法、开发工具、实际案例及开发技巧,内容涵盖Xilinx器件概述、VerilogHDL开发基础与进阶、Xilinx FPGA电路原理与系统设计、基于ISEFoundation的逻辑设计、时序分析、逻辑开发专题、基于EDK的嵌入式系统设计、基于SystemGenerator的DSP系统设计、数字信号处理专题以及SERDES技术专题共10章。各章均以实战开发为目的,结合*版本的软硬件特征,覆盖了FPGA的各主要应用领域。附赠光盘中给出了书中所有实例的源码和相关的工程文件,便于读者快速动手实践。书中融汇了作者多年的工程开发经验,希望能够极力帮助读者提高工程开发能力。
本书系统地论述了Xilinx FPGA开发方法、开发工具、实际案例及开发技巧,内容涵盖Xilinx器件概述、VerilogHDL开发基础与进阶、Xilinx FPGA电路原理与系统设计、基于ISEFoundation的逻辑设计、时序分析、逻辑开发专题、基于EDK的嵌入式系统设计、基于SystemGenerator的DSP系统设计、数字信号处理专题以及SERDES技术专题共10章。各章均以实战开发为目的,结合*版本的软硬件特征,覆盖了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语言
2.1.1Verilog HDL语言的历史
2.1.2Verilog HDL的主要功能
2.1.3Verilog HDL和VHDL的区别
2.1.4Verilog HDL设计方法
2.2Verilog HDL基本程序结构
2.3Verilog HDL语言的数据类型和运算符
2.3.1标志符
2.3.2数据类型
2.3.3模块端口
2.3.4常量集合
2.3.5运算符和表达式
2.4Verilog HDL语言的描述语句
2.4.1结构描述形式
2.4.2数据流描述形式
2.4.3行为描述形式
2.4.4混合设计模式
2.5Verilog HDL建模与调试技巧
2.5.1双向端口的使用和仿真
2.5.2阻塞赋值与非阻塞赋值
2.5.3输入值不确定的组合逻辑电路
2.5.4数学运算中的扩位与截位操作
2.5.5利用块RAM来实现数据延迟
2.5.6测试向量的生成
2.6Verilog HDL常用程序示例
2.6.1数字电路中基本单元的FPGA实现
2.6.2基本时序处理模块
2.7Xilinx器件原语的使用
本章小结
第3章Xilinx FPGA电路原理与系统设计
3.1FPGA配置电路
3.1.1Xilinx FPGA配置电路
3.1.2Xilinx FPGA常用的配置引脚
3.1.3Xilinx FPGA配置电路分类
3.2JTAG电路的原理与设计
3.2.1JTAG电路的工作原理
3.2.2Xilinx JTAG下载线
3.3FPGA的常用配置电路
3.3.1主串模式–最常用的FPGA配置模式
3.3.2SPI串行Flash配置模式
3.3.3从串配置模式
3.3.4主字节宽度并行配置模式
3.3.5JTAG配置模式
3.3.6System ACE配置方案
3.4iMPACT软件使用
3.4.1iMPACT软件
3.4.2iMPACT中的JTAG配置操作
3.4.3iMPACT中的Xilinx PROM配置操作
3.4.4iMPACT中的SPI Flash配置操作
3.4.5FPGA配置失败的常见问题
3.5从配置PROM中读取用户数据
3.5.1从PROM中引导数据
3.5.2硬件电路设计方法
3.5.3软件操作流程
本章小结
第4章基于ISE Foundation的逻辑设计
4.1ISE套件
4.1.1ISE的特点
4.1.2ISE的功能
4.1.3ISE的安装
4.1.4ISE的用户界面
4.2基于ISE的设计输入
4.2.1新建工程
4.2.2代码输入
4.2.3代码模板的使用
4.2.4Xilinx IP Core的原理与应用
4.3ISE基本操作
4.3.1基于Xilinx XST的综合
4.3.2基于ISim的仿真
4.3.3基于ISE的实现
4.3.4基于目标和策略的设计方法
4.3.5基于SmartGuide的设计方法
4.3.6比特文件的生成
4.3.7基于IMPACT的芯片配置
4.3.8功耗分析以及XPower的使用
4.4约束
4.4.1约束文件
4.4.2UCF文件的语法说明
4.4.3引脚和区域约束语法
4.4.4时序约束语法
4.5调试利器–ChipScope Pro
4.5.1ChipScope Pro工作原理
4.5.2ChipScope Pro操作流程
4.5.3ChipScope Pro开发实例
4.6ISE与第三方EDA软件
4.6.1ModelSim软件的使用
4.6.2ModelSim和ISE的联合开发流程
4.6.3MATLAB软件的使用
4.6.4ISE与MATLAB的联合使用
4.6.5MATLAB、ModelSim和ISE联合开发实例
本章小结
第5章时序分析
5.1时序分析的作用和原理
5.1.1时序分析的作用
5.1.2静态时序分析原理
5.1.3时序分析的基础知识
5.2Xilinx FPGA中的时钟资源
5.2.1全局时钟资源
5.2.2第二全局时钟资源
5.3ISE时序分析器
5.3.1时序分析器的特点
5.3.2时序分析器的文件类型
5.3.3时序分析器的调用与用户界面
5.3.4提高时序性能的手段
本章小结
第6章逻辑开发专题
6.1Verilog HDL设计进阶
6.1.1面向硬件的程序设计思维
6.1.2“面积”和“速度”的转换原则
6.1.3同步电路的设计原则
6.2Xilinx FPGA芯片底层单元的使用
6.2.1Xilinx全局时钟网络的使用
6.2.2CMT时钟管理模块的使用
6.2.3Xilinx内嵌块存储器的使用
6.2.4硬核乘加器的使用
6.3代码风格
6.3.1代码风格的含义
6.3.2代码书写风格
6.3.3通用设计代码风格
6.3.4Xilinx专用设计代码风格
6.4UART接口开发实例
6.4.1串口接口与RS?232协议
6.4.2串口通信控制器的Verilog HDL实现
6.4.3RS?232设计板级调试
本章小结
第7章基于EDK的嵌入式系统设计
7.1可配置嵌入式系统(EDK)
7.1.1基于FPGA的可编程嵌入式开发系统
7.1.2Xilinx公司的解决方案
7.2Xilinx嵌入式开发系统组成
7.2.1片内微处理器软核MicroBlaze
7.2.2PLB总线系统结构
7.2.3IP核以及设备驱动
7.3EDK软件
7.3.1EDK设计的实现流程
7.3.2EDK的文件管理架构
7.4XPS软件典型操作
7.4.1XPS的启动
7.4.2利用BSB创建新工程
7.4.3XPS的用户界面
7.4.4XPS的目录结构与硬件平台
7.4.5在XPS加入IP Core
7.4.6XPS工程的综合与实现
7.5SDK软件典型操作
7.5.1SDK的用户界面
7.5.2SDK的典型操作
7.5.3IP外设的API函数查阅和使用方法
7.5.4GPIO外设开发实例
7.5.5其他外设开发实例
本章小结
第8章基于System Generator的DSP系统设计
8.1System Generator的特点与安装
8.1.1System Generator的主要特点
8.1.2System Generator的安装和配置
8.2System Generator的使用基础
8.2.1System Generator开发流程
8.2.2Simulink的应用
8.3基于System Generator的DSP系统设计
8.3.1System Generator的应用
8.3.2System Generator中的信号类型
8.3.3自动代码生成
8.3.4编译MATLAB设计生成FPGA代码
8.3.5子系统的建立与ISE调用
8.4基于System Generator的硬件协仿真
8.4.1硬件协仿真平台的特点与平台安装
8.4.2硬件协仿真的基本操作
8.4.3共享存储器的操作
8.5System Generator的高级应用
8.5.1导入外部的HDL程序模块
8.5.2设计在线调试
8.5.3系统中的多时钟设计
8.5.4FPGA设计的高级技巧
本章小结
第9章数字信号处理专题
9.1数字信号
9.1.1数字信号的产生
9.1.2采样定理
9.1.3数字系统的主要性能指标
9.1.4A/D转换的字长效应
9.2常用DSP IP Core及其应用
9.2.1DDS模块IP Core的应用
9.2.2FFT算法IP Core的应用
9.2.3Cordic算法IP Core的应用
9.2.4FIR滤波器IP Core的应用
9.3多速率滤波器的FPGA实现
9.3.1多速率信号处理的意义
9.3.2多速率信号滤波器的基本操作
9.3.3CIC滤波器的FPGA实现
9.3.4HB滤波器的FPGA实现
本章小结
第10章SERDES技术专题
10.1高速数据连接功能
10.1.1高速数据传输
10.1.2Xilinx公司高速连接功能的解决方案
10.2实现吉比特高速串行I/O的相关技术
10.2.1吉比特高速串行I/O的特点和应用
10.2.2吉比特串行I/O系统的组成
10.2.3吉比特串行I/O的设计要点
10.3Rocket I/O收发器原理与开发
10.3.1Rocket I/O硬核组成与工作原理
10.3.2GTP硬核组成与工作原理
10.3.3GTP Wizard开发实例
10.4PCI?Express G1端点接口设计
10.4.1PCI Express G1技术
10.4.2Xilinx PCI Express G1端点模块
10.4.3PCI Express G1端点接口实例解读
本章小结
参考文献
赛灵思(Xilinx)公司作为可编程器件(PLD)的领导厂商,占有超过50%的市场份额,为客户提供可编程逻辑芯片(CPLD、FPGA和PROM)、软件设计工具、不同等级的知识产权核(IPCore)以及系统级的完整解决方案。
随着工艺和设计水平的不断提高,FPGA在数字系统中所扮演的角色也从逻辑胶合者提升到处理核心。从2006年起,赛灵思公司的FPGA就涵盖了逻辑应用、数字信号处理以及嵌入式三大应用领域。到目前为止,赛灵思已成为完整的解决方案提供者。例如,量产的Spartan6系列FPGA采用45nm工艺,广泛应用在中低规模系统中,如机器视觉、机顶盒以及广泛的多媒体处理等;量产的Virtex?5/6系列FPGA分别采用65nm、40nm工艺,主要面向高端应用,如高速互联网络、无线通信、宽带接入以及汽车工业等。28nm的7系列FPGA(Artix、Kintex和Virtex三个低、中、高系列)也已逐渐量产,进一步提升FPGA系统设计能力。此外,Zynq?7000可扩展处理平台(EPP)将ARMCortex?A9 双核处理器系统与可编程逻辑紧密集成在一起,为业界带来革命性的创新解决方案。
基于赛灵思公司的领先技术,更多的工程师和研究人员已加入到赛灵思FPGA的开发队伍中。在过去四年中,赛灵思公司通过大学和开源社区OpenHard,开展了三届开源硬件创新大赛以及多个网络研讨会,但切入点都比较零散,不能形成系统化知识体系。《XilinxFPGA开发实用教程》第一版于2008年出版,弥补了上述不足,帮助广大技术人员、在校的研究生和高年级本科生尽快掌握XilinxFPGA的开发流程,连续印刷4次,深受读者欢迎。由于FPGA技术发展迅速,因此作者更新了原书内容,并以最新的ISE13.x版本和量产的6系列器件为例进行介绍,更加符合FPGA发展趋势。
整体而言,本书具有以下三项特色: 首先,从逻辑设计、数字信号处理、嵌入式系统设计和高速连接四个方面系统地介绍了XilinxFPGA的开发与应用,条理清晰、思路明确,符合FPGA目前和未来的发展趋势; 其次,较为详细地介绍了XilinxFPGA的开发技巧,融入了作者的工程开发经验,对于初学者和工程开发人员来讲都具有较强的可读性;最后,极为全面地介绍了赛灵思公司的ISE、SystemGenerator以及EDK开发软件,非常系统和完整。
因此,对于在校研究生、高年级本科生及从事FPGA开发的工程师来说,本书是一本较为理想的EDA教材和工程工具书,我郑重地将其推荐给大家!希望通过本书的出版,使更多的读者掌握赛灵思FPGA的开发技能,更好地促进FPGA开发技术的普及和推广。
赛灵思(Xilinx)公司中国区大学计划经理谢凯年博士2012年6月
2008年10月,作者有幸聆听了Xilinx公司全球CTO Ivo Bolsens先生在清华大学所作的题为“FPGA:Thefuture platform for transforming, transporting andcomputing”的演讲,感触颇深。IvoBolsens先生指出了FPGA的三大应用领域:数字处理中的信号变换、高速交换中的数据收发以及求解中的复杂计算。作者带着感慨基于当时的ISE9.1软件版本,编写了《XilinxFPGA开发实用教程》一书,受到读者青睐,多次重印。经过3年多的发展,Xilinx公司的软、硬件均有大幅升级,ISE软件已升级到13.x版本,FPGA已经发展到28nm的“7”系列芯片。因此作者在第1版的基础上,结合ISE软件和FPGA特征,重新整理了原稿,删除了部分冗余、陈旧的内容,形成了此次的修订版版本。
同第1版一样,修订版版本中的全部内容都是作者实际项目开发经验和Xilinx公司各类文档、书籍的结合体,全部信息几乎都可以从Xilinx网站以及Google上找到渊源,不过我们仍然向您推荐本书,因为网络的信息是分散的、杂乱的,且正确性不是100%的,本书各章内容的安排是从大量的实践中总结出来的,循序渐进,条理清楚,且都经过作者验证,我们的目的就是从IvoBolsens先生的观点出发,结合项目开发,将网络上尽可能多的相关信息以相对较高的质量组合起来。
本书适合电子、通信以及计算机等相关专业的研究生和高年级本科生使用,同时也适合于从事Xilinx系列FPGA设计和开发的工程师。毫无疑问,市场上已经有很多关于FPGA设计的书籍,我们也不认为本书是其中最重要的一本,但我们意识到FPGA开发一定要结合芯片特点以及提供商的诸多建议和协议,只有这样才能真正掌握其开发之道。
在第1版中,由于未配备光盘,缺少实际的工程和电子版本代码,不利于快速学习,广大读者多次给作者指出这一不足。因此,在修订版本中,我们将全书所有内容都移植在小巧的S6CARD板卡(基于Spartan 6LX9的开发板,和身份证大小一样,通过USB供电和调试,无须下载线缆)上,并将所有的工程文件附在光盘上,为读者提供通用的验证平台。S6CARD板卡的详细信息可参考与非网相关介绍()。
全书各章由徐文波、田耘共同完成编写。此外,在成文过程中参考了较多的书籍、论文和网络文献,在此向广大作者表示深深谢意。
FPGA技术博大精深且发展迅猛,不可能通过一本书进行全方位的详细介绍,更多还需要读者自己动手实践。由于作者水平有限,FPGA技术发展迅速,书中难免存在不妥之处,敬请广大读者指正。
作者
2012年5月
整体而言,本书具有以下三项特色:首先,从逻辑设计、数字信号处理、嵌入式系统设计和高速连接功能等四个方面系统地介绍了Xilinx FPGA的开发与应用,条理清晰、思路明确,符合FPGA目前和未来的发展趋势;其次,较为详细介绍了Xilinx FPGA的开发技巧,融入了作者的工程开发经验,对于初学者和工程开发人员来讲都具有强的可读性;最后,极为全面地介绍了赛灵思公司的ISE、System Generator以及EDK开发软件,非常系统和完整。因此,对于在校研究生、高年级本科生及从事FPGA开发的工程师来说,本书是一本较为理想的EDA教材和工程工具书,我郑重地将其推荐给大家!希望通过本书的出版,使更多的读者掌握赛灵思FPGA的开发技能,更好地促进FPGA开发技术的普及和推广。
——赛灵思(Xilinx)公司中国区大学计划经理谢凯年博士
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]<0:0:0><0:0:1><0:0:0>=UP<0:0:0>=DOWN<0:0:0><0:0:0><0:0:0>数据宽度单比特单比特字节宽度字节宽度单比特单比特
配置数据存储器类型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左右,否则容易发生下载错误。此外,肖特基二极管应选取低压降的管子,以保证下载线正常工作。
评论
还没有评论。