现代电子系统分析与设计学习教案.pptx
会计学1现代现代(xindi)电子系统分析与设计电子系统分析与设计第一页,共104页。(1)ISE设计套件设计套件逻辑版本针对采用赛灵逻辑版本针对采用赛灵思基础目标设计平台,思基础目标设计平台,主要关注逻辑和连接功主要关注逻辑和连接功能。能。(2)ISE设计套件设计套件DSP版本针对采用赛灵版本针对采用赛灵思思DSP领域领域(ln y)目目标设计平台,主要面向标设计平台,主要面向算法、系统和硬件的设算法、系统和硬件的设计人员而优化。计人员而优化。(3)ISE设计套件设计套件嵌入式版本针对采用赛嵌入式版本针对采用赛灵思嵌入式领域灵思嵌入式领域(ln y)目标设计平台的嵌入目标设计平台的嵌入式系统设计人员式系统设计人员(硬件和硬件和软件设计师软件设计师)而优化。而优化。(4)ISE设计套件设计套件系统版本针对采用赛灵系统版本针对采用赛灵思连接领域思连接领域(ln y)目目标设计平台的系统设计标设计平台的系统设计人员而优化。人员而优化。第2页/共104页第二页,共104页。2.1.2 ISE12.1功能介绍功能介绍ISE12.1工具涵盖了整个工具涵盖了整个FPGA开发流程,包括了设计输开发流程,包括了设计输入、综合、仿真、实现以及下载入、综合、仿真、实现以及下载各个步骤。采用各个步骤。采用ISE集成集成(j chn)环境可以独立完成整个环境可以独立完成整个Xilinx FPGA的开发,而无须借助的开发,而无须借助其他第三方开发工具。其他第三方开发工具。(1)设计输入:设计输入:ISE12.1提供提供的设计输入工具包括的设计输入工具包括HDL代码的代码的输入,原理图编辑工具,用于输入,原理图编辑工具,用于IP Core的的Core Generator,以及用,以及用于约束文件编辑的于约束文件编辑的Constraints Editor等软件。等软件。(2)综合:综合:ISE12.1自带的综自带的综合工具为合工具为XST,还可以与业界非,还可以与业界非常优秀的综合工具常优秀的综合工具Mentor Graphic公司的公司的Leonardo Spectrum和和Synplicity公司的公司的Synplify实现无缝链接。实现无缝链接。第3页/共104页第三页,共104页。(3)仿真仿真(fn zhn):ISE12.1自带自带ISim仿真仿真(fn zhn)工具,同时提供使用工具,同时提供使用Mentor Graphic公司的公司的ModelSim各个版各个版本的仿真本的仿真(fn zhn)接口。接口。(4)实现:包括对综合文件实现:包括对综合文件的翻译、映射、布局布线等,还的翻译、映射、布局布线等,还包括时序分析、增量设计、手动包括时序分析、增量设计、手动布局约束等高级功能。布局约束等高级功能。(5)下载:包括生成下载:包括生成bit 流文流文件,还包括一个专用的下载软件件,还包括一个专用的下载软件IMPACT,可以进行设备通信和,可以进行设备通信和配置,并将程序烧写到配置,并将程序烧写到FPGA芯芯片中去。片中去。使用使用ISE进行进行FPGA设计的各设计的各个过程可能涉及的工具如表个过程可能涉及的工具如表2-1所所示。示。第4页/共104页第四页,共104页。第5页/共104页第五页,共104页。2.1.3 ISE12.1用户界面和菜单操用户界面和菜单操作作ISE用户界面如图用户界面如图2-1所示。所示。界面各分区及功能界面各分区及功能(gngnng)如如下:下:(1)标题栏:主要显示当前工标题栏:主要显示当前工程的名称和当前打开的文件名称。程的名称和当前打开的文件名称。(2)菜单栏:主要包括菜单栏:主要包括“文件文件(File)”、“编辑编辑(Edit)”、“视图视图(View)”、“工程工程(Project)”、“源源文件文件(Source)”、“操作操作(Porcess)”、“工具工具(Tools)”、“窗口窗口(Window)”、“布局布局(Layout)”和和“帮助帮助(Help)”等等10个下拉菜单。其使用方法和个下拉菜单。其使用方法和常用的常用的Windows软件类似。软件类似。(3)工具栏:为方便用户操作工具栏:为方便用户操作而提供的常用命令快捷键。随着而提供的常用命令快捷键。随着版本升级,提供的快捷键越来越版本升级,提供的快捷键越来越多。多。第6页/共104页第六页,共104页。(4)设计管理区:提供工程设计管理区:提供工程以及相关以及相关(xinggun)文件的显文件的显示和管理功能,包括设计源文件示和管理功能,包括设计源文件视图和仿真源文件视图。源文件视图和仿真源文件视图。源文件视图显示了源文件的层次和分类视图显示了源文件的层次和分类关系。关系。(5)过程管理区:本窗口显过程管理区:本窗口显示的内容取决于工程管理区中所示的内容取决于工程管理区中所选定的文件,相关选定的文件,相关(xinggun)的操作和的操作和FPGA设计的流程相关设计的流程相关(xinggun),不仅显示当前进,不仅显示当前进行的步骤,而且还用动态图标的行的步骤,而且还用动态图标的方式显示当前的操作。方式显示当前的操作。第7页/共104页第七页,共104页。图2-1 ISE用户界面(yn h ji min)第8页/共104页第八页,共104页。(6)信息显示区:显示信息显示区:显示ISE中中的处理信息,如操作步骤信息、的处理信息,如操作步骤信息、告警信息和错误信息等,信息显告警信息和错误信息等,信息显示区的下面有控制台信息区示区的下面有控制台信息区(Console)和文件和文件(wnjin)查找查找区区(Find in Files Results)。如果。如果编译过程出现错误,双击信息显编译过程出现错误,双击信息显示区的告警和错误标志,就能自示区的告警和错误标志,就能自动切换到源代码出错的地方。动切换到源代码出错的地方。第9页/共104页第九页,共104页。2.2 S32.2 S3开发板简介开发板简介开发板简介开发板简介Digilent S3Digilent S3开发板是基于开发板是基于开发板是基于开发板是基于Spartan-3Spartan-3系列系列系列系列FPGA(XC3S200)FPGA(XC3S200)所开所开所开所开发的一款发的一款发的一款发的一款FPGAFPGA入门级学习与验证板,包含丰富的外围接口,是初入门级学习与验证板,包含丰富的外围接口,是初入门级学习与验证板,包含丰富的外围接口,是初入门级学习与验证板,包含丰富的外围接口,是初学者学习数字电路设计的良好平台。其外观图如图学者学习数字电路设计的良好平台。其外观图如图学者学习数字电路设计的良好平台。其外观图如图学者学习数字电路设计的良好平台。其外观图如图2-22-2所示。结构所示。结构所示。结构所示。结构(jigu)(jigu)框图如图框图如图框图如图框图如图2-32-3所示。其主要器件以及包含的接口如下:所示。其主要器件以及包含的接口如下:所示。其主要器件以及包含的接口如下:所示。其主要器件以及包含的接口如下:(1)(1)Xilinx Spartan-3 SC3S200 FPGAXilinx Spartan-3 SC3S200 FPGA器件器件器件器件(XC3S200-FT256)(XC3S200-FT256);(2)(2)2 Mb2 Mb的的的的Xilinx XCF02SXilinx XCF02S配置配置配置配置PROMPROM;(3)(3)2 2个个个个256K256K 1616异步静态异步静态异步静态异步静态SRAM(ISSI IS61LV25616AL-10T)SRAM(ISSI IS61LV25616AL-10T);(4)(4)VGAVGA显示端口;显示端口;显示端口;显示端口;(5)(5)RS232RS232串口;串口;串口;串口;(6)(6)PS/2PS/2鼠标键盘接口;鼠标键盘接口;鼠标键盘接口;鼠标键盘接口;第10页/共104页第十页,共104页。(7)4位位7段数码管;段数码管;(8)8个拨码开关;个拨码开关;(9)50 MHz晶振的时钟输晶振的时钟输入;入;(10)3个个40脚的外扩插槽;脚的外扩插槽;(11)JTAG下载下载(xi zi)接接口;口;(12)3.3 V、2.5 V、1.2 V的的稳压电源。稳压电源。第11页/共104页第十一页,共104页。n n图图2-2 Spartan-3FPGA2-2 Spartan-3FPGA开发板外观开发板外观(wigun)(wigun)图图 第12页/共104页第十二页,共104页。n n图图2-3 Spartan-3 FPGA2-3 Spartan-3 FPGA开发开发(kif)(kif)板结构框图板结构框图 第13页/共104页第十三页,共104页。2.3 ISE2.3 ISE开发流程开发流程开发流程开发流程ISE12.1ISE12.1包含了一系列的开发工具。这些包含了一系列的开发工具。这些包含了一系列的开发工具。这些包含了一系列的开发工具。这些工具不在本书介绍范围,这里仅通过一个简工具不在本书介绍范围,这里仅通过一个简工具不在本书介绍范围,这里仅通过一个简工具不在本书介绍范围,这里仅通过一个简单的实例,结合单的实例,结合单的实例,结合单的实例,结合1.51.5节节节节FPGA FPGA 的开发流程来描的开发流程来描的开发流程来描的开发流程来描述述述述FPGAFPGA的整个开发流程,帮助读者理解的整个开发流程,帮助读者理解的整个开发流程,帮助读者理解的整个开发流程,帮助读者理解FPGAFPGA的基本开发步骤。具体包含以下的基本开发步骤。具体包含以下的基本开发步骤。具体包含以下的基本开发步骤。具体包含以下(y(y xi)5xi)5步:步:步:步:(1)(1)创建工程和设计输入;创建工程和设计输入;创建工程和设计输入;创建工程和设计输入;(2)(2)创建创建创建创建TestBechTestBech并进行并进行并进行并进行RTLRTL仿真;仿真;仿真;仿真;(3)(3)添加约束;添加约束;添加约束;添加约束;(4)(4)综合与实现;综合与实现;综合与实现;综合与实现;(5)(5)生成配置文件并对生成配置文件并对生成配置文件并对生成配置文件并对FPGAFPGA进行配置。进行配置。进行配置。进行配置。第14页/共104页第十四页,共104页。【程序【程序【程序【程序(chngx)2-1(chngx)2-1】带使能控制的计数器。带使能控制的计数器。带使能控制的计数器。带使能控制的计数器。module Count_ENmodule Count_EN#(#(parameter Width=8,parameter Width=8,parameter U_DLY=1parameter U_DLY=1)(input wire EN,input wire EN,input wire Clock,input wire Clock,input wire reset,input wire reset,output reg Width-1:0 Out);output reg Width-1:0 Out);always(posedge Clock,negedge reset)always(posedge Clock,negedge reset)if(!reset)if(!reset)Out=8b0;Out=8b0;else if(EN)else if(EN)Out=#U_DLY Out+1;Out=#U_DLY Out+1;endmodule endmodule 第15页/共104页第十五页,共104页。2.3.1 2.3.1 创建工程和设计输入创建工程和设计输入创建工程和设计输入创建工程和设计输入本阶段包含三个任务:创建工程目录、创建工程、添加本阶段包含三个任务:创建工程目录、创建工程、添加本阶段包含三个任务:创建工程目录、创建工程、添加本阶段包含三个任务:创建工程目录、创建工程、添加(tin ji)(tin ji)或创建或创建或创建或创建HDLHDL文件输入。文件输入。文件输入。文件输入。1 1创建工程目录创建工程目录创建工程目录创建工程目录规范的规范的规范的规范的FPGAFPGA设计在建立工程之前,首先要求进行项目文件管理规划。清晰的文件目录有助于提高设计效设计在建立工程之前,首先要求进行项目文件管理规划。清晰的文件目录有助于提高设计效设计在建立工程之前,首先要求进行项目文件管理规划。清晰的文件目录有助于提高设计效设计在建立工程之前,首先要求进行项目文件管理规划。清晰的文件目录有助于提高设计效率和避免错误的发生。建立的一个清晰的工程目录如下:率和避免错误的发生。建立的一个清晰的工程目录如下:率和避免错误的发生。建立的一个清晰的工程目录如下:率和避免错误的发生。建立的一个清晰的工程目录如下:(1)(1)project nameproject name:工程名称,在这里建立一个:工程名称,在这里建立一个:工程名称,在这里建立一个:工程名称,在这里建立一个Count_ENCount_EN的目录来存放工程所有相关文件;的目录来存放工程所有相关文件;的目录来存放工程所有相关文件;的目录来存放工程所有相关文件;(2)(2)scrscr:存放源代码目录;:存放源代码目录;:存放源代码目录;:存放源代码目录;(3)(3)coregencoregen:CoreGeneratorCoreGenerator工具产生的各种工具产生的各种工具产生的各种工具产生的各种IPIP文件;文件;文件;文件;(4)(4)simsim:存放仿真相关文件,:存放仿真相关文件,:存放仿真相关文件,:存放仿真相关文件,funcsimfuncsim:目录存放与功能仿真相关文件,:目录存放与功能仿真相关文件,:目录存放与功能仿真相关文件,:目录存放与功能仿真相关文件,parsimparsim:目录存放与时序仿真相:目录存放与时序仿真相:目录存放与时序仿真相:目录存放与时序仿真相关文件;关文件;关文件;关文件;(5)(5)docdoc:存放:存放:存放:存放FPGAFPGA相关设计文档。相关设计文档。相关设计文档。相关设计文档。第16页/共104页第十六页,共104页。2创建工程创建工程ISE软件每次打开时,会默软件每次打开时,会默认列出最近几次打开的工程目录,认列出最近几次打开的工程目录,方便用户直接双击打开。如果用方便用户直接双击打开。如果用户需要新建工程,那么按照下面户需要新建工程,那么按照下面(xi mian)的步骤来进行:选择的步骤来进行:选择“File|New Project”选项,在选项,在弹出的新建工程对话框中填写如弹出的新建工程对话框中填写如下几项:下几项:“Project Name”中填中填写工程名称,写工程名称,“Browse”中指定中指定项目存放的路径,项目存放的路径,“Top-Level Source Type”选项中选择工程顶选项中选择工程顶层源代码的类型。层源代码的类型。第17页/共104页第十七页,共104页。关于输入文件类型有如下几关于输入文件类型有如下几个选项:个选项:(1)HDL:表示工程顶层源:表示工程顶层源代码为代码为vhdl或者或者Verilog代码形式;代码形式;(2)Schematic:表示工程顶:表示工程顶层源代码为原理图形式;层源代码为原理图形式;(3)EDIF:表示工程源代:表示工程源代码是由码是由Symplify 综合工具综合之综合工具综合之后后(zhhu)的网表文件,后缀是的网表文件,后缀是.edf文件;文件;(4)NGC/NGO:表示工程:表示工程源代码是源代码是ISE自带的自带的XST综合工综合工具产生的网表文件。具产生的网表文件。第18页/共104页第十八页,共104页。在本例中,将在本例中,将“Project Name”填写为填写为“Count_EN”,“Top-Level Source Type”选择为选择为HDL类型。类型。单击单击“Next”按钮,进入下按钮,进入下一步,选择所使用的芯片类型以一步,选择所使用的芯片类型以及综合及综合(zngh)和仿真的工具。和仿真的工具。如图如图2-4所示,所示,“Product Category”选择选择“All”,列出所,列出所有有FPGA器件,器件,“Family”选项选项包含了所有的包含了所有的Xilinx公司的器件公司的器件系列,系列,“Device”选项包含了对选项包含了对应系列的所有型号的器件,应系列的所有型号的器件,“Package”选择封装,选择封装,“Speed”选择速度等级,选择速度等级,“Synthesis Tool”选择支持的综选择支持的综合合(zngh)工具,工具,“Simulator”选择支持的仿真选择支持的仿真工具,工具,“Preferred Language”选择语言:选择语言:Verilog或者或者VHDL。在本例中,各选项按照如图在本例中,各选项按照如图2-4所所示进行选择。示进行选择。第19页/共104页第十九页,共104页。n n图图2-4 2-4 新建工程新建工程(gngchng)(gngchng)器件配置图器件配置图 第20页/共104页第二十页,共104页。再单击再单击“Next”按钮,进入按钮,进入下一页,可以选择新建源代码文下一页,可以选择新建源代码文件,读者可以选择现在开始新建件,读者可以选择现在开始新建源代码,也可以直接跳过,等工源代码,也可以直接跳过,等工程建立程建立(jinl)完毕之后再建立完毕之后再建立(jinl)源代码。单击源代码。单击“Next”按钮,进入第四页,添加已有的按钮,进入第四页,添加已有的代码;如果没有源代码,单击代码;如果没有源代码,单击“Next”按钮,直接进入最后一按钮,直接进入最后一页;点击页;点击“Finish”按钮,就建按钮,就建立立(jinl)好一个完整的工程。好一个完整的工程。第21页/共104页第二十一页,共104页。3添加或创建添加或创建HDL文件输文件输入入在工程建立在工程建立(jinl)结束之结束之后,就可以添加或创建后,就可以添加或创建HDL文件文件输入。如果已经设计好输入。如果已经设计好HDL文件,文件,则直接添加到工程中来。下面首则直接添加到工程中来。下面首先介绍添加先介绍添加HDL文件的步骤。文件的步骤。在工程管理区单击右键,选在工程管理区单击右键,选择择“Add Files”,然后弹出对话框,然后弹出对话框,找到找到HDL文件保存的路径来添加文件保存的路径来添加所有文件。需要注意的是,如果所有文件。需要注意的是,如果要添加多个文件,可以按住要添加多个文件,可以按住“Ctrl”键,选择多个文件进行键,选择多个文件进行添加;添加完毕之后,点击添加;添加完毕之后,点击“OK”按钮,所有文件将按照相按钮,所有文件将按照相关调用层次显示在工程管理区。关调用层次显示在工程管理区。新建新建HDL文件的步骤相对来文件的步骤相对来说复杂些。在工程管理区任一位说复杂些。在工程管理区任一位置单击鼠标右键,在弹出的菜单置单击鼠标右键,在弹出的菜单中选择中选择“New Source”命令,出现命令,出现如图如图2-5所示的所示的“New Source Wizard”对话框。对话框。第22页/共104页第二十二页,共104页。n n图2-5 新建源代码向导(xingdo)图 第23页/共104页第二十三页,共104页。对话框左侧的列表用于选择对话框左侧的列表用于选择代码的类型,部分项的意义如下:代码的类型,部分项的意义如下:IP(CORE Generator&Architecture Wizard):由:由ISE的的IP Core生成工具快速生成可靠的生成工具快速生成可靠的源代码,选择源代码,选择IP,定义,定义File name,点击,点击(din j)“Next”按钮,进按钮,进入入IP定制界面。这与单独使用定制界面。这与单独使用Core Generator工具产生工具产生IP的方的方法是一样的。法是一样的。第24页/共104页第二十四页,共104页。User DocumentUser Document:用户文档类型。:用户文档类型。:用户文档类型。:用户文档类型。Verilog ModuleVerilog Module:Verilog Verilog 模块类型,用于编写模块类型,用于编写模块类型,用于编写模块类型,用于编写VerilogVerilog代码。代码。代码。代码。Verilog Test FixtureVerilog Test Fixture:VerilogVerilog测试模块类型,专门用于编写测试模块类型,专门用于编写测试模块类型,专门用于编写测试模块类型,专门用于编写VerilogVerilog测试代码。测试代码。测试代码。测试代码。VHDL ModuleVHDL Module:VHDLVHDL模块类型,用于编写模块类型,用于编写模块类型,用于编写模块类型,用于编写VHDLVHDL代码。代码。代码。代码。VHDL LibraryVHDL Library:VHDLVHDL库类型,用于制作库类型,用于制作库类型,用于制作库类型,用于制作(zhzu)VHDL(zhzu)VHDL库。库。库。库。VHDL PackageVHDL Package:VHDLVHDL包类型,用于制作包类型,用于制作包类型,用于制作包类型,用于制作(zhzu)VHDL(zhzu)VHDL包。包。包。包。VHDL Test BenchVHDL Test Bench:VHDLVHDL测试模块类型,用于专门编写测试模块类型,用于专门编写测试模块类型,用于专门编写测试模块类型,用于专门编写VHDLVHDL测试代码。测试代码。测试代码。测试代码。Embedded ProcessorEmbedded Processor:嵌入式处理器。将调用:嵌入式处理器。将调用:嵌入式处理器。将调用:嵌入式处理器。将调用XPSXPS工具进入工具进入工具进入工具进入MicoBlazeMicoBlaze处理器的硬件定制界处理器的硬件定制界处理器的硬件定制界处理器的硬件定制界面。面。面。面。第25页/共104页第二十五页,共104页。在本例中,在在本例中,在“Select Source Type”中选择中选择“Verilog Module”选项,在选项,在“File name”文本框中输入文本框中输入“Count_EN”,单,单击击“Next”按钮,进入端口定义按钮,进入端口定义对话框,如图对话框,如图2-6所示。其中,所示。其中,“Module name”输入输入“Count_EN”。下面的列表对应。下面的列表对应端口的定义:端口的定义:“Port Name”表示表示端口名称端口名称(mngchng);“Direction”表示端口方向表示端口方向(可可以选择以选择input、output、inout三种三种类型类型);如果为总线,则;如果为总线,则“Bus”选项打钩;选项打钩;“MSB”和和“LSB”分分别表示信号的最高位和最低位,别表示信号的最高位和最低位,单位信号的单位信号的MSB和和LSB不必填写。不必填写。第26页/共104页第二十六页,共104页。n n图图2-6 Verilog2-6 Verilog模块模块(m kui)(m kui)端口定义对话框端口定义对话框 第27页/共104页第二十七页,共104页。定义了模块端口之后,单击定义了模块端口之后,单击“Next”按钮,进入下一步,单按钮,进入下一步,单击击“Finish”按钮,完成创建。按钮,完成创建。ISE自动创建一个自动创建一个Verilog模块例,模块例,在源代码编辑区内打开,标准的在源代码编辑区内打开,标准的代码端口的注释都已经生成,剩代码端口的注释都已经生成,剩下下(shn xi)来的工作就是在模来的工作就是在模块中实现功能。块中实现功能。ISE独特的源码独特的源码模块自动生成方式,极大地节省模块自动生成方式,极大地节省了开发者的时间。在源代码区只了开发者的时间。在源代码区只要填写如程序要填写如程序2-1所示的代码内容,所示的代码内容,就完成了源码输入的工作。就完成了源码输入的工作。第28页/共104页第二十八页,共104页。2.3.2 创建创建TestBench并进行并进行RTL仿真仿真 1建立仿真建立仿真TestBench建立基于程序建立基于程序2-1的的ISim测试测试仿真平台。仿真平台。在工程管理区将在工程管理区将“View”设置为设置为“Simulation”;在工程管理区任意位置点击鼠标在工程管理区任意位置点击鼠标右键,并在弹出的菜单中选择右键,并在弹出的菜单中选择“New Source”命令;命令;选中选中“Verilog Test Fixture”,输入文件,输入文件名名“Count_EN _tb”;单击单击“Next”按钮,进入下一页,这时按钮,进入下一页,这时工程中显示的是所有工程中显示的是所有module的名的名字,设计人员根据需要字,设计人员根据需要(xyo)选选择要进行测试的择要进行测试的module。在本例。在本例中只有一个中只有一个moduleCount_EN,用鼠标选中,然后单击,用鼠标选中,然后单击“Next”按钮,进入下一页,直接单击按钮,进入下一页,直接单击“Finish”,ISE在源代码区显示测在源代码区显示测试模块的代码:试模块的代码:第29页/共104页第二十九页,共104页。modulemodule Count_EN_tb;Count_EN_tb;/Inputs/Inputsregreg EN;EN;regreg Clock;Clock;regreg Reset;Reset;/Outputs/Outputswirewire 7:0 Out;7:0 Out;/Instantiate the Unit Under Test(UUT)/Instantiate the Unit Under Test(UUT)Count_EN uut(Count_EN uut(.EN(EN),.EN(EN),.Clock(Clock),.Clock(Clock),.Reset(Reset),.Reset(Reset),.Out(Out).Out(Out););第30页/共104页第三十页,共104页。initialinitial beginbegin/Initialize Inputs/Initialize InputsEN=0;EN=0;Clock=0;Clock=0;Reset=0;Reset=0;/Wait 100 ns for global reset to finish/Wait 100 ns for global reset to finish#100;#100;/Add stimulus here/Add stimulus hereendend endmoduleendmodule 第31页/共104页第三十一页,共104页。ISE自动生成了测试文件的自动生成了测试文件的框架,包括所需要框架,包括所需要(xyo)的信的信号、端口声明以及模块例化。设号、端口声明以及模块例化。设计人员需要计人员需要(xyo)做的工作,做的工作,就是在就是在“/Add stimulus here”后面补充添加测试向量生成代码。后面补充添加测试向量生成代码。为了验证计数器是否工作正常,为了验证计数器是否工作正常,添加如下代码添加如下代码(关于关于TestBench的的编写,将在后续章节详细介绍,编写,将在后续章节详细介绍,现在只需要现在只需要(xyo)了解如何使了解如何使用用ISim进行仿真即可进行仿真即可):Reset=1;EN=1;forever#10 Clock=!Clock;此时添加代码完毕。此时添加代码完毕。第32页/共104页第三十二页,共104页。2使用使用ISim进行进行(jnxng)仿真仿真选中过程管理区选中过程管理区“Simulate Behavioral Model”选项,单击鼠选项,单击鼠标右键,选择菜单中的标右键,选择菜单中的Properties选项,会弹出如图选项,会弹出如图2-7所示的仿真所示的仿真设置属性对话框。设置属性对话框。对话框中有如下两项需要注对话框中有如下两项需要注意:意:(1)“Simulation Run Time”:用来设置仿真时间长短;:用来设置仿真时间长短;(2)“Waveform Database Filename”:设置波形文件存储:设置波形文件存储路径及文件名。路径及文件名。第33页/共104页第三十三页,共104页。n n图图2-7 2-7 仿真仿真(f(f n n zhn)zhn)设置属性对话框设置属性对话框 第34页/共104页第三十四页,共104页。仿真参数设置完之仿真参数设置完之后,直接双击后,直接双击ISim中的中的“Simulate Behavioral Model”,ISE自动启动自动启动(qdng)ISim软件。软件。ISim软件界面如图软件界面如图2-8所所示。示。n n图图2-8 ISim2-8 ISim软件仿真软件仿真(f(f n n zhn)zhn)界面界面 第35页/共104页第三十五页,共104页。ISim仿真工具主界面由三个仿真工具主界面由三个部分组成:源文件部分组成:源文件(wnjin)区、区、目标信号区和波形仿真区。目标信号区和波形仿真区。(1)源文件源文件(wnjin)区:存区:存放仿真源文件放仿真源文件(wnjin)以及库以及库文件文件(wnjin)。(2)目标信号区:显示工程目标信号区:显示工程信号名,方便用户选中并添加到信号名,方便用户选中并添加到波形仿真图上。在目标信号区,波形仿真图上。在目标信号区,有快捷按钮,方便用户在本工程有快捷按钮,方便用户在本工程中提取需要观察的信号。快捷按中提取需要观察的信号。快捷按钮包括输入输出端口、双向端口、钮包括输入输出端口、双向端口、内部信号、常量、参数、变量、内部信号、常量、参数、变量、缓冲信号等。缓冲信号等。第36页/共104页第三十六页,共104页。(3)波形仿真区:显示目标波形仿真区:显示目标(mbio)信号波形图。信号波形图。选择菜单中的选择菜单中的“Simulation”或者快捷键栏目或者快捷键栏目相关按钮来控制仿真流程,这些相关按钮来控制仿真流程,这些快捷按钮是:快捷按钮是:(1)Restart:重新开始仿真;:重新开始仿真;(2)Run All:仿真全部执行;:仿真全部执行;(3)Run:执行仿真;:执行仿真;(4)Step:单步执行;:单步执行;(5)Break:仿真停止。:仿真停止。对应快捷按钮如图对应快捷按钮如图2-9所示。所示。仿真结果如图仿真结果如图2-8所示。所示。第37页/共104页第三十七页,共104页。n n图2-9 仿真流程控制(kngzh)快捷按钮第38页/共104页第三十八页,共104页。2.3.3 添加约束添加约束工程中源代码输入之后,需工程中源代码输入之后,需要给设计添加管脚和时序约束。要给设计添加管脚和时序约束。管脚约束是将设计文件的输入输管脚约束是将设计文件的输入输出信号设置到器件的某个管脚,出信号设置到器件的某个管脚,而且包括设置此管脚的电平标准、而且包括设置此管脚的电平标准、电流强度、上下拉特性等。电流强度、上下拉特性等。时序约束在高速数字电路设时序约束在高速数字电路设计中非常重要,其作用是为了提计中非常重要,其作用是为了提高设计的工作频率和获得正确的高设计的工作频率和获得正确的时序分析报告。在综合、映射和时序分析报告。在综合、映射和布局布线阶段附加约束,可以使布局布线阶段附加约束,可以使时序分析工具以用户的时序约束时序分析工具以用户的时序约束为标准,尽量满足为标准,尽量满足(mnz)约束约束要求,同时产生实际时序和用户要求,同时产生实际时序和用户约束时序之间的差异,并形成报约束时序之间的差异,并形成报告。因此要求用户必须进行时序告。因此要求用户必须进行时序约束,而且越全面越好。在约束,而且越全面越好。在ISE中时序约束由专门的工具中时序约束由专门的工具Constraints Editor来完成。来完成。第39页/共104页第三十九页,共104页。1创建管脚约束创建管脚约束下面以程序下面以程序2-1为例创建约束。为例创建约束。(1)新建约束文件。首先新新建约束文件。首先新建源代码,在源代码类型中选取建源代码,在源代码类型中选取“Implementation Constraints File”,在,在File name中输入约束文中输入约束文件名件名“Count_EN_ucf”,单击,单击“Next”按钮,进入下一页;然按钮,进入下一页;然后单击后单击“Finish”,完成约束文,完成约束文件的创建。件的创建。(2)编辑编辑(binj)约束文件。约束文件。在工程管理区选择建立的约束文在工程管理区选择建立的约束文件,双击过程管理区的件,双击过程管理区的“User Constraints”下的下的“Edit Constraints(Text)”,就可以打开,就可以打开约束文件编辑约束文件编辑(binj)器。器。第40页/共104页第四十页,共104页。(3)建立管脚约束。由于手建立管脚约束。由于手工编辑工编辑UCF文件通常效率较高,文件通常效率较高,且出错概率较小,因此我们这里且出错概率较小,因此我们这里有必要介绍手工编辑管脚约束的有必要介绍手工编辑管脚约束的语法。其语法格式为语法。其语法格式为NET|INST|PINsignal name Attribute;其中,其中,“signal name”是指是指约束对象名字,也支持对约束对约束对象名字,也支持对约束对象的层次描述;象的层次描述;“Attribute”为约束的具体描述;语句必须以为约束的具体描述;语句必须以分号结束。分号结束。UCF文件采用文件采用“#”进行注释。需要注意的是,进行注释。需要注意的是,UCF文件约束对象必须与设计中的对文件约束对象必须与设计中的对象名字一致。例如,若将信号象名字一致。例如,若将信号(xnho)CLK约束到约束到FPGA的的P30管脚上,信号管脚上,信号(xnho)电平标准电平标准为为CMOS3.3V,则添加约束如下:,则添加约束如下:NET CLK LOC=P30|IOSTANDAND=LVCMOS33;第41页/共104页第四十一页,共104页。在在UCF文件设计中支持通配文件设计中支持通配符符“*”和和“?”,“*”可以代可以代表任何字符串和空格,表任何字符串和空格,“?”则则代表一个字符。在编辑约束文件代表一个字符。在编辑约束文件时,通过通配符可以快速选择一时,通过通配符可以快速选择一组信号。例如,语句组信号。例如,语句(yj)NET*DATA?FAST;将选择包含将选择包含“DATA”字符并字符并以一个字符结尾的所有信号,并以一个字符结尾的所有信号,并选择速率为选择速率为“FAST”。对于。对于S3开开发板可以参考其硬件使用手册进发板可以参考其硬件使用手册进行管脚约束。行管脚约束。第42页/共104页第四十二页,共104页。2建立时序约束建立时序约束时序约束采用时序约束采用Constraints Editor比较方便。在工程管理区比较方便。在工程管理区选择顶层模块,在过程选择顶层模块,在过程(guchng)管理区管理区“User Constraints”下面双击下面双击“Creat Timing Constraints”,打开,打开Constraints Editor界面。可以添界面。可以添加的约束包括加的约束包括“Timing Constraints”、“Group Constraints”和和“Miscellaneous”三部分约束,三部分约束,根据需要添加时钟、输入输出端根据需要添加时钟、输入输出端口等约束。完成之后,约束结果口等约束。完成之后,约束结果将自动添加到将自动添加到.ucf文件当中。在文件当中。在本例中,由于设计比较简单,所本例中,由于设计比较简