ZCU106--PL+PS点灯

1.PL侧的闪灯

本文参考ZCU106开发之PL侧闪灯

(1)首先打开vivado建立一个project:PL_LED

(2)在project中创建一个设计文件:PL_LED.v

具体代码如下,我使用的是vivado的2019.1版本:

//1.PL端led闪灯实验
//zcu06
//2021年3月15日
module PL_LED(
        input clk_125_p_i,
        input clk_125_n_i,
        output reg led_0

    );


    parameter HALF_LED_PERIOD =  32'd25_000_000;
    reg[31:0] div_counter;   //分频计数器

    wire clk_50M;
    wire rst;
    wire locked;

    clk_wiz_0 clk_wiz_0
    (
        .clk_out1(clk_50M),
        .reset(1'b0),
        .locked(locked),
        .clk_in1_p(clk_125_p_i),
        .clk_in1_n(clk_125_n_i)
    );

    assign rst = !locked;
    always @(posedge clk_50M) begin
        if(rst)
            begin
                led_0<=1'b0;
                div_counter<=32'd0;
            end
        else
            begin
                if(div_counter==HALF_LED_PERIOD)
                    begin
                    led_0<=!led_0;
                    div_counter<=32'd0;
                    end
                else
                    begin
                        led_0<=led_0;
                        div_counter<=div_counter+32'd1;
                    end
            end
    end 
endmodule

(3)增加约束文件PL_LED.xdc

这里用H9和G9连接调用的ip核,将led接到AL11上。
在这里插入图片描述

set_property PACKAGE_PIN H9 [get_ports clk_125_p_i]
set_property IOSTANDARD LVDS [get_ports clk_125_p_i]
set_property PACKAGE_PIN G9 [get_ports clk_125_n_i]
set_property IOSTANDARD LVDS [get_ports clk_125_n_i]
set_property PACKAGE_PIN AL11 [get_ports led_0]
set_property IOSTANDARD LVCMOS12 [get_ports led_0]

(4)连接jtag下载线,并将下载模式设置为jtag模式

将板子上sw6的四个开关全部按到on端(0000)jtag,在vivado里面打开设备,并将生成的bit文件导入,pl侧最右边的一个led灯闪烁亮了。

2.PS侧MIO闪灯

本文参考ZCU106开发之PS侧MIO闪灯
要使用PS侧点亮MIO闪灯,需要使用zynq的SDK模块以及MIO模块,这里可以参考正点原子SDK开发部分

(1)首先打开vivado建立一个project:PS_MIO_LED

(2)在IP INTEGRATOR中点击Create Block Design创建一个IP

在这里插入图片描述

(3)在Diagram中点击加号,搜索zynq,点击所对应的Zynq UltraScale+ MPSoc

在这里插入图片描述

(4)双击IP Zynq UltraScale+ MPSoc并进行有关配置部分。首先是对Bank电压的配置,分别改为LVCMOS18(Bank0) LVCMOS18(Bank1) LVCMOS18(Bank2) LVCMOS33(Bank3) 。SD中打开SD1(本次未用到),I/OPeripherals中打开PMU(本次未用到),UART0和UART1打开(本次未用到),GPIO打开GPIO0 MIO(一定要打开),SWDT中打开SWDT0和SWTD1(本次未用到),TTC全部打开(本次未用到),GEM3打开(本次未用到),USB0打开(本次未用到)。PSS_REF_CLK保持33.330MHZ,并关闭一些本实验用不到的东西。

在这里插入图片描述
(如果我们这里不对Bank进行配置,后面会在生成比特流文件时候报错,类似如下:
[Labtools 27-3421] xczu15_0 PL Power Status OFF, cannot connect PL TAP. Check POR_B signal.
我在实验中还发现如果同时连接jtag和uart的USB线也会报出这样的错误
遇到这种出现红灯直接左上角两个复位按键按一遍,不行直接关了重新开

配置完成如下图所示可以点击ValidateDesign来进行效验
在这里插入图片描述

(5)在source栏的模块上右键Generate Output Products,再次右键点击CreateHDL Wrapper,点击GenerateBitstream生成比特流文件。

(6)SDK配置。在File下点击Export->Export Hardware,之后再点击File下面的Launch SDK文件。

(7)在SDK软件打开后,点击File->new->project,我们可以创建一个名为LED的项目。然后在LED的文件夹中打开src,在src中新建一个led.c文件。

#include "xgpiops.h"
#include "sleep.h"
int main()
{
static XGpioPs psGpioInstancePtr;
XGpioPs_Config* GpioConfigPtr;
int iPinNumber= 23; //MIO23
u32 uPinDirection = 0x1; //1表示输出, 0表示输入
int xStatus;
//--MIO的初始化
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PSU_GPIO_0_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;
xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr,
GpioConfigPtr->BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED \n\r");
//--MIO的输入输出操作
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1);//配置MIO的第7位输出
while(1)
{
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 1);//点亮MIO的第7位输出1
usleep(500000); //延时
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 0);//熄灭MIO的第7位输出0
usleep(500000); //延时
}
return 0;
}

(其实这段代码我目前还没有看懂,但是它的指令是让MIO23闪烁)

(8)上板,连接zcu106的jtag端口和电脑,sw6调至0000,打开电源并连接设备,烧录进去bit文件,之后在SDK软件中打开调试,Debug as Launch on Hardware,然后点击下图中的播放键运行程序。

在这里插入图片描述

(9)观察右上角的MIO23,可以发现它在闪烁。

PS侧MIO闪灯

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jun_luo_yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值