ISE使用指南02.docx
《ISE使用指南02.docx》由会员分享,可在线阅读,更多相关《ISE使用指南02.docx(31页珍藏版)》请在冰豆网上搜索。
![ISE使用指南02.docx](https://file1.bdocx.com/fileroot1/2022-11/23/7005655d-e786-4adc-9257-c94af59edec2/7005655d-e786-4adc-9257-c94af59edec21.gif)
ISE使用指南02
4.3.2基于ISE的仿真
在代码编写完毕后,需要借助于测试平台来验证所设计的模块是否满足要求。
ISE提供了两种测试平台的建立方法,一种是使用HDLBencher的图形化波形编辑功能编写,另一种就是利用HDL语言。
由于后者使用简单、功能强大,所以本节主要介绍基于Verolog语言的测试平台建立方法。
1.测试波形法
在ISE中创建testbench波形,可通过HDLBencher修改,再将其和仿真器连接起来,再验证设计功能是否正确。
首先在工程管理区将Sourcesfor设置为BehavioralSimulation,然后在任意位置单击鼠标右键,在弹出的菜单中选择“NewSource”命令,然后选中“TestBenchWaveForm”类型,输入文件名为“test_bench”,点击Next进入下一页。
这时,工程中所有VerilogModule的名称都会显示出来,设计人员需要选择要进行测试的模块。
由于本工程只有一个模块,所以只列出了test,如图4-30所示。
图4-30选择待测模块对话框
用鼠标选中test,点击“Next”后进入下一页,直接点击“Finish”按键。
此时HDLBencher程序自动启动,等待用户输入所需的时序要求,如图4-31所示。
图4-31时序初始化窗口
时钟高电平时间和时钟低电平时间一起定义了设计操作必须达到的时钟周期,输入建立时间定义了输入在什么时候必须有效,输出有效延时定义了有效时钟延时到达后多久必须输出有效数据。
默认的初始化时间设置如下:
∙时钟高电平时间(ClockHighTime):
100ns
∙ 时钟低电平时间(ClockLowTime):
100ns
∙输入建立时间(InputSetup):
15ns
∙输出有效时间(OutputValid):
15ns
∙偏移时间(Offset):
100ns
单击“OK”按钮,接受默认的时间设定。
测试矢量波形显示如图4-32所示。
图4-32测试矢量波形
接下来,初始化输入(注:
灰色的部分不允许用户修改),修改的方法为:
选中信号,在其波形上单击,从该点击所在周期开始,在往后所有的时间单元内该信号电平反相。
点击din信号前面的“+”号,在din[7]的第2个时钟周期内单击,使其变高;在din[6]的第3个时钟周期内单击,使其变高;同样的方法修改din[5]~din[0]信号,使其如图4-33所示。
图4-33初始化输入
然后将testbench文件存盘,则ISE会自动将其加入到仿真的分层结构中,在代码管理区会列出刚生成的测试文件test_bench.tbw,如图4-34所示。
图4-34测试文件列表
选中test_bench.tbw文件,然后双击过程管理区的“SimulateBehavioralModel”,即可完成功能仿真。
同样,可在“SimulateBehavioralModel”选项上单击右键,设置仿真时间等。
例4-3的仿真结果如图4-35所示。
从中,可以看出,dout信号等于din信号加1,功能正确。
图4-35功能仿真结果
2.测试代码法
下面介绍基于Verilog语言建立测试平台的方法。
首先在工程管理区将“Sourcesfor”设置为BehavioralSimulation,在任意位置单击鼠标右键,并在弹出的菜单中选择“NewSource”命令,然后选中“VerilogTestFixture”类型,输入文件名为“test_test”,再点击“Next”进入下一页。
这时,工程中所有VerilogModule的名称都会显示出来,设计人员需要选择要进行测试的模块。
用鼠标选中test,点击“Next”后进入下一页,直接点击“Finish”按键,ISE会在源代码编辑区自动显示测试模块的代码:
`timescale1ns/1ps
moduletest_test_v;
//Inputs
regclk;
reg[7:
0]din;
//Outputs
wire[7:
0]dout;
//InstantiatetheUnitUnderTest(UUT)
testuut(
.clk(clk),
.din(din),
.dout(dout)
);
initialbegin
//InitializeInputs
clk=0;
din=0;
//Wait100nsforglobalresettofinish
#100;
//Addstimulushere
end
endmodule
由此可见,ISE自动生成了测试平台的完整架构,包括所需信号、端口声明以及模块调用的完成。
所需的工作就是在initial…end模块中的“//Addstimulushere”后面添加测试向量生成代码。
添加的测试代码如下:
foreverbegin
#5;
clk=!
clk;
if(clk==1)
din=din+1;
else
din=din;
end
完成测试平台后。
在工程管理区将“Sourcesfor”选项设置为BehavioralSimulation,这时在过程管理区会显示与仿真有关的进程,如图4-36所示。
图4-36选择待测模块对话框
选中图4-36中XilinxISESimulator下的SimulateBehavioralModel项,点击鼠标右键,选择弹出菜单的Properties项,会弹出如图4-37所示的属性设置对话框,最后一行的SimulationRunTime就是仿真时间的设置,可将其修改为任意时长,本例采用默认值。
图4-37仿真过程示意图
仿真参数设置完后,就可以进行仿真了,直接双击ISESimulator软件中的SimulateBehavioralModel,则ISE会自动启动ISESimulator软件,并得到如图4-38所示的仿真结果,从中可以看到设计达到了预计目标。
图4-38test模块的仿真结果
4.3.3基于ISE的实现
所谓实现(Implement)是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。
实现主要分为3个步骤:
翻译(Translate)逻辑网表,映射(Map)到器件单元与布局布线(Place&Route)。
翻译的主要作用是将综合输出的逻辑网表翻译为Xilinx特定器件的底层结构和硬件原语(具体的原语详见第3章中的原语介绍)。
映射的主要作用是将设计映射到具体型号的器件上(LUT、FF、Carry等)。
布局布线步骤调用Xilinx布局布线器,根据用户约束和物理约束,对设计模块进行实际的布局,并根据设计连接,对布局后的模块进行布线,产生FPGA/CPLD配置文件。
1.翻译过程
在翻译过程中,设计文件和约束文件将被合并生成NGD(原始类型数据库)输出文件和BLD文件,其中NGD文件包含了当前设计的全部逻辑描述,BLD文件是转换的运行和结果报告。
实现工具可以导入EDN、EDF、EDIF、SEDIF格式的设计文件,以及UCF(用户约束文件)、NCF(网表约束文件)、NMC(物理宏库文件)、NGC(含有约束信息的网表)格式的约束文件。
翻译项目包括3个命令:
【TranslationReport】用以显示翻译步骤的报告;
【FloorplanDesign】用以启动Xilinx布局规划器(Floorplanner)进行手动布局,提高布局器效率;
【GeneratePost-TranslateSimulationModel】用以产生翻译步骤后仿真模型,由于该仿真模型不包含实际布线时延,所以有时省略此仿真步骤。
2.映射过程
在映射过程中,由转换流程生成的NGD文件将被映射为目标器件的特定物理逻辑单元,并保存在NCD(展开的物理设计数据库)文件中。
映射的输入文件包括NGD、NMC、NCD和MFP(映射布局规划器)文件,输出文件包括NCD、PCF(物理约束文件)、NGM和MRP(映射报告)文件。
其中MRP文件是通过Floorplanner生成的布局约束文件,NCD文件包含当前设计的物理映射信息,PCF文件包含当前设计的物理约束信息,NGM文件与当前设计的静态时序分析有关,MRP文件是映射的运行报告,主要包括映射的命令行参数、目标设计占用的逻辑资源、映射过程中出现的错误和告警、优化过程中删除的逻辑等内容。
映射项目包括如下命令:
【MapReport】用以显示映射步骤的报告;
【GeneratePost-MapStaticTiming】产生映射静态时序分析报告,启动时序分析器(TimingAnalyzer)分析映射后静态时序;
【ManuallyPlace&Route(FPGAEditor)】用以启动FPGA底层编辑器进行手动布局布线,指导Xilinx自动布局布线器,解决布局布线异常,提高布局布线效率;
【GeneratePost-MapSimulationModel】用以产生映射步骤后仿真模型,由于该仿真模型不包含实际布线时延,所以有时也省略此仿真步骤。
3.布局和布线过程
布局和布线(Place&Route):
通过读取当前设计的NCD文件,布局布线将映射后生成的物理逻辑单元在目标系统中放置和连线,并提取相应的时间参数。
布局布线的输入文件包括NCD和PCF模板文件,输出文件包括NCD、DLY(延时文件)、PAD和PAR文件。
在布局布线的输出文件中,NCD包含当前设计的全部物理实现信息,DLY文件包含当前设计的网络延时信息,PAD文件包含当前设计的输入输出(I/O)管脚配置信息,PAR文件主要包括布局布线的命令行参数、布局布线中出现的错误和告警、目标占用的资源、未布线网络、网络时序信息等内容。
布局布线步骤的命令与工具非常多:
【Place&RouteReport】用以显示布局布线报告;
【AsynchronousDelayReport】用以显示异步实现报告;
【PadReport】用以显示管脚锁定报告;
【GuideResultsReport】用以显示布局布线指导报告,该报告仅在使用布局布线指导文件NCD文件后才产生;
【GeneratePost-Place&RouteStaticTiming】包含了进行布局布线后静态时序分析的一系列命令,可以启动TimingAnalyzer分析布局布线后的静态时序;
【View/EditPlaceDesign(Floorplanner)】和【View/EditPlaceDesign(FPGAEditor)】用以启动Floorplanner和FPGAEditor完成FPGA布局布线的结果分析、编辑,手动更改布局布线结果,产生布局布线指导与约束文件,辅助Xilinx自动布局布线器,提高布局布线效率并解决布局布线中的问题;
【AnalyzePower(XPower)】用以启动功耗仿真器分析设计功耗;
【GeneratePost-Place&RouteSimulationModel】用以产生布局布线后仿真模型,该仿真模型包含的时延信息最全,不仅包含门延时,还包含了实际布线延时。
该仿真步骤必须进行,以确保设计功能与FPGA实际运行结果一致;
【GenerateIBISModel】用以产生IBIS仿真模型,辅助PCB布板的仿真与设计;
【MultiPassPlace&Route】用以进行多周期反复布线;
【Back-annotatePinLocations】用以反标管脚锁定信息
经过综合后,在过程管理区双击“ImplementDesign”选项,就可以完成实现,如图4-39所示。
经过实现后能够得到精确的资源占用情况,如图4-40所示。
图4-39设计实现窗口
图4-40实现后的资源统计结果
4.实现属性设置
一般在综合时,所有的属性都采用默认值。
实际上ISE提供了丰富的实现属性设置。
下面对ISE9.1中内嵌的XST属性进行说明。
打开ISE中的设计工程,在过程管理区选中“ImplementDesign”并单击右键,弹出界面如图4-41所示,包括翻译、映射、布局布线以及后仿时序参数等。
图4-41实现属性设置窗口
1.翻译参数设置窗口
【MacroSearchPath】:
宏查找路径。
用于提供宏的存放路径。
【AllowUnexpandedBlocks】:
允许未展开的逻辑块。
用来说明当遇到不能展开NGD原语的块时,NGDBuild工具是否继续运行。
如果在设计中没有较低级的模块,该参数允许NGDBuild运行结束而不出现错误。
默认值为【False】。
2.映射参数设置窗口
图4-42映射参数设置窗口
【TrimUnconnectedSignals】:
整理未连接的信号。
该参数用于控制在映射之前,是否整理未连接的逻辑单元和连线。
该参数有助于评估设计中的逻辑资源,并获得部分设计的时序信息。
默认值为需要整理。
【GenerateDetailedMAPReport】:
生成详细的映射报告。
该参数用来选择是否需要生成详细的映射报告。
详细的映射报告将提示在映射时去掉的多余逻辑块和信号,以及提示展开的逻辑,交叉引用的信号、符号等。
默认值为不产生详细的映射报告。
【PackI/ORegisters/LatchesintoIOBs】:
选择输入输出块中的寄存器/锁存器。
该参数用来控制是否将器件内部的输入/输出寄存器用IOBs中的寄存器/锁存器来取代。
可以选择:
①【ForInputsandOutputs】,尽可能将设计中输入/输出寄存器放入IOBs;②【ForInputsOnly】,仅考虑把输入寄存器放入IOBs;③【ForOutputsOnly】,仅考虑把输出寄存器放入IOBs;④【Off】,采用用户的设计要求进行处理,不考虑自动选择方式。
3.布局布线参数设置窗口
图4-43布局布线参数设置窗口
【PlaceAndRouteMode】:
布局布线方式。
该参数用来指定采用哪种方式来进行布局布线处理。
可以选择:
①【NormalPlaceandRoute】,一般的布局布线处理,该方式为默认值;②【PlaceOnly】,运行所选择的布局布线努力程度,但不运行布线器,当选择该参数后,布局布线器至少运行一次;③【RouteOnly】,运行所选择的布局布线努力程度,但不运行布局器,当选择该参数后,布局布线器至少运行一次;④【ReentrantRoute】,重复布线,保持布局布线方式,布线器用当前的路由再一次布线。
该布线器由努力程度来控制。
【Place&RouteEffortLevel(Overall)】:
全局的布局布线努力程度。
该参数控制布局布线流程的努力程度和运行次数。
根据需要可以选择【Standard】、【Medium】和【High】。
如果选择【Standard】,将会有最快的运行时间,但不会有好的布局布线效果,不适合于复杂的逻辑设计;如果选择【High】,将会对逻辑设计进行反复的布局布线处理,并生成最理想的布局布线结果,对高性能、复杂和最终的设计通常采用这种模式,但比较费时。
默认值为【Standard】。
【StartingPlacerCostTable(1-100)】:
布局器运行开销表。
默认值为1。
【UseTimingConstraints】:
使用时序约束。
在布局布线期间,需使用UCF和PCF文件中时序约束条件。
默认值为使用时序约束。
【UseBondedI/Os】:
使用绑定的I/Os。
该参数用来选择是否允许布局布线器将内部的输入输出逻辑放到I/Os脚未使用的用于绑定I/Os的位置。
该参数也允许布线资源穿过用于绑定I/Os的位置。
默认值为该参数无效。
【GenerateAsynchronousDelayReport】:
生成异步延迟报告。
该参数用来选择是否在布局布线运行时生成异步延迟报告。
该报告列出了设计中所有的网线和网络上所有负载的延迟。
通过执行【AsynchronousDelayReportProcess】,可以打开该报告。
默认值为不生成异步延迟报告。
【GeneratePost-Place&RouteStaticTimingReport】:
生成布局布线后的静态时序报告。
该参数用来选择是否在布局布线后生成静态时序报告,该报告列出了设计中所有信号通道的最坏条件时序特性。
通过执行【Post-Place&RouteStaticTimingReportProcess】,可以打开该报告。
默认值为生成布局布线后的静态时序报告。
【GeneratePost-Place&RouteSimulationModel】:
生成布局布线后的仿真模型。
该参数用来选择是否在布局布线后生成仿真模型。
如果选择需要生成该模型,需要在【SimulationModelProperties】中选择仿真模型参数。
默认值为不生成仿真模型。
【NumberofPARIterations(0-100)】:
【NumberofResultstoSave(0-100)】:
【SaveResultsinDirectory(.dirwillbeappended)】:
【PowerReduction】:
4.映射后静态时序报告参数设置窗口
图4-44映射后静态时序报告参数设置窗口
【ReportType】:
【NumberofItemsinError/VerbaseReport(0-2Billion)】:
5.布局布线后静态时序报告参数设置窗口
图4-45布局布线后静态时序报告参数设置窗口
【ReportType】:
【NumberofItemsinError/VerboseReport(0-2Billion)】:
【StampTimingModelFilename】:
【TimingSpecificationInteractionReportfile】:
6.仿真模型参数设置窗口
图4-46仿真模型参数设置窗口
【GeneralSimulationModelProperties】:
【SimulationModelTarget】:
【RetainHierarchy】:
【GenerateMultipleHierarchicalNetlistFiles】:
7.Xplorer参数设置窗口
图4-47Xplorer参数设置窗口
【XplorerMode】:
【TurnoffXplorerAfterRunCompletes】:
【MaximumNumberofIterations】:
【EnableRetiming】:
4.3.4基于ISE的硬件编程
本节简要介绍ISE软件中的硬件编程流程,详细的配置电路原理以及软件配置参数将在第5章讲解。
生成二进制编程文件并下载到芯片中,也就是所谓的硬件编程和下载,是FPGA设计的最后一步。
生成编程文件在ISE中的操作非常简单,在过程管理区中双击GenerateProgrammingFile选项即可完成,完成后则该选项前面会出现一个打钩的圆圈,如图4-36所示。
生成的编程文件放在ISE工程目录下,是一个扩展名为.bit的位流文件。
图4-48生成编程文件的窗口
到此,只剩下完成设计的最后一步——下载。
双击过程管理区的GenerateProgrammingFile选项下面的ConfigureDevice(iMPACT)项,然后在弹出的ConfigureDevice对话框中选取合适的下载方式,ISE会自动连接FPGA设备。
成功检测到设备后,会出现如图4-37所示的iMPACT的主界面。
图4-49iMPACT主界面
在主界面的中间区域内单击鼠标右键,并选择菜单的“InitializeChain”选项,如果FPGA配置电路JTAG测试正确,则会将JTAG链上扫描到的所有芯片在iMPACT主界面上列出来,如图4-35(a)所示;如果JTAG链检测失败,其弹出的对话框如图4-35(b)所示。
(a)JTAG链扫描正确后的窗口界面 (b)JTAG链扫描正确后的窗口界面
图4-50JTAG链扫描结果示意图
JTAG链检测正确后,在期望FPGA芯片上点击右键,在弹出的菜单中选择“AssignNewConfigurationFile”,会弹出图4-36的窗口,让用户选择期望后缀为.bit的二进制比特流文件。
图4-51选择位流文件
选中下载文件后,单击“打开”按键,在iMPACT的主界面会出现一个芯片模型以及位流文件的标志,在此标志上单击鼠标右键,在弹出的对话框中选择Program选项,就可以对FPGA设备进行编程,如图4-37所示
图4-52对FPGA设备进行编程示意图
配置成功后,会弹出配置成功的界面,如图4-38所示。
图4-53FPGA配置成功指示界面
至此,就完成了一个完整的FPGA设计流程。
当然,ISE的功能十分强大,以上介绍只是其中最基本的操作,更多的内容和操作需要读者通过阅读ISE在线帮助来了解,在大量的实际实践中来熟悉。
4.3.5功耗分析以及XPower的使用
1.功耗分析简介
在FPGA设计中,功耗分析是成功设计的重要环节。
针对FPGA设计中的功耗分析,Xilinx公司推出了简单的速查表格和专用的功耗分析工具——XPower。
对于开发初期的FPGA功耗估算,设计者一般使用Xilinx公司提供的简单图表和公式。
例如,XC9500系列器件的简单功耗分析可以在其数据手册中找到估算公式。
Virtex-E和Virtex-Ⅱ系列器件的简单功耗分析可以通过