与aurora 64B66B 发送端 AXI4-Stream接口 相连的FIFO设置

2023-10-14 05:59

本文主要是介绍与aurora 64B66B 发送端 AXI4-Stream接口 相连的FIFO设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1 背景
    • 1.1 关于Aurora 64b66b IP核
    • 1.2 关于FIFO的读操作模式
    • 1.3 遇到的问题
  • 2 与Aurora 64b66b IP核AXI4-S发送接口相连的FIFO的设计

1 背景

1.1 关于Aurora 64b66b IP核

在【PG074】1 简略学习Aurora 64B/66B IP核中2.3.3 Streaming接口章节学习了Aurora 64b66b IP核的基础指示。

  1. Aurora Example Design的结构

整个Example Design的机构:

在这里插入图片描述

  1. 示例设计具体的module的结构:

在这里插入图片描述

在此基础上,我们只要简单的把FRAME_GENFRAME_CHECK两个模块的接口拎出来就可以用于自己的收发数据设计了。

  1. FIFO与Aurora 64b66b IP核的连接
    在AXI4-Stream Aurora 64B/66B Example Design的基础上进行开发,我们发送数据的FIFO需要与这个接口连接,设计的结构图为:

在这里插入图片描述

AXI4-S接口有关的信号在各模块中的说明,这里只说明发送相关的,其他见PG074:

LocalLink中的名字AXI4-S中的名字区别
TX_Ds_axi_tx_tdata只有名字区别
TX_SRC_RDY_Ns_axi_tx_tvalid名字区别,反相
TX_DST_RDY_Ns_axi_tx_tready名字区别,反相
  1. 发送数据时 AXI4-Stream 接口的时序:

在这里插入图片描述

1.2 关于FIFO的读操作模式

在【PG057】FIFO Generator IP核学习中3.3.2 读操作章节中学习了first-word fall-through (FWFT) 读模式。FIFO的这种读模式可以预读一个数据,当读使能到来时,再往下读取一个数据,也就是说实现了在与读使能同一个时钟周期中输出读取的数据。

时序图:

在这里插入图片描述

1.3 遇到的问题

相信学习了前面两个背景知识,可以很好的判断,如果用于这种接口的传输,FIFO的FWFT读模式是很适合的。
之前使用的是标准读模式,这会导致很难去对齐TX_DST_RDY_N信号。造成数据帧前面多发多少发数据。因为s_axi_tx_tready并不是一个有恒定规律的信号,IP核随时会打断。类似下面这种波形:

在这里插入图片描述

2 与Aurora 64b66b IP核AXI4-S发送接口相连的FIFO的设计

afifo afifo_u (.rst   (~I_reset_n   ),  // input wire rst.wr_clk(I_sync_clk   ),  // input wire wr_clk.rd_clk(I_user_clk   ),  // input wire rd_clk.din   (R_afifo_din  ),  // input wire [31 : 0] din.wr_en (W_afifo_wr_en),  // input wire wr_en.rd_en (W_afifo_rd_en),  // input wire rd_en.dout  (W_afifo_dout ),  // output wire [63 : 0] dout.full  (             ),  // output wire full.empty (             ),  // output wire empty.valid (W_afifo_valid)   // output wire valid
);
assign W_afifo_rd_en = W_afifo_valid && (~TX_DST_RDY_N); assign TX_D = W_afifo_dout;
assign TX_SRC_RDY_N = ~W_afifo_valid;  

已知当FIFO非空,也就是有数据需要发送时,W_afifo_dout会预读一个数据并且W_afifo_valid被置为高,此时TX_SRC_RDY_N被断言,数据等待被发送。当Aurora 64b66b IP核准备好发送(TX_DST_RDY_N为低)时,使能W_afifo_rd_en读取当前数据,并且在相同的时钟周期将数据传递给IP核。之后W_afifo_dout会在有数据需要发送时预读下一个数据。

这篇关于与aurora 64B66B 发送端 AXI4-Stream接口 相连的FIFO设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208631

相关文章

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试