文章

基于ISE 12.4的FPGA设计基本流程

2011-07-31王凯

8017阅
ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。本文主要通过一个最简单的“点亮LED灯”实例介绍了基于ISE 12.4软件的FPGA设计流程,包括设计输入、仿真、约束、下载等。

0 前言

    一套完整的FPGA设计流程包括电路设计输入、功能仿真、设计综合、综合后仿真、设计实现、添加约束、布线后仿真和下载、调试等主要步骤。

图1 FPGA设计流程

图1 FPGA设计流程

    目前赛灵思公司FPGA设计软件的最新版本是ISE 13,由于笔者暂未用到该版本,本文中以ISE 12.4为例。

    ISE 9以后的版本的安装文件都是集成到了一个包当中,安装起来很方便。软件包里面包含四个大的工具,ISE Design Tools、嵌入式设计工具EDK、PlanAhead、Xtreme DSP设计工具System Generator。ISE设计工具中包含ISE Project Navigator、ChipScope Pro和以下工具:

图2 ISE软件包中部分工具

图2 ISE软件包中部分工具

    做一般的FPGA逻辑设计时只需要用到ISE设计工具,下面通过一个最简单的“点亮LED灯”实例,具体讲解ISE设计工具的使用,并介绍基于ISE的FPGA设计基本流程。

1 创建工程

    (1)在桌面快捷方式或开始→所有程序→Xilinx ISE Design Suite 12.4→ISE Design Tools中打开ISE Project Navigator。

    (2)单击File→New Project...出现下图所示对话框。

图3 新建工程对话框

图3 新建工程对话框

    在该界面输入工程名、选择工程存放路径、选择顶层模块类型,其中顶层模块类型有硬件描述语言(HDL)、原理图(Schematic)、SynplifyPro默认生成的网表文件(EDIF)、Xilinx IP Core和XST生成的网表文件(NGC/NGO)这四种选项,这里我们使用Verilog模块作为顶层输入,所以选HDL。

    (3)单击Next >进入下一步,弹出下图所示对话框。

图4 工程参数设置对话框

图4 工程参数设置对话框

    这里主要设置FPGA器件型号,速度等级,综合工具和仿真工具的选择,其余的一般默认即可。

    器件大类(Product Category)中有ALL、民用级General Purpose、工业级Automotive、军用级Military/Hi-Reliability、航空防辐射级Radiation Tolerant五个选项,这里选择默认的ALL。

    芯片型号选择笔者最近用到的spartan6 XC6SLX45T,封装FGG484,速度等级-2(数值越大,速度越快)。

    综合工具选择ISE自带的XST,仿真工具也选择ISE自带的ISim。这里综合工具和仿真工具都可以选择第三方的工具,如常用的SynplifyPro和Modelsim。

    (4)单击Next >按钮,然后单击Finish完成新工程的创建。

图5 新建工程概要

图5 新建工程概要

    该窗口会显示新建工程的概要,核对无误后点击Finish完成工程创建。

 

分页

2 设计输入

    (1)在源代码窗口中单击右键,在弹出的菜单中选择New Source。

图6 新建源文件向导

图6 新建源文件向导

    在源文件类型中选择Verilog Module,输入文件名,其余使用软件默认即可。

    (2)单击Next >按钮,弹出的窗口是模块创建向导界面,这里我们不使用该功能,直接单击单击Next >按钮到下一步,点击Finish完成新源文件的创建。

图7 模块创建向导界面

图7 模块创建向导界面

    (3)ISE会自动打开源代码编辑界面,在该界面输入源代码,点击保存。

图8 源代码编辑界面

图8 源代码编辑界面

    在该界面下,我们输入以下源代码。

   
 
    这段代码的功能就是点亮一个LED灯,让它闪烁起来。选用板子上外接的一个33.3MHZ的晶振,对其进行分频后达到人眼能够辨别的跳变速率。

3 功能仿真

    (1)加入仿真激励源,也就是testbench,这里选择用verilog HDL编写。在源代码窗口中单击右键,在弹出的菜单中选择New Source,然后选择Verilog Test Fixture。

图9 源代码仿真关联选择界面

图9 源代码仿真关联选择界面

    在该界面选择关联上test1源代码,这样关联之后生成出来的测试文件中会自动加入对源文件的例化代码,然后单击Next >,在弹出的报告界面确认信息无误后点击Finish。

    在自动弹出的代码编辑界面输入以下测试激励代码,保存。

   

    (2)行为级仿真。在主窗口左侧的Design窗口中选择Simulation→下拉栏中选行为级Behavioral→选中仿真激励文件→在Processes窗口就会出现ISim仿真软件了,第一个功能是行为级语法检查,在编写完testbench之后可以用于排查语法错误。双击第二个选项Simulate Behavior Model即可启动行为级仿真了。

图10 启动行为级仿真

图10 启动行为级仿真

    (3)使用Sim仿真设计时序。

图11 ISim仿真界面

图11 ISim仿真界面

    界面打开之后默认只跑1us,由于计数器计数较长,需要多运行一会才能看到led信号的跳变。点击操作栏上的 按钮让它多运行一会就可以了,暂停时点击 按钮。另外可将Objects窗口中的信号通过右键选择加入到仿真窗口中以方便观测。

 

分页

4 综合

    (1)将Design窗口中的View项切换为Implementation,然后选中顶层文件,在下面的Processes窗口中就会出现综合实现的工具选项。这里双击Synthesize – XST就开始运行综合了。

图12 综合

图12 综合

    综合过程中出现的各种警告或是错误报告会出现在Console窗口中,综合完成后状态显示为 ,双击Errors and Warnings中的 就可以打开综合报告。

    双击View RTL Schematic,打开设计综合后的RTL级视图。双击后会弹出下图所示的对话框,第一个是打开一个窗口文件管理向导,第二个是直接进入顶层设计的浏览。默认为第二个,点击OK。

图13 设置RTL查看设置

图13 设置RTL查看设置

    下图就是打开后能看到的顶层模块视图。可以看到最外层的输入和输出接口,一般复杂一点的设计就可以同过顶层视图来确定个模块之间的端口是否正确连接。

图14 顶层模块

图14 顶层模块

    双击顶层模块就可进入与之相应的模块内部RTL视图,在RTL级视图里,可以清楚地看到每一条语句是被综合工具综合成了什么逻辑器件。核对一下是否是自己预想的逻辑电路。

图15 RTL级视图

图15 RTL级视图

    综合工具中还有一个View Technology Schematic选项,工艺级视图,比RTL级电路更详细,更接近综合后在芯片中要形成的实际电路和资源使用情况。可以看到各个逻辑部件内部的寄存器和门电路。

图16 工艺级视图

图16 工艺级视图

5 时序仿真

    在主窗口左侧的Design窗口中选择Simulation→下拉栏中选Post-Translate→选中仿真激励文件→在Processes窗口就会出现ISim仿真软件了,双击Simulate Post-Translate Model即可启动时序仿真。

图17 时序仿真

图17 时序仿真

    时序仿真由于加入了门级延迟,所以比行为级仿真的运算量大,仿真起来速度也会慢很多。点击Run之后多等几分钟。

图18 时序仿真结果

图18 时序仿真结果

    ISim还能做映射(Post-Map)和布局布线(Post-Route)之后的仿真,时序能更贴近真实情况。一般在高速和时序非常复杂的设计中才会用到,使用方法与上面类似,这里不再赘述。

6 实现

    (1)添加管脚约束。

    在源代码窗口中单击右键,在弹出的菜单中选择New Source,然后选择 ,输入文件名,点击下一步。在弹出的窗口确认信息无误后点击Finish。

    软件会自动打开约束文件编辑窗口,输入以下代码,点击保存。

   
 
    约束文件也可以通过选择操作窗口中的User Constraints→I/O Pin Planning启动PlanAhead来通过图形界面添加生成。

    (2)运行实现。实现的步骤包括翻译,映射,布局布线三个步骤。

    在Design窗口中选中顶层文件后双击操作窗口中的Implement Design,软件就会自动运行实现的三个步骤。

图19 运行实现工具

图19 运行实现工具

    完成后状态显示为 ,各项操作过程中出现的错误和警告信息可以在Errors and Warnings窗口中选择查看。

 

分页

7 下载调试

    双击操作窗口中的Configure Target Device启动下载程序。这个过程中会自动生成编程文件(Xilinx的FPGA配置文件为.bit后缀),并启动iMPACT软件。

    在软件运行的过程中你可以连接好下JTAG载线,将板子通上电。

图20 选择配置目标器件

图20 选择配置目标器件

    运行完成之后会自动弹出iMPACT软件界面,在该界面中双击Boundary Scan,然后单击工具栏上的 图标,软件就会自动扫描JTAG链路上的目标器件。

图21 iMPACT界面

图21 iMPACT界面

    软件会自动打开配置文件选择窗口,将路径引导到工程目录,选择我们刚才生成的bit文件。软件还会询问是否需要添加外挂的PROM芯片,这里选否。然后点击OK。如果硬件连接正确且工作正常,就能看到下图所示的界面。选中芯片后在点击右键,选择Program。

图22 下载界面

图22 下载界面

    如果提示Programmed successfully就表明下载成功了,接下来你就能看到板子上的LED开始闪烁了。

8 总结

    本篇通过一个简单的实例讲解了整个设计的流程,对初学者入门有一定的帮助,但这些操作只是涉及到了ISE强大功能中很小的一部分,更深入的功能有待于大家继续摸索。

责任编辑:许小倩
本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (0)
请您登录/注册后再评论