学习ZYNQ——使用IP核

前言

加载前面使用HLS生成的IP核,实现LED灯的闪烁,熟悉整套流程的步骤:
前一篇文章:如何使用HLS生成IP核


一、新建Vivado工程

首先打开Vivado 2018.3软件
在这里插入图片描述
点击新建工程 》给工程取名 HLS_Led 》保存路径为上一篇HLS的目录下:
在这里插入图片描述

二、使用IP核

1.加载IP

我们将由 HLS 生成的 IP 添加到我们的 IP 仓库中。点击 settings
在这里插入图片描述
然后点击 IP》Pepository ,选中仓库,再点击+号进行添加由 HLS 生成的 IP
在这里插入图片描述
选择solution1文件路径就行,等待软件自动识别IP核,然后先点击Apply 再点击OK
在这里插入图片描述

2.查看IP核

在这里插入图片描述
在这里插入图片描述

3.应用IP核

在这里插入图片描述

三、添加源文件

1.led.v

在这里插入图片描述
在这里插入图片描述

添加的代码如下:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/06/14 16:34:17
// Design Name: 
// Module Name: led
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module led(
    input wire clk,
    input wire rst_n,
    output wire led_o
);
    
wire rst;//同步复位
wire ap_ready;//当前可以接收下一次数据
reg ap_start;//IP 开始工作
reg led_i_vld;//输入数据有效
wire led_o_vld;
reg led_i;//输入的 led 信号
wire led_o_r;
wire ap_done;
wire ap_idle;
reg [1:0] delay_cnt;
assign rst = ~rst_n;
assign led_o = led_o_r;

//----------------delay_cnt------------------
always @(posedge clk) begin
    if (rst==1'b1) begin
        delay_cnt <= 'd0;
    end
    else if (delay_cnt[1]==1'b0)begin
        delay_cnt<=delay_cnt+1'b1;
    end
end

//----------------ap_start------------------
always @(posedge clk) begin
    if (rst==1'b1) begin
        ap_start <= 1'b0;
    end
    else if(delay_cnt[1]==1'b1)begin
        ap_start<=1'b1;
    end
end

//----------------led_i_vld------------------
always @(posedge clk) begin
    if (rst==1'b1) begin
        led_i_vld <= 1'b0;
    end
    else if (delay_cnt[1]==1'b1)begin
        led_i_vld<=1'b1;
    end
end

//----------------ap_i------------------
always @(posedge clk) begin
    if (rst==1'b1) begin    
        led_i <= 1'b0;
    end
    else if(led_o_vld==1'b1)begin
        led_i<=led_o_r;
    end
end

//这里flash_led_1 和自己应用IP核取得名字一致
flash_led_1 inst_flash_led (
    .led_o_V_ap_vld(led_o_vld), // output wire led_o_V_ap_vld
    .led_i_V_ap_vld(led_i_vld), // input wire led_i_V_ap_vld
    .ap_clk(clk), // input wire ap_clk
    .ap_rst(rst), // input wire ap_rst
    .ap_start(ap_start), // input wire ap_start
    .ap_done(ap_done), // output wire ap_done
    .ap_idle(ap_idle), // output wire ap_idle
    .ap_ready(ap_ready), // output wire ap_ready
    .led_o_V(led_o_r), // output wire [0 : 0] led_o_V
    .led_i_V(led_i) // input wire [0 : 0] led_i_V
);

endmodule

2.约束文件pin_led.xdc

添加如下代码

##############LED define##################
set_property PACKAGE_PIN P15 [get_ports {led_o}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_o}]
##############Reset define##################
set_property PACKAGE_PIN P16 [get_ports {rst_n}]
set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]
##############50M CLK define##################
create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]
set_property PACKAGE_PIN N18 [get_ports {clk}]
set_property IOSTANDARD LVCMOS33 [get_ports {clk}]

四、综合、运行程序

1.点击Run Synthesis,没有报错之后,生成Bitstream文件
2.使用数据线连接板子和电脑
3.Open Hardware Manager 连接板子,下载程序到板子里
在这里插入图片描述
运行结果如——板子对应的LED灯出现1s的闪烁:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值