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------------------------------------------------------------------ // Implement write response logic generation
// The write response and response valid signals are asserted by the slave
// when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted.
// This marks the acceptance of address and indicates the status of
// 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协议来得到自定义外设。

PS-AXI-PL流水灯设计(2)的更多相关文章

  1. C语言基于NIOSII的软件开发及流水灯设计

    一.Quartus II 12.1 (32-Bit)进行硬件设计 1.所需要的系统元器件组成 2.系统电路图 二.Nios II 12.1 Software Build Tools for Eclip ...

  2. zedboard学习记录.2.PS+PL 流水灯与uart

    1.建立一个工程. 硬件设计 2.IP integrator -> create block desgin;Run Block Automation. 3.add IP -> AXI GP ...

  3. zedboard学习记录.1.纯PL流水灯

    环境:vivado 217.4 开发板: zedboard ver.d xc7z020clg484-1 1.打开Vivado新建一个RTL工程. 2.add source->add/create ...

  4. Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)

    zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...

  5. PS与PL协同设计

    https://blog.csdn.net/Fei_Yang_YF/article/details/79676172 什么是PS和PL ZYNQ-7000是Xilinx推出的一款全可编程片上系统(Al ...

  6. Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)

    Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...

  7. 第三章 VIVADO 自定义IP 流水灯实验

    第二章里面已经说过了,MIZ701 PL部分没有输入时钟,因此驱动PL资源必须是通过PS来提供时钟,所以这个流水灯实验也得建立一个最小系统了,然后再添加一个流水灯的自定义IP. 3.0本章难度系数★★ ...

  8. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  9. 毕业回馈-89C51之GPIO使用(流水灯)

    今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后 ...

  10. Zynq PS和PL间的连接

    跨越PS和PL的信号 AXI总线.EMIO.其他(看门狗.重启信号.中断信号.DMA接口信号) AXI标准 AXI(高级可扩展接口)是ARM AMBA的一部分.AMBA总线主要用于片上系统.AXI总线 ...

随机推荐

  1. MySQL树形结构表设计

    两个字段: pid:父级ID parent_ids:所有经过的路径节点ID 这样设计有个好处是,可以查任意节点的所有子节点,从任意节点开始既可以向上查,也可以向下查 select * from ent ...

  2. 【OpenGL ES】绘制彩色三角形

    1 前言 ​ [OpenGL ES]绘制三角形 中介绍了绘制普通三角形的方法,本文将介绍绘制彩色三角形的方法. ​ 本文完整代码资源见→[OpenGL ES]绘制彩色三角形 ​ 项目目录如下: 2 案 ...

  3. LVM精简卷(Thinly-Provisioned Logical Volumes)

    可能LVM大家都比较熟悉,那么精简卷又是干什么的呢?相比于普通LVM有什么优势,又会带来哪些新的问题?带着这些我们来一探究竟: 工作原理 在创建Thin"瘦"卷时,预分配一个虚拟的 ...

  4. Springboot+LayUI实现一个简易评论系统

    说明 这是个简单的评论系统,目的在于介绍简单的评论和回复功能.同时基于此可以扩展更全面的.自定义的评论系统,本工程仅供学习交流使用.喜欢的朋友给个赞:) 源码 https://gitee.com/in ...

  5. centos7使用repo方式安装zabbix4.0

    1.安装zabbix的repo源 rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbi ...

  6. 学习go语言编程之标准库

    标准库包分类 Golang标准库可以大致按其中库的功能进行以下分类: 分类 对应包 描述 输入输出 bufio,fmt,io,log,flag 这个分类包括二进制以及文本格式在屏幕.键盘.文件以及其他 ...

  7. 高效的PDF文字提取技术

    无论是行政法规.学术论文还是企业合同,PDF文档为我们提供了一种便捷.稳定的信息传递方式.然而,从PDF文件中提取文本信息对于数据分析.内容编辑等后续处理来说至关重要. PDF文本提取技术是一种可以从 ...

  8. 【MongoDB】C# .Net MongoDB常用语法

    1.1.驱动安装 使用NuGet包管理器安装MongoDB C#驱动:MongoDB.Driver 1.2. C#连接MongoDB //获取MongoDB连接客户端 MongoClient clie ...

  9. 《HelloGitHub》第 95 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  10. 【Azure 事件中心】EventHub 中同一条消息不停的推送给消费端问题记录

    问题描述 EventHub 中同一条消息,不停的推送给消费端,查看日志发现错误: Caused by: com.azure.messaging.eventhubs.implementation.Par ...