单片机与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流文件
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!