Fpga代码的开发分为以下流程:
上述过程中包含了编译的三个流程,分别是综合编译run synthesis---run implementation实现编译---生成bit位文件
(1)打开vivado创建新工程,路径不要有中文和特殊符号。
(2)选择RTL project点击下一步
(3)可以在此处添加源文件,此处选择不添加
(4)选择不在此处添加约束,直接next.
(5)选择所用芯片型号
(6)选择finish完成工程创建
(7)Project summary是工程信息的简要,单击“+”,选择设计文件,next。
(8) 选择新建并命名单击OK,选择finish.
(9) 输入RTL,保存.v文件
module Flowled(input clk_i, //输入系统时钟 50MHzoutput reg [2:0]led);
reg [27:0]clk_cnt=0;
reg [1:0]led_cnt=0;
wire switch;
assign switch = clk_cnt==27'd50_000_000;
always @(posedge clk_i) beginif(clk_cnt==27'd50_000_000)begin //1sclk_cnt <= 0;led_cnt <= led_cnt +1;
end else
clk_cnt <= clk_cnt + 1;
end
always @(*) begin
case (led_cnt)0:led = 3'b000;1:led = 3'b001;2:led = 3'b010;3:led = 3'b100; default: ;
endcase
end
endmodule
(10)依次点击综合和布线
(11)布线成功后,打开“Open Implemented Design”,打开window中的I/O ports,此处添加所有的约束,并另存为xdc文件,点击generate bitstream
(12)连接下载器与电源,打开电源,单击open hardware manager ,随后点击open target—>Auto connect
(13)点击program device下载程序,在板卡上看到对应的LED在闪烁
代码固化的原理是将fpga的程序烧录到flash中,flash兼具了rom和ram的有点,即速度快并且掉电不失数据。Vivado的固化文件有两种,一种是mcs文件,一种是bin文件。Bin文件是选择tools-->setting-->bitsream-->勾选 -file_bin,然后正常的生成比特流文件,会在bit文件相同的位置生成bin文件,然后与bit文件的烧写方式一样,只不过选择bin文件即可实现代码的固化。对于mcs有两种方式生成,一种是使用命令窗口tcl输入相应的指令生成mcs,另外一种是tools中选则相应按钮配置生成mcs文件,其中具体的操作过程参看正点原子开发指南。过程较为繁琐,推荐使用bin文件进行固化。现有板卡上的Flash芯片型号MT25QL128ABA1ESE-0SIT,存储容量128 4bitSPIx4
①添加原语(约束文件中)
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]
②生成MCS和prm文件
从图中我们可以看到一些配置选项,在此仅对我们需要用到的一些配置做简要介绍:
③烧写操作
右击选择program flash器件,按照如下图操作(图中mcs文件不对应)