开发环境
- 软件:Vivado 2019.2
- 开发板:米尔科技(MYIR)的MYS-7Z010-C系列
- 配套教程 正点原子【第一期】手把手教你学ZYNQ之FPGA开发篇
新建工程
- 点击Create Project
- 点击NEXT,然后为工程命名(注:路径不能有中文)
- NEXT
- 根据自己开发板的型号进行选择(取决于你使用的核心板的芯片,与底板无关系)
其中,xc7z010为芯片型号,封装为clg400,速度等级为1。
- 点击NEXT,然后Finish,工程就创建完毕。
设计输入
- 点击Add Sources
- 添加设计文件
- Create File,然后命名,一般顶层模块的名字和工程名保持一致
- 点击OK,然后FInish,然后继续点击OK
- 点击Design Sources 里面的代码文件
- 插入代码
module led(
input sys_clk , //系统时钟
input sys_rst_n, //系统复位,低电平有效
output [2:0] led //LED灯
);
//reg define
reg [2:0] temp_led;
reg [25:0] cnt ;
reg [3:0] count;
//*****************************************************
//** main code
//*****************************************************
//计数器在0~5000_000之间进行计数
always @ (posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)//复位
cnt <= 26'd0;
else if(cnt < 26'd5000_0000)
// else if(cnt < 26'd10) //仅用于仿真
cnt <= cnt + 1'b1;
else
cnt <= 26'd0;
end
always@(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n==1'b0)//控制三色灯颜色转换
count <= 4'd0;
else if(cnt==26'd24999999)
count <= count + 1'b1;
else if(count==4'd3)
count <= 4'd0;
end
always@(posedge sys_clk or negedge sys_rst_n) begin //注意三色灯是共阳极接法
if(sys_rst_n==1'b0)
temp_led <= 3'b111;
else case(count)
4'd0: temp_led <= 3'b110;
4'd1: temp_led <= 3'b101;
4'd2: temp_led <= 3'b011;
4'd3: temp_led <= 3'b000;
default : temp_led <= 3'b111;
endcase
end
assign led = temp_led;
endmodule
- 点击Open Elaborated Design,对代码进行分析,并生成RTL原理图
约束输入
- 在右上角切换成I/O Planning,根据工程对管脚进行分配,就是IO约束。
- 下方会出现需要分配的管脚
- 根据开发板原理图进行IO口的分配。
led[0]的IO口为R14
led[1]的IO口为Y16
led[2]的IO口为Y17
sys_clk的IO口为U14
sys_rst的IO口为R19
IO口的电流都设置为LVCMOS33(ZYNQ中的PL端都为3.3V)
- 保存约束文件并起名,便会生产约束文件
生成和下载比特流
- 点击 Generate Bitstream,点击yes
- 点击Project Summary查看进度
- 等待几分钟以后就会弹出一个窗口
- 选择Open Hardware Manager
- 拿出开发板连接电脑
- 点击Open target的auto connect
- 会出现芯片型号
- 点击Program device,下载程序
- 最终效果如图