目录

  • 1. 功能描述
  • 2. 参数描述
  • 3. 逻辑设计
    • 3.1. axi2standard_handshake_bridge_w
      • RD_AW_FIFO
      • RD_W_FIFO
      • ● 写数据信号群
      • ● 写控制信号群
      • B_RSP
    • 3.2. axi2standard_handshake_bridge_r
      • RD_AR_FIFO
      • R_RSP
      • ● 读数据信号群
      • ● 读控制信号群
  • 4. 测试
    • 4.1. axi2standard_handshake_bridge写测试
    • 4.2. axi2standard_handshake_bridge读测试

1. 功能描述

AXI协议毕竟与FIFO、RAM等读写协议不一样,而AXI是SoC系统片内常用的高速接口,所以就需要将AXI的时序转化为标准的握手时序,此处研究AXI到标准握手的桥接器,实现接口转化。

是的,AXI2HANDSHAKE桥是作为AXI slave呈现的,由此可以得出桥接器的输入输出

2. 参数描述

避免AXI信号与标准握手信号名称冲突,各参数描述如下

Channel Signal Direction Width(bits) Description
ACLK input 1 时钟
ARSTn input 1×4 复位,低有效
AW AXI_S_AWID input AXI_S_AWID_WIDTH+2 写事务ID
AXI_S_AWADDR input AXI_S_AWADDR_WIDTH burst写事务第一个WDATA的地址
AXI_S_AWLEN input 8 该数值+1就表示此次写事务的WDATA个数
AXI_S_AWSIZE input 3 WDATA中有效byte大小
AXI_S_AWBURST input 2 burst传输类型
AXI_S_AWVALID input 1 AW通道数据有效
AXI_S_AWREADY output 1 AW通道数据接受准备
Channel Signal Direction Width(bits) Description
W AXI_S_WDATA input WDATA_WIDTH 写数据
AXI_S_WLAST input 1 写事务中的最后一个写数据
AXI_S_WVALID input 1 W通道所有数据信息有效
AXI_S_WREADY output 1 W通道所有数据信息准备接收
Channel Signal Direction Width(bits) Description
AR AXI_S_ARADDR input AXI_S_ARADDR_WIDTH burst读事务第一个读传输地址
AXI_S_ARLEN input 8 该数值+1就表示此次读事务的RDATA个数
AXI_S_ARSIZE input 3 RDATA中有效byte大小
AXI_S_ARBURST input 2 burst传输类型
AXI_S_ARVALID input 1 AR通道数据有效
AXI_S_ARREADY output 1 AR通道数据接收准备
Channel Signal Direction Width(bits) Description
R AXI_S_RID output AXI_S_RID_WIDTH+2 读事务ID
AXI_S_RDATA output AXI_S_RDATA_WIDTH 读数据
AXI_S_RRESP output 2 读反馈,表明读传输的状态
AXI_S_RLAST output 1 读事务中的最后一个读数据
AXI_S_RVALID output 1 R通道所有数据信息有效
AXI_S_RREADY input 1 R通道所有数据信息准备接收
Channel Signal Source Width(bits) Description
B AXI_S_BID output AXI_S_BID_WIDTH+2 写事务ID
AXI_S_BRESP output 2 写响应
AXI_S_BVALID output 1 B通道所有写反馈信息有效
AXI_S_BREADY input 1 B通道所有写反馈信息准备接收
Group Signal Direction Width(bits) Description
Standard Handshake waddr output AXI_S_AWADDR_WIDTH 写地址
wdata output AXI_S_WDATA_WIDTH 写数据
wr_en output 1 写使能
wready input 1 写准备
raddr output AXI_S_ARADDR_WIDTH 读地址
rdata input AXI_S_RDATA_WIDTH 读数据
rdata_val input 1 读数据有效
rd_en output 1 读使能
rready input 1 读准备

之后是参数描述

Parameter Units Description
AXI_S_AWID_WIDTH bit AXI AW通道的ID位宽
AXI_S_AWADDR_WIDTH bit AXI AW通道的地址位宽
WDATA_WIDTH bit AXI W通道的数据位宽
AXI_S_ARID_WIDTH bit AXI AR通道的ID位宽
AXI_S_ARADDR_WIDTH bit AXI AR通道的地址位宽

3. 逻辑设计

AXI4相比于AHB、APB最大的特点就是outstanding传输,三个写通道(AW、W、B)和两个读通道(AR、R)是相互独立的,所以转换为标准握手时序对应着的就是读和写相互独立。

所以分为标准握手桥的读和写两个通道分别设计

3.1. axi2standard_handshake_bridge_w

根据AXI_Round_Robin_Arbiter 设计 - AW、W通道部分的思路,为AW通道和W通道分别设定一个FIFO接收数据。

但标准写握手需要同时给出地址和数据,所先从AW_FIFO读出AW通道的信息,再根据该信息从W_FIFO读出数据,由于AXI是burst传输,所以待awlen定义的所有wdata全部握手完毕后,B通道再返一个写反馈信号。

多说无益,直接看状态机

那么该状态机能否改成流水呢?答案是不能,因为任意两个状态均不能同时进行,读AW_FIFO之后才知道awlen、awaddr如何变化,读完W_FIFO之后才能作B通道反馈。

RD_AW_FIFO

该状态要做的就是读AW通道的每个FIFO一个数并寄存,当全部FIFO都读出数之后,才能进入RD_W_FIFO状态

时序图如下

注意,只要有一个AW_FIFO的rvalid有效即可状态转换,因为AW通道每个数据都是同时写入FIFO的。

RD_W_FIFO

在该状态下从W_FIFO读出数据并写握手,每写握手完成再从FIFO中读出下一个axi_s_wdata,直到完成axi_s_awlen个写握手即可状态转换

注意axi_s_awburst对waddr的约束,以及axi_s_awsize对wdata的约束。所以将该状态下的信号逻辑分为两组——写数据信号和写控制信号(axi_s_awaddr、axi_s_awsize、axi_s_awburst等)

● 写数据信号群

类似于wdata、wdata_fifo_rdata等,这些信号的变化逻辑是每完成一次写握手再读出下一个wdata,还要注意输出的wr_en的保持问题,如下时序图

每次标准写握手完成,就开始读下一个wdata,同时写控制信号更新

注意wdata与wdata_fifo_rdata不等效!!!还有一个awsize!!!

● 写控制信号群

是axi_s_awaddr_buf、axi_s_awlen_buf、axi_s_awsize_buf、axi_s_awburst_buf这几个。

其中axi_s_awlen_buf每完成一次握手减1,减为0时表示全部标准写握手完成。axi_s_awsize_buf控制wdata有效位数,保持不变。axi_s_awburst_buf控制burst传输类型,保持不变。

axi_s_awaddr_buf要根据axi_s_awburst_buf进行变化,INCR还好说,WRAP运算起来用Verilog很难实现,所以需要外部CPU运算模块帮助运算。

8.1 Verilog PLI 简介

时序如下

重新更新状态机如下

B_RSP

当一次burst标准写握手完成之后,就生成bid和bresp返给Master,一般来说B通道的数据在Master或Slave至少有一个FIFO。

时序图还是上面那个图

无论这个FIFO放哪里,时序图都是上面那个图
但是B通道的FIFO个人认为在Master那边比较好,这样Master在忙于别的事情的时候不影响Slave这边的写反馈

3.2. axi2standard_handshake_bridge_r

AR通道与AW通道类似,为AR通道每个信号设立一个FIFO。先从这些FIFO中读出AR通道的信息,再根据这些信息进行标准读握手。

RD_AR_FIFO

时序图与RD_AW_FIFO类似,读出各FIFO即可进入下一状态

R_RSP

该状态下要完成多次标准读握手,但还要将读出的数据传回AXI Master,一般来说Master那边有一个接受rdata的FIFO,这里就不例化了。

所以说每完成一次标准读握手,都必须等到与AXI Master在R通道完成一次接受才能开启下一次标准度握手。

● 读数据信号群

时序图如下,必须保证R通道握手完毕,即读出的数据AXI Master接受了才能读下一个数据。

● 读控制信号群

这些信号变化与写控制信号群类似

状态机重写如下

4. 测试

4.1. axi2standard_handshake_bridge写测试

通过该桥完成4次burst写握手,写入的参数如下

awid,    awaddr, awlen,  awsize, awburst,    wdata_start,    wdata_interval
8'd0,  8'h0,  8'd3,  3'd2,  2'b01,     32'd0,         32'd1
8'd5,  8'h30, 8'd15, 3'd2,  2'b01,     32'd156,       32'd2
8'd100,8'h48, 8'd7,  3'd2,  2'b01,     32'd98546,     32'd3
8'd69, 8'hC4, 8'd15, 3'd2,  2'b01,     32'd598,       32'd4

先上transcript,可见成功完成了AXI写握手和标准写握手


再来上波形,部分信号之间是assign关系故去除掉

4.2. axi2standard_handshake_bridge读测试

完成4次burst读握手,写入的参数如下

arid,    araddr, arlen,  arsize, arburst,
8'd0,  8'h0,  8'd3,  3'd2,  2'b01,
8'd5,  8'h30, 8'd15, 3'd2,  2'b01,
8'd100,8'h48, 8'd7,  3'd2,  2'b01,
8'd69, 8'hC4, 8'd15, 3'd2,  2'b01,

线上transcript,由于内容过长此处只放第一次burst传输

AXI2Standard_handshake_bridge 设计相关推荐

  1. 2022-2028年中国UI设计行业现状调研分析及发展趋势研究报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国UI设计行业市场行业相关概述.中国UI设 ...

  2. 【VB】学生信息管理系统2——窗体设计

    这次学生系统是照着书敲的,先敲完然后开始调试!中途遇到了很多问题,查了很多,这里不容易系统的总结!所以就针对各个问题,各个击破! 问题一:VB 6.0中,状态栏控件(sbstatusbar):右击选项 ...

  3. LeetCode简单题之设计 Goal 解析器

    题目 请你设计一个可以解释字符串 command 的 Goal 解析器 .command 由 "G"."()" 和/或 "(al)" 按某种 ...

  4. LeetCode简单题之设计停车系统

    题目 请你给一个停车场设计一个停车系统.停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位. 请你实现 ParkingSystem 类: ParkingSystem(int bi ...

  5. 单周期十条指令CPU设计与verilog实现(Modelsim)

    目录 一.实验目的 二.实验内容 三.实验原理 1. 规定 2. 原理图 四.实验步骤 1. CPU各部件实现 pc insMem acc alu cu dataMem 2. CPU例化实现 3. 编 ...

  6. EDA电子设计技术与应用

    EDA电子设计技术与应用 电子设计自动化(英语:Electronic design automation,缩写:EDA)是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功 ...

  7. AI中pass架构设计优化

    AI中pass架构设计优化 Relay 和 TVM IR,包含一系列优化passes,可提高模型的性能指标,例如平均推理,内存占用,或特定设备的功耗.有一套标准优化,及特定机器学习的优化,包括常量折叠 ...

  8. MegEngine 框架设计

    MegEngine 框架设计 MegEngine 技术负责人许欣然将带了解一个深度学习框架是如何把网络的定义逐步优化并最终执行的,从框架开发者的视角来看待深度学习. 背景 AI 浪潮一波又一波,仿佛不 ...

  9. AI框架精要:设计思想

    AI框架精要:设计思想 本文主要介绍飞桨paddle平台的底层设计思想,可以帮助用户理解飞桨paddle框架的运作过程,以便于在实际业务需求中,更好的完成模型代码编写与调试及飞桨paddle框架的二次 ...

最新文章

  1. 一些关于反汇编与逆向方面的博文分享
  2. Mindjet MindManagers思维导图使用记录
  3. win7下的iis配置
  4. Xcode7 UI自动化测试详解 带demo UITests
  5. 全局数据 GetGlobalDataSet
  6. Android之使用VideoView组件播放一个简单的视频
  7. Linux 删除除某个文件之外的所有文件
  8. 用Intellij Idea创建一个普通的Java工程并用JDBC连接数据库
  9. python热度评价指标_编程语言流行指数四月榜单发布:Python 持续强势,Java 热度减退...
  10. table表格及属性
  11. iOS 相册多选 相机选择图片
  12. KaLi Linux 2019.2安装netspeed
  13. React实例练习-响应式设计、数据绑定、列表渲染、删除单项
  14. VC知识库之应用控制
  15. 斯坦福大学的低码率音频编码博士论文
  16. 贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图
  17. 多人在线编辑文档 开发_太方便了,支持多人同时编辑,电脑和手机端实时同步保存...
  18. MTK hall霍尔传感器
  19. ubuntu 下tftp服务器配置笔记
  20. TCP/IP参考模型-传输层TCP

热门文章

  1. SSD固态硬盘接口 M2
  2. 免费语音转字幕功能介绍
  3. linux挂载QSPI FLASH
  4. html父级添加伪类after,关于伪类after后续追加,实现js事件(如点击事件)
  5. java基础之经典算法总结篇
  6. 【ps】ps cc中普通形状如何变成实时形状
  7. python按空格键退出循环_按“空格键”停止暂停循环,再按一次可继续循环(参见更新)...
  8. iris 神经网络分类
  9. Springboot之Shiro权限管理
  10. 猿辅导专项答疑:如何快速迅速进入学习状态?