ISE软件使用
写博客主要是为了记录学习过程,一来是初入门的时候,一小段时间不学就容易忘,日后方便查阅;二来是有些东西刚入门的时候学习,理解不深刻,记录下来日后可以深入理解。如有错误,欢迎留言。之后会继续学习下去。
文章目录
单片机与FPGA比较
工程步骤
1.编写代码 .v
2.编写UCF约束文件
3.仿真 testbench
4.生成bit流文件
5.生成固化文件.msc
一、ISE软件界面介绍
(一). 新建工程文件夹
- doc 文件夹(用来存放一些参考资料或者工程描述文档)
- prj 文件夹(用来存放工程文件和时序约束文件)
- rtl 文件夹(用来存放设计输入文件即 Verilog 源文件)存放 .v 文件,移植时不需要打开工程,只需要将rtl文件夹复制粘贴,然后添加进工程即可。
- sim 文件夹(用来存放仿真文件)在里面建立一个tb文件夹,仿真时需要写一个仿真激励文件testbench,
(二). ISE 工具栏_上半部分
建立完工程后,新建.v文件并添加进工程。如下图
下面开始介绍上半部分工具栏的功能。
如果要修改源文件顺序,如下
编译: 标号为1的是 全编译,即从头开始编译,而有的时候我们只修改了一小部分代码,所以编译的时候不用全编译,就用标号2的 SmartGuide
SmartGuide 这个ISE中的全局优化选项,使能这个选项,编译器在Implementation时会比较前一次编译的Implementation结果,未修改部分则沿用前一次的结果,但是如果时序比较紧张,会根据情况重新实现相应未修改部分来达到时序要求。
设计属性 可以重新对工程属性进行编辑。如下图
(三). ISE 工具栏_下半部分
Create Schematic Symbol:将当前源文件创建成一个原理图模块,可以被其他原理图模块调用。如图View HDL Instantiation Template:查看当前源文件HDL例化模板,生成之后,其他工程可以直接调用这个模块,是很常用的功能。
1. Synthesize
View RTL Schematic:查看 RTL 视图,一般点击的选项,直接生成图片,如下
2. Implement Design
综合完之后,就对工程进行编译等
Map:映射;
Place&Route:布局布线;
3. 创建UCF文件
Create Timing Constraints:创建时序约束文件(UCF 文件),一般用new_Source创建UCF约束文件,然后用这个运行
run完之后的效果如下图
I/O Pin Planning (PlanAhead) - Pre-Synthesis:一般不用这个,而是直接用UCF写代码。运行效果如下图:
二、ISE软件仿真
1.创建tb文件
2.编写代码
***************************************************************
以下为源程序代码
module flow_led(
input sys_clk , //系统时钟
input sys_rst_n, //系统复位,低电平有效
output reg [3:0] led //4个LED灯
);
而由源程序代码编写tb文件;input——>reg代替,output由wire代替
***************************************************************
`timescale 1ns / 1ps //仿真的 时间单位/时间精度
module flow_led_tb;
//input——>reg代替,output由wire代替
// Inputs
reg sys_clk;
reg sys_rst_n;
// Outputs
wire [3:0] led;
//创建激励
// Instantiate the Unit Under Test (UUT)
flow_led uut (
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.led(led)
);
//初始化语句,只执行一次
initial begin
// Initialize Inputs
sys_clk = 0;
sys_rst_n = 0;
//等待100个时间单位,即100个1ns
// Wait 100 ns for global reset to finish
#100;
sys_rst_n = 1;//等待100ns之后,把复位信号拉高,不再复位
// Add stimulus here
end
//接下来给流水灯的时钟
//因为开发板的时钟是50MHz的,所以时钟周期为20ns,此处让时钟信号每10ns翻转一次,那完整的周期就是20ns,实现了模拟时钟周期的功能。
always#10 sys_clk = ~sys_clk;
endmodule
然后运行,可以看到如下图
额,其实这里出现过一个bug,如下图,
整了好一会,最后错误出现在我仿真的时候选错了文件,选成了下面的设计文件,应该选上面的tb文件才对
工具栏使用
1.运行方式
左边箭头为连续运行,右边箭头为步进运行,运行时间为后面的数字所示的时间。
2.移动光标
(黄线)在name先选择,然后没点击一次,黄线就会换一个节点;图示为在sys_clk上的
ISE与notepad++关联
edit——preference——Editors——custom——notepad++安装路径
注意在路径的首尾添加大括号 { }再加1个空格,之后输入 $1
(注意把路径中的右斜杠 \ 改成左斜杠 / ) 之后apply即可
在notepad++中修改代码后必须保存之后再到ISE中编译才有效!!
三、ISE生成bit流文件
点击Generate Programming File即可
下载bit流文件
点击Configure Target Device,在弹出的界面点击Boundary Scan再点击这个绿色的按钮
这个弹窗是为了让我们添加下载文件的,Yes之后添加bit流文件
添加完bit文件后,此弹窗是为了让我们生成固化文件,此处先不生成。点击No
下一个弹窗是为了让我们确认,点击OK。最后,双击program即可
四、ISE下载固化文件
1.生成固化文件 .msc
16Mbit 注意是Mbit,除以8才是 M字节 ,但是选择的时候选16M
输出文件存储在prj的工程名文件夹中。
然后依据弹窗添加bit流文件。MCS文件就是在bit流文件的基础上通过一些算法生成的。
这个选择No。然后点击Generate。
来到这步之后一定要点generate才能真正生成。
2.下载固化文件
重新添加bit流文件,然后这次弹窗选择Yes,添加msc文件,之后选择flash型号,这要依据开发板,此处选择M25P16。之后选择Flash,对其进行program,需要等待一段时间。
当断电重启的时候,需要等一段时间才能正常运行,这是生成bit流文件的时候属性导致的,修改方法如下:
把这个设大一点,比如22,然后重新再来一遍,就可以了。