关于AXI4-STREAM DATA FIFO的理解及带FIFO的ADDA测试

实验要求

DAC FIFO实验

  • 基于“DDS IP 数字波形合成DAC ” “ ADDA测试” 实验方案
  • 用MMCM 把 合成出100MHz的时钟,让DDS工作在100MHz时钟
  • 让DAC和DAC的接口电路工作在50MHz,此时DAC的采样率为50MHz
  • 在DDS和DAC接口电路之间,放置一个带独立时钟的AXI-Stream-Data FIFO,FIFO两端的时钟分别为DDS的工作时钟100MHz和DAC的工作时钟50MHz
  • 生成FIFO需要带data count信号(本实验仅用于观察,以后的实验中这些信号有用。)
  • DDS的数据输出接口需要有TREADY信号
  • DAC接口电路需要将FIFO输出端的AXI-S接口转换成DAC的接口格式,自行编写RTL代码完成该功能。另外由于DAC的工作频率小于DDS工作频率,所以DAC接口控制器给FIFO的RDY信号应该一直为高。
  • 以上结构的意义在于,把接口电路和信号处理电路分离在不同的时钟域,从而使得各部分保持独立
  • 本实验添加2个system ILA,分别观察FIFO两端接口的信号时序,注意观察 data count端口的变化。
    10.用VIO配置频率字,分别生成1MHz和3MHz的DDS正弦波形,用system ILA抓取DAC的输入数据,用Matlab分析频谱,验证频率正确。
  • 本实验是一个典型的带反向流控的跨时钟域传输信号的例子

    带FIFO的ADDA实验

  • 本实验在DAC FIFO实验的基础上完成
  • 把DAC输出模拟信号自环给ADC的模拟输入
  • ADC使用25MHz的时钟信号采样
  • ADC的输出的数据信号,用ILA抓取观察波形
  • 用VIO配置频率字,分别生成1MHz和3MHz的DDS正弦波形,用Matlab分析频谱,验证频率的正确性。

由于ADDA实验相较于DAC仅多出一个AD数据接收模块,故将两个实验在一篇文章中进行总结

AXI4-STREAM DATA FIFO

AXI4-Stream总线

关于AXI4-Stream总线的认识,可以参考带你快速入门AXI4总线--AXI4-Stream篇(1)----AXI4-Stream总线这篇文章

AXI4-Stream协议是AXI4三个协议中最简单的一个部分,面向流的传输,不涉及内存地址,主要用于往FIFO等没有地址的数据缓冲区传送大量数据时使用。AXIS的通信过程主要基于握手机制。

握手机制,即主从设备之间借助tvalid、tready信号的状态太判断双方是否能发送或接受数据。

tvalid:该信号拉高时,表示主机可以传输数据给从机。

tready:该信号拉高时,表示从机可以接收来自主机的数据。

AXI4-STREAM DATA FIFO IP核

FIFO模块能够为AXI4-Stream数据流提供临时存储(缓冲区),多用于一下两种情况:

需要比寄存器更多的缓存单元

存储和转发:主机上积累一定数量的字节后,再转发给从机(包模式)。

FIFO,first in,first out,即先入先出的数据缓存队列,其结构如下如所示

如图所示,FIFO IP核的主要操作是对数据进行写入,读出。虽然AXI4-Stream数据流不涉及内存地址,且FIFO没有地址线,但FIFO的内部含地址操作,其读写过程如下图所示:

其中深度值为FIFO内部可以存储的最大数据量,根据读写始终,FIFO可分为同步FIFO与异步FIFO,本实验中所用到的是异步FIFO。

在IP catalog搜索,AXI4-STREAM DATA FIFO,双击出现其配置界面:

首先我们知道的是,在AXI协议中,数据通过写通道实现master到slave的传输,读通道实现slave到master的传输。因此,在FIFO IP核中,接收数据的端口S_AXIS用来将数据写入IP核,而发送数据的端口M_AXIS用来将数据读出IP核。

关于IP核中各个信号的详解,可翻阅官方手册pg085-axi4stream-infrastructure.pdf第43页,以下对该实验中所需信号进行解释。

General

FIFO

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值