深入浅出FPGA-13-IMPACT软件使用
IMPACT软件使用
一般情况下,我是反感写这些内容的,找个UG看一下,然后练习一下,就会了,参考价值不大,这次破例,纯属冲动。
5.4.1 iMPACT综述与基本操作
1. iMPACT简介
iMPACT支持4种下载模式:边界扫描,从串模式、SelectMap模式以及Desktop配置模式。从串模式是一种常用配置电路,可用USB口或并口完成配置。SelectMap模式是一种并行配置模式,速度快,但需要使用多个信号管脚。Desktop模式是一种高速配置模式,可配置FPGA、 PROM以及SystemACE,但需要专用的硬件设备。在实际中,由于边界扫描模式标准统一、设备简单,且可通过JTAG链路配置FPGA、CPLD以及PROM,使用最为广泛。因此本节主要基于边界扫描模式来介绍IMPACT的使用方法。
当设计完成后,ISE调用BitGEN程序把布局布线后的.ncd文件转化成.bit文件,包括了配置数据和配置指令。如果使用JTAG模式,可直接将.bit文件通过iMPACT文件配置到FPGA芯片中。如果要用其它模式配置FPGA,则需要通过iMPACT进行格式转化,生成.mcs、.exo 以及.hex等文件格式,表M对常用的配置文件进行比较和说明。
表5-19 常用的Xilixn FPGA配置文件格式列表
对于FPGA器件,iMPACT能够直接将.bit位流文件下载到芯片中,或者将其转换为PROM器件的EXO/MCS文件格式,并下载到PROM芯片中。
2. iMPACT用户界面
有两种方法可以启动iMPACT软件,一种是在ISE过程管理区中,点击Generate Programming File前面的“+”号,再双击“Configure Device”,在ISE环境下运行;另一种是通过点击“开始 程序 ISE9.1 Accessories iMPACT”,在Windows环境下单独运行。其用户界面如图M所示。
图5-35 iMPACT的用户界面
iMPACT的用户界面主要由File、Edit、View、Operations、Options、Output、Debug、Window、Help菜单栏和常用工具栏组成。下面对常用的菜单栏操作进行简要介绍。
- File菜单
File菜单包含了常见的文件操作,其中的“Initialize Chain”用于自动完成边界扫描JTAG链上的器件类型和数目;“Export Project to CDF”用于把向前项目信息保存到CDF(Chain Description File)文件中。
- Edit菜单
Edit菜单包含了常用的配置操作,其中的“Add Device”用于手动创建JTAG扫描链时添加PROM或FPGA芯片;“Assign Configuration File”用于指定配置文件;“EDIT ROM”用于修改和删除PROM芯片;“Preference”用于设定iMPACT的通用选项。
- View菜单
View菜单包含了各个窗口显示/关闭的操作。
- Operations菜单
Operations菜单包含了配置、验证、擦除以及各类验证操作。其中“Program”用于对器件编程,下载相应的配置文件;“Verify”用于验证下载是否正确;“Erase”用于擦除FPGA或PROM芯片内的内容。
- Options菜单
Options菜单包含编程、擦除以及回读等选项。
- Output菜单
Output菜单包含了常用的电缆操作。其中“Cable Auto Connect”用于电缆自动连接;“Disconnect All Cables”用于断开所有电缆
- Debug菜单
Debug菜单包含了JTAG扫描连所有的调试操作。其中“Start/Stop Debug Chain”用于启动或停止调试;“Chain Integrity Test”用于扫描立案完整性测试;“IDCODE Test”用于IDCODE测试。
- Window菜单
Window菜单包含了窗口管理操作,如关闭窗口、上一下/下一个窗口等。
- Help菜单
Help菜单包含了iMPACT的在线帮助和版本信息。
5.4.2 使用IMPACT创建配置文件
一个设计经过综合、实现之后,需要为器件生成相应的编程文件。ISE中内嵌了比特流生成器,可生成FPGA以及PROM格式文件,从而实现动态配置,并验证数据是否正确。由于Xilinx FPGA支持多种配置模式,因此在完成数据配置之前,需要选择一个合适的模式,以避免出现编程错误
1. 配置参数设置窗口
在过程窗口中,选中[Generate Programming File]并单击右键打开[Process Properties]窗口,在其中可完成对各类编程参数的选择和配置。
(1)通用参数设置窗口
通用参数设置窗口如图5-36所示,主要选择配置文件的格式以及各种校验规则。
图5-36 通用参数(General Options)设置窗口
其中相应的选项说明如下:
- Run Design Rules Checker(DRC):运行设计规则校验。建议使用该功能,在位流文件生成中进行规则校验,这样可对NCD文件进行评估。其默认值为选中。
- Creat Bit File:创建位流文件。用于设计在实现后生成可配置的比特文件。其默认值为选中。
- Creat Binary Configuration File:创建二进制配置文件。其默认值为不选中。
- Creat ASCII Configuration File:创建ASCII配置文件。其默认值为不选中。
- Creat IEEE 1532 Configuration File:创建符合IEEE 1532标准的配置文件,仅对Virtex系列芯片有关。其默认值为不选中。
- Creat BitStream Compression:使能比特文件压缩功能,可节约PROM的存储空间。其默认值为不选中。
- Enable Debugging of Serial Mode BitStream:使能比特文件的调试功能。其默认值为不选中。
- Enable Cyclic Redundancy Checking(CRC):使能循环冗余校验,在配置数据中添加4位校验码。其默认值为不选中。
(2)配置参数设置窗口
配置参数设置窗口如图5-37所示,主要完成配置电路所用管脚内部电阻的选择。
图5-37 配置参数(Configuration Options)设置窗口
其相应的选项说明如下:
- Configuration Rate:配置数据速率。其默认值为4Mbps。
- Configuration Clk(Configuration Pins):用于选择配置时钟管脚CCLK内部是否使用上拉电阻,有“Pull up”和“Float”两种选择。选择上拉可以减小时钟信号线上的干扰信号,默认值为选择内部上拉。
- Configuration Pin M0:用于选择模式控制管脚M0的内部电阻阻值,有“Pull Up”、“Float”和“Pull Down”3种选择,分别对应着上拉、悬空和下拉,其电阻值的范围为50 ~ 100 ,上拉和下拉能在一定程度上减小干扰。默认值为选择内部上拉。
- Configuration Pin M1:用于选择模式控制管脚M1的内部电阻阻值。同M0的说明。
- Configuration Pin M2:用于选择模式控制管脚M2的内部电阻阻值。同M0的说明
- Configuration Pin Program:用于选择编程控制管脚PROG的内部电阻阻值,有“Pull Up”、“Float”和“Pull Down”3种选择,分别对应着上拉、悬空和下拉,上拉和下拉能在一定程度上减小干扰,避免非法操作。默认值为选择内部上拉。
- Configuration Pin Done:用于选择DONE管脚的内部电阻阻值,有“Pull Up”、“Float”和“Pull Down”3种选择,分别对应着上拉、悬空和下拉,其电阻值的范围为2 ~ 18 。由于DONE信号为集电极开路输出,必须有终端电阻才能正常工作,如果外部电路中没有上拉电阻,则必须选择“Pull Up”;同样,在选择“Float”时,要保证外部电路中已有上拉电阻。
- Configuration Pin Init
- Configuration Pin CS
- Configuration Pin DIn
- Configuration Pin Busy
- Configuration Pin RdWr
- JTAG Pin TCK:用于选择JTAG时钟管脚TCK的内部电阻阻值,有“Pull Up”、“Float”和“Pull Down”3种选择,分别对应着上拉、悬空和下拉,建议选择内部上拉。默认值为选择内部上拉。
- JTAG Pin TDI:用于选择JTAG输入数据管脚TDI的内部电阻阻值,同TCK的说明。
- JTAG Pin TDO:用于选择JTAG输出数据管脚TDO的内部电阻阻值,同TCK的说明。
- JTAG Pin TMS:用于选择JTAG测试模式选择管脚TMS的内部电阻阻值,同TCK的说明。
- Unused IO Pins:用于选择未用管脚的内部电阻选择,同TCK的说明。默认值为FFFFFFFF。
- User ID Code(8 Digital Hexadecimal):用户码身份输入,其格式为8个16进制数。
- DCI Update Mode:用于选择设计DCI进行阻抗调整的模式,有“As Required”、“Continuous”和“Quiet(Off)”3种选择,分别对应着仅在需要时调整阻抗、连续调整阻抗以及达到初始后便不再调整阻抗的3种模式。默认值为“As Required”。
(3)配置启动参数设置窗口
配置启动参数设置窗口如图5-38所示,主要完成配置电路时钟信号以及时钟驱动方案的选择。
图5-38配置启动参数(Startup Options)设置窗口
注意:图M的配置窗口对于不同系列的FPGA芯片是略存区别的。对于早期的Virtex和Spartan-2系列,还会有“Release Set/Reset(Output Events)”等选项,用于设置多少个时钟周期后,复位/置位内部锁存器、触发器。
其相应的选项说明如下:
- FPGA Start-Up Clock:用于选择FPGA芯片的配置时钟,有“CCLK”、“User Clock”和“JTAG Clock”3个可选项。当配置模式为主模式时,则配置时钟由FPGA芯片生成;当配置模式为从模式时,则配置时钟由外部提供。当配置PROM器件时,必须选择CCLK时钟;当选择JTAG模式的配置时钟,该时钟由JTAG接口TCK信号提供。用户自定义的配置时钟User Clock目前很少使用。默认值为CCLK。
- Enable Internal Done Pipe:用于选择是否等待插入的延迟信号CFG_DONE后,DONE管脚有效,对于高速配置方案非常有效。默认值为不选择。
- Done(Output Events):用于设置多少个CFG_DONE周期后,使DONE信号有效。默认值为4。
- Enable Outputs(Output Events):用于设置多少个时钟周期后,将输入、输出管脚从三态条件释放到实际的输入、输出结构。默认值为5。
- Release Write Enable(Output Events):用于设置多少个时钟周期后,释放全局写信号到触发器和存储器。如果选择“Done”参数,表示当Done脚为高时,释放写使能信号;选择“Keep”,用于保持当前的写使能信号。默认值为6。
- Release DLL(Output Events):用于设置等待多少个时钟周期后,DLL输出有效。默认值为“No Wait”。
- Match Cycle:用于设置是否等到DCI匹配后,再进入启动周期。默认值为“No Wait”。
- Drive Done Pin High:用于设置是否将Done置高。默认值为不选中。
(4)回读方式参数设置窗口
回读方式参数设置窗口如图5-39所示,主要用于回读文件格式和回读模式的设置。
图5-39 回读方式参数(Raedback Options)设置窗口
其相应的选项说明如下:
- Security:用于设置是否在回读和重新配置数据时设置保护模式,有“Enable Readback and Reconfiguration”、“Disable Readback”和“Disable Readback and Reconfiguration”3个选项,分别对应着使能回读和重新配置数据、禁止回读以及禁止回读和重新配置数据。其中,禁止回读和重配置是处于对设计保护考虑的;回读执行时,需要由M0/RTRIG脚产生一个上升沿来启动,需要一个外部的逻辑电路驱动CCLK时钟,以回读!RDATA管脚上的每一位数据。
- Create ReedBack Data Files:用于创建回读文件。默认值为不选中。
- Allow SelectMAP Pins to Persist:用于配置完成后是否保留SelectMAP配置模式的配置管脚。使能时,可利用其完成数据的回读,否则当配置完成后,配置管脚将被释放,变成用户管脚。默认值为不保留配置管脚。
- Creat Logic Allocation File:用于配置是否建立一个逻辑定位文件。该文件包含了锁存器、触发器、输入输出管脚的位流位置和块存储器的位流位置。默认值为不选中。
- Creat Mask File:用于配置是否选择建立屏蔽文件,用于确定位流文件中的一些位。默认值为不选择。
(5)加密参数设置窗口
加密参数设置窗口如图5-40所示,主要完成配置文件加密选项的设置。
图5-40加密参数(Encryption Options)设置窗口
其相应的选项说明如下:
- Encrypt Bitstream
- Key 0(Hex String)
- Input Encryption Key File
2.生成FPGA比特配置文件的操作
FPGA配置文件主要用于调试阶段快速地通过JTAG模式配置FPGA,断电后芯片内的逻辑立刻消失,每次上电都需要重新配置。该操作比较简单,首先,根据在配置启动参数中选择配置时钟为JTAG CLK,否则会产生警告,配置过程容易出错;其次,直接点击过程区的Generate Programming File即可,如图5-41所示。
图5-41 创建FPGA配置文件示意图
3.生成PROM比特配置文件的操作
只有生成PROM文件并下载PROM芯片中,才能保证FPGA上电后自动加载逻辑并正常工作。和生成FPGA配置文件相比,生成PROM配置文件较为麻烦,下面对其进行详细说明。
1)将设计经过前仿、综合、实现以及后仿,确保设计无误。单击过程管理区中“Generate Programming File”前面的“+”号,双击“Generate PROM,ACE,or JTAG File”运行文件生成工具,弹出的文件界面如图5-42所示。
图5-42 PROM配置文件生成工具界面 图5-43 选择PROM芯片的类型和文件格式
2)单击“Next”按钮,进入PROM器件选择界面,如图5-43所示。下面以Xilinx PROM为例进行说明。选中Xilinx PROM,在文件格式“PROM File Format”中选择EXO,将PROM配置文件的名字改成“sqrt_test”,确定PROM的存放位置。
3)点击“Next”按钮,选择PROM器件的型号,如图5-44所示。可以选中“Auto Select PROM”选项,由iMPACT自动选择合适的PROM芯片,也可以手动在“Select a PROM”选项的下拉框中选择合适的PROM芯片,然后单击“Add”按钮添加选中的器件。可根据需要反复多次,添加多个PROM芯片。此外,对于 XCF08P以上的批ROM芯片,还可以使能修改和压缩功能。
图5-44 选择PROM芯片的型号 图5-45 PROM配置文件生成器综合信息显示窗口
4)单击“Next”,进入PROM文件综合信息显示窗口,如图5-45所示。如果确认信息无误,单击“Finish”,进入后续步骤;否则返回前面进行修改。
5)单击“Finish”后弹出的配置文件加载窗口如图5-46所示。
图5-46 比特文件选择界面
6)选择相应的文件后,单击“打开”按钮,将其加载。此时,iMPACT会根据加载的bit文件所对应的FPGA芯片计算PROM的容量,如果 PROM容量不够,会主动提醒用户修改PROM型号或者添加更多的PROM芯片;如果容量富裕,则会给出PROM的容量利用率,如图5-47所示。例如,图中给出的设计使用了81.66%的PROM容量。此时,还可以在PROM、FPGA器件的图标上点击右键分别更新芯片型号和相应的.bit文件。
图5-47 PROM容量显示界面
7)在iMPACT的过程管理窗口,双击“Generate File”,iMPACT会自动创建PROM配置文件。或在PROM上点击右键,选择“Generate File”也可完成。当配置文件创建成功后,显示文件大小以及所占PROM的容量,并在iMPACT界面上显示“PROM File Generation Succeeded”,如图5-48所示。
图5-48 PROM配置文件创建成功提示界面
5.4.3 使用IMPACT配置芯片
利用iMPACT配置芯片的操作流程见4.3.4节,这里就不再重复说明。
5.4.4 FPGA配置失败的常见问题
在配置FPGA器件时,经常会出现配置失败的情况,简单总结起来有下列几种情况,并给出响应的解决方案。
1. JTAG链扫描失败
解决方法:首先,检查所有芯片的TCK、TMS管脚是否和JTAG接口的TCK、TMS连接在一起;其次,检查配置电路的JTAG链路是否完整,从 JTAG接口的TDI到链首芯片的TDO、……、再到链尾芯片的TDO是否连接到JTAG接口的TDO;最后再检查电源是否正确。
2.无法通过计算机并口配置
解决方法:首先,检查计算机并口是否插好;其次,采用质量更好的并口配置电缆(Parallel Cable-IV)或信号质量更好的USB配置电缆,排除下载线的问题。目前,最好采用速度更快、可靠性更高的USB下载线。
3. 无法正常配置
解决方法:检查配置时钟信号CCLK或JTAG时钟信号TCK是否存在干扰信号或过冲。如果存在干扰,判断干扰源,并增加滤波电路以消除干扰。如果有过冲,说明该信号线阻抗可能由于较长不匹配,需要增加匹配电阻。一般情况下,CCLK信号的引线长度不超过10cm,还可通过增加源端匹配电阻(33~100 电阻)来改善时钟信号质量。
此外,如果FPGA芯片的旁路电容设计不合理或数据线上有地线及弹信号,也会导致配置失败。
4. DONE管脚状态始终为低
解决方法:检测DONE管脚的负载是否太重,选择合适的上拉电阻。
5. DONE管脚已经变高,但器件仍不能正常工作
解决方法:首先检查设计是否无误;其次,如果设计无误,再检查器件的启动顺序,参考配置流程,通过设计工具重新设置启动顺序。
6. 模式管脚选择错误
解决方法:根据模式选择管脚M[2:0]选择配置模式,当模式改变后,要修改位流文件中的配置时钟为CCLK还是TCK,否则容易配置失败
7. 器件上电后,有时候能配置成功,有时不成功
解决方法:这种情况,经常是由期间的复位未完成,就开始出现数据流。解决方法就是添加复位芯片,延长复位时间。