axi_lite主要模块

绿叶落秋风

生命漫长而又短暂,时间永恒而又瞬变。

</div><!--end: blogTitle 博客的标题和副标题 -->
<div id="navigator">
新随笔
  • 联系
  • 订阅
  • 管理
  • 	<div class="blogStats">
    		<span id="stats_post_count">随笔 - 106&nbsp; </span>
    

    文章 - 4 
    评论 - 1 
    阅读 -

    45099

    	</div><!--end: blogStats -->
    </div><!--end: navigator 博客导航栏 -->
    

    PS-AXI-PL流水灯设计(2)
            </h1>
            <div class="clear"></div>
            <div class="postBody">
                <div id="cnblogs_post_body" class="blogpost-body blogpost-body-html"><a name="_labelTop"></a><div id="navCategory" style="color:#152e97;"><p style="font-size:18px;"><b>目录</b></p><ul><li><a href="#_label0">PS-AXI-PL流水灯设计(2)</a><ul><li><a href="#_label0_0">1、实验原理</a></li><li><a href="#_label0_1">2、实验操作</a></li><li><a href="#_label0_2">3、实验结果</a></li></ul></li></ul></div><p>&nbsp;</p><hr style="height:1px;border:none;border-top:1px dashed #0066CC;">
    

    PS-AXI-PL流水灯设计(2)

    1、实验原理

    承接上一次的实验,这里对AXI的总线结构做出分析,将AXI的理论具体对应到设计上去。为后面自己设计AXI的发送和接受器做好准备。

    2、实验操作

    (1)AXI中的寄存器变量

    在不了解具体的AXI协议的条件下,如果想完成基本的AXI4总线的IP核,就必须明白AXI4总线存储数据的位置。AXI总线的数据在寄存器中,所有的操作也是基于寄存器的。一个简单的AXI总线必须能够接受数据并且储存在对应的寄存器中。vivado中提供的的寄存器操作是已经做好了的。这里只需要对对应的寄存器构建相应的联系就可以挂在AXI总线上。前面选择了四个寄存器。这里实际上只需要2个。一个用于接受数据,一个用于发送数据。能不能改名字呢?理论上可以,但是这会使该寄存器没有从地址。换言之,改了名字的寄存器不能在通过AXI总线访问。已经知道每个寄存器32位宽,所以只要不超过该宽度,一律取一个寄存器。

    (2)连接PL时对应的逻辑。

    对于PL中需要挂在PS上的信号,都要使用寄存器变量(可以为同名的wire变量)。如果后面可以自己定义AXI协议,则可以自定义寄存器的名字。这里暂时使用系统命名。理论上AXI上的寄存器除了访问地址其他的功能都是一样的,所以输入还是输出都是自己定义的。如果是做接受AXI的数据的寄存器,就可以作为PL的输入。

    (3)构建IP的原理图

    这里出现了一个小问题,文件丢失。注意IP核创建完成后要综合一下再打包。然后就可以调用自己的IP核来挂在AXI上了。下一步就是利用PS测试AXI打包的IP核可不可以实现PS通信。这个在下一步实验中会设计,现在暂时只是完成AXI总线的基本使用类型。

    (4)初步理解AXI总线

    第一个模块是axi_awready,第二个模块是axi_awaddr,第三个模块是axi_wready,第四个是寄存器的写入和读出,第五个是写响应,第六个是axi_arread,第七个是axi_arvalid,第八个是读地址。一共八个模块构成了一个简单的lite AXI4协议的收发。

    这里把注释截取下来方便后面的分析:

    复制代码
    //--------------1----------------------------------------------------
        // Implement axi_awready generation
        // axi_awready is asserted for one S_AXI_ACLK clock cycle when both
        // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is
        // de-asserted when reset is low.
    

    //------------------2---------------------------------------------------------
    // Implement axi_awaddr latching
    // This process is used to latch the address when both
    // S_AXI_AWVALID and S_AXI_WVALID are valid.

    //------------------3----------------------------------------------------------
    // Implement axi_wready generation
    // axi_wready is asserted for one S_AXI_ACLK clock cycle when both
    // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is
    // de-asserted when reset is low.
    //------------------------4------------------------------------------------------------
    // Implement memory mapped register select and write logic generation
    // The write data is accepted and written to memory mapped registers when
    // axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to
    // select byte enables of slave registers while writing.
    // These registers are cleared when reset (active low) is applied.
    // Slave register write enable is asserted when valid address and data are available
    // and the slave is ready to accept the write address and write data.

    //---------------5------------------------------------------------------------------

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Implement write response logic generation
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> The write response and response valid signals are asserted by the slave 
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted.  
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> This marks the acceptance of address and indicates the status of 
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> write transaction.
    

    //-------------------6-------------------------------------------------------------------
    // Implement axi_arready generation
    // axi_arready is asserted for one S_AXI_ACLK clock cycle when
    // S_AXI_ARVALID is asserted. axi_awready is
    // de-asserted when reset (active low) is asserted.
    // The read address is also latched when S_AXI_ARVALID is
    // asserted. axi_araddr is reset to zero on reset assertion.

    //------------------7----------------------------------------------------------------
    // Implement axi_arvalid generation
    // axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both
    // S_AXI_ARVALID and axi_arready are asserted. The slave registers
    // data are available on the axi_rdata bus at this instance. The
    // assertion of axi_rvalid marks the validity of read data on the
    // bus and axi_rresp indicates the status of read transaction.axi_rvalid
    // is deasserted on reset (active low). axi_rresp and axi_rdata are
    // cleared to zero on reset (active low).
    //--------------------------------8-------------------------------------------------
    // Implement memory mapped register select and read logic generation
    // Slave register read enable is asserted when valid address is available
    // and the slave is ready to accept the read address.

    复制代码

    这里大致了解一下一个基本的AXI工作模块如何工作,后面会对这几个模块具体分析。为后面自定义AXI收发模块打下基础。

    3、实验结果

    这次实验简单地打包了一下自定义的PL的AXI的IP核,并且初步看了一下AXI的组成构件。后面的实验也将以这两条主线来展开。一方面连接AXI总线,一方面推进实验验证设计的合理性。最后,在测试平台完成后,就可以利用解构的AXI协议来得到自定义外设。

    欢迎在下方评论、转发、分享。
    分类: FPGA
    标签: ZYNQ
    <div id="blog_post_info">
    
    0
    0
    <div class="clear"></div>
    <div id="post_next_prev">
    
    <a href="https://www.cnblogs.com/electricdream/p/13190506.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/electricdream/p/13190506.html" title="发布于 2020-06-24 22:49">AXI-自定义IP-PS设计</a>
    <br>
    <a href="https://www.cnblogs.com/electricdream/p/13196849.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/electricdream/p/13196849.html" title="发布于 2020-06-26 23:36">proteus的C51仿真</a>
    
    posted @ 2020-06-25 23:12  绿叶落秋风  阅读( 104)  评论( 0编辑  收藏
    </div><!--end: topics 文章、评论容器-->
    
    </div><!--end: forFlow -->
    </div><!--end: mainContent 主体内容容器-->
    <div id="sideBar">
    	<div id="sideBarMain">
    
    < 2021年5月 >
    252627282930 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31 1 2 3 4 5

    随笔分类
    (106)

        </h3>
    
        <ul>
    
                <li data-category-list-item-visible="true" style="display: block">
    
    FPGA(74)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    电路(12)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    其他(11)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    英文(9)
                </li>                
            
        </ul>
    
    
    </div>    
    <div id="sidebar_postarchive" class="catListPostArchive sidebar-block">
        <h3 class="catListTitle">
    

    随笔档案
    (106)

        </h3>
    
        <ul>
    
                <li data-category-list-item-visible="true" style="display: block">
    
    2020年9月(10)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    2020年8月(10)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    2020年7月(26)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    2020年6月(26)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    2020年5月(34)
                </li>                
            
        </ul>
    
    
    </div>    
    <div id="sidebar_imagecategory" class="catListImageCategory sidebar-block">
        <h3 class="catListTitle">
    

    相册
    (6)

        </h3>
    
        <ul>
    
                <li data-category-list-item-visible="true" style="display: block">
    
    版图草稿(4)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    博客互联(1)
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    图说操作(1)
                </li>                
            
        </ul>
    
    
    </div>    
    <div id="sidebar_这是一个用于连接相应的知识模块的" class="catList这是一个用于连接相应的知识模块的 sidebar-block">
        <h3 class="catListTitle">
    

    知识连接

        </h3>
    
        <ul>
    
                <li data-category-list-item-visible="true" style="display: block">
    
    博客互联
                </li>                
                <li data-category-list-item-visible="true" style="display: block">
    
    立创eda
                </li>                
            
        </ul>
    
    
    </div>    
    
  • --绿叶落秋风
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值