您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于Xilinx-ISE-124的FPGA设计流程
基于ISE12.4的FPGA设计基本流程ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。本文主要通过一个最简单的“点亮LED灯”实例介绍了基于ISE12.4软件的FPGA设计流程,包括设计输入、仿真、约束、下载等。0前言一套完整的FPGA设计流程包括电路设计输入、功能仿真、设计综合、综合后仿真、设计实现、添加约束、布线后仿真和下载、调试等主要步骤。图1FPGA设计流程目前赛灵思公司FPGA设计软件的最新版本是ISE13.1,本文中以ISE12.4为例。ISE9以后的版本的安装文件都是集成到了一个包当中,安装起来很方便。软件包里面包含四个大的工具,ISEDesignTools、嵌入式设计工具EDK、PlanAhead、XtremeDSP设计工具SystemGenerator。ISE设计工具中包含ISEProjectNavigator、ChipScopePro和以下工具:图2ISE软件包中部分工具做一般的FPGA逻辑设计时只需要用到ISE设计工具,下面通过一个最简单的“点亮LED灯”实例,具体讲解ISE设计工具的使用,并介绍基于ISE的FPGA设计基本流程。1创建工程(1)在桌面快捷方式或开始→所有程序→XilinxISEDesignSuite12.4→ISEDesignTools中打开ISEProjectNavigator。(2)单击File→NewProject...出现下图所示对话框。图3新建工程对话框在该界面输入工程名、选择工程存放路径、选择顶层模块类型,其中顶层模块类型有硬件描述语言(HDL)、原理图(Schematic)、SynplifyPro默认生成的网表文件(EDIF)、XilinxIPCore和XST生成的网表文件(NGC/NGO)这四种选项,这里我们使用Verilog模块作为顶层输入,所以选HDL。(3)单击Next进入下一步,弹出下图所示对话框。图4工程参数设置对话框这里主要设置FPGA器件型号,速度等级,综合工具和仿真工具的选择,其余的一般默认即可。器件大类(ProductCategory)中有ALL、民用级GeneralPurpose、工业级Automotive、军用级Military/Hi-Reliability、航空防辐射级RadiationTolerant五个选项,这里选择默认的ALL。芯片型号选择板子上用到的spartan3EXC3S500E,封装FG320C,速度等级-4(数值越大,速度越快)。综合工具选择ISE自带的XST,仿真工具也选择ISE自带的ISim。这里综合工具和仿真工具都可以选择第三方的工具,如常用的SynplifyPro和Modelsim。(4)单击Next按钮,然后单击Finish完成新工程的创建。图5新建工程概要该窗口会显示新建工程的概要,核对无误后点击Finish完成工程创建。在工作区可看到新建的工程LED。2设计输入(1)在源代码窗口中单击右键,在弹出的菜单中选择NewSource。图6新建源文件向导在源文件类型中选择VerilogModule,输入文件名,其余使用软件默认即可。(2)单击Next按钮,弹出的窗口是模块创建向导界面,这里我们不使用该功能,直接单击单击Next按钮到下一步,点击Finish完成新源文件的创建。图7模块创建向导界面(3)ISE会自动打开源代码编辑界面,在该界面输入源代码,点击保存。图8源代码编辑界面在该界面下,我们输入以下源代码。这段代码的功能就是点亮一个LED灯,让它闪烁起来。选用板子上的一个50MHZ的晶振,对其进行分频后达到人眼能够辨别的跳变速率。3功能仿真(1)加入仿真激励源,也就是testbench,这里选择用verilogHDL编写。在源代码窗口中单击右键,在弹出的菜单中选择NewSource,然后选择VerilogTestFixture。图9源代码仿真关联选择界面在该界面选择关联上test1源代码,这样关联之后生成出来的测试文件中会自动加入对源文件的例化代码,然后单击Next,在弹出的报告界面确认信息无误后点击Finish。在自动弹出的代码编辑界面输入以下测试激励代码,保存。(2)行为级仿真。在主窗口左侧的Design窗口中选择Simulation→下拉栏中选行为级Behavioral→选中仿真激励文件→在Processes窗口就会出现ISim仿真软件了,第一个功能是行为级语法检查,在编写完testbench之后可以用于排查语法错误。双击第二个选项SimulateBehaviorModel即可启动行为级仿真了。图10启动行为级仿真选中test.v双击Processes栏中的SimulateBehavioralModel,将弹出Isim窗口。将InstanceandProcessName中的test展开,选中uut。将counter[25:0]拖到右边的仿真窗口中。点击restart-ranall,查看仿真结果。点击break结束。退出Isim。(3)使用Sim仿真设计时序。图11ISim仿真界面界面打开之后默认只跑1us,由于计数器计数较长,需要多运行一会才能看到led信号的跳变。点击操作栏上的按钮让它多运行一会就可以了,暂停时点击按钮。另外可将Objects窗口中的信号通过右键选择加入到仿真窗口中以方便观测。4综合(1)将Design窗口中的View项切换为Implementation,然后选中顶层文件,在下面的Processes窗口中就会出现综合实现的工具选项。这里双击Synthesize–XST就开始运行综合了。图12综合在hierarchy窗口选中led,可以看到processes窗口中的综合、配置等选项。双击checksyntax检查verilig文件有误语法错误。若没有,会出现绿色的勾,有警告会出现叹号,有错误会出现红色的叉。双击synthesize开始综合综合过程中出现的各种警告或是错误报告会出现在Console窗口中,综合完成后状态显示为,双击ErrorsandWarnings中的就可以打开综合报告。双击ViewRTLSchematic,打开设计综合后的RTL级视图。双击后会弹出下图所示的对话框,第一个是打开一个窗口文件管理向导,第二个是直接进入顶层设计的浏览。默认为第二个,点击OK。图13设置RTL查看设置下图就是打开后能看到的顶层模块视图。可以看到最外层的输入和输出接口,一般复杂一点的设计就可以同过顶层视图来确定个模块之间的端口是否正确连接。图14顶层模块双击顶层模块就可进入与之相应的模块内部RTL视图,在RTL级视图里,可以清楚地看到每一条语句是被综合工具综合成了什么逻辑器件。核对一下是否是自己预想的逻辑电路。图15RTL级视图综合工具中还有一个ViewTechnologySchematic选项,工艺级视图,比RTL级电路更详细,更接近综合后在芯片中要形成的实际电路和资源使用情况。可以看到各个逻辑部件内部的寄存器和门电路。图16工艺级视图5时序仿真在主窗口左侧的Design窗口中选择Simulation→下拉栏中选Post-Translate→选中仿真激励文件→在Processes窗口就会出现ISim仿真软件了,双击SimulatePost-TranslateModel即可启动时序仿真。图17时序仿真时序仿真由于加入了门级延迟,所以比行为级仿真的运算量大,仿真起来速度也会慢很多。点击Run之后多等几分钟。图18时序仿真结果ISim还能做映射(Post-Map)和布局布线(Post-Route)之后的仿真,时序能更贴近真实情况。一般在高速和时序非常复杂的设计中才会用到,使用方法与上面类似,这里不再赘述。6实现(1)添加管脚约束。在源代码窗口中单击右键,在弹出的菜单中选择NewSource,然后选择,输入文件名,点击下一步。在弹出的窗口确认信息无误后点击Finish。软件会自动打开约束文件编辑窗口,输入以下代码,点击保存。约束文件也可以通过选择操作窗口中的UserConstraints→I/OPinPlanning启动PlanAhead来通过图形界面添加生成。(2)运行实现。实现的步骤包括翻译,映射,布局布线三个步骤。在Design窗口中选中顶层文件后双击操作窗口中的ImplementDesign,软件就会自动运行实现的三个步骤。双击ImplimentDesign开始翻译、映射、布局布线。图19运行实现工具完成后状态显示为,各项操作过程中出现的错误和警告信息可以在ErrorsandWarnings窗口中选择查看。7下载调试双击操作窗口中的ConfigureTargetDevice启动下载程序。这个过程中会自动生成编程文件(Xilinx的FPGA配置文件为.bit后缀),并启动iMPACT软件。双击generateprogramingfile生成配置文件。在软件运行的过程中你可以连接好下JTAG载线,将板子通上电。图20选择配置目标器件运行完成之后会自动弹出iMPACT软件界面,在该界面中双击BoundaryScan,然后单击工具栏上的图标,软件就会自动扫描JTAG链路上的目标器件。图21iMPACT界面软件会自动打开配置文件选择窗口,将路径引导到工程目录,选择我们刚才生成的bit文件。软件还会询问是否需要添加外挂的PROM芯片,这里选否。然后点击OK。如果硬件连接正确且工作正常,就能看到下图所示的界面。选中芯片后在点击右键,选择Program。图22下载界面如果提示Programmedsuccessfully就表明下载成功了,接下来你就能看到板子上的LED开始闪烁了。8总结本篇通过一个简单的实例讲解了整个设计的流程,对初学者入门有一定的帮助,但这些操作只是涉及到了ISE强大功能中很小的一部分,更深入的功能有待于大家继续摸索。交通灯实例:设计一个简单的十字路口交通灯控制器,A方向和B方向各设红(R)、黄(Y)、绿(G)四盏灯,要求红灯、黄灯、绿灯的持续时间分别为20秒、5秒、20秒,使之按照实际交通规则进行变化,并能将灯亮的时间以倒计时的形式显示出来。设置紧急状态及复位状态。紧急状态下,A方向和B方向皆为红灯,计数器停止计数;复位状态下,A方向和B方向灯均不亮,计数器显示为“0”。交通灯信号控制系统一般由晶体振荡器、分频器、时间计数器、控制器以及译码显示电路组成,根据设计内容要求,其组成框图如图所示:本实验采用模块化设计,整个电路包含:用于计时的1Hz分频模块,用于动态扫描显示电路的200Hz分频模块,动态扫描控制电路模块,及A、B方向红绿灯控制模块。各模块采用Verilog语言设计,而后分别生成原理图模块,供顶层文件调用。顶层文件采用原理图设计,如下图所示:(1)Divid模块:1Hz分频模块,开发板提供50MHz的系统时钟,而该设计交通灯转换以秒为计时单位,对50MHz分频得到1Hz脉冲信号。(2)Divid_200模块:200Hz分频模块,用于产生动态扫描模块的时钟。一个数码管稳定显示要求的切换频率要大于50Hz,那么4个数码管则需要50×4=200Hz以上的切换频率才能看到不闪烁并且持续稳定显示的字符,因而扫描频率设定为200Hz。(3)Control模块:A、B方向红绿灯控制模块,红灯、绿灯为20秒,黄灯为5秒。并实现计时数据转换,即将数据分为十位显示数据,与各位显示数据,用于数码管显示。(4)saomiao扫描模块:轮流选通2位数码管,实现动态扫描,以显示倒计时数据。引脚分配
本文标题:基于Xilinx-ISE-124的FPGA设计流程
链接地址:https://www.777doc.com/doc-649816 .html