本文主要是介绍ZynqMP Vivado2021.1 PL 点亮LED,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:
文章目标:用PL的IO点亮一个LED灯。
硬件环境:Xilinx ZynqMP XCZU4EV-SFVC784-1-I
硬件引脚:LED - AE15, Key- AE14, 200MHz晶振 - AE5
软件环境:Ubuntu20.04LTS + Vivado2021.1 + Vitis2021.1
新建Vivado工程:
1、打开Vivado2021.1,创建一个工程,取消勾选创建子目录(根据实际情况而定)。默认Next。
2、输入选择Xilinx CPU 主控芯片,其余默认Next,最后Finish。
小技巧:记忆很长的芯片名字,最好的办法就是联想记忆法。
如:xczu4ev-sfvc784-1-i;联想:小丑族4恶女敢私发VC784敢医敢爱。
创建 Verilog HDL 文件点亮 LED
1、点击添加源码。
2、添加或者创建设计源码。Next。
3、点击创建文件,输入文件名,如led。最后一直点击OK。
添加led.v代码
定义了一个 32 位的寄存器 timer, 用于循环计数 0~199999999(1 秒钟),计数到 199999999(1 秒)的时候, 寄存器 timer 变为 0,并翻转四个 LED。这样原来 LED 是灭的话,就会点亮,如果原来 LED 为亮的话,就会熄灭。 由于输入时钟为 200MHz 的差分时钟,因此需要添加 IBUFDS 原语连接差分信号.
`timescale 1ns / 1ps
module led(//Differential system clockinput sys_clk_p,input sys_clk_n,input rst_n,output reg led);
reg[31:0] timer_cnt;
wire sys_clk ;
IBUFDS IBUFDS_inst (.O(sys_clk), // Buffer output.I(sys_clk_p), // Diff_p buffer input (connect directly to top-level port).IB(sys_clk_n) // Diff_n buffer input (connect directly to top-level port));
always@(posedge sys_clk)
beginif (!rst_n)beginled <= 1'b0 ;timer_cnt <= 32'd0 ;endelse if(timer_cnt >= 32'd199_999_999) //1 second counter,200M-1=199999999beginled <= ~led;timer_cnt <= 32'd0;endelsebeginled <= led;timer_cnt <= timer_cnt + 32'd1;end
end
endmodule
添加管脚约束
1、添加或者创建约束,输入文件名。
2、在约束文件led.xdc下添加如下代码
set_property PACKAGE_PIN AE5 [get_ports sys_clk_p]
set_property PACKAGE_PIN AE14 [get_ports rst_n]
set_property PACKAGE_PIN AE15 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property IOSTANDARD DIFF_SSTL12 [get_ports sys_clk_p]create_clock -period 5.000 -name sys_clk_p -waveform {0.000 2.500} [get_ports sys_clk_p]
生成bitstream文件
1、点击右侧状态栏的“生成bitstream”,编译生成bitstream文件。
2、这里和 CPU 核心数有关,一般数字越大,编译越快。
3、右上角有个“圈圈”在转,表示正在编译,等待圈圈转完即编译生成bitstream完成。
烧录下载
1、板子上电,接上JTAG。点击右侧状态栏的“打开硬件管理”,连接主控ZynqMP芯片。
2、烧录bit文件到板子上运行。
选择烧录的bit文件,一般这项不需要更改。
等待烧录完成。
效果
全篇完。
本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成长笔记。
若有与 大神大大 见解有歧义,我绝对坚信 大神大大 见解是对的,我的是错的。
感谢~!
这篇关于ZynqMP Vivado2021.1 PL 点亮LED的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!