ZYNQ仅有PL端逻辑的程序固化

ZYNQ仅有PL端逻辑的程序固化

  • ZYNQ中PL端led灯的逻辑固化
    • 须知
  • 生成vivado端的bit文件
    • 1.创建块设计(Create Block Design)
    • 2.例化
  • 转入SDK
    • 1. Launch SDK
    • 2.写入flash
  • 参考

ZYNQ中PL端led灯的逻辑固化

之前看程序固化,教程大多是PS端中有要实现的代码的固化,我没怎么看明白,如果我程序只有 PL 端的写的Verilog逻辑,没写PS端的相关程序该怎么固化程序,昨天试了半天,实现了一个简单的led的逻辑固化。

须知

  1. 不带ARM的FPGA固化是没问题的,但是对于 ZYNQ 来说,必须要有 PS 端的配合才能固化程序
  2. 安装 Vivado 软件的时候一定要安装 SDK,在启动 SDK 软件前就有 sdk 目录,可能会导致无法启动 SDK,删除这个目录再试。在这里插入图片描述
  3. 准备好PL端LED的程序,这里用的开发板的实验教程:
    在这里插入图片描述
    *新建工程以及创建 Verilog HDL 文件
    module led1(
    input sys_clk,
    input rst_n,
    output reg [3:0] led
    );
    reg[31:0] timer_cnt;
    always@(posedge sys_clk or negedge rst_n)
    begin
    if (!rst_n)
    begin
    led <= 4’d0 ;
    timer_cnt <= 32’d0 ;
    end
    else if(timer_cnt >= 32’d49_999_999)
    begin
    led <= ~led;
    timer_cnt <= 32’d0;
    end
    else
    begin
    led <= led;
    timer_cnt <= timer_cnt + 32’d1;
    end
    end
    endmodule

    *添加管脚约束
    这里管教的约束必须与你的开发板原理图相对应这里管教的约束必须与你的开发板原理图相对应
    保存IO Ports之后会生成xdc文件

*添加时序约束在这里插入图片描述
完成时序约束后的xdc文件会更新在这里插入图片描述

生成vivado端的bit文件

注意这里不能直接用led1.v来直接生成bit文件,还需要做其他的准备!

1.创建块设计(Create Block Design)

在这里插入图片描述
在这里插入图片描述
点加号输入zynq搜索ip,然后双击或回车确认
在这里插入图片描述
双击该模块,开始设置在这里插入图片描述
点击 Peripheral I/O Pins ,会出现以下的 IO 配置界面。
点亮下面Quad SPI Flash,SD0,还有UART1
请添加图片描述
展开SD0不要遗漏点亮card detect中的47
在这里插入图片描述
MIO Configuration选项中
修改 Quad SPI Flash 和SD0 speed为fast,
以及bank1 IO Voltage为LVCOMS1.8V
在这里插入图片描述
在这里插入图片描述
确认CLOCK和DDR在这里插入图片描述

memory part需要修改为你的开发板采用或推荐的型号
在这里插入图片描述
完成后 Run Block Automation
在这里插入图片描述

这两个脚可能需要连线,有的教程没有这一步,开发板入门教程连起来了,但是如果不连起来,可能会报错,可能与版本有关
在这里插入图片描述
在 Source 窗口中选中 ledBD.bd,右键并先后选择Generate Output Projects 和 Create HDL Wrapper 选项操作。生成后如下图所示:
在这里插入图片描述

2.例化

就是把led1.v写进ledDB_wrapper.v
双击ledDB_wrapper.v,修改
修改后的代码(粗体处是新加的led.v部分,其他地方默认不用改):
module ledBD_wrapper
(rst_n,
sys_clk,

DDR_addr,
DDR_ba,
DDR_cas_n,
DDR_ck_n,
DDR_ck_p,
DDR_cke,
DDR_cs_n,
DDR_dm,
DDR_dq,
DDR_dqs_n,
DDR_dqs_p,
DDR_odt,
DDR_ras_n,
DDR_reset_n,
DDR_we_n,
FIXED_IO_ddr_vrn,
FIXED_IO_ddr_vrp,
FIXED_IO_mio,
FIXED_IO_ps_clk,
FIXED_IO_ps_porb,
FIXED_IO_ps_srstb,
led);
input rst_n;
input sys_clk;

inout [14:0]DDR_addr;
inout [2:0]DDR_ba;
inout DDR_cas_n;
inout DDR_ck_n;
inout DDR_ck_p;
inout DDR_cke;
inout DDR_cs_n;
inout [3:0]DDR_dm;
inout [31:0]DDR_dq;
inout [3:0]DDR_dqs_n;
inout [3:0]DDR_dqs_p;
inout DDR_odt;
inout DDR_ras_n;
inout DDR_reset_n;
inout DDR_we_n;
inout FIXED_IO_ddr_vrn;
inout FIXED_IO_ddr_vrp;
inout [53:0]FIXED_IO_mio;
inout FIXED_IO_ps_clk;
inout FIXED_IO_ps_porb;
inout FIXED_IO_ps_srstb;
output [3:0]led;

wire [14:0]DDR_addr;
wire [2:0]DDR_ba;
wire DDR_cas_n;
wire DDR_ck_n;
wire DDR_ck_p;
wire DDR_cke;
wire DDR_cs_n;
wire [3:0]DDR_dm;
wire [31:0]DDR_dq;
wire [3:0]DDR_dqs_n;
wire [3:0]DDR_dqs_p;
wire DDR_odt;
wire DDR_ras_n;
wire DDR_reset_n;
wire DDR_we_n;
wire FIXED_IO_ddr_vrn;
wire FIXED_IO_ddr_vrp;
wire [53:0]FIXED_IO_mio;
wire FIXED_IO_ps_clk;
wire FIXED_IO_ps_porb;
wire FIXED_IO_ps_srstb;
wire rst_n,sys_clk;
wire [3:0] led;
led1 led1
(
.sys_clk(sys_clk),
.rst_n(rst_n),
.led(led)
);

ledBD ledBD_i
(.DDR_addr(DDR_addr),
.DDR_ba(DDR_ba),
.DDR_cas_n(DDR_cas_n),
.DDR_ck_n(DDR_ck_n),
.DDR_ck_p(DDR_ck_p),
.DDR_cke(DDR_cke),
.DDR_cs_n(DDR_cs_n),
.DDR_dm(DDR_dm),
.DDR_dq(DDR_dq),
.DDR_dqs_n(DDR_dqs_n),
.DDR_dqs_p(DDR_dqs_p),
.DDR_odt(DDR_odt),
.DDR_ras_n(DDR_ras_n),
.DDR_reset_n(DDR_reset_n),
.DDR_we_n(DDR_we_n),
.FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn),
.FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp),
.FIXED_IO_mio(FIXED_IO_mio),
.FIXED_IO_ps_clk(FIXED_IO_ps_clk),
.FIXED_IO_ps_porb(FIXED_IO_ps_porb),
.FIXED_IO_ps_srstb(FIXED_IO_ps_srstb));
endmodule

重新编译一下工程,生成 bit 文件。

转入SDK

1. Launch SDK

1.再导出硬件,选择菜单 File->Export->Export Hardware…导出,包含bitstram 文件。

2.硬件导出后,选择菜单 File->Launch SDK,启动 SDK 开发环境

3.点击菜单 File -> New -> Application Project,新建一个名为 fsbl 的 APP, 会出现1 个 hardware platform:ledBD_wrapper_hw_platform_0,大概选最新最上面那个就好(图上的platform可能不一致)。
在这里插入图片描述
选择zynq fsbl
在这里插入图片描述

右键fsbl,然后选择creat boot image

在这里插入图片描述
下方方框出现两个文件即正常,bootloader在上,bit文件在下,可能有延迟 稍等或请重试
在这里插入图片描述
点击creat image

2.写入flash

点击xlinx-program flash
在这里插入图片描述
image file选择上一步生成的bin文件!
fsbl file 使用开发板赠送资料中的厂商定制的fsbl
关于定制版本 fsbl 的来源,可以参考 xilinx 官网链接:
https://www.xilinx.com/support/answers/70148.html
(如果链接失效,可以在 xilinx 官网搜索 AR# 70148)
如果使用 Vivado 2019.1 及以后版本就不需要这个定制的 fsbl,用自己生成的 fsbl 即可。
在这里插入图片描述

等待烧写完成后,设置启动模式为 QSPI(不同厂商可能不同,我这里的是调整插销位置来实现的),再次启动,观测到灯正常运行。
在这里插入图片描述

参考

1.https://blog.csdn.net/taowei1314520/article/details/78595482
2.https://www.cnblogs.com/ylsm-kb/p/9456534.html
3.https://blog.csdn.net/fengyuwuzu0519/article/details/80411894
4.AX7015教程(开发板厂商赠的)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部