OFDM802.11a的FPGA实现(三)发射机的基带整体架构详细讲解

1. 前言

  在前面的文章对OFDM技术和802.11a进行了简单的介绍,并对发射机的基带设计提供了一些自己的思路。上一篇文章,基于valid-ready双向握手机制设计了整个系统常用到的串并转换模块,并且将其参数化,使用非常方便。这章再详细讲述下发射机基带系统的整体构架,需要把协议的逻辑理清楚才方便后面仿真和实现。自己刚开始看也是一头雾水,后面花时间整理了一些图片,发现理解起来容易了不少。下面结合图片加上少量的文字说明,进行讲解。

2.整体架构

  OFDM的发射机的结构如下图所示。可以将OFDM发射机分为5个部分,分别是上层用户数据产生模块(MAC层), 802.11a前导码产生模块(长、短训练码),802.11a signal域数据产生模块(Rate和Length), 802.11a data域数据产生模块(service域,PSDU,尾比特以及填充比特), 802.11a组帧模块(PPDU)。
发射机基带整体构架PPDU帧结构

2.1 用户数据产生模块

  在进行OFDM实验的时候,希望能够产生一些测试数据,能够用于之后的系统的验证,在这里可以设计一个数据产生模块,该模块能够按照需要产生测试的数据,并且将数据的长度给到后续的模块进行使用。
  这个数据长度是字节长度,数据长度将会填充在802.11a当中的signal域当中,除此之外,在计算OFDM 符号个数的时候,也需要使用数据的长度。
L = 48 × K × M × r a t e L=48 \times K\times M \times rate L=48×K×M×rate
  其中 L L L表示数据长度, K K K表示OFDM符号数, M M M表示调制阶数, r a t e rate rate表示编码速率,48是实际子载波个数。
  我们用matlab产生测试数据,并存为txt文件,供后面使用,代码如下:

%% 原始序列输入 
num_in = round(rand(1,1e4));  
%% 参数设置
%调制参数设置
M = 4;      %调制阶数。1-BPSK,2-QPSK,3-8QAM,4-16QAM,5-32QAM,6-64QAM
k = 1 ;    %OFDM符号数
code_rate = 9; %卷积编码速率。12--无卷积编码,9--3/4速率,6--1/2速率,8--2/3速率
leng_num_in = k .* 48 .* M ./12 .* code_rate;
num_in = num_in(1:leng_num_in);     %截取输入序列长度
w = length(num_in)./code_rate.*6 /192;      %调制前数据组数目
%%写txt文件
fid= fopen('D:/FPGA/OFDM_802.11a_my/TX/matlab/test_data.txt','w');
fprintf(fid,'%d\r\n',num_in);
fclose(fid);

产生的测试数据
  需要注意的是,原始序列输入使用了rand函数生成0-1之间的随机数,所以每运行一次,测试数据是会改变的。

2.2 Preamble产生模块

  在Preamble产生模块当中,实现802.11a的短训练序列(STS)和长训练序列(LTS)的生成。
PPUD具体结构

2.3 signal域

  在前导码之后是signal域,signal域主要包含Rate和Length两个字段,Rate用于传输有关后续数据符号所用到调制信息和码速率。Length字段用于传输PSDU传输的用户数据的字节数。Signal域
  在Rate字段需要根据所需要的调制方式和码速率填入对应的值。Signal域的Rate表

  • Length字段需要注意的是,传输是从LSB到MSB。
  • 除了Rate字段和Length字段之外,还有一些还有一些其他校验位和空闲位。
  • 其中bit4是保留位,bit17是偶校验位,用来对前面的16bit进行校验。还有6位的尾bit。

2.4 Data域

  在signal域之后就是数据域,Data域主要包含16bit的service域,PSDU,6bit的尾比特以及填充比特。Data域的Service域
  service域的前7个比特需要给领用来初始化接收机的解扰器,剩下的为保留位,在发送机当中总给零,在之后就是PSDU域,该域由用户数据转换而来,用户数据转换为bit序列填入到PSDU域当中。在PSDU域结束之后是6bit的尾bit,尾bit之后是pad比特,pad比特的目的是使得DATA域的长度能够刚好为OFDM symbol的整数倍。
  关于padbit的计算,在802.11a协议当中也给出了详细的说明:关于padbit的计算  首先计算出当前数据长度下,所需要的OFDM的symbol的数量,其中16+8*length+6,分别表示的是,service域bit,psdu数据bit,6位尾bit,NDBPS表示每个OFDM包含的数据bit的数量。相除的结果进行向上取整,从而得到完整的OFDM的符号个数,在用完整的OFDM符号的个数所包含的bit数减去总共的bit数量,从而得到需要填充的pad比特。
下表展示了不同调制方式的速率:
不同调制方式的速率

2.5 802.11a组帧模块

  在最后还有一个802.11a的组帧模块,该模块的作用是将前导码,signal域,Data域所产生的时域波形给整合成最终需要发送的OFDM的数据。按照前导码,signal域,Data域的形式进行排列。
在802.11a组帧

3. Data域和Signal域的具体实现

  在Data域和Signal域模块当中,还有一些子模块,这些子模块对实现整个802.11a发射机十分重要,后面慢慢进行更新介绍。
  我们从Data域入手,因为Signal域只包含一个OFDM符号,且不用扰码和删余操作。Preamble产生模块当中的短训练序列(STS)和长训练序列(LTS),由于数据是固定的,我们可以预先存储在ROM当中,之后按照需要读出来即可。所以从最复杂的部分开始下手,弄清楚了Data域的实现过程之后,signal域的实现就十分简单了。
原文连接(相关文章合集)OFDM的xilinx FPGA实现

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值