1. IAR软件安装
C编译器-IAR Embedded Workbench
嵌入式软件开发工具
安装教程:
https://blog.csdn.net/weixin_42571952/article/details/102685537
安装包:
链接:https://pan.baidu.com/s/1KnBNhWcr9obpst3kCZSArg
提取码:7wna
2.ISE14.7安装
ISE的全称为Integrated Software Environment,即“集成软件环境”,是Xilinx公司的硬件设计工具。
安装教程:
https://blog.csdn.net/weixin_42693097/article/details/91347371
安装包:
链接:https://pan.baidu.com/s/1xsfoDAPBk2XJtPMAAP8yiA
提取码:ro45
使用说明:
1.对于XILINX USB下载器驱动的安装:
如果下载器不能正常使用,请尝试更新驱动程序,驱动程序路径为:ISE_DS\COMMON\BIN\NT64
当下载器的指示灯为黄色时,代表驱动正确;红色则是驱动不正确。
2.完整演示:
如下图,首先创建工程
添加verilog文件
使用一个LED灯每秒闪烁一次,代码如下:
module led_top(
input clk_12m,
output led
);
//12M 24'd12_000_000;
//1K 分频器
reg [23:0] cnt = 24'd0;
parameter NUM_1MS = 24'd12_000;
always @ (posedge clk_12m)
begin
if(cnt == NUM_1MS - 1'b1)
cnt <= 24'd0;
else
cnt <= cnt + 1'b1;
end
reg clk_1k = 1'b0;
always @ (posedge clk_12m)
begin
if(cnt == NUM_1MS/2 - 1'b1)
clk_1k <= 1'b1;
else if(cnt == NUM_1MS - 1'b1)
clk_1k <= 1'b0;
else
clk_1k <= clk_1k;
end
//1ms数一个数,数到1000ms切换一下灯的状态
reg led_reg = 1'b0;
reg [9:0] led_cnt = 10'd0;
parameter NUM_LED = 10'd1000;//1000ms
always @ (posedge clk_1k)
begin
if(led_cnt == NUM_LED - 1'b1)
led_cnt <= 10'd0;
else
led_cnt <= led_cnt + 1'b1;
end
always @ (posedge clk_1k)
begin
if(led_cnt == NUM_LED - 1'b1)
led_reg <= ~led_reg;
else
led_reg <= led_reg;
end
assign led = led_reg;
endmodule
运行综合,也可以点击View RTL Schematic
编译完成后Consolo窗口出现:
Process “Synthesize - XST” completed successfully 代表代码没有语法错误,但有可能存在逻辑错误
可以使用modelsim进行波形仿真
下面进行IO引脚的指定
注意IO电平标准/驱动能力/PULL类型
运行布局&布线
运行生成bit文件,bit文件可以烧写至FPGA(下电丢失),但是不能烧写至PROM(下电不丢失)
进入烧写阶段
双击Initialize Chain ,出现FPGA与PROM,点击NO
这是选择烧写至FPGA还是PROM中
点击取消,然后我们先把bit文件烧写到FPGA中,看看效果。
双击FPGA芯片,选择bit文件,会提示是否选择PROM,选择NO,然后右键FPGA芯片,Program
烧录成功,但是下电就会消失。
下面将bit文件转换成msc文件,这样可以烧写至PROM,掉电不丢失
如图操作,选择要转换的bit文件即可
点击Generate File
转换成功后重新回到烧录界面
双击PROM,选择MSC文件,然后选择烧录到PROM,右键PROM,Program。
重新上电后,运行PROM中的程序。
为了检查逻辑上的错误,我们可以对波形进行仿真,在此使用Modelsim软件进行仿真
首先创建工程
在工程里创建src文件夹,将我们的源文件与仿真使用的tb文件放入src文件夹中,并将他们加入工程。
tb文件为:
`timescale 10ns/1ps
module tb_led_sim;
reg clk = 1'b0;
wire led;
//生成时钟信号
parameter ClockPeriod = 10; //T = 100ns 10M 0.1us
always #(ClockPeriod/2) clk = ~clk;
initial
begin
#0
clk = 1'b0;
repeat(40000000)@(posedge clk); // 4000ms
end
led_top u1(
.clk_12m (clk),
.led (led)
);
endmodule
Comlile / Comlile All 编译通过
Simulate/Start simulate
选择要观察的信号右键add wave
设置时间,运行4s
可以看到999ms的下一个 clk_1k 上升沿来临时,led 从 0 变成了 1
符合led_top.v中的代码逻辑:
//1ms数一个数,数到1000ms切换一下灯的状态
reg led_reg = 1'b0;
reg [9:0] led_cnt = 10'd0;
parameter NUM_LED = 10'd1000;//1000ms
always @ (posedge clk_1k)
begin
if(led_cnt == NUM_LED - 1'b1)
led_cnt <= 10'd0;
else
led_cnt <= led_cnt + 1'b1;
end
always @ (posedge clk_1k)
begin
if(led_cnt == NUM_LED - 1'b1)
led_reg <= ~led_reg;
else
led_reg <= led_reg;
end
assign led = led_reg;
3.Vivado2019.1安装
推出Vivado是为了提高设计者的效率,他能显著增加Xilinx的28nm工艺的可编程逻辑期间的设计、综合于实现效率。vivado主要是面向7系列的高端FPGA进行开发,ISE主要是面向低端的FPGA进行开发。
安装包:
链接:https://pan.baidu.com/s/13A6toxUIMg07NBhr4hTmTg
提取码:fr6y
4.AD17安装
安装包:
链接:https://pan.baidu.com/s/1zxoz43Cv3HnufxPRh3VlkA
提取码:vgne
5.Keil安装
安装包:
链接:https://pan.baidu.com/s/1UIdaNE9S24P4JhLGZfANnw
提取码:8lbe
6.ModeleSim
安装包:
链接:https://pan.baidu.com/s/1fcD1pxtJ4baV0RcewwHURw
提取码:bgmj
安装教程:
https://blog.csdn.net/hucc0706/article/details/79273550