XilinxISE14.3简单教程本节以一个8位可逆计数器的FPGA开发过程为例介绍XilinxISE14.3集成开发环境的使用。启动ISE软件,进入如图1所示的ISE集成开发环境,选择菜单[File]的[NewProject]功能,出现如图2的对话框。“Name”用于指定项目的名称,“Location”用于指定项目设计数据的保存位置,默认是在ISE的安装目录下。设计者可以自行更改项目存放的位置。需要特别注意的是,由于ISE软件不支持中文字符,所以不论是“Name”还是“Location”中最好不包含有中文字符,否则会导致项目保存时发生错误。在“Name”框内填上项目名称,例如“count8_updn”,ISE自动在当前保存路径“Location”的目录下创建名为“count8_updn”的目录,并将与“count8_updn”项目相关的文件都保存在该目录中。“Top-LevelSourceType”默认选择“HDL”。图1ISE集成开发环境图2新项目的建立点击“Next”后,弹出如图3所示的芯片选择对话框,准备为“count8_updn”项目选择设计芯片。这个步骤主要是选择FPGA芯片的类型、速度、封装,同时选择项目的主要输入方式、综合方式和模拟方式等信息。图3中在“Family”中选择Spartan3E系列芯片;在“Device”中指定采用“XC3S500E”芯片;芯片的封装形式“Package”是“PQ208”,即表面贴装208个管脚的芯片;芯片的速度“Speed”为“-4”;项目采用“HDL语言”作为主要输入形式;逻辑综合工具“SynthesisTool”选用了“XST(VHDL/Verilog)”,即可以进行VHDL和Verilog两种语言形式源代码的编译和处理。波形的模拟仿真工具“Simulator”选择“Modelsim-XEVHDL”或者ISim(VHDL/Verilog)工具。其它设置使用默认值即可。图3芯片型号的选择配置完成后,连续点击“Next”,直到弹出如图4的项目概要信息对话框。该对话框中描述了当前正在创建的项目的概要信息,包括项目的名称“ProjectName”、项目保存的路径“ProjectPath”、所采用的硬件描述语言“TopLevelSourceType”,以及所使用的设备的信息等。单击“Finish”,完成项目的创建,如图5所示,一个名为“count8_updn”的项目文件就已经建立了。图4项目概要信息图5一个空的项目图5包含了4个子窗口,其中“Sources”是源文件窗口,“count8_updn”创建的所有文件都将在该窗口中显示;“Processes”是动作窗口,所有的命令都可以在该窗口执行;最下方的“Transcript”是状态窗口,操作命令执行的过程和结果都可以在这个窗口中显示出来,可以用于观察运行的状态;主窗口位于右侧,VHDL代码和波形的输入都将在其中进行。需要注意的是“Processes”窗口中的动作命令是与“Sources”窗口中的源文件对应的。在“Sources”中选中某个源文件,该文件可以执行的全部操作都将在“Processes”窗口中显示。设计者可以根据设计需要,选择某一个操作去执行。图6新建源文件如图6所示,在源文件窗口的“count8_updn”上单击右键,在弹出的菜单中选择[NewSource]功能,就可以启动一个图7的创建源文件的对话框。文件类型选择“VHDLModule”,“Filename”栏内填入源文件的名字。注意此时源文件的名字最好与项目的名字相同,保证项目在不同版本间的兼容性和移植性,即“count8_updn”。图7新建源文件(VHDL模块)点击“Next”,进入下一步,就可以得到图7所示的端口定义对话框。保持“EntityName”和“RchitectureName”的值不变,在“PortName”中添加端口名,并在“Direction”字段制定端口的方向。图8端口定义图8中输入的端口信息包括四部分:端口名称、方向、总线、MSB(MostSignificantBit)、LSB(Leastsignificantbit)。按照通常的习惯,信息的高位是MSB,低位是LSB。端口的方向与VHDL语言中定义的一致,包括输入(in)、输出(out)和双向三种类型(inout),可以由设计者设定。需要注意,“PortName”中定义任何一个端口名不能与“EntityName”重名,否则在后期逻辑综合的时候会出错。图8中定义了三个输入信号“clr”、“clk”、“updown”和一个8位输出信号“Q”。“Q”的第7位为最高位MSB,第0位对应最低位LSB。图9信息摘要图10ISE生成的源文件图9的完成后,点击“Next”,然后在弹出的对话框中点击“Finish”按钮,就创建了一个VHDL文件,该文件的内容将被显示在项目的主窗口中,如图10所示。在图10的项目的主窗口中可以看到“count8_updn.vhd”和“DesignSummary”两个选项页。其中“DesignSummary”包含了项目的概要信息,而“count8_updn.vhd”是ISE创建的VHDL源文件。可以在“DesignSummary”上单击右键,选择“Close”将其关闭,只保留“count8_updn.vhd”VHDL源文件,如图11所示。虽然前面已经对源文件的端口进行了定义,但是在此时仍然可以在文本方式下对VHDL源文件的内容进行修改,增加、删除或修改VHDL的端口定义均可。图11编辑VHDL源文件编辑“count8_updn.vhd”VHDL源文件。在图11中标号1的位置,即“architectureBehavioralofcout8up_dnis”与“begin”之间加入代码“signalcount_B:STD_LOGIC_VECTOR(7DOWNTO0);”。然后,在标号2处,即“begin”与“endBehavioral;”之间加入如图12中框内所示的代码。添加代码完成后,点击工具栏上的保存按钮将项目保存。至此,便完成了8位可逆计数器“count8_updn”项目的VHDL主模块的设计。图12添加VHDL代码图13保存VHDL源文件如果项目中使用了原来已经编辑过的VHDL文件,可以直接将其加入到当前项目中。方法是在源文件窗口的“xc3s500e-4pq208”上单击右键,在弹出的菜单上选择[AddSource]功能,就可以弹出一个添加文件对话框。选择要添加的文件并点击[open]按钮,该文件就会被添加到当前项目中。这项功能也支持一次添加多个文件到当前项目中,方法是同时选中多个文件后在点击[open]即可。图14开始逻辑综合完成VHDL主模块的设计后,再添加必要的子模块,就可以进行逻辑综合。逻辑综合的主要操作在动作窗口“Process”中,在使用逻辑综合的命令时,必须要保证在源程序窗口“Sources”中的光标所在位置是待处理的那个VHDL文件,以指明要对那个文件进行逻辑综合。在图14的“Source”窗口中左键单击“count8_updn-Behavioral”,选中“count8_updn.vhd”源文件,此时在“Processes”窗口会出现该源文件可执行的一系列操作。双击动作窗口的“Synthesize-XST”,或在它的右键菜单中选择[Run]功能,系统就调用集成综合工具进行逻辑综合。如果VHDL模块设计中存在失误,将在执行综合后提示出错,出错的信息显示在状态窗口“Transcript”中。“Transcript”窗口的“Console”选项卡中输出“ProcessSynthesizefailed”,并在“Errors”选项卡中显示错误的提示信息。图15描述了一次综合过程中发现的错误,设计者可以在提示信息中发现VHDL的哪一行出错,双击错误信息,就可以直接在主窗口中找到出错的位置。图15逻辑综合出错图15状态窗口的“Errors”选项卡的错误信息指出不支持加法操作符“+”和减法操作符“-”。需要在源文件中加入相应的支持库,将下面两条语句加入源文件,然后重新编译、综合。useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;图16逻辑综合成功设计者根据错误信息修改模块后,可以重新进行逻辑综合,如果不在出现语法错误,逻辑综合的结果将在“Transcript”窗口的“Console”选项卡中会输出“Process‘Synthesize’completedsuccessfully”的信息,如图16所示。这说明基本设计已经完成,可以进行模拟和其他测试。需要注意的是,ISE工具的综合能力不能将所有错误准确定位,这也是所有编译类工具不能避免的一个缺陷。此时需要设计者对错误自行分析,找到问题的所在。2.2.2波形输入与模拟完成逻辑综合之后,下一步就是进行波形的仿真模拟。如图17所示,在源文件窗口的“Sourcesfor:”中选择“BehavioralSimulation”选项。然后“xc3s500e-4pq208”的右键菜单上,选择[NewSource]功能,就可以启动创建一个图18的波形文件的对话框。文件类型中选择“VHDLTestBench”,在“Filename”中输入波形文件的名称。按图18输入波形文件名,点击“Next”,弹出图19所示的对话框。其目的是选择对哪个VHDL实体进行波形仿真。示例中只有一个源文件“count8_updn”,左键选择该文件,然后点击“Next”,在弹出的对话框中点击“Finish”,弹出图20所示对话框。图17选择“BehavioralSimulation”图18创建波形文件图19选择关联的源文件图20文件摘要信息图21新添加的波形文件利用图21给出的波形文件,加入图22的信号设置语句,即可进行波形仿真。图22添加仿真语句图23设置波形模拟属性图24设定波形长度图25启动波形仿真在启动波形仿真之前需要设置波形模拟属性。如图23所示,在源文件窗口“Sources”中选中“count8_wave”文件,然后在动作窗口“Processes”中“SimulateBehavioralModel”的右键菜单中选择“Properties…”功能,弹出模拟属性设置对话框。如图24所示,在该对话框中找到属性名“SimulationRunTime”,该选项与仿真器运行的时间相关。其值越大,仿真时间越长。默认的“Value”值改为“1000ns”,可以对其进行修改来设定仿真运行的时间。点击“Apply”按钮,然后单击“OK”。完成波形输入后,便可以启动模拟。如图25波形模拟的操作在动作窗口“Processes”中,在使用波形模拟的命令时,必须要保证在源程序窗口“Sources”的“Sourcesfor”下拉菜单中选择的是“BehavioralSimulation”,且当前中光标的所在位置是待处理的那个波形文件。由于项目中可能有多个VHDL源程序或波形文件,所以必须指明要对哪个波形进行模拟。完成上述设定后,双击动作窗口的“SimulateBehavioralModel”,或在它的右键菜单中选择[Run]功能,系统就调用集成模拟器进行波形模拟,如图26所示。图26波形仿真结果图27选择显示格式图28选择显示格式2.2.3管脚定义在前面的逻辑综合与仿真过程中,信号都是随意分配到芯片的管脚上。将综合后的目标文件下载到FPGA芯片之前,要将设计中的输入、输出信号锁定到芯片的管脚,在Xilinx的ISE开发环境中,信号到管脚的锁定是用UCF文件描述的。创建UCF文件的过程如下:图29新建UCF文件在源程序“Source”窗口选择“Implementation”选项,然后再“xc3s500e-4pq208”的右键菜单中选择“NewSource”功能,弹出图29的文件类型选择对话框。在该对话框内选择“ImplementationConstraintsFile”文件类型,在“Filename”内填入UCF文件