从2023年4月份开始就做FPGA硬件,对于程序七窍通了六窍,一窍不通。通过昨天将Vivado2018.3安装完成之后,根据CSDN中方法,写了一遍程序,发现是错误的以后,下班以后问了一下网友,得到帮助,今天已经搞定。下面我将如何使用的方法进行记录。
一、建立Vivado工程
在安装完Vivado2018.3之后,在桌面上找到Vivado图标,单击Create project,就会弹出New Project 然后单击NEXT,进入到Project Name(1.将工程文件命名,2.设置工程文件保存路径),设置完成之后,单击NEXT。进入到Project Type,选择RTL project,其他保持默认。单击NEXT,进入到add Sources(这里我们暂时不用管)继续单击NEXT,进入add Constraints(暂时不用管),继续单击NEXT,进入到Default Part,在这里我们选择相应的FPGA的型号,我用的是XC7A35TFFG484-2,-2表示的速率等级(查速率等级可以去看FPGA选型手册)。使用Search功能可以搜索型号完成后,单击NEXT,进入到New Project summary,单击finish。工程建立完成。
二、添加功能代码
在PROJECT MANAGER中单击Add source,进入到Add Sources中选择Add or Create design Sources,然后单击NEXT,进入到Create design Sources界面中,选择Create file(如果使用NOTE++编写好了的文件可以选择add files),输入文件名称(RUN_LED)然后单击OK,在reate design Sources界面中单击finish,在define modu中单击OK。弹出的界面中选择OK。在Sources中双击文件名进入到工作区。功能代码如下:
module flowing_light(
input clk,
input rst,
output[15:0] led
);
reg[23:0] cnt_reg;
reg[15:0] light_reg;
always@(posedge clk)
begin
if(!rst)
cnt_reg <=0;
else
cnt_reg <=cnt_reg+1;
end
always@(posedge clk)
begin
if(!rst)
light_reg <=16'h0001;
else if(cnt_reg == 24'hffffff)
begin
if(light_reg == 16'h8000)
light_reg <=16'h0001;
else
light_reg <=light_reg<<1;
end
end
assign led = light_reg;
endmodule
备注:记得使用ctrl+s保存代码
三、添加仿真代码
在PROJECT MANAGER中单击Add source,进入到Add Sources中选择Add or Create simulation Sources,然后单击NEXT,进入到Create design Sources界面中,选择Create file(如果使用NOTE++编写好了的文件可以选择add files),输入文件名称(test_LED)然后单击OK,在reate design Sources界面中单击finish,在define modu中单击OK。弹出的界面中选择OK。在simulation Sources下sim_1中双击文件名进入到工作区。功能代码如下:
`timescale 1ns / 1ps//建议保留
module test_tb();
reg clk;
reg rst;
wire[3:0] led;
flowing_light u0(
.clk(clk),
.rst(rst),
.led(led));
parameter PERIOD =10;
always begin
clk =1'b0;
#(PERIOD/2)clk=1'b1;
#(PERIOD/2);
end
initial begin
clk =1'b0;
rst =1'b0;
#100;
rst =1'b1;
#100;
rst =1'b0;
#100;
rst =1'b1;
end
endmodule
备注:记得ctrl+S保存代码
四、生成功能仿真波形
在simulation下单击Run simulation 会出现Run Behavioral simulation(单击),在对话框中选择YES,等待几秒钟,就可以得到仿真波形了。
五、总结
1.设计的工程中难免会有语法错误,可以在Log中找到具体的问题。
2.建立功能代码文件和仿真文件的步骤是相同的,区别在选择一个是功能,另一个选择仿真。
3.由于没有开发板,只做到这里的记录。
云中子笔
记于:乙巳年戊寅月丁未日戊申时