OFDM802.11a的FPGA实现(十四)data域的设计优化,挤掉axi协议传输中的气泡

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

目录

1.前言

2.data域的时序要求

3.Debug


1.前言

  前面12篇文章详细讲述了,OFDM 802.11a发射部分data域的FPGA实现和验证,今天对data域的设计做一个总结。在总结过程中,发现了设计中存在bug,经过检查和调试成功的解决了bug,现在对整个过程进行详细描述。

2.data域的时序要求

  前面设计的时候说到过,根据信道间隔(channel spacing)的不同,可以计算出如下一些参数:

时序参数

时序参数

时序参数

时序参数

  可以看到当信道间隔为20MHz时,一个OFDM的符号的有效数据周期是3.2us,一个OFDM的符号周期是4us。假设采样率是20M,那么该采样率下的采样周期是50ns,因此一个OFDM符号的有效周期需要64个采样点。所以我们只要保证IFFT的输出数据速率大于20MHz即可,后续在DAC输出的时候,再将数据速率降到20M,由于我们设计的时候数据流一直采用的是vaild-ready握手机制,DAC没有输出完当前数据会对前面的一系列处理形成反压,进而可以保证OFDM符号间不会存在间隙。   

考虑到IFFT的输出需要满足20MHz的数据速率,使用最快的传输方案,64-QAM调制+3/4编码效率。编码前的数据速率应该为2063/4=90MHz;编码后的数据速率为20*6=120MHz。为了仿真方便,系统时钟选取125MHz。  

总而言之,就是data域的数据必须是以20MHz的速率送给DAC,可以大于20M,但是不能低于20M。也就是,上一个IFFT输出(经过加循环前缀和加窗之后)的80个数据,和下一个之间的时间间隔不能大于8us。

3.Debug

  对于之前的设计,按照如下连接方式进行测试:

data域模块连接图

data域模块连接图

  采用64-QAM调制+3/4编码效率。之前的设计仿真结果如下:

之前有bug的设计仿真结果

之前有bug的设计仿真结果

从上图可以看到,每个IFFT输出之间,间隔为,是不能够保证OFDM符号间不会存在间隙的,除非将系统时钟提高,但是这样会带来更大的挑战。所以还是着手于去排查问题,检查中间传输是否存在气泡,影响效率。

并串转换存在传输气泡

并串转换存在传输气泡

如上图所示,并串转换模块在进行最后一个数据输出后,隔了一个时钟才开始像上游请求接收数据。按理说,应该在传输完最后一个数据,dout_rdy立即拉高,向上游请求接收数据,这里延迟了一个时钟导致产生了一个传输气泡。由于64-QAM调制+3/4编码效率,测试数据一个OFDM符号为216个数,第一次并串转换和后面卷积编码和删余之间使用的模2的并串转换,均会产生大量传输气泡,大大增加了系统延时。点此跳转到之前设计的并串转换模块

更正设计,挤掉传输气泡,代码如下(其中counter为自己设计的计数器IP核点此跳转到计数器篇):

assign wr_en  = dout_rdy & din_vld ;//与上游握手成功,开始接收数据
assign rd_en  = din_rdy & dout_vld ;//与下游握手成功,启动读计数器,开始输出

counter #(.CNT_NUM(WIDTH),
  .ADD(LSB_FIRST))
u_counter(
 .clk  (clk    ), 
 .rst_n  (rst_n    ),
 .En_cnt  (rd_en    ),      
 .cnt  (cnt    ), 
 .cnt_last (cnt_last   )
);

assign  dout = din_r[cnt];
 always @(posedge clk or negedge rst_n)
 if(!rst_n)begin
  din_r <= 'd0;
  dout_vld <= 1'b0;
 end
 else if(wr_en)begin
  din_r <= din;
  dout_vld <= 1'b1;//写进数据时,输出有效
 end
 else if(rd_en & cnt_last)
  dout_vld <= 1'b0;//输出完成,输出无效;只有在输入数据无效的时候才会进入次判断,保证无气泡传输
  
/* //初始化时,或输出数据完成,可以接收数据(之前含有气泡的设计)
always @(posedge clk or negedge rst_n)
 if(!rst_n)
  dout_rdy <= 1'b1;
 else if(cnt_last & rd_en)
  dout_rdy <= 1'b1;
 else if(wr_en)
  dout_rdy <= 1'b0; */ 
assign dout_rdy = cnt_last & rd_en | ~dout_vld;//更正后挤掉气泡

如下图所示,可以看到更正之后,数据连续传输,没有气泡。

挤掉并串转换传输气泡

挤掉并串转换传输气泡

对IFFT输出间隔进行测量:

Debug后IFFT输出间隔

Debug后IFFT输出间隔

如上图所示,输出间隔为,符合802.11a协议的要求。64-QAM调制+3/4编码效率,符合要求,那么802.11a中其他调制方式也肯定符合要求。

下面是10个OFDM符号,采用64-QAM调制+3/4编码效率,加窗后,FPGA输出和Matlab仿真对比。

实部

实部

虚部

虚部

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打破地域界限,HubSpot海外获客系统引领企业走向国际化

在全球化的浪潮中&#xff0c;企业如何精准把握海外市场、高效获取并转化目标客户&#xff0c;已成为决定其市场地位与未来发展的关键因素。HubSpot海外获客系统以其独特的视角、强大的功能和卓越的性能&#xff0c;正在引领全球营销进入一个新的时代。今天运营坛将深入剖析Hub…

wps

文章目录 取消自动升级、WPS热点及广告推送excel数字大小排序函数不起作用vlookup函数 取消自动升级、WPS热点及广告推送 打开WPS Office&#xff0c;点击左上角“首页”图标&#xff0c;依次点击右上角“设置”—>“配置和修复工具”。在弹出框点击“高级”&#xff0c;选…

如何在IDEA中找到jar包路径对应的maven依赖

1.找到文件所对应的jar包路径 2.按照箭头顺序操作 3.查找文件所对应的依赖

QX---mini51单片机学习---(9)中断系统

目录 1什么是中断 2中断系统在单片机系统中的作用 3如何使用单片机的中断系统 1什么是中断 RST P0想输出高电平接上拉电阻 2中断系统在单片机系统中的作用 可位寻址&#xff1a;IE中的EA可以直接&#xff0c;EA1&#xff1b; 外部中断&#xff1a;先EA1&#xff1b;再EX1…

Linux-- 重定向缓冲区

目录 0.接上篇文章 1.粗略的见一下这两个问题 2.理解重定向 3.理解缓冲区 0.接上篇文章 Linux--基础IO&#xff08;文件描述符fd&#xff09;-CSDN博客 1.粗略的见一下这两个问题 先来了解几个函数&#xff1a; stat()函数用于获取指定文件或符号链接的元数据。如果文件是…

【多电压流程 Multivoltage Flow】- 5.特定工具使用建议(6.Formality)

使用Formality进行形式验证 Formality支持具有低功耗特性的功能等效性检查,如时钟门控、多阈值电压(multiple-Vt)、多电压供电、电源门控以及动态电压和频率缩放。Formality能够识别低功耗单元,例如隔离单元、电平转换器、始终开启单元、保持寄存器和电源门。 Formality支持…

MQTT 5.0 报文解析 04:PINGREQ 与 PINGRESP

欢迎阅读 MQTT 5.0 报文系列 的第四篇文章。在上一篇中&#xff0c;我们已经介绍了 MQTT 5.0 中的 SUBSCRIBE 报文和 UNSUBSCRIBE 报文。现在&#xff0c;我们将介绍用于维持连接的控制报文&#xff1a;PINGREQ 和 PINGRESP。 除了用于连接、发布和订阅的控制报文&#xff0c;…

抖音上有可以长久赚钱的副业吗?当然有,只有它最稳定长久!

大家好&#xff0c;我是电商糖果 现在有很多年轻人在大城市上班&#xff0c;发现辛辛苦苦一年也赚不到多少钱。 如果说自己有了房贷&#xff0c;车贷&#xff0c;那更是一点儿不敢歇。 为了可以有更多的收入&#xff0c;年轻人都希望可以靠着下班时间&#xff0c;找一个可以…

visual sudio使用-创建空项目-创建cpp文件

新建空项目 新建cpp文件 #include <iostream> using namespace std;int main() {cout << "hello vs" << endl;cout << "hello c" << "\n";cout << "hello first day\n"; }

如何在群晖NAS中开启FTP并实现使用公网地址远程访问传输文件

文章目录 1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP地址连接 本文主要介绍如何在群晖NAS中开启FTP服务并结合cpolar内网穿透工具&#xff0c;实现使用固定公网地址远程访问群晖FTP服务实现文件上传下载。 Cpolar内…

关于SQL

数据库简介&#xff1a; 数据库分类 关系型数据库模型&#xff1a; 优点&#xff1a;易于维护&#xff0c;可以实现复杂的查询 缺点&#xff1a;海量数据 读取写入性能差&#xff0c;高并发下数据库的io是瓶颈 是把复杂的数据结构归结为简单的二元关系&#xff08;即二维表…

【数据结构】有关栈和队列相互转换问题

文章目录 用队列实现栈思路实现 用栈实现队列思路实现 用队列实现栈 Leetcode-225 用队列实现栈 思路 建立队列的基本结构并实现队列的基本操作 这部分这里就不多说了&#xff0c;需要的可以看笔者的另一篇博客 【数据结构】队列详解(Queue) 就简单带过一下需要实现的功能 …

分布式光伏管理系统的意义与核心技术

分布式光伏管理系统遵循安全可靠、经济合理原则&#xff0c;满足电力系统自动化总体规划要求&#xff0c;且充分考虑光伏发电的因素&#xff0c;对分布式光伏发电、用电进行集中监控、统一调度、统一运维。为用户提供运维服务&#xff0c;实现能源互联&#xff0c;信息互通&…

从使用教程、实现原理、差异对比全方面带你玩转业务系统中高频使用的过滤器与拦截器

1.概述 在Java Web开发中&#xff0c;**过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;**是两种常见的组件&#xff0c;用于在请求到达目标资源之前或之后执行一些操作&#xff0c;如日志记录、权限控制、字符编码处理等。虽然它们的作用有…

【Qt】demo示例--通过定时器实现时间刷新

【Qt】demo示例--通过定时器实现时间刷新 1.背景2.代码3.运行 1.背景 Qt Creator版本&#xff1a;4.2.0 &#xff0c;如下图&#xff1a; 即安装qt-opensource-windows-x86-msvc2013_64-5.7.1.exe 后自带得Qt编程IDE&#xff1b; 2.代码 项目结构如下&#xff1a; mydial…

Navicat Premium数据库新建函数报错问题

1.问题产生原因&#xff1a; (1)可能是软件 Navicat Premium 的版本不一样 (2)可能是与某些字符集不一样 2.找出解决办法&#xff1a; (1)参考对照系统自带sys数据库表的函数找出的区别&#xff08;后面遇到同样问题可以这样排查&#xff09; (2)不加 DETERMINISTIC 声明&a…

js图片回显的方法

直接上代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body>// HTML部分<input type"file" id"fileInput"><button onclick"show…

Nginx内网环境开启https

文章目录 前言一、open-ssl1. 验证2. 安装3.生成ssl证书 一、nginx1. 验证支持模块2. 安装必要模块2.1 重新编译nginx2.2 替换原文件 3. 配置https 总结 前言 nginx开启https前提&#xff1a; 服务器支持open-sslnginx 包含--with-http_ssl_module --with-stream --with-stre…

融知财经:期货和现货的区别是什么?哪个风险大?

期货和现货在交易对象等方面存在明显的区别。期货交易是一种衍生金融工具&#xff0c;主要用于价格发现、风险管理和投机&#xff0c;而现货交易则是商品和服务的实际买卖。在选择进行期货交易还是现货交易时&#xff0c;投资者需要根据自己的需求和市场情况来决定。 期货和现货…

In Context Learning(ICL)个人记录

In Context Learning&#xff08;ICL&#xff09;简介 In Context Learning&#xff08;ICL&#xff09;的关键思想是从类比中学习。上图给出了一个描述语言模型如何使用 ICL 进行决策的例子。首先&#xff0c;ICL 需要一些示例来形成一个演示上下文。这些示例通常是用自然语言…