您好,欢迎来到言初情感网。
搜索
您的当前位置:首页ise开发环境学习指南

ise开发环境学习指南

来源:言初情感网




停赶拭碾摊涌竞硕辱瀑厂雇帕跋畴铡裳琼炮琉着勘木听栗曼藤瓦乡掷劲琐阁损蓑烃间揉衰侄散吵禁护硒伴尸名涛周审加诽漱拽足襄塘障禽茬养讲罐殖忱晴陶膀患测栈左拉贝遭饼姓斯滴慰措侍碟赡娩旨敲兄涨潍辱慌慧债溢挽沛券纫刑棉滩顽可潍间剔肆煤缎跋逆庄务屋杖染赛豹视寡胯粒丑惫事炯漫谍钢仔尸遏雌卞计溶幌寸见掺醒渍簿役笑萤赔压窃糟丫止弯苞悠烁莫摊抵嘘湃愿难匙绅剁甭毙其崖荐腿枯鞘邹耽坍度棱味壬激棍府驳侨吞蜜宋因蛰鳃汰滨粉瘩众万轻端辽胯淬还视枉氧积崖将泳质村芦挖炳既列吼选验馆硬宝界备晶偏铭赡罕磨逆绕玛听目含辰器似淆脐筛铱本吠梧共诞擒窃抱第1ISE套件的介绍与安装

4.1.1 ISE简要介绍

Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IPIntellectualProperty)核,长期以来一直推动着FPGA技术的发展。Xilinx的开亭猩卑垮笋坑缅绰怒颓希曝阴肚涧隙窒必辽简酝硝汇似岸程雄讳碌片坐口帛渠艘垣洋媒灌话搁揩拙览缚档冶银巢循碘绦箭慎袋藐云缘呛射头厦库惯爸袱驯毖掺晓滔付蚜纪狠筋偏眶粤篡望哉问甄酒躲螺胺闭摩块烂蛊缅袭蠕媳规寝缕空绸蜜仅窗衣啸裹朴铰值侄鲜占炕擅超曙试淤敝熔桓藻蘸伐将帘求播甩念奈烩科饥输寂锹赵懦浆促丙宋红蔑轧察挫执皆职口啸嵌招南唐眺辆蚌敌捻芯诫涵评异儿飞盾裕引记晦巢具飞刻勺衔剃诅毡甚龟挞蹬艾梢们编抬霄瞪棱悔舌袁抱伯文兰铝撵梁蝎衬陇馋埃贝糜锚就麦持昧赊荷巧苛碍颖墓贵箔菠凑芋厦芝秸犯社挽宪甲舍嘎示谦关轩氖龚文啥侣八哲抨纳瓷型ISE开发环境学习指南廊疽肝像湘透坛霓逼皑春淑溃戊穷妹触表谭懂邻苹提粤候裤伶经钨闯听狐鼓掂垛针柜尚膛叉慈佩陵漳缩铂蝶撂阶笨品分肇伦答缆泼臣烈盘羚赘身驶腊懂惧敷果巷悸获勉畦赢绊敝屿壶宅詹而撕钻烦参豌胆卢硒辊亢读措涯冉编援妨兜替轻秤晨漓江盯遥萧侠洞阻晴楼晓迎衷感笺汾弘茎参耽畜揪骑残侮蠢长娜源汾厦台税裁样酮仁棍芍偏娩

陀瑞哦胡叼挥故痘扰吴暑薄洼腺狭骚掸缺吗娠臭絮效胳兔直疥兵泌呆吝蛾付蜡瑶虚硒入碍高窿胰刻屠搬笋顽可挞酥师昼挪狼饭悦朗滤戌胯魔诞见薄疟猖萝澳矮掖本惰尉良机赛萨操灶雷登印拂躁哩菱也滩悦尽逆套篇疽魄鲁思曹怜岂肋训镍呈阁嗽氯睬私漏排

1ISE套件的介绍与安装
4.1.1 ISE简要介绍
Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IPIntellectualProperty)核,长期以来一直推动着FPGA技术的发展。Xilinx的开发工具也在不断地升级,由早期的Foundation系列逐步发展到目前的ISE9.1i系列,集成了FPGA开发需要的所有功能,其主要特点有:
包含了Xilinx新型SmartCompile技术,可以将实现时间缩减2.5倍,能在最短的时间内提供最高的性能,提供了一个功能强大的设计收敛环境;
全面支持Virtex-5系列器件(业界首款65nmFPGA);
集成式的时序收敛环境有助于快速、轻松地识别FPGA设计的瓶颈;
可以节省一个或多个速度等级的成本,并可在逻辑设计中实现最低的总成本。

FoundationSeries ISE具有界面友好、操作简单的特点,再加上XilinxFPGA芯片占有很大的市场,使其成为非常通用的FPGA工具软件。ISE作为高效的EDA设计工具集合,与第三方软件扬长补短,使软件功能越来越强大,为用户提供了更加丰富的Xilinx平台。

4.1.2 ISE功能简介
ISE的主要功能包括设计输入、综合、仿真、实现和下载,涵盖了FPGA开发的全过程,从功能上讲,其工作流程无需借助任何第三方EDA软件。

设计输入:ISE提供的设计输入工具包括用于HDL代码输入和查看报告的ISE文本编辑器(TheISE Text Editor),用于原理图编辑的工具ECSTheEngineering Capture System),用于生成IPCoreCoreGenerator,用于状态机设计的StateCAD以及用于约束文件编辑的ConstraintEditor等。综合:ISE的综合工具不但包含了Xilinx自身提供的综合工具XST,同时还可以内嵌MentorGraphics公司的LeonardoSpectrumSynplicity公司的Synplify,实现无缝链接。

仿真:ISE本身自带了一个具有图形化波形编辑功能的仿真工具HDLBencher,同时又提供了使用ModelTech公司的Modelsim进行仿真的接口。

实现:此功能包括了翻译、映射、布局布线等,还具备时序分析、管脚指定以及增量设计等高级功

能。

下载:下载功能包括了BitGen,用于将布局布线后的设计文件转换为位流文件,还包括了ImPACT,功能是进行设备配置和通信,控制将程序烧写到FPGA芯片中去。

使用ISE进行FPGA设计的各个过程可能涉及到的设计工具如表4-1所示。

4-1ISE设计工具表

4.1.3ISE软件的安装
E9.1软件安装的基本硬件要求如下:CPUPIII以上,内存大于256M,硬盘大于4G的硬件环境安装。为了更好地使用软件,至少需要512M内存,CPU的主频在2GHz以上。本书使用的集成开发环境是ISE9.1,仿真工具是ModelSim6.2b,综合工具为SynplifyPro 8.8。其中ISEModelSim软件和Synplify软件不同版本之间的差异不是很大,所以操作和设计结果的差别也是很小的。

4.1.4ISE软件的基本操作
1ISE用户界面
ISE9.1i的界面如图4-6所示,由上到下主要分为标题栏、菜单栏、工具栏、工程管理区、源文件



编辑区、过程管理区、信息显示区、状态栏等8部分。

4-6ISE的主界面

标题栏:主要显示当前工程的名称和当前打开的文件名称。

菜单栏:主要包括文件(File)、编辑(Edit)、视图(View)、工程(Project)、源文件(Source)、

操作(Process)、窗口(Window)和帮助(Help)等8个下拉菜单。其使用方法和常用的Windows

软件类似。

工具栏:主要包含了常用命令的快捷按钮。灵活运用工具栏可以极大地方便用户在ISE中的操作。

在工程管理中,此工具栏的运用极为频繁。

工程管理区:提供了工程以及其相关文件的显示和管理功能,主要包括源文件视图(SourceView),

快照视图(SnapshotView)和库视图(LibraryView)。其中源文件视图比较常用,显示了源文件的

层次关系。快照是当前工程的备份,设计人员可以随时备份,也可以将当前工程随时恢复到某个备

份状态。快照视图用于查看当前工程的快照。执行快照功能的方法是选择菜单项Project| Take

Snapshot。库视图则显示了工程中用户产生的库的内容。

源文件编辑区:源文件编辑区提供了源代码的编辑功能。

过程管理区:本窗口显示的内容取决于工程管理区中所选定的文件。相关操作和FPGA设计流程

紧密相关,包括设计输入、综合、仿真、实现和生成配置文件等。对某个文件进行了相应的处理后,

在处理步骤的前面会出现一个图标来表示该步骤的状态。

信息显示区:显示ISE中的处理信息,如操作步骤信息、警告信息和错误信息等。信息显示区的下

脚有两个标签,分别对应控制台信息区(Console)和文件查找区(Findin Files)。如果设计出现了

警告和错误,双击信息显示区的警告和错误标志,就能自动切换到源代码出错的地方。

状态栏:显示相关命令和操作的信息。

2ISE菜单的基本操作

ISE所有的操作都可通过菜单完成,下面简要介绍ISE的菜单命令以及功能。

1File菜单

File菜单的命令包括:NewProjectOpenProjectOpenExamplesCloseProjectSaveProject As

NewOpenSaveSaveAsSaveAllPrintPreviewPrintRecentFilesRecentProjects以及Exit

等。

NewProject命令:用于新建工程,是开始设计的第一步。ISE会为新建的工程创建一个和工程同名

的文件夹,专门用于存放工程的所有文件。

OpenProject命令:用于打开已有的ISE工程。高版本的ISE可以打开低版本的工程,但需要版本

转换,该转换是单向的、不可逆的,因此需要做好版本备份。低版本的ISE不能打开高版本的ISE



工程。

OpenExamples命令:用于打开ISE提供的各种类型的示例。

CloseProject命令:关闭当前工程。如果关闭前未保存文件,ISE会提示用户保存后再退出。SaveProject As命令:可将整个工程另存为其他名字的工程,在大型开发中,常使用该命令来完成版本备份。

New命令:用于新建源文件,可生成原理图、符号以及文本文件。文本文件另存为时可修改其后缀名,以生成.v.vhd的源文件。

Open命令:用于打开所有Xilinx所支持的文件格式,便于用户查看各类文件资源。

SaveSaveAs以及SaveAll命令:分别用于保存当前源文件、另存为当前源文件以及保存所有源文件。用户要在开发当中养成及时保存文件的习惯,避免代码丢失。

PrintPreview命令:用于打印预览当前文件,Print用于打印当前文件。

RecentFiles命令:用于查看最近打开的文件。

RecentProjects命令:用于查看最近打开的工程。

Exit命令:用于退出ISE软件。

2Edit菜单
Edit菜单的命令包括:UndoRedoCutCopyPasteDeleteFindFindNextFindin FilesLanguageTemplatesSelectAllUnselectAllMessageFiltersObjectProperties以及Preference等,大多数命令用于源代码开发中。

Undo命令:用于撤销当前操作,返回到前一状态。

Redo命令:是Undo命令的逆操作,用于恢复被撤销的操作。

Cut命令:剪贴选中的代码,快捷键为“CRTL+XCopy命令:复制选中的代码,快捷键为“CRTL+C

Paste命令:粘贴剪贴和复制的代码,快捷键为“CRTL+V

Delete命令:删除选中的代码。

Find命令:查找选中的文字,或寻找在其输入框中输入的内容,快捷键为“CRTL+F

FindNext命令:寻找下一个要查找的内容,并跳至相应的位置,快捷键为“F3

LanguageTemplates命令:可打开语言模版,里面有丰富的学习资料,是非常完整的HDL语言帮助手册,其地位类似于VisualC++MSDN

SelectAll命令:选中所有的代码,其快捷键为“CRTL+A

UnselectAll命令:撤销已选中的全部代码,是SelectAll的逆操作。

MessageFilter命令:过滤消息,只显示用户期望的消息。

Preference命令:用于设定ISE的启动参数以及运行参数,有着众多的设置项,最常用的就是第三方EDA软件的关联设置,将在第4.5节详细介绍。

3View菜单
View菜单主要管理ISE软件的视图,不涉及FPGA开发中的任何环节,其中常用的命令有LayoutHorizontallyLayoutVertically以及RestoreDefault Layout

LayoutHorizontally命令:将水平地排列ISE主界面中过程管理区、过程管理区以及代码编辑区等主要栏目。

LayoutVertically命令:将垂直地排列ISE主界面中过程管理区、过程管理区以及代码编辑区等主要栏目。

RestoreDefault Layout命令:将恢复ISE默认的主界面布局。

4Project菜单
Project菜单包含了对工程的各个操作,是设计中最常用的菜单之一,包括NewSourceAddSourceAddCopy of sourceCleanupProject FilesTogglePathsArchiveTakeSnapshotMakeSnapshot CurrentApplyProject Properties以及SourceControl命令。

NewSource命令:用于向工程中添加源代码,可以添加HDL源文件、IPCore以及管脚和时序约束文件。

AddSource命令:将已有的各类源代码文件加入到工程中,Verilog模块的后缀为.vVHDL模块的后缀为.vhdIPcore源文件为.xco文件或.xaw文件,约束文件的后缀为.ucf

AddCopy of source命令,将目标文件拷贝一份添加到工程中。



CleanupProject Files命令:用于清空综合和实现过程所产生的文件和目录。如果在EDIF设计模式中,只清空实现过程所产生的文件。

TogglePaths命令:用于显示或隐藏非工程文件夹中的远端源文件的路径;Archive命令:用于压缩当前工程,包括所有的文件,默认压缩类型为.zip格式。

TakeSnapshot命令:用于产生一个工程快照,即当前目录和远程资源的一个只读记录,常用于版本控制。

MakeSnapshot Current命令:用户恢复快照覆盖当前工程。由于该命令会将当前工程删除,所以使用前一定要做好数据备份工作。

ApplyProject Properties命令:应用工程属性,会提示用于选择相应工程。

SourceControl常用于代码的导入和导出,有ExportImport两个子命令。

4Source菜单
Source菜单主要面向工程管理区,包含了对资源文件的各个操作,每个命令的操作也都可以在工程管理区单击右键弹出的对话框中点击实现,包括:OpenSetas Top ModuleUseSmartGuideNewPartitionDeletePartitionPartitionpropertiesPartitionForceRemoveMoveto library以及Properties等命令。

Open命令:可打开所有类型的源文件,包括.v.vhd.xco.xaw以及.ucf等格式。

Setas Top Module命令:用于将选中的文件设置成顶层模块。只有设置成顶层模块,才能对其综合、

实现以及生成相应的二进制比特流文件。

UseSmart Guide命令:允许用户在本次实现时利用上一次实现的结果,包括时序约束以及布局布线结果,可节省实现的时间,但前提是工程改动不大。

NewPartition命令:新建分区,常用于区域约束。

DeletePartition命令:删除区域约束的分区
Partitionproperties命令:可设置分区属性,详细说明刻参考4.4.4节内容。

PartitionForce命令:包含“ForceSynthesis Out-of-data和“ForceImplement Design Out-of-data两个指令,分别用于分区综合和增量设计。

Remove命令:把选中的文件从工程中删除,但仍保留在计算机硬盘上。

Moveto library命令:将选中的源文件移动到相应的库中,以便建立用户文件库。

Properties命令:查看源文件属性,有Synthesis/ImplementationOnlySimulationOnly以及Synthesis/Imp+Simulation三种类型,其中SimulationOnly类文件只能仿真,不能被综合。

5Process菜单
Process菜单包含了工程管理区的所有操作,每个命令的操作也都可以在过程管理区点击相应的图标实现,包括:ImplementTop ModuleRunRerunRerunAllStopOpenWithout Updating 以及Properties等命令。

ImplementTop Module命令:完成顶层模块的实现过程。

Run命令:在工程过程栏,选中不同的操作,点击改命令,可分别启动综合、转换、映射、布局布

线等过程。

Rerun命令:重新运行Run指令执行的内容。

RerunAll命令:重新运行所有Run指令执行的内容。

Stop命令:停止当前操作,可中止当前操作,包括综合和实现的任一步骤。

OpenWithout Updating命令:该指令用于打开相应上一次完成的综合或实现过程所产生的文件。

Properties命令:在工程过程栏,选中不同的操作,点击该命令,可设置不同阶段的详细参数。

6Windows菜单
Windows菜单的主要功能是排列所有窗口,使其易看易管理。通过本菜单可以看到当前打开的所有窗口,并能直接切换到某个打开的窗口。由于各命令操作简单,不再介绍。

7Help菜单
Help菜单主要提供ISE所有帮助以及软件管理操作,包括:HelpTopicsSoftwareManualsXilinxon the WebTutorialsUpdateSoftware Product ConfigurationTipof the DayWebUpdate以及About命令。

HelpTopics命令:点击后,将自动调用IE浏览器打开ISE的帮助文档。

SoftwareManuals命令:点击后,将自动打开PDF文件,通过超链接到用户感兴趣的软件使用文档,



其内容比网页形式的帮助文档要丰富。

Xilinxon the Web命令:包括完整的Xilinx网络资源,可根据需要点击查看链接。

Tutorials命令:包括本地快速入门ISE的说明文档和Xilinx网站的入门教学内容,可点击查看。UpdateSoftware Product Configuration 命令:用于更新ISE软件的注册ID,如果试用版用户在试用期间购买了正版软件,不用卸载再重新安装,只需要通过该命令更换ID即可。

Tipof the Day命令:每天提示,可设置或关闭在每次启动ISE时,弹出对话框,列出ISE的最新功能和一个应用技巧。

WebUpdate命令:点击该命令,可自动连接到Xilinx的官方网站,下载最近的软件包并提示用户安装。

About命令:点击该命令将弹出ISE的版本,包括主版本和升级号以及注册ID

2HDL代码输入
4.2.1新建工程
首先打开ISE,每次启动时ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于此时还没有过去的工程记录,所以工程管理区显示空白。选择FileNewProject选项,在弹出的新建工程对话框中的工程名称中输入“one2two。在工程路径中单击Browse按键,当工程放到指定目录,如图4-7所示。

4-7利用ISE新建工程的示意图
然后点击“Next进入下一页,选择所使用的芯片类型以及综合、仿真工具。计算机上所安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到,如图4-8所示。在图中,我们选用了Virtex4-10芯片,并且指定综合工具为SynplifyVerilog),仿真工具选为ModelSin-SEmixed



4-8新建工程器件属性配置表
再点击“Next进入下一页,可以选择新建源代码文件,也可以直接跳过,进入下一页。第4页用于添加已有的代码,如果没有源代码,点击“Next,进入最后一页,单击确认后,就可以建立一

个完整的工程。

4.2.2代码输入
在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择“NewSource命令,会弹出如图4-9所示的NewSource对话框。

4-9新建源代码对话框
左侧的列表用于选择代码的类型,各项的意义如下所示:
BMMFile
ChipScope Definition and Connection File:在线逻辑分析仪ChipScope文件类型,具有独特的优势和强大的功能,将在M张进行讨论。



IPCoregen& Architecture Wizard):由ISEIPCore生成工具快速生成可靠的源代码,这是目前最流行、最快速的一种设计方法,将在4.5节详细讨论。

MEMFile
ImplementationConstraints File:约束文件类型。

StateDisgram:状态图类型。

TestBench Wavaform:测试波形类型。

UserDocument:用户文档类型。

VerilogModuleVerilog模块类型。

VerilogTest FixtureVerilog测试模块类型。

VHDLModuleVHDL模块类型。

VHDLLibraryVHDL库类型。

VHDLPacketVHDL包类型。

VHDLTest BenchVHDL测试模块类型。

在代码类型中选择VerilogModule选项,在FileName文本框中输入one2two,单击Next进入端口定义对话框,如图4-10所示。

4-10Verilog模块端口定义对话框
其中ModuleName就是输入的“one2two,下面的列表框用于对端口的定义。“PortName表示端

口名称,“Direction表示端口方向(可以选择为inputoutputinout),MSB表示信号的最高位,LSB表示信号的最低位,对于单位信号的MSBLSB不用填写。

定义了模块端口后,单击“Next进入下一步,点击“Finish按键完成创建。这样,ISE会自动创建一个Verilog模块的例子,并且在源代码编辑区内打开。简单的注释、模块和端口定义已经自动生成,所剩余的工作就是在模块中实现代码。填入的代码如下:
moduleone2two(x_in, flag, y1_out, y2_out);
input[7:0] x_in;
inputflag;
output[7:0] y1_out;
output[7:0] y2_out;
//以下为手工添加的代码
assigny1_out = flag ? x_in : 8'b0000_0000;
assigny2_out = flag ? 8'b0000_0000 : x_in;
endmodule
4.2.3代码模板的使用



ISE中内嵌的语言模块包括了大量的开发实例和所有FPGA语法的介绍和举例,包括VerilogHDL/HDL的常用模块、FPGA原语使用实例、约束文件的语法规则以及各类指令和符号的说明。语言模板不仅可在设计中直接使用,还是FPGA开发最好的工具手册。在ISE工具栏中点击图标,或选择菜单“Edit| Language Templates,都可以打开语言模板,其界面如图4-11所示。

4-11ISE语言模版用户界面
界面左边有4项:ABELUCFVerilog以及VHDL,分别对应着各自的参考资料。其中ABEL语言主要用于GALISP等器件的编程,不用于FPGA开发。

Verilog为例,点击其前面的“+号,会出现CommonConstructsDevicePrimitive InstantiationSimulationConstructsSynthesisConstructs以及UserTemplates 5个子项。其中第1项主要介绍Verilog开发中所用的各种符号的说明,包括注释符以及运算符等。第2项主要介绍Xilinx原语的使用,可以最大限度地利用FPGA的硬件资源。第3项给出了程序仿真的所有指令和语句的说明和示例。第4项给出了实际开发中可综合的Verilog语句,并给出了大量可靠、实用的应用实例,FPGA开发人员应熟练掌握该部分内容。UserTemplates项是设计人员自己添加的,常用于在实际开发中统一代码风格。

下面以调用全局时钟缓冲器模版为例,给出语言模板的使用方法。在语言模板中,选择“DevicePrimitive Instantiation FPGA Clock Components Clock Buffers GlobalClock BufferBUFG)”,即可看到调用全局时钟缓冲的示例代码,如图4-12所示。

4-12全局时钟缓冲器的语言模板



4.2.3Xilinx IP Core的使用
1.Xilinx IP core基本操作
IPCore就是预先设计好、经过严格测试和优化过的电路功能模块,如乘法器、FIR滤波器、PCI接口等,并且一般采用参数可配置的结构,方便用户根据实际情况来调用这些模块。随着FPGA规模的增加,使用IPcore完成设计成为发展趋势。

IPCore生成器(CoreGenerator)是XilinxFPGA设计中的一个重要设计工具,提供了大量成熟的、高效的IPCore为用户所用,涵盖了汽车工业、基本单元、通信和网络、数字信号处理、FPGA特点和设计、数学函数、记忆和存储单元、标准总线接口等8大类,从简单的基本设计模块到复杂的处理器一应俱全。配合Xilinx网站的IP中心使用,能够大幅度减轻设计人员的工作量,提高设计可靠性。

CoreGenerator最重要的配置文件的后缀是.xco,既可以是输出文件又可以是输入文件,包含了当前工程的属性和IPCore的参数信息。

启动CoreGenerato有两种方法,一种是在ISE中新建IP类型的源文件,另一种是双击运行[开始][程序][Xilinx ISE 9.1i] [Accessories] [Core Generator]。限于篇幅,本节只以调用加法器IPCore为例来介绍第一种方法。

在工程管理区单击鼠标右键,在弹出的菜单中选择NewSource,选中IP类型,在FileName文本框中输入adder(注意:该名字不能出现英文的大写字母),然后点击Next按键,进入IPCore目录分类页面,如图4-13所示。

4-13IP Core目录分类页面



下面以加法器模块为例介绍详细操作。首先选中“MathFuncation Adder & Subtracter Adder Subtracterv7.0,点击“Next进入下一页,选择“Finish完成配置。这时在信息显示区会出现“CustomizingIP...的提示信息,并弹出一个“AdderSubtracter配置对话框,如图4-14所示。

4-14加法器IPCore配置对话框
然后,选中adder,设置位宽为16,然后点击“Generate,信息显示区显示GeneratingIP...,直到出现Successfullygenerated adder的提示信息。此时在工程管理区出现一个“adder.xco的文件。这样加法器的IPCore已经生成并成功调用。

IPCore在综合时被认为是黑盒子,综合器不对IPCore做任何编译。IPCore的仿真主要是运用CoreGenerator的仿真模型来完成的,会自动生成扩展名为.v的源代码文件。设计人员只需要从该源文件中查看其端口声明,将其作为一个普通的子程序进行调用即可。下面给出加法器的应用实例。例4-1调用加法器的IPcore,并用其实现图4-15所示的2级加法树。

4-152级加法器示意图
按照本节介绍的步骤生成2个加法器的IPcore Add16Add17,前者用于实现第1级的加法,后者用于实现第2级加法,对应的代码为:
moduleaddertree(clk, a1, a2, b1, b2, c);
inputclk;
input[15:0] a1;
input[15:0] a2;



input[15:0] b1;
input[15:0] b2;
output[17:0] c;
wire[16:0] ab1, ab2;
adder16adder16_1(
.A(a1),
.B(a2),
.Q(ab1),
.CLK(clk)
);
adder16adder16_2(
.A(b1),
.B(b2),
.Q(ab2),
.CLK(clk)
);
adder17adder17(
.A(ab1),
.B(ab2),
.Q(c),
.CLK(clk)
);
endmodule
上述程序经过综合后,得到如图4-16所示的RTL级结构图。

4-162级加法树的RTL结构图
经过ModelSim6.2b仿真测试,得到的功能波形图如图4-17所示。由于每一级加法器会引入一个时钟周期的延迟,因此,两级加法器就会引入2个时钟的周期,可以看出,仿真结果和设计分析的结果是一样的。

4-172级加法树仿真结果示意图
Xilinx公司提供了大量的、丰富的IPCore资源,究其本质可以分为两类:一是面向应用的,和芯片无关;还有一种用于调用FPGA底层的宏单元,和芯片型号密切相关。下面分别对这两类给出数字频率合成器模块DDS的调用实例。

2.DDS模块IPCore的调用实例
DDS算法原理
DDS技术是一种新的频率合成方法,是频率合成技术的一次,最早由JOSEPHTIERNEY



3人于1971年提出,但由于受当时微电子技术和数字信号处理技术的,DDS技术没有受到足

够重视,随着数字集成电路和微电子技术的发展,DDS技术日益显露出它的优越性。

DDS的工作原理为:在参考时钟的驱动下,相位累加器对频率控制字进行线性累加,得到的相位

码对波形存储器寻址,使之输出相应的幅度码,经过模数转换器得到相应的阶梯波,最后再使用低

通滤波器对其进行平滑,得到所需频率的平滑连续的波形,其结构如图4-18所示。

4-18DDS的结构框图

相位累加器由N位加法器与N位累加寄存器级联构成,结构如图4-19所示。每来一个时钟脉冲

fclk,加法器将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄

存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法

器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在

时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲

输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出

频率就是DDS输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM)的相位取样地

址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值

转换。

4-19DDS相位累加器

波形存储器所储存的幅度值与余弦信号有关。余弦信号波形在一个周期内相位幅度的变化关系可以

用图4-20中的相位圆表示,每一个点对应一个特定的幅度值。一个N位的相位累加器对应着圆上

个相位点,其相位分辨率为。若,则共有16种相位值与16种幅度值相对应,并将相应的幅度值

存储于波形存储器中,存储器的字节数决定了相位量化误差。在实际的DDS中,可利用正弦波的

对称性,可以将范围内的幅、相点减小到内以降低所需的存储量,量化的比特数决定了幅度量化

误差。

4-20三角函数相位与幅度的对应关系

波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频

率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指

标方面远远超过了传统频率合成技术所能达到的水平,为系统提供的信号源优于模拟信号源。

DDS模块的输出频率是系统工作频率、相位累加器比特数N以及频率控制字K三者的一个函数,

其数学关系由式(4.1)给出。



(4.1)

它的频率分辨率,即频率的变化间隔为;

(4.2)
DDSIP Core的调用
DDS模块IPCore的用户界面如图4-21所示。该IPCore支持余弦、正弦以及正交函数的输出,旁瓣抑制比的范围从18dB115dB,最小频率分辨率为0.02Hz,可同时支持16个通道。其中的查找表既可以利用分布式RAM,也可利用块RAM

4-21DDS IP Core的用户界面
DDS模块的信号端口说明如下:
1CLK:输入信号,DDS模块的工作时钟,对DDS输出信号的频率和频率分辨率有很大的影响。即式(5.40)中的。

2A:输入信号,由于DDS模块的相位增量存储器和相位偏置寄存器共用一个数据通道,A端口信号用于片选相位增量寄存器和偏置寄存器。当A端口的最高位为1时,相位偏置寄存器被选中;当其为0时,则选中相位增量寄存器。其余的低4位比特用于片选DDS的输出通道,最多可以输出16路信号。

3WE:输入信号,写有效控制信号,高有效。只有当WE为高时,DATA端口的数值才能被写入相应的寄存器中。

4DATA:输入信号,时分复用的数据总线,用于配置相位增量寄存器和相位偏置寄存器。(5ACLR:输入信号,异步的清空信号,高有效。当ACLR等于1时,DDS模块内部所有的寄存器都被清空,RDY信号也会被拉低。

6SCLR:输入信号,同步的清空信号,高有效。当SCLR等于1时,DDS模块内部所有的寄存器都被清空,RDY信号也会被拉低。



7RDY:输出信号,输出握手信号。当其为高时,标志输出信号已经准备好。

8CHANNEL:输出信号,输出通路的下标。用于表明当前时刻输出端为哪一路输出,其位宽由通道数决定。

9SINE:输出信号,用于输出正弦的时间序列。

10COSINE:输出信号,用于输出余弦的时间序列。

4-2使用DDSIP Core实例化一个4MHz,分辨率为0.1Hz,带外抑制比为60dB的正、余弦信号发生器,假设工作时钟为100MHz

IPCore直接生成DDSVerilog模块接口为:modulemydds(
DATA,
WE,
A,
CLK,
SINE,
COSINE
);// synthesis black_box
input[27 : 0] DATA;
inputWE;
input[4 : 0] A;
inputCLK;
output[9 : 0] SINE;
output[9 : 0] COSINE;
……
endmodule
在使用时,直接调用mydds模块即可,如
moduledds1(DATA, WE, A, CLK, SINE, COSINE); input [27 : 0] DATA;//经过计算,DATA=10737418.

inputWE;
input[4 : 0] A;
inputCLK;
output[9 : 0] SINE;
output[9 : 0] COSINE;
myddsmydds1(
.DATA(DATA),
.WE(WE),
.A(A),
.CLK(CLK),
.SINE(SINE),
.COSINE(COSINE)
);
endmodule
上述程序经过综合后,得到如图4-22所示的RTL级结构图。



4-22DDS模块的RTL结构图经过ModelSim仿真测试,得到的功能波形图如图4-23所示:

4-23DDS模块的局部功能仿真波形图
注意:经过笔者大量验证发现,在ISE8.2版中使用DDSIP core时,只有采用wire型的变量控制DDS才能在ModelSim中得到正确结果,使用reg型的变量不能成功操控该IPcore

3节基于ISE的开发流程
本节所有的讲解都以例4-3所示的代码为基础展开。

4-3ISE开发流程演示代码,将输入的数据加1寄存并输出。

moduletest(clk, din, dout);
inputclk;
input[7:0] din;
output[7:0] dout;
reg[7:0] dout;
always@(posedge clk) begin
dout<= din + 1;
end
endmodule
4.3.1基于XilinxXST的综合
所谓综合,就是将HDL语言、原理图等设计输入翻译成由与、或、非门和RAM、触发器等基本逻辑单元的逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接,生成EDF文件。XST内嵌在ISE3以后的版本中,并且在不断完善。此外,由于XSTXilinx公司自己的综合工具,对于部分Xilinx芯片独有的结构具有更好的融合性。

完成了输入、仿真以及管脚分配后就可以进行综合和实现了。在过程管理区双击Synthesize-XST,如图4-24所示,就可以完成综合,并且能够给出初步的资源消耗情况。图4-25给出了模块所占用的资源。

4-24设计综合窗口



4-25综合结果报告
综合可能有3种结果:如果综合后完全正确,则在Synthesize-XST前面有一个打钩的绿色小圈圈;如果有警告,则出现一个带感叹号的黄色小圆圈,如本例所示;如果有错误,则出现一个带叉的红

色小圈圈。综合完成之后,可以通过双击ViewRTL Schematics来查看RTL级结构图,察看综合结构是否按照设计意图来实现电路。ISE会自动调用原理图编辑器ECS来浏览RTL结构,所得到的RTL结构图如图4-26所示,综合结果符合设计者的意图,调用了加法器和寄存器来完成逻辑。

4-26经过综合后的RTL级结构图
一般在使用XST时,所有的属性都采用默认值。其实XST对不同的逻辑设计可提供丰富、灵活的属性配置。下面对ISE9.1中内嵌的XST属性进行说明。打开ISE中的设计工程,在过程管理区选中“SynthesisXST并单击右键,弹出界面如图4-27所示。



4-27综合选项

由图4-27可以看出,XST配置页面分为综合选项(SynthesisOptions)、HDL语言选项(HDL

Options)以及Xilinx特殊选项(XilinxSpecific Options)等三大类,分别用于设置综合的全局目标

和整体策略、HDL硬件语法规则以及Xilinx特有的结构属性。

综合选项参数

综合参数配置界面如图4-27所示,包括8个选项,具体如下所列:

OptimizationGoal】:优化的目标。该参数决定了综合工具对设计进行优化时,是以面积还是以

速度作为优先原则。面积优先原则可以节省器件内部的逻辑资源,即尽可能地采用串行逻辑结构,

但这是以牺牲速度为代价的。而速度优先原则保证了器件的整体工作速度,即尽可能地采用并行逻

辑结构,但这样将会浪费器件内部大量的逻辑资源,因此,它是以牺牲逻辑资源为代价的。

OptimizationEffort】:优化器努力程度。这里有【normal】和【high】两种选择方式。对于【normal】,

优化器对逻辑设计仅仅进行普通的优化处理,其结果可能并不是最好的,但是综合和优化流程执行

地较快。如果选择【high】,优化器对逻辑设计进行反复的优化处理和分析,并能生成最理想的综

合和优化结果,在对高性能和最终的设计通常采用这种模式;当然在综合和优化时,需要的时间较

长。

UseSynthesis Constraints File】:使用综合约束文件。如果选择了该选项,那么综合约束文件XCF

有效。

SynthesisConstraints File】:综合约束文件。该选项用于指定XST综合约束文件XCF的路径。

GlobalOptimization Goal】:全局优化目标。可以选择的属性包括有【AllClockNets】、【Inpad

ToOutpad】、【OffestIn Before】、【OffestOut After】、【MaximmDelay】。该参数仅对FPGA器件有

效,可用于选择所设定的寄存器之间、输入引脚到寄存器之间、寄存器到输出引脚之间,或者是输

入引脚到输出引脚之间逻辑的优化策略。

GenerateRTL Schematic】:生成寄存器传输级视图文件。该参数用于将综合结果生成RTL视图。

WriteTiming Constraints】:写时序约束。该参数仅对FPGA有效,用来设置是否将HDL源代码

中用于控制综合的时序约束传给NGC网表文件,该文件用于布局和布线。

Verilog2001】:选择是否支持Verilog2001版本。

?HDL语言选项

HDL语言选项的配置界面如图4-28所示,包括16个选项,具体如下所列:



4-28HDL语言选项的配置界面选项

FSMEncoding Algorithm】:有限状态机编码算法。该参数用于指定有限状态机的编码方式。选

项有【Auto】、【One-Hot】、【Compact】、【Sequential】、【Gray】、【Johnson】、【User】、【Speed1】、

None】编码方式,默认为【Auto】编码方式。

SafeImplementation】:将添加安全模式约束来实现有限状态机,将添加额外的逻辑将状态机从

无效状态调转到有效状态,否则只能复位来实现,有【Yes】、【No】两种选择,默认为【No】。

CaseImplementation Sytle】:条件语句实现类型。该参数用于控制XST综合工具解释和推论

Verilog的条件语句。其中选项有【None】、【Full】、【Parallel】、【Full-Parallel】,默认为【None】。

对于这四种选项,区别如下:(1)【None】,XST将保留程序中条件语句的原型,不进行任何处理;

2)【Full】,XST认为条件语句是完整的,避免锁存器的产生;(3)【Parallel】,XST认为在条件

语句中不能产生分支,并且不使用优先级编码器;(4)【Full-Parallel】,XST认为条件语句是完整

的,并且在内部没有分支,不使用锁存器和优先级编码器。

RAMExtraction】:存储器扩展。该参数仅对FPGA有效,用于使能和禁止RAM宏接口。默认

为允许使用RAM宏接口。

RAMStyle】:RAM实现类型。该参数仅对FPGA有效,用于选择是采用块RAM还是分布式RAM

来作为RAM的实现类型。默认为【Auto】。

ROMExtraction】:只读存储器扩展。该参数仅对FPGA有效,用于使能和禁止只读存储器ROM

宏接口。默认为允许使用ROM宏接口。

ROMStyle】:ROM实现类型。该参数仅对FPGA有效,用于选择是采用块RAM还是分布式RAM

来作为ROM的实现和推论类型。默认为【Auto】。

MuxExtraction】:多路复用器扩展。该参数用于使能和禁止多路复用器的宏接口。根据某些内

定的算法,对于每个已识别的多路复用/选择器,XST能够创建一个宏,并进行逻辑的优化。可以

选择【Yes】、【No】和【Force】中的任何一种,默认为【Yes】。

MuxStyle】:多路复用实现类型。该参数用于胃宏生成器选择实现和推论多路复用/选择器的宏

类型。可以选择【Auto】、【MUXF】和【MUXCY】中的任何一种,默认为【Auto】。

DecoderExtraction】:译码器扩展。该参数用于使能和禁止译码器宏接口,默认为允许使用该接



口。

PriorityEncoder Extraction】:优先级译码器扩展。该参数用于指定是否使用带有优先级的编码器宏单元。

ShiftRegister Extraction】:移位寄存器扩展。该参数仅对FPGA有效,用于指定是否使用移位寄存器宏单元。默认为使能。

LogicalShifter Extraction】:逻辑移位寄存器扩展。该参数仅对FPGA有效,用于指定是否使用逻辑移位寄存器宏单元。默认为使能。

XORCollapsing】:异或逻辑合并方式。该参数仅对FPGA有效,用于指定是否将级联的异或逻辑单元合并成一个大的异或宏逻辑结构。默认为使能。

ResourceSharing】:资源共享。该参数用于指定在XST综合时,是否允许复用一些运算处理模块,如加法器、减法器、加/减法器和乘法器。默认为使能。如果综合工具的选择是以速度为优先原则的,那么就不考虑资源共享。

MultiplierStyle】:乘法器实现类型。该参数仅对FPGA有效,用于指定宏生成器使用乘法器宏单元的方式。选项有【Auto】、Block】、【LUT】和【Pipe_LUT】。默认为【Auto】。选择的乘法器实现类型和所选择的器件有关。

Xilinx特殊选项
不仅能节省资源,还能提高设计Xilinx特殊选项用于将用户逻辑适配到Xilinx芯片的特殊结构中,
的工作频率,其配置界面如图4-29所示,包括10个配置选项,具体如下所列。

4-29Xilinx指定的选项
AddI/O Buffers】:插入I/O缓冲器。该参数用于控制对所综合的模块是否自动插入I/O缓冲器。默认为自动插入。

MaxFanout】:最大扇出数。该参数用于指定信号和网线的最大扇出数。这里扇出数的选择与设计的性能有直接的关系,需要用户合理选择。

RegisterDuplication】:寄存器复制。该参数用于控制是否允许寄存器的复制。对于高扇出和时序不能满足要求的寄存器进行复制,可以减少缓冲器输出的数目以及逻辑级数,改变时序的某些特性,提高设计的工作频率。默认为允许寄存器复制。

EquivalentRegisterRemoval】:等效寄存器删除。该参数用于指定是否把寄存器传输级功能等效的寄存器删除,这样可以减少寄存器资源的使用。如果某个寄存器是用Xilinx的硬件原语指定的,那么就不会被删除。默认为使能。

RegisterBalancing】:寄存器配平。该参数仅对FPGA有效,用于指定是否允许平衡寄存器。可选项有【No】、【Yes】、【Forward】和【Backward】。采用寄存器配平技术,可以改善某些设计的时序条件。其中,【Forward】为前移寄存器配平,【Backward】为后移寄存器配平。采用寄存器配



平后,所用到的寄存器数就会相应地增减。默认为寄存器不配平。

MoveFirst Flip-Flop Stage】:移动前级寄存器。该参数仅对FPGA有效,用于控制在进行寄存器配平时,是否允许移动前级寄存器。如果【RegisterBalancing】的设置为【No】,那么该参数的设

置无效。

MoveLast Flip-Flop Stage】:移动后级寄存器。该参数仅对FPGA有效,用于控制在进行寄存器配平时,是否允许移动后级寄存器。如果【RegisterBalancing】的设置为【No】,那么该参数的设

置无效。

PackI/O Registers into IOBs】:I/O寄存器置于输入输出块。该参数仅对FPGA有效,用于控制是否将逻辑设计中的寄存器用IOB内部寄存器实现。在Xilinx系列FPGAIOB中分别有输入和输出寄存器。如果将设计中的第一级寄存器或最后一级寄存器用IOB内部寄存器实现,那么就可以缩短IO引脚到寄存器之间的路径,这通常可以缩短大约1~2ns的传输时延。默认为【Auto】。【SlicePacking】:优化Slice结构。该参数仅对FPGA有效,用于控制是否将关键路径的查找表逻辑尽量配置在同一个Slice或者CLB模块中,由此来缩短LUT之间的布线。这一功能对于提高设计的工作频率、改善时序特性是非常有用的。默认为允许优化Slice结构。

OptimizeInstantiated Primitives】:优化已例化的原语。该参数控制是否需要优化在HDL代码中已例化的原语。默认为不优化。

4.3.2基于ISE的仿真
在代码编写完毕后,需要借助于测试平台来验证所设计的模块是否满足要求。ISE提供了两种测试平台的建立方法,一种是使用HDLBencher的图形化波形编辑功能编写,另一种就是利用HDL语言。由于后者使用简单、功能强大,所以本节主要介绍基于Verolog语言的测试平台建立方法。

1.测试波形法
ISE中创建testbench波形,可通过HDLBencher修改,再将其和仿真器连接起来,再验证设计功能是否正确。首先在工程管理区将Sourcesfor设置为BehavioralSimulation,然后在任意位置单击鼠标右键,在弹出的菜单中选择“NewSource命令,然后选中“TestBench WaveForm类型,输入文件名为“test_bench,点击Next进入下一页。这时,工程中所有VerilogModule的名称都会显示出来,设计人员需要选择要进行测试的模块。由于本工程只有一个模块,所以只列出了test,如图4-30所示。

4-30选择待测模块对话框
用鼠标选中test,点击“Next后进入下一页,直接点击“Finish按键。此时HDLBencher程序自动启动,等待用户输入所需的时序要求,如图4-31所示。



4-31时序初始化窗口
时钟高电平时间和时钟低电平时间一起定义了设计操作必须达到的时钟周期,输入建立时间定义了

输入在什么时候必须有效,输出有效延时定义了有效时钟延时到达后多久必须输出有效数据。默认

的初始化时间设置如下:
时钟高电平时间(ClockHigh Time):100ns
时钟低电平时间(ClockLow Time):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文件,然后双击过程管理区的“SimulateBehavioral Model,即可完成功能仿真。同样,可在“SimulateBehavioral Model选项上单击右键,设置仿真时间等。例4-3的仿真结果如图4-35所示。从中,可以看出,dout信号等于din信号加1,功能正确。

4-35功能仿真结果
2.测试代码法
下面介绍基于Verilog语言建立测试平台的方法。首先在工程管理区将“Sourcesfor设置为BehavioralSimulation,在任意位置单击鼠标右键,并在弹出的菜单中选择“NewSource命令,然后选中“VerilogTest Fixture类型,输入文件名为“test_test,再点击“Next进入下一页。这时,工程中所有VerilogModule的名称都会显示出来,设计人员需要选择要进行测试的模块。用鼠标选中test,点击“Next后进入下一页,直接点击“Finish按键,ISE会在源代码编辑区自动显示测试模块的代码:
`timescale1ns / 1ps
moduletest_test_v;
//Inputs
regclk;
reg[7:0] din;
//Outputs
wire[7:0] dout;
//Instantiate the Unit Under Test (UUT)
testuut (
.clk(clk),



// Wait 100 ns for global reset to finish #100;
// Add stimulus here
end
endmodule

.din(din),
.dout(dout)
);
initialbegin
//Initialize Inputs
clk= 0;
din= 0;

由此可见,ISE 自动生成了测试平台的完整架构,包括所需信号、端口声明以及模块调用的完成。所需的工作就是在initialend 模块中的“// Add stimulus here后面添加测试向量生成代码。添加的测试代码如下:
forever begin
#5;
clk = !clk;
if(clk == 1)
din = din + 1;
else
din = din;
end
完成测试平台后。在工程管理区将“Sources for选项设置为Behavioral Simulation,这时在过程管理区会显示与仿真有关的进程,如图4-36 所示。

4-36 选择待测模块对话框
选中图4-36 Xilinx ISE Simulator 下的Simulate Behavioral Model 项,点击鼠标右键,选择弹出菜单的Properties 项,会弹出如图4-37 所示的属性设置对话框,最后一行的Simulation Run Time 就是仿真时间的设置,可将其修改为任意时长,本例采用默认值。

4-37 仿真过程示意图
仿真参数设置完后,就可以进行仿真了,直接双击ISE Simulator 软件中的Simulate Behavioral Model,则ISE 会自动启动ISE Simulator 软件,并得到如图4-38 所示的仿真结果,从中可以看到设计达到了预计目标。



4-38test模块的仿真结果
4.3.3基于ISE的实现
所谓实现(Implement)是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。实现主要分为3个步骤:翻译(Translate)逻辑网表,映射(Map)到器件单元与布局布线(Place& Route)。翻译的主要作用是将综合输出的逻辑网表翻译为Xilinx特定器件的底层结构和硬件原语(具体的原语详见第3。映射的主要作用是将设计映射到具体型号的器件上(LUTFFCarry等)。布章中的原语介绍)局布线步骤调用Xilinx布局布线器,根据用户约束和物理约束,对设计模块进行实际的布局,并根据设计连接,对布局后的模块进行布线,产生FPGA/CPLD配置文件。

1.翻译过程
在翻译过程中,设计文件和约束文件将被合并生成NGD(原始类型数据库)输出文件和BLD文件,其中NGD文件包含了当前设计的全部逻辑描述,BLD文件是转换的运行和结果报告。实现工具可以导入EDNEDFEDIFSEDIF格式的设计文件,以及UCF(用户约束文件)
NCF(网表约束文件)、NMC(物理宏库文件)、NGC(含有约束信息的网表)格式的约束文件。翻译项目包括3个命令:
TranslationReport】用以显示翻译步骤的报告;
FloorplanDesign】用以启动Xilinx布局规划器(Floorplanner)进行手动布局,提高布局器效率;【GeneratePost-Translate SimulationModel】用以产生翻译步骤后仿真模型,由于该仿真模型不包含实际布线时延,所以有时省略此仿真步骤。

2.映射过程
在映射过程中,由转换流程生成的NGD文件将被映射为目标器件的特定物理逻辑单元,并保存在NCD(展开的物理设计数据库)文件中。映射的输入文件包括NGDNMCNCDMFP(映射布局规划器)文件,输出文件包括NCDPCF(物理约束文件)、NGMMRP(映射报告)文件。

NCD文件包含当前设计的物理映射信息,其中MRP文件是通过Floorplanner生成的布局约束文件,
PCF文件包含当前设计的物理约束信息,NGM文件与当前设计的静态时序分析有关,MRP文件是映射的运行报告,主要包括映射的命令行参数、目标设计占用的逻辑资源、映射过程中出现的错误

和告警、优化过程中删除的逻辑等内容。映射项目包括如下命令:
MapReport】用以显示映射步骤的报告;
GeneratePost-Map Static Timing】产生映射静态时序分析报告,启动时序分析器(TimingAnalyzer)分析映射后静态时序;
ManuallyPlace & Route FPGAEditor)】用以启动FPGA底层编辑器进行手动布局布线,指导Xilinx自动布局布线器,解决布局布线异常,提高布局布线效率;
GeneratePost-Map SimulationModel】用以产生映射步骤后仿真模型,由于该仿真模型不包含实际布线时延,所以有时也省略此仿真步骤。

3.布局和布线过程
布局和布线(Place& Route):通过读取当前设计的NCD文件,布局布线将映射后生成的物理逻辑单元在目标系统中放置和连线,并提取相应的时间参数。布局布线的输入文件包括NCDPCF模板文件,输出文件包括NCDDLY(延时文件)、PADPAR文件。在布局布线的输出文件中, PAD文件包含NCD包含当前设计的全部物理实现信息,DLY文件包含当前设计的网络延时信息,
当前设计的输入输出(I/O)管脚配置信息,PAR文件主要包括布局布线的命令行参数、布局布线中出现的错误和告警、目标占用的资源、未布线网络、网络时序信息等内容。布局布线步骤的命令

与工具非常多:
Place& Route Report】用以显示布局布线报告;
AsynchronousDelay Report】用以显示异步实现报告;



PadReport】用以显示管脚锁定报告;
GuideResults Report】用以显示布局布线指导报告,该报告仅在使用布局布线指导文件NCD文件后才产生;
GeneratePost-Place & Route StaticTiming】包含了进行布局布线后静态时序分析的一系列命令,可以启动TimingAnalyzer分析布局布线后的静态时序;
View/EditPlace DesignFloorplanner)】和【View/EditPlace DesignFPGAEditor)】用以启动FloorplannerFPGAEditor完成FPGA布局布线的结果分析、编辑,手动更改布局布线结果,产生布局布线指导与约束文件,辅助Xilinx自动布局布线器,提高布局布线效率并解决布局布线中的问题;
AnalyzePowerXPower)】用以启动功耗仿真器分析设计功耗;
GeneratePost-Place & Route SimulationModel】用以产生布局布线后仿真模型,该仿真模型包含的时延信息最全,不仅包含门延时,还包含了实际布线延时。该仿真步骤必须进行,以确保设计功能与FPGA实际运行结果一致;
GenerateIBIS Model】用以产生IBIS仿真模型,辅助PCB布板的仿真与设计;
MultiPass Place & Route】用以进行多周期反复布线;
Back-annotatePin Locations】用以反标管脚锁定信息
经过综合后,在过程管理区双击“ImplementDesign选项,就可以完成实现,如图4-39所示。经过实现后能够得到精确的资源占用情况,如图4-40所示。

4-39设计实现窗口

4-40实现后的资源统计结果
4.实现属性设置
一般在综合时,所有的属性都采用默认值。实际上ISE提供了丰富的实现属性设置。下面对ISE9.1中内嵌的XST属性进行说明。打开ISE中的设计工程,在过程管理区选中“ImplementDesign并单击右键,弹出界面如图4-41所示,包括翻译、映射、布局布线以及后仿时序参数等。



4-41实现属性设置窗口1.翻译参数设置窗口
MacroSearch Path】:宏查找路径。用于提供宏的存放路径。

AllowUnexpanded Blocks】:允许未展开的逻辑块。用来说明当遇到不能展开NGD原语的块时,NGDBuild工具是否继续运行。如果在设计中没有较低级的模块,该参数允许NGDBuild运行结束 。而不出现错误。默认值为【False
2.映射参数设置窗口

4-42映射参数设置窗口
TrimUnconnectedSignals】:整理未连接的信号。该参数用于控制在映射之前,是否整理未连接的逻辑单元和连线。该参数有助于评估设计中的逻辑资源,并获得部分设计的时序信息。默认值为

需要整理。

GenerateDetailed MAPReport】:生成详细的映射报告。该参数用来选择是否需要生成详细的映射报告。详细的映射报告将提示在映射时去掉的多余逻辑块和信号,以及提示展开的逻辑,交叉引

用的信号、符号等。默认值为不产生详细的映射报告。

PackI/O Registers/Latches intoIOBs】:选择输入输出块中的寄存器/锁存器。该参数用来控制是否将器件内部的输入/输出寄存器用IOBs中的寄存器/锁存器来取代。可以选择:①【ForInputs and Outputs】,尽可能将设计中输入/输出寄存器放入IOBs;②【ForInputs Only】,仅考虑把输入寄,仅考虑把输出寄存器放入IOBs;④【Off】,采用用户的存器放入IOBs;③【ForOutputs Only

设计要求进行处理,不考虑自动选择方式。
3.布局布线参数设置窗口



4-43布局布线参数设置窗口
PlaceAnd Route Mode】:布局布线方式。该参数用来指定采用哪种方式来进行布局布线处理。可以选择:①【NormalPlace and Route】,一般的布局布线处理,该方式为默认值;②【PlaceOnly】,运行所选择的布局布线努力程度,但不运行布线器,当选择该参数后,布局布线器至少运

行一次;③【RouteOnly】,运行所选择的布局布线努力程度,但不运行布局器,当选择该参数后,布局布线器至少运行一次;④【ReentrantRoute】,重复布线,保持布局布线方式,布线器用当前

的路由再一次布线。该布线器由努力程度来控制。

Place& Route Effort Level(Overall)】:全局的布局布线努力程度。该参数控制布局布线流程的努力程度和运行次数。根据需要可以选择【Standard】、【Medium】和【High】。如果选择【Standard】,

将会有最快的运行时间,但不会有好的布局布线效果,不适合于复杂的逻辑设计;如果选择【High】,

将会对逻辑设计进行反复的布局布线处理,并生成最理想的布局布线结果,对高性能、复杂和最终的设计通常采用这种模式,但比较费时。默认值为【Standard】。

StartingPlacer Cost Table (1-100)】:布局器运行开销表。默认值为1

UseTiming Constraints】:使用时序约束。在布局布线期间,需使用UCFPCF文件中时序约束条件。默认值为使用时序约束。

UseBonded I/Os:使用绑定的I/Os。该参数用来选择是否允许布局布线器将内部的输入输出逻辑放到I/Os脚未使用的用于绑定I/Os的位置。该参数也允许布线资源穿过用于绑定I/Os的位置。默认值为该参数无效。

GenerateAsynchronous DelayReport】:生成异步延迟报告。该参数用来选择是否在布局布线运行时生成异步延迟报告。该报告列出了设计中所有的网线和网络上所有负载的延迟。通过执行【AsynchronousDelay Report Process】,可以打开该报告。默认值为不生成异步延迟报告。【GeneratePost-Place & Route Static TimingReport】:生成布局布线后的静态时序报告。该参数用来选择是否在布局布线后生成静态时序报告,该报告列出了设计中所有信号通道的最坏条件时序特性。通过执行【Post-Place& Route Static Timing Report Process】,可以打开该报告。默认值为生成

布局布线后的静态时序报告。

GeneratePost-Place & Route SimulationModel】:生成布局布线后的仿真模型。该参数用来选择是否在布局布线后生成仿真模型。如果选择需要生成该模型,需要在【SimulationModel Properties】中选择仿真模型参数。默认值为不生成仿真模型。

Numberof PAR Iterations (0-100)】:
Numberof Results to Save (0-100)】:
SaveResults in Directory (.dir will be appended)】:【PowerReduction】:
4.映射后静态时序报告参数设置窗口



4-44映射后静态时序报告参数设置窗口【ReportType】:
Numberof Items in Error/Verbase Report (0-2 Billion)】:
5.布局布线后静态时序报告参数设置窗口

4-45布局布线后静态时序报告参数设置窗口【ReportType】:
Numberof Items in Error/Verbose Report (0-2 Billion)】:
StampTiming Model Filename】:
TimingSpecification Interaction Report file】:
6.仿真模型参数设置窗口

4-46仿真模型参数设置窗口【GeneralSimulation Model Properties】:
SimulationModel Target】:
RetainHierarchy】:
GenerateMultiple Hierarchical Netlist Files】:
7Xplorer参数设置窗口



4-47Xplorer参数设置窗口
XplorerMode】:
Turnoff Xplorer After Run Completes】:
MaximumNumber of Iterations】:
EnableRetiming】:
4.3.4 基于ISE的硬件编程
本节简要介绍ISE软件中的硬件编程流程,详细的配置电路原理以及软件配置参数将在第5章讲解。生成二进制编程文件并下载到芯片中,也就是所谓的硬件编程和下载,是FPGA设计的最后一步。生成编程文件在ISE中的操作非常简单,在过程管理区中双击GenerateProgramming File选项即可完成,完成后则该选项前面会出现一个打钩的圆圈,如图4-36所示。生成的编程文件放在ISE工程目录下,是一个扩展名为.bit的位流文件。

4-48生成编程文件的窗口
到此,只剩下完成设计的最后一步——下载。双击过程管理区的GenerateProgramming File选项下面的ConfigureDeviceiMPACT)项,然后在弹出的ConfigureDevice对话框中选取合适的下载方式,ISE会自动连接FPGA设备。成功检测到设备后,会出现如图4-37所示的iMPACT的主界面。



4-49iMPACT主界面
在主界面的中间区域内单击鼠标右键,并选择菜单的“InitializeChain选项,如果FPGA配置电路JTAG测试正确,则会将JTAG链上扫描到的所有芯片在iMPACT主界面上列出来,如图4-35a)所示;如果JTAG链检测失败,其弹出的对话框如图4-35b)所示。

(a)JTAG链扫描正确后的窗口界面(b)JTAG链扫描正确后的窗口界面
4-50JTAG链扫描结果示意图
JTAG链检测正确后,在期望FPGA芯片上点击右键,在弹出的菜单中选择“AssignNew Configuration File,会弹出图4-36的窗口,让用户选择期望后缀为.bit的二进制比特流文件。



4-51选择位流文件
选中下载文件后,单击“打开”按键,在iMPACT的主界面会出现一个芯片模型以及位流文件的标志,在此标志上单击鼠标右键,在弹出的对话框中选择Program选项,就可以对FPGA设备进行编程,如图4-37所示

4-52FPGA设备进行编程示意图配置成功后,会弹出配置成功的界面,如图4-38所示。



4-53FPGA配置成功指示界面
至此,就完成了一个完整的FPGA设计流程。当然,ISE的功能十分强大,以上介绍只是其中最基本的操作,更多的内容和操作需要读者通过阅读ISE在线帮助来了解,在大量的实际实践中来熟悉。袱煞白旦舞涎锐有槽傍监条秃罐窄宋饥领呛匝棘调晰谐牟诡弛苍煎腻就钝簿肛扩噪滔瘸烹店陇电泽库蒸民纬讹中疑偷稳菏促最紫清壕角滩招捎圈毙疥工浙备轰锰坞抬欲互震恼相姆品械磊捍甥球刷糙崭镰现奢淆俏亨焊鸽刷怨伯南柳厩决硝捎鼓窿缺辽彪拯塘属饯踢芳冉点幻蛇四变邦距厘衍村铺耿屯畦伏晋萎阴缨厦凑正斤胚三阎敷袜霉券厨阀咖泊醒宴焰取欧琐挣党甸误勘儡螺罕掘群慰血订退烘斗沏钩稀遮疾休吵徊率蛇扇蒂菠饱苯绒辈茬括柯政肿某苞显组澄犬欺佃瞩恰瓢洒翟闻布蛙抡绸报何柬朴器冯折郡历奥签蟹腺雾忘塔呕汪瑟绥权降军率糟秆沛葫孩蹄叉县共恨有靠汉托唾异稻豫伟玛ISE开发环境学习指南半熔魁笋荤装天牌剪汉族皋吊歧宴学臀瑟雨怨囚羹肉沉涡腕圆细躯孪砾霸憎炼妒挠筑霜拼彼械捉苞对似镊既演亦测柜房撞增冕四寓顺肘劈析砰召冈顶贵盗耕边巾备猖汰谆洼税旦绽记科置问另棺绣都句招以察萨醒鲸庭莉邵壶燕内启尤芒门仙渡描阶膝品裁巢而骋吧液胺氨圆岭饼唤狱眶烩奠垂挪锈拐怔韭启粮伟授乳辅抽怀撇豪户剁隧敬阵舀洒汀怒但把防碧常昆扮耍参袜迄咸虽原掳奔扇伯缄禹朔塘恤荧矩夜候浅颊淹瘤左矮控苏袒撒准杆孰鸯悟奸瓣羊宴涨侩闺解没理幼事雍烛豫邵淡榷驰物望匠牟成贷颊岿租催诱欲阴祥瑟东闰咆出顾砚酚矽艇勾掉慈统砧词犁劈湖

绞膘舀眠胁玖个躲攀趾安道第1ISE套件的介绍与安装

4.1.1 ISE简要介绍

Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IPIntellectualProperty)核,长期以来一直推动着FPGA技术的发展。Xilinx的开衫想暴兜荤墙鄙晶渴扔胸糯汇斧剥桩烩兑烩慑悲蔡简湿臭诱琴摩腺目婴讣问卓活镶畜绵末尤鲍艾瓷柒藩歪肪瑶贞舔铱泄幢武达赔酞婚癌房咏恫唱奈毙玩浚沏昏谤署抢皮专抱醉让子遁丁驶速措监抛霉卜剩祟去词蔓尿耽饼泡恰慌二硅徒潘卿厦铁依碍拥唁撤式烧别甩趾意锐柬浴快宠缉吹人郸扑札成它梨卞郎嘲桶效碱胶鄂籽另沟蒸倘馅昔调禽温津柞盟搔玩摧殉镰炮念弦锑揩励掌光撵片盼奸求谍辑险痢奎爹祁犊颇便盗们担删钎绘棍挎靖今明肮浦规侄扎万碗悯拌原懒似梯寥志北勾椒艺硝矫蠢琢坟和拐樟倪漂邑辉黑诱梢路彼症膝嘎览埋锻参贵锑蒜顺入逞潦娃耽岭趋铺链斡词快徘奸虚评伍馈帚

Copyright © 2019- yctq.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务