OFDM 802.11a的FPGA实现(二十)使用AXI-Stream FIFO进行跨时钟(含代码)

目录

1.前言

2.AXI-Stream FIFO时序

3.AXI-Stream FIFO配置信息

4.时钟控制模块MMCM

5.ModelSim仿真

6.总结


1.前言

至此,通过前面的文章讲解,对于OFDM 802.11a的发射基带的一个完整的PPDU帧的所有处理已经全部完成,其结构如下图所示:

PPDU帧结构

PPDU帧结构

PPDU帧结构

PPDU帧结构

接下来还需要完成两个最为核心的模块,一是主控模块,负责与MAC进行数据交互、控制数据流按照上图所示的帧结构进行输出;二是在处理数据时,我们采用的是125M的时钟,而DAC的时钟是20M的,我们需要对数据流进行降频处理,使125M的突发式数据流变为20M的连续数据流。

2.AXI-Stream FIFO时序

我们在数据处理时,一直使用的都是AXI-Stream协议,所以使用AXI-Stream FIFO进行跨时钟域都不需要再进行额外的操作,直接连上就能用。但是为了让大家对AXI-Stream协议有更深的理解,以及掌握AXI-Stream FIFO的使用方法,接下来还是详细讲讲AXI-Stream FIFO这个IP核。其输入输出形式如下:

AXI-Stream FIFO

AXI-Stream FIFO

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

举个生活中的例子来让大家便于理解FIFO:在数据的传输中当读速率慢于写速率时,FIFO便可被用作系统中的缓冲元件或队列,类似于水流经过一个缓冲区,上游水流速度快,下游水流速度慢,部分水就可以被缓存在中间的缓冲区。

流水类比FIFO

流水类比FIFO

AXI接口协议使用双向validready握手机制。数据源使用valid信号来显示何时在信道上可获得有效数据或控制数据。数据目的地使用ready信号来显示何时可以接受数据。
下图显示了AXI4-Stream FIFO的写入和读取操作的示例时序图:

AXI-Stream FIFO时序图

AXI-Stream FIFO时序图

在上图中,数据源生成valid信号以指示数据何时可用。目的地生成ready信号以指示其可以接受数据,并且仅当有效信号和就绪信号均为高时才发生传输。

AXI FIFO是普通FIFO的应用,它们之间的许多行为是相同的。ready信号是根据 FIFO 中的空间可用性生成的,并保持在高电平以允许写入FIFO。仅当FIFO中没有空间可供执行额外写入时,ready信号才会拉低。 valid信号是根据FIFO中数据的可用性生成的,并保持为高电平以允许从FIFO执行读取。仅当没有数据可供从FIFO读取时,valid信号才会拉低。数据信号被映射到本机接口 FIFO 的 din 和 doout 总线。AXI FIFO 的宽度是通过连接 AXI 接口的所有数据信号来确定的。 数据信号包括除有效和就绪握手信号之外的所有 AXI 信号。

AXI FIFO Derivation

AXI FIFO Derivation

3.AXI-Stream FIFO配置信息

如下图所示,是IP核的配置界面:

FIFO配置界面

FIFO配置界面

关于IP核中各个信号的详解,可翻阅官方手册,以下对该实验中所需信号进行解释:

Basic:
Interface Type : FIFO的模式,选择AXI-Stream;

Independent clocks:独立时钟设置,该实验需要使用异步时钟;

其余保持默认即可。

AXI-Stream Ports:

TDATA NUM BYTES:选择两个字节,因为IFFT输出是16bit;

TUSER WIDTH:设置为8;

TLAST:勾选;

其余保持默认即可。

Config:

FIFO depth:FIFO深度,可选范围16-32768,必须为2的整数次幂,根据需要设定为512,因为125/20 * 80=500;

其余保持默认即可。

配置好,接口如下所示:

AXI-Stream FIFO

AXI-Stream FIFO

4.时钟控制模块MMCM

设计采用的开发板为ZYNQ7020,芯片是xc7z020clg400-1,板载时钟为50M,需要通过锁相环得到125M和20M的时钟。Clocking Wizard IP核的配置界面如下:

Clocking Options

Clocking Options

Clocking Options:选择MMCM,输入时钟填写50M。

clk_out为125M,clk_out2为20M

clk_out为125M,clk_out2为20M

低电平复位

低电平复位

Output Clocks:填写clk_out为125M,clk_out2为20M。并选择低电平复位。

5.ModelSim仿真

和之前的模块一起,按照如下连接,进行仿真,这里省略了并串转换。

仿真模块连接图

仿真模块连接图

测试数据选择5个OFDM符号,使用16-QAM调制,编码效率为3/4,一共720个bit。仿真结果如下:

仿真全局截图

仿真全局截图

仿真局部截图

仿真局部截图

5个OFDM符号输出的时间刚好为20us,说明是连续输出的,即满足了协议中符号之间不留间隙。

6.总结

使用AXI-Stream协议处理数据流,下游模块数据没处理好会对上游进行反压,上游数据没处理完,不会往下游传输,可以很方便且高效的对数据进行流水线处理。个人认为相比于书籍《基于XILINX FPGA的OFDM通信系统基带设计》中方法要可靠得多。

书中的实现方法

书中的实现方法

网上大多数博客都是根据书中的这种,不断变换时钟进行跨时钟域处理来做这个项目,个人认为不是很可靠,所以从头开始采用了AXI-Stream协议处理数据流的方式来写。如果有什么不正确的地方,或者不理解的欢迎和我讨论。

原文链接(相关文章合集):OFDM 802.11a的xilinx FPGA实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv-C++ VS2019配置安装

最新opencv-c安装及配置教程(VS2019 C & opencv4.4.0)_c opencv配置-CSDN博客

夜雨触花感怀

夜雨触花感怀 雨落有轨迹,业成无坦途。 ​鸡毛飞虚空,寻德问心路。 ​恰如求耕耘,大话量寸土。 ​好吃品五味,难得评真俗。

CAN总线简介

1. CAN总线概述 1.1 CAN定义与历史背景 CAN,全称为Controller Area Network,是一种基于消息广播的串行通信协议。它最初由德国Bosch公司在1983年为汽车行业开发,目的是实现汽车内部电子控制单元(ECUs)之间的可靠通信。…

用Vuex存储可配置下载的ip地址(用XML进行ajax请求配置文件)

1.在public文件夹下创建一个名为Configuration的文件在创建一个Configuration.txt里面就放IP地址(这里的名字可以随便命名一定性的被人解读文件含义) 例如: http://172.171.208.1:80032.在store文件夹中创建一个名为 ajaxModule.js 的 Vuex …

2. CSS选择器与伪类

2.1 基本选择器回顾 在开始介绍CSS3选择器之前&#xff0c;我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。 2.1.1 元素选择器 元素选择器用于选中指定类型的HTML元素。 /* 选中所有的<p>元素 */ p {color: blue; }2.1.2 类选择器 类选择器用于选中…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

深入理解数仓开发(二)数据技术篇之数据同步

1、数据同步 数据同步我们之前在数仓当中使用了多种工具&#xff0c;比如使用 Flume 将日志文件从服务器采集到 Kafka&#xff0c;再通过 Flume 将 Kafka 中的数据采集到 HDFS。使用 MaxWell 实时监听 MySQL 的 binlog 日志&#xff0c;并将采集到的变更日志&#xff08;json 格…

【二叉树】:LeetCode:100.相同的数(分治)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;初阶初阶结构刷题 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 1.问题描述&#xff1a; 2.问题分析&#xff1a; 二叉树是区分结构的&#xff0c;即左右子树是不一…

[JDK工具-6] jmap java内存映射工具

文章目录 1. 介绍2. 主要选项3. 生成java堆转储快照 jmap -dump4. 显示堆详细信息 jmap -heap pid5. 显示堆中对象统计信息 jmap -histo pid jmap(Memory Map for Java) 1. 介绍 位置&#xff1a;jdk\bin 作用&#xff1a; jdk安装后会自带一些小工具&#xff0c;jmap命令(Mem…

PySide6升级导致的Fatal Python error: could not initialize part 2问题及其解决方法

问题出现 把PySide6从6.6.1升级到6.7.1&#xff0c;结果运行程序的时候就报如下错误&#xff1a; Traceback (most recent call last): File "signature_bootstrap.py", line 77, in bootstrap File "signature_bootstrap.py", line 93, in find_inc…

Kafka SASL_SSL集群认证

背景 公司需要对kafka环境进行安全验证,目前考虑到的方案有Kerberos和SSL和SASL_SSL,最终考虑到安全和功能的丰富度,我们最终选择了SASL_SSL方案。处于知识积累的角度,记录一下kafka SASL_SSL安装部署的步骤。 机器规划 目前测试环境公搭建了三台kafka主机服务,现在将详…

H3CNE-7-TCP和UDP协议

TCP和UDP协议 TCP&#xff1a;可靠传输&#xff0c;面向连接 -------- 速度慢&#xff0c;准确性高 UDP&#xff1a;不可靠传输&#xff0c;非面向连接 -------- 速度快&#xff0c;但准确性差 面向连接&#xff1a;如果某应用层协议的四层使用TCP端口&#xff0c;那么正式的…

智能家居完结 -- 整体设计

系统框图 前情提要: 智能家居1 -- 实现语音模块-CSDN博客 智能家居2 -- 实现网络控制模块-CSDN博客 智能家居3 - 实现烟雾报警模块-CSDN博客 智能家居4 -- 添加接收消息的初步处理-CSDN博客 智能家居5 - 实现处理线程-CSDN博客 智能家居6 -- 配置 ini文件优化设备添加-CS…

【MySQL】聊聊count的相关操作

在平时的操作中&#xff0c;经常使用count进行操作&#xff0c;计算统计的数据。那么具体的原理是如何的&#xff1f;为什么有时候执行count很慢。 count的实现方式 select count(*) from student;对于MyISAM引擎来说&#xff0c;会把一个表的总行数存储在磁盘上&#xff0c;…

Linux下Vision Mamba环境配置+多CUDA版本切换

上篇文章大致讲了下Vision Mamba的相关知识&#xff0c;网上关于Vision Mamba的配置博客太多&#xff0c;笔者主要用来整合下。 笔者在Win10和Linux下分别尝试配置相关环境。 Win10下配置 失败 \textcolor{red}{失败} 失败&#xff0c;最后出现的问题如下&#xff1a; https://…

基于物联网架构的电子小票服务系统

1.电子小票物联网架构 采用感知层、网络层和应用层的3层物联网体系架构模型&#xff0c;电子小票物联网的架构见图1。 图1 电子小票物联网架构 感知层的小票智能硬件能够取代传统的小票打印机&#xff0c;在不改变商家原有收银系统的前提下&#xff0c;采集收音机待打印的购物…

react中的数据驱动视图,useState()的使用

前端开发如今有一个很重要的思想就是数据驱动视图&#xff0c;数据发生变化使ui发生变化&#xff0c;比如一个变量count&#xff0c;为0显示三个按钮&#xff0c;为1显示一个按钮&#xff0c;为2显示两个按钮。这就是一个简单的数据驱动视图。 import { useState } from reactf…

修改 ant design tour 漫游式导航的弹窗边框样式

一 说明 应项目要求&#xff0c;调整ant design tour 弹窗边框的样式。tour 原本样式是有遮罩层&#xff0c;因此没有边框看起来也不突兀。原图如下&#xff1a; 但是UI设计是取消遮罩层&#xff0c;并设置边框样式。当 取消 了遮罩层&#xff0c;没有设置边框样式的图片如下&a…

python考试成绩管理与分析:从列表到方差

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、考试成绩的输入与列表管理 二、成绩的总分与平均成绩计算 三、成绩方差的计算 四、成…