系列文章前言
关于FPGA的学习,之前的很长一段时间都是用的Altera(已被Intel收购)的芯片在做事情,平台是Quartus;最近接触到了ZYNQ,是Xilinx(已被AMD收购)推出的一款SOC,把ARM cortex-A9处理器与FPGA组合起来的一种片上系统,性能强大啊!因此学习记录一下吧!就当做个学习笔记,平台为Vivado,还需要熟悉一下这款EDA工具啊!加油友友们!!!
目录
前言
第一步永远是点灯啊,老点灯大师啦,哈哈哈,其实点灯也有很多学问啊,可以用简单的计数器,也可以用FSM实现,点灯可以玩出很多花样,本次试验是为了熟悉Vivado这款EDA工具,熟悉一下页面以及流程。
一、Vivado软件的使用?
其实FPGA的开发流程都是一样的,因为之前有点点小小小小的基础,此次也就是回顾一下下,然后最重要的是熟悉Vivado啦
二、具体步骤
1.创建工程
第一步肯定是建一个工程啦,这个工程是干嘛的? 我直接,命名led了,和quartus一样,创建要命名,要选地址,要选器件类型等等;
2.创建v文件
工程创建完成后就是创建一个rtl文件,也就是.v文档,用于写你的FPGA逻辑啊,这一块就是很重要了,这属于PL端的事情,也就是你想在FPGA端想要实现的功能啊!点灯嘛~
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2023/09/27 09:26:54
// Design Name:
// Module Name: led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module led(
input clk,
input rst_n,
output reg [3:0] led
);
reg [24:0] count;
always@(posedge clk or negedge rst_n)begin
if(!rst_n) begin
count <= 25'd0;
end
else if(count == 25'd24_999_999) begin
count <= 25'd0;
end
else begin
count <= count + 1'b1;
end
end
always@(posedge clk or negedge rst_n)begin
if(!rst_n) begin
led <= 4'd0;
end
else if(count == 25'd24_999_999) begin
led <= ~led;
end
else begin
led <= led;
end
end
endmodule
插入代码选择语言的时候为啥没有verilog或者VHDL啊,差评,只能插入块啦
3.描述完了电路,得转换成真实的电路啊
所以第三步要分析综合了,看看你用硬件描述语言VHDL描述的电路,分析与综合出来的电路是不是一坨,综合完你就能看到了。
4.接着就是添加约束啦
约束有引脚约束和时序约束,很容易理解,就不多说了,TCL脚本语言玩得6的,直接写就行,玩不6,根据界面操作也可,操作完就能看到一个.xdc文档,就是约束文档。
5.也约束完了,还得综合一下
高速EDA工具,你必须在我的约束下进行布局布线哈,要听话喔!所以EDA在布局布线的时候,就会考虑你的约束,尽量满足你的需求,真棒啊!
6.设计的功能对不对啊,要仿真的
仿真也是直接创建一个.v文件,把工程例化进去,看看波形,是否是自己所要。
7.没问题就生成bit文件吧,这是下载到芯片里的文档啊,
8.然后下载板级调试就可以啦
总结
点灯并不难,重要的是把这个EDA工搞明白,这才是目的,接下来还有很多要学习的地方,一步一个脚印,慢慢来。