ISE教程.docx
《ISE教程.docx》由会员分享,可在线阅读,更多相关《ISE教程.docx(27页珍藏版)》请在冰豆网上搜索。
ISE教程
第十一章VHDL的FPGA实现
能够完成逻辑综合的EDA工具很多。
在此,我们基于实验室使用比较广泛的ISE软件介绍综合流程,参见图11.1,基于ISE的FPGA设计一般分为九步:
·电路功能设计
·VHDL的RTL源程序输入
·功能仿真(功能不正确,则修改设计)
·综合(产生网表)
·综合后仿真(综合后电路的门级仿真不通过,则需修改源程序)
·实现与布局布线
·时序仿真与验证(整体的时序分析(后仿)通不过,则需要重新布线)
·板级仿真与验证(主要应用于高速电路设计)
·芯片编程与调试(产生FPGA目标文件,下载烧写FPGA)
图11.1FPGA设计流程
在仿真模型中完全可以用VHDL来描述一项设计的时序特性,但在综合中,这些时序行为(如惯性或传输延迟)的描述都会被VHDL综合器忽略,而此设计的实际时序行为仅依赖于目标器件的物理结构和映射方式。
因此,若将设计模型从一个目标器件移植到另一个目标器件时,那些依赖于正确的延迟特性才能正常工作的VHDL模型,将不可能得到期望的综合结果和时序仿真效果。
仿真模型可以描述一些无限制的条件(如无穷循环或无范围限制的整型数),硬件却不能提供这些条件。
在某些情况下,如无穷循环或循环次数不确定的情况下,综合工具会产生错误并退出。
在其他的情况下,如无范围的整数,VHDL综合器会假设一个默认的表示方式,如以32bit二进制数表示无范围的整数。
尽管这是可综合的,但却无法生成所期望的电路。
11.2VHDL的FPGA逻辑综合
以下将以第七章例7.15交通信号灯监测电路的程序为例来说明如何对VHDL程序进行综合。
具体步骤如下:
1.启动ISE
如图11.2所示,在windows操作系统的开始菜单中启动XilinxISEDesignSuite10.1中的ISE主窗口,之后如图11.3。
图11.2启动ISE10.1
图11.3ISE10.1主窗口
2.创建一个新的项目
ISE10.1主窗口打开后,选择创建一个新的项目,一般分为以下七步:
(1)单击【File】【NewProject…】命令,如图11.4.1,出现图11.4.2所示的【CreateNewProject】对话框。
图11.4.1ISE10.1创建新工程
(2)如图11.4.2所示,选择工程存放路径,然后输入工程名,系统会产生一个名为工程名的新目录。
选择顶层模块类型为HDL,其他顶层模块类型有原理图(Schematic)、EDIF网表、NGC网表。
单击【Next】,出现图11.4.2。
图11.4.2【CreateNewProject】对话框
(3)如图11.4.3,进行FPGA器件参数设置,说明如下:
ØProductCategory(器件大类):
Xilinx提供工业级等,选All即可
ØFamily(系列):
选择Spartan2
ØDevice(器件):
选择XC2S50
ØPackage(封装):
选择TQ144
ØSpeed(速度等级):
速度不同不是工艺差别,而是测试筛选出来的,速度不同自然价格不同,商用芯片尽量选择低速等级,这里选-5
ØTop-LevelSourceType(顶层类型):
上步已选,现为灰色,不可编辑
ØSynthesisTool(综合工具):
选择ISE集成的XST,也可选三方工具
ØSimulitor(仿真工具):
选择ModelSim-SEVHDL
ØPreferredLanguage(语言):
选择VHDL
ØEnableEnhancedDesignSummary:
是否显示DesignSummary
ØEnableMessageFiltering:
是否设置在Implementation时过滤掉某些warning和info
ØDisplayIncrementalMessages:
是否显示上次执行没有出现的新信息
图11.4.3FPGA器件参数设置
设置完成后,单击【Next】,出现图11.4.4。
(4)如图11.4.4,可以新建源文件,这里不必新建,单击【Next】,出现图11.4.5。
图11.4.4新建源文件
(5)如图11.4.5,可以添加已存在源文件,这里跳过,单击【Next】,出现图11.4.6。
图11.4.5添加已存在源文件
(6)如图11.4.6,为新建工程总结信息,如有错误可以返回修改。
图11.4.6工程信息总结
(7)如图11.4.7所示,为新建后的空白工程
图11.4.7ISE10.1新工程界面
3.添加源文件
添加例7.15交通信号灯监测电路的VHDL程序源文件。
添加经过ActiveHDL或Modelsim进行功能仿真验证的源文件,如图11.5所示。
图11.5添加复制源文件
图11.6选择仿真验证的源文件
如图11.7所示,可以设定源文件属性,这里选择All,其他还有Simulation、Implementation、None。
设置完成单击【OK】,出现如图11.8。
图11.7设定添加源文件属性
如图11.8所示,双击源文件可以查看、修改源文件。
图11.8查看源文件
4.定义顶层设计
如图11.9所示,完成源文件添加后,综合之前需要设定顶层文件:
右击顶层文件【SetasTopModule】。
本实验只有一个源文件,所以默认设置为顶层文件,【SetasTopModule】为灰色,不可编辑。
图11.9设定顶层文件
5.综合
综合是将设计输入(HDL语言及原理图等)翻译成与、或、非、RAM及触发器等基本逻辑单元的过程,并且输出网表文件,同时此过程根据约束条件优化所生成的逻辑连接。
综合工具可以是第三方EDA工具(如Spnplify/SynplifyPro),本实例使用ISE集成的综合工具XST。
如图11.10所示,在ISE工程界面的【Sources】窗格中,选中【Sources】选项,在【SourcesFor】下拉列表中选择【Implementation】选项(默认为此选项)。
在【Processes】窗格中双击【Synthesis-XST】选项,或右击选择【Run】命令,XST开始综合设计,综合完成无误会在【Synthesis-XST】选项左边出现绿色对勾。
综合完成后会自动在项目文件夹下生成NGC网表文件,设计中也可以直接用NGC网表文件作为设计输入,通过添加约束、翻译、映射、布局布线、生成目标文件和烧录FPGA。
大型设计往往动辄上千条且通常可以忽略的warning,但不检查这些warning是绝对不允许的,开发人员尽量不要把问题留到下一阶段。
图11.10综合
双击【ViewRTLSchematic】,打开RTL级视图,如图11.11所示。
图11.11RTL视图
双击RTL视图,会进入设计模块划分视图,如图11.12。
由于本实例较小,只有一个模块。
图11.12设计模块划分视图
双击设计模块划分视图,会进入门级实现视图,如图11.13。
图11.13门级实现视图
11.3VHDL的FPGA物理实现
1.约束
对于FPGA设计,在布局布线时需要对布线过程进行控制,即约束。
约束有引脚约束和时序约束,引脚约束是必需的,要为设计的端口指定器件引脚;时序约束指定内部频率和接口时序,小型设计可以不设定,大型设计则必须考虑,本实例较小,没有设定时序约束。
如图11.14,双击【FloorplanIO–Pre-Synthesis】,出现图11.15。
图11.14引脚约束
如图11.15所示,单击【Yes】,打开引脚约束界面。
图11.15生成引脚约束文件提示
使用图形界面编辑的约束会添加到约束文件*.ucf中,设计者也可以根据约束语法直接编辑UCF文件。
引脚约束除了约束位置外,还可以约束点评标准和驱动电流等,本设计只约束位置,其他采用默认值。
如图11.16所示,在【DesignBrowser】窗格中选中【I/OPins】选项,然后在【DesignObjectList…】窗格中的【Loc】对应栏填写FPGA对应管脚位置。
图11.16设置引脚约束
编辑完成后,保存文件,弹出图11.17所示弹窗,单击【OK】保存。
图11.17保存引脚约束文建
如图11.18所示,保存引脚约束后会在顶层文件下产生一个*.ucf文件。
单击选中UCF文件,在【Processes】窗格点开【UserConstraints】,双击【EditConstraints(Text)】选项,可以查看、编辑、修改UCF文件,然后保存,和通过图形界面修改一样可以编辑UCF文件。
图11.18查看UCF文件
2.实现
在ISE工程的【Processes】窗格展开【ImplementDesign】选项,然后双击【ImplementDesign】选项,或者右击选择【Run】命令,依次执行下面三个过程:
(1)Translate:
将输入的网表和约束信息转换为Xilinx可识别的逻辑连接
(2)Map:
将设计映射到器件内部的各种资源(slice和RAM等)
(3)Place&Route:
完成设计在器件共的布局布线
布线完成后的界面如图11.19所示。
Implement过程中的【warning】和【error】窗格和过程信息都显示在下面的【Console】窗格中。
如图11.20所示,打开【DesignSummary】窗格,可以看到资源占用列表。
在【DesignSummary】窗格中可以打开综合、布局布线过程的所有报告,如图11.21所示,其中重要的有PlaceandRouteReport和PinoutReport。
图11.19实现设计
图11.20查看报告
图11.21查看资源利用
3.生成下载文件
在【Processes】窗格中右击【GenerateProgrammingFile】选项,选择【Properties】选项,弹出图11.22所示设置界面。
在【Category】窗格中选中【StartupOptions】选项,在右侧修改【FPGAStart-UpClock】选项为JTAGClock,单击【OK】。
图11.22配置时钟
配置完成后,在【Processes】窗格中双击【GenerateProgrammingFile】选项,或右击选择【Run】。
完成后【GenerateProgrammingFile】左侧出现绿色对勾,如图11.23所示,此时在工程文件夹下已生成*.bit下载文件。
图11.23生成下载文件
4.使用iMPACT烧录FPGA
iMPACT是ISE集成的配置工具,主要功能包括生成PROM格式下载文件、为FPGA/CPLD/PROM下载配置文件和检查配置是否成功等。
iMPACT支持的配置模式共有5种:
●BoundaryScan(边界扫描)
●SlaveSerial(从串)
●SelectMap
●DesktopConfiguration
●DirectSPIConfiguration
边界扫描模式标准统一,可以通过JTAG端口配置FPGA/CPLD/PROM等多种器件,应用最为广泛。
本实例也采用边界扫描模式进行FPGA配置,配置文件为上步生成的bit文件。
首先,搭建硬件环境,即用JTAG电缆连接FPGA和计算机。
确认连接正确后,在【Processes】窗格中展开【ConfigureTargetDevice】选项,双击【ManageConfigurationProject(iMPACT)】,进入图11.24界面。
图11.24配置模式选择
选择边界扫描模式,即【ConfiguredevicesusingBoundary-Scan(JTAG)】,单击【Finish】。
由于所选开发实验板上有FPGA和PROM两个下载器件,进入配置界面后如图11.25所,有两个配置器件。
第一个弹窗选择FPGA配置文件,选择生成的bit文件,单击【Open】。
图11.25选择FPGA配置文件
由于本实例没有生成PROM配置文件,在图11.26配置PROM界面,单击【Bypass】,跳过此步。
图11.26选择PROM配置文件
配置文件选择完成后,接入图11.27界面,设置具体参数,这里选择默认值,单击【OK】。
图11.27配置参数
如图11.28所示,右击FPGA器件,选择【Program】,开始烧录FPGA。
图11.28烧录FPGA
如图11.29所示,成功烧录FPGA。
由于没有生成PROM文件,本实例没有烧录PROM。
图11.29烧录FPGA成功
FPGA下载完成后,利用示波器、逻辑分析仪等仪器即可对FPGA试验板进行硬件测试。