ISE63i使用指南.docx
《ISE63i使用指南.docx》由会员分享,可在线阅读,更多相关《ISE63i使用指南.docx(34页珍藏版)》请在冰点文库上搜索。
ISE63i使用指南
二、ISE6.3i快速入门
本教程主要是向ISE的初学者描述和演示,在XILINX的ISE集成软件环境中,如何用VHDL和原理图的方式进行设计输入;如何用ModelSim仿真工具对设计进行功能仿真和时序仿真;如何实现设计。
注:
本教程的例子是在PC机上的ISE6.x环境中实现的。
本教程包括以下几个章节:
●教程概述
●设计开始
●设计输入(VHDL)
●行为模型仿真(功能仿真)
●设计输入(顶层为原理图)
●设计实现
●对顶层文件进行仿真(时序仿真)
要想更深入地学习、了解ISE设计工具,请阅读XILINX网站上的ISE深入教程
(./support/techsup/tutorials/)。
教程概述
完成本教程后,你将会对以下的设计流程有一个清楚的认识:
●创建一个新的工程项,用Virtex器件作为设计的目标器件;
●用ISE的语言摸板生成一个4位计数器的VHDL模块;
●创建一个用波形输入的测试向量文件,并对4为计数器进行功能仿真;
●创建一个顶层为原理图输入的设计;
●在顶层原理图中调用计数器的VHDL模块;
●把所有的模块连接在一起,并标出内连网线,总线以及I/O管脚的名称;
●对4位计数器模块和顶层原理图的输入信号波形进行初始化设置,并队仿真长度进行约束;
●对4位计数器模块进行功能和时序仿真,对顶层原理图设计进行时序仿真;
●使用Floorplanner工具,查看经过布局布线后该设计的布局情况;
●参照“附录:
EDIF设计方法”,完成网表(EDIF)文件输入的设计流程;
●参照“附录:
EDIF设计方法”,使用FPGAEditor,查看经过布局布线后该设计的布局和布线情况。
设计开始
本节主要描述本教程的软件要求,如何在PC机上运行ISE软件,以及如何获得再线帮助。
软件要求
为了完成本教程,你必须在你的PC机上安装以下软件:
●ISE4.x
●ModelSimVHDL
如果在XILINX的软件安装过程中遇到问题,请参阅《ISE安装指南》(ISEReleaseNotesandInstallationGuide)。
软件安装完后,环境变量应如下所述:
1.在Windows98中,如果你的ISE软件安装在C:
\XILINX目录下,ModelSim软件安装在C:
\Modeltech目录下,在C:
\autoexec.bat文件中,应该包含如下设置;
SETXILINX=C:
\XILINX
SETPATH=%XILINX%\BIN\NT;C:
\Modeltech\win32;
SETLM_LICENSE_FILE=%XILINX%\data\lincese.dat;C:
\Modeltech\win32\license.dat;
2.在WindowsNT/2000中,通过选择开始—>设置—>控制面板—>系统—>高级—>环境变量选择来设置相应环境变量。
关于在线申请ModelSimXEStarterLicense,请选择开始—>程序—>ModelSimXE—>SubmitLicenseRequest,可以在线申请ModelSimXilinxEditionStarter的license文件。
运行ISE软件
对于PC机用户,可选择开始—>程序—>XilinxISE4.x—>ProjectNavigator来启动ISE软件。
使用在线帮助
你可以在ISE运行过程中,随时获得在线帮助。
当你按下F1键时,帮助系统就会显示出正在运行过程的在线帮助。
比如说,当你在运行ECS(原理图输入)时按下F1键,那么关于如何使用ECS的在线帮助就会显示出来。
设计输入(VHDL)
本节中,你将会利用VHDL语言模块来设计一个4位计数器模块。
首先,创建一个新的工程项和生成一个计数器模块;然后,参照计数器VHDL语言模块来完成一个4位计数器的VHDL设计。
创建一个新的工程项
按照以下步骤创建一个新工程项;
1.选择File—>NewProject;
2.在NewProject对话框中的ProjectLocation下,,键入新工程项存放的路径,或者点击ProjectLocation旁的浏览按钮,选择你想存放新工程项的路径;
3.在ProjectName下,键入‘Tutorial’。
当你在ProjectName下键入’Tutorial’后,在ProjectLocation下会自动创建一个’Tutorial’的子目录;
4.使用Value处的下拉菜单,你可以对每种属性进行选择。
在下拉菜单列表中,点击所需的属性值如下:
●器件系列(DeviceFamily):
Virtex
●器件(Device):
xcv50-6bg256
●设计流程(DesignFlow):
XSTVHDL
图1-1新工程项对话框(NewProjectDialogBox)
5.点击OK。
ISE将会在工程项导航器(ProjectNavigator)中创建和显示你的新工程项。
创建一个计数器模块
按照以下步骤创建一个计数器VHDL模块:
1.选择Project—>NewSource;
2.选择VHDL模块(VHDLModule)作为源程序类型;
3.在文件名中键入‘counter’;
4.点击Next;
5.电击Next;
6.点击Finish,完成这个新源程序的模板counter.vhd将会显示在HDL编辑窗口中,它包括计数器的Library,Use,Entity,Architecture等语句的描述。
利用计数器模板修改你的计数器模板
要完成这个计数器模块,你将要用到ISE的语言模板(ISELanguageTemplate)工具,选择其中的计数器VHDL描述来完成counter.vhd的设计。
1.选择Edit—>LanguageTemplates来打开语言模板,或者通过点击工具栏中最右端的灯泡按钮来打开语言模板;
2.在语言模板(LanguageTemplates)窗口中,通过点击“+”符号来展开VHDL下的综合模板(SynthesisTempletes);
图1-2计数器语言模板(CounterLanguageTemplate)
3.从VHDL综合模板中选择计数器模板(CounterTemplate),并把它拖动或粘贴到源程序counter.vhd的begin和end之间;
4.关闭语言模板(LanguageTemplates)窗口;
5.将带有注释符号(--)的计数器端口定义的语句剪切并粘贴到计数器的实体(entity)描述中去。
计数器端口定义语句如下:
--CLK:
inSTD_LOGIC;
--RESET:
inSTD_LOGIC;
--CE,LOAD,DIR:
inSTD_LOGIC;
--DIN:
inSTD_LOGIC_VECTOR(3downto0);
--COUNT:
inoutSTD_LOGIC_VECTOR(3downto0);
6.去掉counter.Vhd的源程序中端口定义语句前的注释符号(--);
7.去掉COUNT端口定义语句后的分号(;),如下所示:
COUNT:
inoutSTD_LOGIC_VECTOR(3downto0)
8.选择File—>Save,保存counter.vhd源程序。
此时,你的counter.vhd源程序应与图1-3中的VHDL描述一样。
图1-3修改后的计数器模块(ModifiedCounterModule)
仿真行为模型(功能仿真)
在本节中,你将会创建一个testbench波形,用于定义计数器模块所应有的功能。
这个testbench波形将被用于与Modelsim仿真器连接,用来验证该计数器是否达到设计要求的功能和时延需求。
创建一个testbench波形源文件
首先,在ProjectNavigator中创建一个testbench波形源文件,该文件将在HDLBencher中进行修改。
1.在工程项窗口(ProjectWindow)的源文件中选中计数器(counter.vhd);
2.选择Project—>NewSource;
3.在新的对话框中,选择新文件类型为TestBenchWaveform;
4.键入文件名为“counter_tbw”;
5.点击Next;
注:
在其他工程项中,你可以将你的testbench波形与其他源文件关联。
6.点击Next;
7.点击Finish;
此时,HDLBencher程序自动启动并等候你输入所需的时序需求。
你现在可以指定仿真所需的时间参数。
时钟高电平时间和时钟低电平时间一起定义了设计操作必须达到的时钟周期,输入建立时间定义了输入在什么时间必须有效,输出有效延时定义了有效时钟沿到达后多久必须输出有效数据。
在本教程中,不需要改变任何默认的时间约束。
默认的初始化时间设置如下:
时钟高电平时间 (Clockhightime):
50 ns
时钟低电平时间 (Clocklowtime):
50 ns
输入建立时间(Inputsetuptime):
10 ns
输出有效时间 (Outputsetuptime):
10 ns
8.点击 OK,接受默认的时间设定。
你的testbench波形显示如图 1-4所示:
图 1-4 在HDLTestBench波形
初始化计数器输入
在HDLBencher的波形中,初始化计数器输入如下:
(注:
在每个单元的蓝色区域输入激励。
)
1.在CLK第1周期下点击RESET单元直到该单元变为高;
2.在CLK第2周期下点击RESET单元直到该单元变为低;
3.在CLK第3周期下点击CE单元直到该单元变为高;
4.在CLK第2周期下点击DIR单元直到该单元变为高;
你的testbench波形现在看起来应该如图 1-5所示。
图1-5HDLBencher激励及响应输入
5.将你的testbench文件存盘。
选择File—>SaveWaveform或点击工具栏的存盘图标。
接下来,HDLBench会提示你设置你希望仿真的时钟周期;
6.在“Endthetestbench_cyclesafterthelastinputassignment”对话框中输入8,默认值为1;
7.点击OK;
8.退出HDLBencher。
新的testbench波形源文件(counter_tbw.tbw)自动加入到该工程项中。
生成预期的输出响应
现在,你可以在已输入初始化激励的基础上,生成时钟模块预期的输出。
1.在SourceinProject窗口中,选中counter_tbw.tbw文件;
2.在ProcessesforCurrentSource窗口中,点击ModelSimSimulator旁边的“+”符号展开ModelSim仿真器的层次结构;
3.双击GenerateExpectedSimulationResults;
此步骤采用定义好的输入运行一个后台仿真,产生输出值加入到testbench波形中。
你的testbench波形现在看起来应该如图1-6所示。
图1-6生成仿真结果
4\直接退出HDLBencher而不选择波形存盘。
使用ModelSim进行仿真
根据HDLBencher中产生的预期结果,你现在可以用ModelSim进行仿真。
在这部分教程中,你将运行行为仿真(亦即功能仿真)和布局布线后的仿真(时序仿真)。
行为仿真
我们进行行为仿真以验证计数器模块的功能。
1.在SourcesinProject窗口中选择counter_tbw.tbw文件;
2.在ProcessesforCurrentSource窗口中,点击“+”符号展开ModelSim仿真器的层次结构,找到并双击SimulateBehavioralVHDLModel;
3.对于第一次运行ModelSim的用户,会显示一个对话框,需要在其中做以下处理:
●选中Donotshowthisdialogagain选项
●点击RunModelSim
此对话框在你重新安装或重新配置ModelSim之前将不再显示。
你的仿真结果现在显示在ModelSim的波形窗口(wavewindow)。
注:
ISE通过自动创建及运行一个仿真宏文件(.fdo文件)来自动处理仿真过程。
虽然用户无法看到,但在本教程中,counter_tbw.fdo文件实现了以下操作:
●创建设计库;
●编译设计源文件和testbench源文件;
●调用仿真器;
●打开所有的观察窗口;
●将所有信号加到wave窗口;
●将所有信号加到list窗口;
●按照要求的运行时间属性进行仿真(默认为1000ns).
4.点击Zoom—>ZoomFul,或在工具条点击ZoomFull图标;
5.点击Zoom—>Zoomin,或在工具条点击Zoomin图标;
6.拖动波形窗口下端的滚动条至窗口的最左端,仿真输出波形应如图1-7所示。
图1-7行为仿真波形
7.关闭ModelSim主窗口,退出ModelSim
布局布线后的仿真
布局布线后的仿真包括了目标器件的时延信息。
对counter模块的后仿真操作如下:
1.在SourcesinProject窗口中选择counter_tbw.tbw;
2.在ProcessesforCurrentSource窗口,点击“+”符号展开ModelSim仿真器的层次结构,找到并双击SimulatePost-Place&RouteVHDLModel;
注:
此步骤会启动设计实现来进行布局布线及启动ModelSim。
3.点击Zoom—>ZoomFul,或在工具条点击ZoomFull图标;
4.点击Zoom—>Zoomin,或在工具条点击Zoomin图标;
5.拖动波形窗口下端的滚动条至窗口的最左端,仿真输出波形应如图1-8所示。
图1-8布局布线后的仿真波形
6.关闭ModelSim主窗口,退出ModelSim。
设计输入(顶层为原理图)(Top—LevelSchematic)
本节以一个原理图设计为例,说明了如何创建一个包含有例化的VHDL计数器模块的顶层原理图,描绘了如何将若干个模块连接成一个原理图,如何给单根连线命名,如何给总线命名以及如何添加输入/输出管脚标记。
创建VHDL模块 (VHDLModule),生成一个原理图符号(SchematicSymbol)
1.在工程导航器(ProjectNavigator)菜单中,点击Project—>AddSource来添加一个VHDL模块—counter.Vhd。
(在选择源类型(ChooseSourceType)弹出窗口中选择VHDLModule);
2.在SourcesinProject窗口中,选中计数器模块counter.vhd;
3.在ProcessesforCurrentSource窗口中,点击设计输入实用程序(DesignEntityUtilities)之前的“+”符号,然后双击创建原理图符号(CreateSchematicSymbol)。
经过以上步骤,名称为“counter”的图形化元件被放入到工程项库中。
创建一个新的顶层原理图(Top—LevelSchematic)
1.在工程项导航器(ProjectNavigator)菜单中,选择Project—>NewSource;
2.选择原理图(Schematic)为源类型;
3.输入原理图名为“top”;
4.先点击“Next”,再点击“Finish”。
此时,原理图编辑器(ECS)自动启动并在其原理图窗口中打开一张空图。
例化VHDL模块 (InstantiatingVHDLModule)
在原理图编辑器(ESC)中,例化两个VHDL计数器模块–couter
1.在菜单中选择Add—>Symbol,或者在工具栏中点击(AddSymbol)图标;
2.从元件符号列表(在屏幕右侧)中,选择计数器counter;
注意,不要在类别(Categories)窗口中作任何选择。
3.点击左键可将计数器counter放置在光标所在的位置;
请在原理图中放置两个计数器counter。
现在,原理图应该如图1-9所示。
4.按ESC键退出添加符号(AddSymbol)模式。
注:
可以通过放大缩小功能(View—>Zoom—>In/out/ToBox/FullView)和拖动滚动条来调整视图大小及位置。
图1-9例化VHDL模块
原理图中连线(WiringtheSchematic)
在连线元件符号中时,一些连线端可以悬空,而另一些连线端需和元件符号相连。
1.首先激活划线功能,通过在菜单中选择Add—>Wire,或者在工具栏中点击(AddWire)图标;
2.添加一根悬空空线和延展连线
a)在计数器模块的某一管脚单击鼠标;
b)将连线拉伸到需要的长度;
c)在连线端点处双击鼠标;
按照如图1-10所示,给计数器模块的每一管脚添加连线。
3.添加两个元件符号之间的连线
a)在一个计数器模块的管脚处单击鼠标;
b)在另一个计数器模块的对应管脚处双击鼠标,结果如图1-10所示。
当完成连线后,按ESC键退出添加连线(AddWire)模式。
图1-10为模块相应管脚连线
为连线添加网络名(AddNetNametowires)
画好连线后,你可为相应的连线添加网络名称。
1.在菜单中选择Add—>NetName,或者在工具栏中点击(AddNetName)图标,
2.创建网络名并放置到连线上的步骤如下:
a)在工具栏右边的文本对话框中输入网络名clock,如图1-11所示:
注:
使用网络命名(NameBranch)和保持网络名(KeepName)的默认值。
图1-11添加网络名
b)将鼠标移动到悬空连线的端点处(此时光标处显示出网络名);
c)点击鼠标左键;
注:
按照上面步骤添加其余5个网络名:
reset,ce,load,dir1和dir2;
3.按ESC键退出添加网络名(AddNetName)模式。
添加完6个网络名后,原理图应该如图1-12所示。
图1-12为连线添加完网络名后的原理图
为总线添加网络名
按照同样的步骤,为计数器模块的din和count管脚添加总线网络名并给总线宽度赋值。
1.在菜单中选择Add—>NetName,或者在工具栏中点击(AddNetName)图标;
2.创建总路线网络名并放置到总线上的步骤如下:
a)在工具栏右边的文本对话框中输入总线名和宽度,如:
din1(3:
0);
注:
使用网络命名(NameBranch)和保持网络名(KeepName)的默认值。
b)将鼠标移动到悬空总线的端点(此时光标处显示出总线名及宽度);
c)点击鼠标左键;
注:
按照上面步骤添加其余3个总线名:
count1(3:
0),count2(3:
0)和din2(3:
0);
3.按ESC键退出添加网络名(AddNetName)模式。
添加完总线名后,原理图应该如图1-13所示。
图1-13为总线添加完网络名后的原理图
添加输入/输出管脚标记(AddingI/OMarkers)
根据各个输入/输出信号的方向,添加相应的标记。
在本教程中,我们要添加输入标记和双向信号标记,最后结果应如图1-14所示。
1.在菜单中选择Add—>I/OMarker,或在工具栏中点击(AddI/OMarker)图标;
2.按如下步骤为clock,reset,ce,load,dir1和dir2添加输入标记,同时为总线din1(3:
0)和din2(3:
0)添加输入标记:
a)在工具栏右边的参数单先框中,选择输入(Input);
b)将鼠标移动到输入信号线的端点(此时光标处显示出输入标记的图形);
c)点击鼠标左键(输入标记会将网络名或总线名包含在标记图形的内部);
注:
一定要在信号线的端点处单击鼠标。
如果添加输入/输出标记不成功,系统会弹出错误对话框。
3.按如下步骤为count总线添加双向信号标记:
a)在工具栏右边的参数单选框中,选择双向(Bidirectional);
b)将鼠标移动到输出信号线的端点(此时光标处显示出双向信号标记的图形);
c)点击鼠标左键;
完成的原理图如图1-14所示。
图1-14完成的原理图
4.在菜单中选择File—>Save,保存原理图;
5.退出原理图编辑器(ECS)。
设计实现
在本教程中,设计实现部分涵盖了两项任务:
在工程导航器(ProjectNavigator)中运行设计实现(ImplementDesign)进程,以及在资源分配器(Floorplanner)工具中查看设计在布局布线后的结果。
运行设计实现
首先,运行所有与这个计数器设计相关联的进程(从综合到布局布线)。
在原理图文件上启动设计实现(ImplementDesign)以完成操作:
1.在SourcesinProcess窗口中选择top(top.sch);
2.在ProcessesforCurrentSource窗口中双击设计实现(ImplementDesign)。
这样就运行了所有相关的进程。
图1-15设计实现过程
在ProcessforCurrentSource窗口中,打对勾的标记指示进程已经成功地运行;感叹号标记表示进程已经运行,但是包含有系统给出的警告,有关警告的更多信息可以从副本(Transcript)窗口中获取。
在资源分配器(Floorplanner)中查看设计布局
现在,你可以在资源分配器(Floorplanner)中查看完成后的设计。
1.在SourceinProcess窗口中选择top(top.sch);
2.在ProcessforCurrentSource窗口中点击ImplementDesign左边的“