zoukankan      html  css  js  c++  java
  • AXI-自定义IP-PS设计

    基于AXI4的自定义IP核的设计

    1、实验目标

    利用vivado中内置的AXI总线初始化的IP核设计工具,将自己设计的流水灯的PL代码打包成IP核外设,挂在PS上,通过PS上的按钮控制流水灯的开始和结束。

    2、实验原理

    首先准备一个流水灯的代码,打包到AXI为基础的核上。然后利用PS访问这个部分并且控制开始与结束。

    3、实验操作

    (1)打开IP 核设计界面

    tools》create and package new IP

    第一页:简介部分,大致说明了主题功能,直接next就可以。

    第二页:IP核的类型。默认的第三个是无总线的。第四个是有总线的。这里选择有总线的a new AXI4 peripheral即可next。

    第三页:创建IP的基本信息,可以默认跳过。

    第四页:创建AXI总线的设置。如名字、协议类型(这个在AXI总线的理论学习中接触过)、数据宽度、寄存器个数等设置。一般简单实验把寄存器个数设为最小的4,其他默认即可。

    第五页:创建完后做什么。这里选择第二个编辑IP就可以自动打开IP设计器。

    (2)添加Verilog文件

    查看资源,这时候已经有了一个V顶层文件。这个文件是这个IP的顶层,用户自定义的PL设计也是要挂在这个顶层下的。如果对AXI协议比较熟悉的话,可以自己完成AXI总线的设计然后封装为AXI的IP核,跳过引导。这里先看一下如何利用引导快速将PL设计加入AXI的IP中。

    这里的用法和FPGA的设计完全一致了,就是给了顶层,写好子模块就可以了。

    module stream_led(
        input clk,
        input rst,
        output reg [3:0] led
        );
    reg clk_div;
    reg [25:0] cnt;
    always@(posedge clk)begin
        if(rst)begin
            cnt<=26'd0;
        end
        else if(cnt==26'd10_000_000-1'b1)begin
            cnt<=26'd0;
        end
        else begin
            cnt<=cnt+1'b1;
        end
    end
    always@(posedge clk)begin
        if(rst)begin
            clk_div<=1'b0;
        end
        else if(cnt==26'd10_000_000-1'b1)begin
            clk_div<=~clk_div;
        end
    end
    always@(posedge clk_div)begin
        if(rst)begin
            led<=4'd0;
        end
        else begin
            case(led)
                4'b0000: led<=4'b0001;
                4'b0001: led<=4'b0010;
                4'b0010: led<=4'b0100;
                4'b0100: led<=4'b1000;
                4'b1000: led<=4'b0001;
                default: led<=4'b0000;
            endcase
        end
    end
    endmodule

    由于时间关系,这里暂时完成到这一步。下面的操作需要分析vivado提供的模板,将AXI总线的理论和实验结合起来。这里需要不少时间。

    4、实验结果

    暂时先准备好代码,如何操作还需要找到一些资料来实现。大体的思路是将所需的端口挂在AXI总线的寄存器上。用一个寄存器做输入,一个寄存器做输出。其中clk直接引到顶层,通过PL连接出去。rst通过寄存器0的值输入控制。led通过寄存器1的值输出结果。具体的细节后面再看。

  • 相关阅读:
    uni_app系列
    并发编程
    VUE+DRF系列
    其实我是个诗人
    中医
    linux+docker
    Mysql数据库
    爱好
    AJAX
    Django
  • 原文地址:https://www.cnblogs.com/electricdream/p/13190506.html
Copyright © 2011-2022 走看看