OFDM802.11a的FPGA实现(一)valid_ready双向握手机制.docx

本文介绍了对802.11a协议OFDM发射机基带部分的MATLAB仿真和FPGA实现,作者基于《基于XilinxFPGA的OFDM通信系统基带设计》一书,提出了改进的valid-ready双向握手机制,以解决不同数据速率时钟同步问题,优化了时钟设计和数据传输流程。
摘要由CSDN通过智能技术生成

1. 前言

上一篇文章对802.11a协议进行了概述,接下来对该协议的OFDM发射机基带分模块进行MATLAB仿真和FPGA的实现。
FPGA实现

2. 整体设计思路

2.1 借鉴书籍

之前学习的时候参考了书籍《基于XILINX FPGA的OFDM通信系统基带设计》。书中的思路是,按照IEEE802.11a标准的规定,一个OFDM符号的长度为4us,其中共有80个采样点,这样对于64点的IFFT处理模块而言,要求其工作频率在4us/8064=3.2us时间内输出64个样值,即工作时钟频率为1/(3.2s/64)=20MHz。因此,本系统使用20MHz时钟作为整个基带处理器的系统时钟(SYS_CLK)。由于本书是采用16QAM调制方式,因此4个输人比特对应一组调制后的I/Q两路数据,若使得调制后输出为20MHz,则输人数据需要20MHz4=80MHz(CB_CLK)的时钟;另外本书中的编码效率为3/4,因此,在编码和截断之前的数据速率应为80MHz*3/4=60MHz(DIN_CLK);MAC层送往物理层的数据为字节格式,物理层处理时要首先进行8位的并/串变换,因此,MAC_CLK作为MAC层时钟的大小为60MHz/8=7.5MHz。
书中的思路
书中思路所用到的时钟

书中只是实现了一种调制方式和一种编码效率就使用了4种时钟,另外802.11a中规定了的调制方案和编码效率有8种,如下图所示:
在这里插入图片描述

2.2 作者对书中设计思路的看法

按照该书的思路,实现整个协议岂不是要用到32种时钟,这在我看来是不科学的。频繁的进行跨时钟域的数据处理,不仅给后期调试带来困难和隐患,而且实际实现的时候及其容易翻车。且网上大部分人也是这样操作的,对此我决定换一种设计思路。当然,作者也是一位小白,看法不一定正确,只是在阅读资料时有了自己的想法,决定去实现一下看能否行得通,顺便记录一下学习过程。
考虑到IFFT的输出需要满足20MHz的数据速率,使用最快的传输方案,64-QAM调制+3/4编码效率。编码前的数据速率应该为2063/4=90MHz;编码后的数据速率为20*6=120MHz。整个系统个人认为使用120MHz的时钟是比较合理的,如果后期有问题再进行调整。作者设计时,不打算采用书中增加时钟的方法来进行处理,而是采用valid-ready双向握手机制,来解决数据速率不同步的问题。握手协议的原则是:当Valid和Ready信号同时高有效时,数据在时钟上升沿传输。

2.3 valid-ready双向握手机制

使用valid-ready双向握手机制,各级模块连接方式如下图所示:
在这里插入图片描述

除此之外,也可以灵活的进行其他更为复杂的连接:在这里插入图片描述

Valid-Ready信号产生有三种情况:

  • (1) Ready-Before-Valid,即Ready信号在Valid信号之前有效。如下时序图:

    在这里插入图片描述

    这样设计使得在数据来临之前,通道已准备好接收数据,可以保持通道的最大吞吐量,因为Ready先产生,这个通道保持刷新等待数据。通道作为接受数据端采用这样的设计。

  • (2)Valid-before-Ready,即Valid信号在Ready信号之前有效。时序图如下所示: 在这里插入图片描述

    通道作为数据输出端采用这样的设计。收到下游接收端的准备接收信号,才开始传输数据。

  • (3)Valid-Ready协议’Stalemate’情况。Stalemate可以理解为“锁住”。假设我们不遵守上面两种接收端和输出端的设计规则。输出端用Ready-Before-Valid而接受端使用Valid-before-Ready,就会出现输出端等待接受端给出的Ready来输出数据,但是接收端也在等待输出端给出Valid信号来接受数据。两者都在等待却没有一方先给,所以这个时候这个通道就是无效的,被“锁住”了。管道会出现停止传输或者传输数据为空的情况,分别如下两图所示:停止传输

传输数据为空

3.总结

这节先讲valid_ready双向握手的机制,为后面设计流水级的模块奠定基础,先不放代码,下节写串并/并串转换的时候一起把这部分代码展现。

原文链接(含完整工程):
OFDM802.11a的FPGA实现(二)基于valid-ready双向握手机制的串并和并串转换
OFDM802.11a概述
OFDM802.11a的FPGA实现(一)valid_ready双向握手机制

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值