FPGA集成开发软件工具ISE的应用

在这里插入图片描述
作者:毛茏玮 / Saint
掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a
微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1
GitHub:github.com/saint-000

FPGA集成开发软件工具ISE的应用

一、实验原理:
ISE的全称为Integrated Software Environment,即“集成软件环境”,是Xilinx公司的硬件设计工具。 ISE将先进的技术与灵活性、易使用性的图形界面结合在一起,方便用户更加快捷的硬件设计。

二、实验目的:
在本次实验中,我们对之前在ACTIVE-VHDL中编译好的选择器,加法器,三八译码器,优先编码器,计数器,分频器等导入到ISE中,进行模块综合,定义用户约束,然后完成设计实现,最后连接到FPGA下载配置比特流文件。

三、实验内容:
选择器,加法器,三八译码器,优先编码器,计数器,分频器的VHDL文件导入ISE进行综合编译,设定相应管角约束。

四、实验器材(设备、元器件):
①软件Active-HDL9.2 ②Windows操作系统 ③ Xilinx ISE 10.1软件 ④开发板;Spartan-3系列xc3s200 PQ208-4C

五、实验步骤:
1.新建项目:打开Xilinx ISE 10.1,在启动界面下创建新的工程:选择File->New Project,弹出New Project Wizard向导界面。在Namel一栏中输入test,location目录选择C:\Users\test,working Directory选择C:\Users\test,Top-level source type:选择HDL,即硬件描述语言。

2.设置FPGA器件参数,如下图:
在这里插入图片描述
3.在新建好的工程下添加源文件,选择"Projec > Add copy of Source",将源文件复制到当前工程路径下并添加到当前工程中。源文件添加过程中,ISE 10.1自动对其进行分析,并且从信息框中列出源文件中的错误和警告。用鼠标双击信息行则自动定位于源文件出错或警告行。
在这里插入图片描述
4.定义顶层设计:完成源文件添加后,若有多个源文件,则需要指定设计的顶层文件。
右击顶层文件选择“Set as Top Module"。本次实验目的在于掌握ISE的综合编译,还没有真正的完成顶层的设计,所以我们只需要对单个设为顶层文件进行编译,然后综合设定个别模块的管脚约束即可。
在这里插入图片描述
5.逻辑综合:选择顶层设计文件,双击Synthesis-XST,综合工具开始对设计进行逻辑综合,综合完成会在文件夹下生成网表文件,如上图所示。

6.添加设计的约束文件:在对设计进行逻辑综合前需要进行必要的管脚指定和时序约束。
选中顶层文件,在Processes窗口双击“User Constrains > Floorplan IO- Pre-Synthesis",在“Loe"栏指定与输入输出信号对应的管脚,保存文件。
在这里插入图片描述
在菜单栏选择“View > Refresh",顶层文件下将出现当前工程的约束文件rgy.ucf. 单击选中rgy.uef文件,双击“User Constraints"标签下的“Edit Constraints(Text)“可以显示、编辑约束文件。
在这里插入图片描述
7.逻辑综合:选中设计顶层文件,双击"Synthesis-XST”,综合工具XST开始对设计进行逻辑综合,综合完成后会在工程文件夹下生成网表文件rgy.ngc.
8.观察逻辑图:在逻辑综合完成后,在Processes窗口双击"Synthesis-XST > View RTL Schematic",显示RTL电路图,双击该视图可以显示综合后的门级电路图。
在这里插入图片描述
这里我们只是单一的四位选择器,所以逻辑图只是简单的一个器件。
在这里插入图片描述
如果是设计好的顶层文件的逻辑图会相对复杂(举例乐曲电路设计逻辑图如下图):
在这里插入图片描述
在Poeses窗口双击“Sythesis-XST+ View Tecnology Schematie",显示与所选用器件相关的电路图。(以四位选择器为例如下图)
在这里插入图片描述
9.FPGA 设计实现:双击"Implement Design", ISE 将依次执行下面三个过程:
(I) Translate: 将输入的网表和约束信息转换为特定格式的设计文件。
(2) Map:将设计映射为目标器件内部可用的资源(slice 和RAM等)。
(3) Place & Route:对设计进行布局布线以满足时序约束。
通过菜单栏选择" Projct > View Design Summary",可以看到资源占用情况,此外,在Design Summary窗口中还可以查看综合报告、布局布线报告、静态时序报告等。
在这里插入图片描述
10.编程下载FPGA:(1)生成FPGA下载文件:右击“Implement Design->Generate Programming File"选项,选择"Properties"选项,选中“Sartup Options"选项,把“FPGA Sart-Up Clock"选项的值修改为“JTAG Clock" (一般编程下载都是采用JTAG方式)。
在这里插入图片描述
(2)生成配置文件.BIT文件:双击“Generate Programming File",生成.bit文件(为二进制流文件,包含数据和配置信息,用于JTAG模式下载FPGA)。双击“Generate target PROM/ACE File",打开IMPACT集成配置工具
在这里插入图片描述
11.连接FPGA的电源线和JTAG线,给FPGA上电,运行IMPACT找到bit文件,连接成功的页面显示如下,最后右击运行程序。

在这里插入图片描述
在这里插入图片描述
12.观察实验现象以及相应功能是否与设计功能相吻合。

六、实验结论:
我们通过基于ISE的FPGA设计与实现各模块的操作,了解到了设计与实现的主要步骤:设计输入,设计综合,设计实现,FPGA编程下载,同时我们在不同的设计阶段可以采用不同的设计验证方式:RTL仿真,门级仿真,时序仿真和在线调试等。

七、总结及心得体会:
(1)实验过程中的设计比较简单,在掌握ISE的编译操作时要一步一步的编译成功才能进行下一步,这里是比较花时间的,但做完几遍之后发现操作不难,多调试几次就能基本掌握ISE的编译过程。
(2)管脚的分配时我们要参照FPGA的用户手册上的管脚编号去设定,并且要分配合理。我们需要关注更多的是独立按键的分配,在实现更多的功能时,控制按键的需求是比较大的,因此最大限度的分配管脚也是很重要的,在测试阶段如果独立按键不够用,我们可以用上矩阵键盘。
在这里插入图片描述
八、对本实验过程及方法、手段的改进建议:
因为ISE的功能和ACTIVE-VHDL的功能差异,(ACTIVE-VHDL只是编译环境而ISE功能更为强大)我们可以直接在ISE上添加模块代码,然后直接编译仿真波形。我们以综合设计门代码为例:

1.在ISE上直接创建新的VHDL工程。
在这里插入图片描述
2.设定模型端口以及实体名称,构造体名称。
在这里插入图片描述
3.添加代码,编译Synthesze-XST。
在这里插入图片描述

4.编译正确后选定vhdl文件为其添加新的test bench激励仿真文件,并进行仿真输出波形。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.观察波形验证功能,成功后直接在ISE上进行设计实现等步骤,此处不再一一列举。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

由图可知,当a=0,b=0时,Z(0)是与门输出,为0,Z(1)是与非门电路,为1,Z(2)是或门电路,为0,Z(3)是或非门电路,输出为1,Z(4)异或门电路,为0,Z(5)是异或非门电路,为1,故波形输出由高到低为101010

**结论:**通过上述的模型设计,我们可以把之前设计的数据选择器,加法器,分频器等用同样的方式在ISE上编写仿真:(用test bench在ISE上加激励)也意味着整体的代码编写设计,仿真,综合,生成bit文件都可以在ISE上直接完成,可以提高效率,不过也要看对软件的掌握程度,ACTIVE-VHDL编译环境会舒适,图形化仿真加激励的方式也很便利,所以用ACTIVE-VHDL和ISE协同设计还是直接用ISE设计对不同的人和需求也不一样,但是对于我而言,通过这次实验又多掌握了一种用ISE内的仿真工具来仿真的方法,加深对硬件设计的理解。

猜你喜欢

转载自blog.csdn.net/qq_40531974/article/details/85788985