最近接触zynq板-zcu104,记录一些实验笔记。
LED闪烁
在vivado中新建一个工程,命名为led-test。添加top.v文件。
module top(
input clk_p ,
input clk_n ,
input rstn ,
output wire led
);
wire clock;
clk_wiz_0 inst_wiz(
.clk_out1 (clock),
.reset (rstn),
.locked (),
.clk_in1_p (clk_p),
.clk_in1_n (clk_n)
);
led inst_led(
.clock (clock),
.rstn (rstn),
.led (led)
);
design_1_wrapper inst_ps(
.pl_clk0_0 (),
.pl_resetn0_0 ()
);
endmodule
其中,top模块接入zcu104开发板的clk_300_p/n信号,通过clock wizard转换为单端始终clock,接入到led闪烁模块led.v
module led(
input clock,
input rstn,
output reg led
);
reg [23:0] r_count = 'd0;
always @(posedge clock) begin
if(rstn) begin
r_count <= 'd0;
end else begin
r_count <= r_count + 'd1;
end
end
always @ (posedge clock) begin
if(rstn) begin
led <= 'd0;
end else if(r_count == 24'hffffff) begin
led <= ~led;
end
end
endmodule
其中,led模块通过一个24bit的计数器,经过相等间隔厚,让led灯反转。
为工程添加约束文件。
在这个工程中,将design模块注释掉,仅保留led模块和clock wizard,top模块的reset信号接开发板button。
编译综合实现,生成bit文件后,在vivado中烧录到fpga上,观察可得,led等间隔闪烁。
添加zynq部分
点击create block design
,在bd中添加zynq模块。
保持zynq的默认设置,点击保存。
右键点击bd,选择create HDL wrapper
。并将生成的.v模块,例化到top模块中。
点击generate bitstream
。
生成bit文件后,选择左上角File->Export->Export Hardware
,其中,选择include bitstream
。
最后,点击Finish
,生成***.xsa文件。
vitis生成fsbl
这一步,网络教程都是启动SDK。其实自从vivado2019.02后,SDK部分已经更新为一个新软件vitis。
打开vitis,选择application project
。
在选项中,选择之前生成的***.xsa文件,作为硬件平台。选择zynq fsbl
作为工程模板。
找到xfsbl_debug.h文件,添加一个宏定义。
#define FSBL_DEBUG_INFO
完成后,选择Ctrl+B
进行编译。生成fsbl.elf文件。
生成BOOT.bin
在选项Xilinx->create boot image
。
在下方选项中按顺序添加文件文章来源:https://www.toymoban.com/news/detail-501686.html
- (bootloader)fsbl.elf
- led.bit
点击生成后,即可生成BOOT.bin。
启动
将sd卡制作启动盘,将BOOT.bin拷贝到BOOT分区。
启动zcu104后,发现led可以闪烁。
完成。文章来源地址https://www.toymoban.com/news/detail-501686.html
到了这里,关于zynq板上PS端给PL端复位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!