OFDM802.11a的FPGA实现(十五)短训练序列:STS(含Matlab和verilog代码)

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

1.前言

  在之前已经完成了data域数据的处理,在构建整个802.11a OFDM数据帧的时候,还剩下前导码和signal域的数据帧,这两部分的内容。 PLCP的前导部分由一组重复10次的短训练序列和一组加了一个长型保护间隔与重复2次的有效OFDM符号组成的长训练序列组成。今天先来实现短训练序列。

PPDU帧结构
PPDU帧结构

PPDU帧结构
标PPDU帧结构题

2.原理

  短训练序列的主要用途是进行信号的检测、AGC和粗频偏估计。短训练序列都是经过精心的设计,每个短训练序列的长度为0.8us,在802.11a的前导码当中一共有10个短训练序列。这些短训练序列符号占据每个OFDM符号的52个非零子载波当中的12个。如果用-26~26来标识非零子载波的话,那么短训练序列的子载波的序号为{-24, -20, -16, -12, -8, -4, 4, 8, 12, 16, 20, 24},其中传输的传输数据为一个固定的伪随机序列,采用的QPSK的映射方式。

短训练序列
标短训练序列题

  由于短训练序列只用了52个子载波当中12个来传输符号,因此为了保证OFDM符号的功率稳定,需要乘以因子 。短训练序列的的选择可以是的在较大的范围内实现粗频率估计,通常对于周期为T的重复符号而言,最大可估计的频率偏差为,因此通过测量连续两个长度为0.8us的短训练序列符号的相位差,可以估计的频率偏差可达625KHz。 训练序列生成模块主要是提前将长、短序列的时域样值计算出并存入RAM中,需要时直接读取数据即可。

3.Matlab仿真

  由于Data域数据在IFFT处理之前会扩大8倍,相应的长训练序列在进行IFFT处理之前也需要扩大8倍。同时长、短训练序列也是需要经过加窗处理的,即多输出一个样值,该值为第一个样值,同时将第一个样值与最后一个样值缩小一倍。Matlab生成短训练序列代码如下:

%产生长短训练序列、帧头
short_training =[0,0,0,0,-1-1i,0,0,0,-1-1i,0,0,0,1+1i,0,0,0,1+ ...1i,0,0,0,1+1i,0,0,0,1+1i,0,0,0,0,0,0,0,0,0,0,0,0,0,...0,0,1+1i,0,0,0,-1-1i,0,0,0,1+1i,0,0,0,-1-1i, ...0,0,0,-1-1i,0,0,0,1+1i,0,0,0]; % short training sequence
sts_frq = (13/6)^0.5 .* short_training;
sts_time = 8*ifft(sts_frq,64);    %对短训练序列进行ifft
%取16点,将该序列重复10次
sts16 = sts_time(1:16);
sts16_q = num2bin(q,sts16);%量化,存到FPGA的ROM
sts_rom = sts16;
for n = 1:9sts_rom = [sts_rom,sts16];
end
q = quantizer('fixed','round','saturate',[8,6]);%复数以8位定点数形式进行输出,格式为:1位符号位,一位整数位,6位小数位,负数以补码形式表示。
sts_rom = [0.5*sts_rom(1),sts_rom(2:end),0.5*sts16(1)];     %加窗

  生成的STS序列如下表所示,把它们存到FPGA的ROM里面:

地址实部虚部地址实部虚部
08'b000110008'b0001100088'b000110008'b00011000
18'b101111008'b0000000198'b000000018'b10111100
28'b111110018'b11011000108'b110110008'b11111001
38'b010010018'b11111010118'b111110108'b01001001
48'b001011118'b00000000128'b000000008'b00101111
58'b010010018'b11111010138'b111110108'b01001001
68'b111110018'b11011000148'b110110008'b11111001
78'b101111008'b00000001158'b000000018'b10111100

4.硬件实现

  STS一个周期的16个时域样值被存入片内ROM中,ROM的具体内容如上面的表所示,该ROM共有16个地址空间,每个地址对应16位的字长,其中高8位存储STS样值的虚部,低8位存储STS样值的实部(与IFFT输出保持一致)。ROM的地址信号由一个模161的计数器生成。STS_din_rdy作为ROM的读使能信号,代表后面的模块准备好接收数据。当STS_din_rdy为高时,计数器以模161形式开始计数161个时钟,生成的地址信号为计数器的低4位,即cnt[3:0]控制ROM将其中存储的16个STS样值重复读取10个周期,形成标准所规定的短训练序列。 代码如下:

assign En_cnt = STS_din_rdy & ~cnt_last;counter #(.CNT_NUM('d161),.ADD(1'b1))
u_counter(
.clk  (clk    ), 
.rst_n  (rst_n    ),
.En_cnt  (En_cnt    ),      
.cnt  (cnt    ), 
.cnt_last (cnt_last   )
);always @(posedge clk or negedge rst_n) if(!rst_n)beginSTS_dout_last <= 1'b0;STS_dout_Index <= 'd0;endelse beginSTS_dout_last <= cnt_last;STS_dout_Index <= cnt;endalways @(posedge clk or negedge rst_n) beginif(~rst_n) begin  //时域样值Im       ReShort_Mem[0]  <= {8'b00011000,8'b00011000};      Short_Mem[1]  <= {8'b00000001,8'b10111100};Short_Mem[2]  <= {8'b11011000,8'b11111001};Short_Mem[3]  <= {8'b11111010,8'b01001001};Short_Mem[4]  <= {8'b00000000,8'b00101111};Short_Mem[5]  <= {8'b11111010,8'b01001001};Short_Mem[6]  <= {8'b11011000,8'b11111001};Short_Mem[7]  <= {8'b00000001,8'b10111100};Short_Mem[8]  <= {8'b00011000,8'b00011000};Short_Mem[9]  <= {8'b10111100,8'b00000001};Short_Mem[10] <= {8'b11111001,8'b11011000};Short_Mem[11] <= {8'b01001001,8'b11111010};Short_Mem[12] <= {8'b00101111,8'b00000000};Short_Mem[13] <= {8'b01001001,8'b11111010};Short_Mem[14] <= {8'b11111001,8'b11011000};Short_Mem[15] <= {8'b10111100,8'b00000001};STS_dout <= 'd0;STS_dout_vld <= 1'b0;endelse if(STS_din_rdy & STS_dout_last)STS_dout_vld <= 1'b0;else if(cnt == 'd0 | cnt_last)beginSTS_dout <= {Short_Mem[0][15:8]>>1,Short_Mem[0][7:0]>>1};STS_dout_vld <= 1'b1;endelse beginSTS_dout <= Short_Mem[cnt[3:0]]; STS_dout_vld <= 1'b1;end
end

  此处的设计已经考虑了加窗处理(Windowing),该操作在硬件中的实现方法是:将要进行加窗处理的数据单元(STS)多输出一个样值(数据单元的第一个样值),同时将数据单元的第一个样值和最后一个样值缩小1倍。在传输时,一个数据单元的最后一个样值将与下一个数据单元的第一个样值进行相加,成为一个采样点。因此,本设计中计数161个而非160个时钟,它将控制ROM在第161个时钟周期内再输出一个样值(地址为0的第一个样值)。模块的输出部分会对第一个和最后一个样值执行右移1位(即除以2)的操作,从而最终完成加窗处理。

5.MosdelSim仿真

仿真缩略图
标题仿真缩略图

仿真细节图
标仿真细节图题

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

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

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

相关文章

【MySQL】Mysql——卸载文档(windows版本)

MySQL卸载文档-Windows版 1. 停止MySQL服务 winR 打开运行&#xff0c;输入 services.msc 点击 “确定” 调出系统服务。 停止Mysql服务 2. 卸载MySQL相关组件 打开控制面板 —> 卸载程序 —> 卸载MySQL相关所有组件 3. 删除MySQL安装目录 4. 删除MySQL数据目录 数…

Axure网上超市用户端APP原型 (O2O生鲜电商/买菜到家/数字零售/京东到家/抖音超市领域)

作品概况 页面数量&#xff1a;共 100 页 源文件格式&#xff1a;rp格式&#xff0c;兼容 Axure RP 9/10&#xff0c;非程序软件无源代码 适用领域&#xff1a;O2O生鲜电商、网上超市、买菜到家、数字零售 作品特色 本作品为网上超市用户消费端Axure交互原型&#xff0c;属于…

食品饮料厂做配送小程序的作用是什么

食品饮料厂品牌旗下通常有多个产品类型&#xff0c;多数是以批发为主&#xff0c;也有直营店及线上直播零售等方式&#xff0c;商家如何将品牌宣传和产品销售的更广是需要思考的&#xff0c;其销售模式也多种多样。 私域店铺也是品牌增长的重要方式&#xff0c;在【雨科】平台…

prompt工程策略(一:使用 CO-STAR 框架来搭建 prompt 的结构)

原文&#xff1a;我是如何赢得GPT-4提示工程大赛冠军的 原文的原文&#xff1a; How I Won Singapore’s GPT-4 Prompt Engineering Competition 为了让 LLM 给出最优响应&#xff0c;为 prompt 设置有效的结构至关重要。CO-STAR 框架是一种可以方便用于设计 prompt 结构的模板…

同为科技详解智能PDU所应用的通信协议与接口

现如今&#xff0c;信息服务、AI人工智能的飞速发展与增长&#xff0c;全球正经历信息数据的爆炸。不仅数据量以惊人的速度增长&#xff0c;而且全球社会各行业对数据的依赖的程度也在日益增加。这些趋势使数据中心在全球都享有关键基础架构的地位。假设某个数据中心发生严重的…

USB2514BI-AEZG-TR USB2.0 接口转换集成电路 QFN-36参数指南

USB2514BI-AEZG-TR USB接口集成电路 USB2514BI-AEZG-TR 是一款USB接口集成电路。工作电压为3.3V&#xff0c;采用36-Pin VQFN封装。它支持USB 2.0协议&#xff0c;最大操作频率为24 MHz&#xff0c;最小操作供应电压为3V&#xff0c;最大输出电流为150mA。该器件适用于需要USB集…

力扣416. 分割等和子集

Problem: 416. 分割等和子集 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该题目可以归类为0-1背包问题&#xff0c;具体到细节可以再归纳为背包是否装满问题 1.首先判断数组元素和的奇偶性&#xff08;奇数则不能划分&#xff09; 2.我们定义一个二维布尔类型数组…

C++|多态性与虚函数(2)|虚析构函数|重载函数|纯虚函数|抽象类

前言 看这篇之前&#xff0c;可以先看多态性与虚函数&#xff08;1&#xff09;⬇️ C|多态性与虚函数&#xff08;1&#xff09;功能绑定|向上转换类型|虚函数-CSDN博客https://blog.csdn.net/weixin_74197067/article/details/138861418?spm1001.2014.3001.5501这篇文章会…

图像归一化处理

归一化 归一化是一种简化计算的方式&#xff0c;即将有量纲的表达式&#xff0c;经过变换&#xff0c;化为无量纲的表达式&#xff0c;成为标量。 在多种计算中都经常用到这种方法。 简单介绍 归一化是一种无量纲处理手段&#xff0c;使物理系统数值的绝对值变成某种相对值关…

spacy NER 位置信息不考虑空格!!!

texts ["疫情期间&#xff0c;俄罗斯 联邦军队医疗机构的负责人Saanvi Alia在方城县启动了远程医疗服务。","疫情期间&#xff0c;俄罗斯 联 邦 军队医疗机构的负责人Saanvi Alia在方城县启动了远程医疗服务。","疫情期间&#xff0c;俄罗 斯 联 邦 …

在线音乐系统

文章目录 在线音乐系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;带走&#xff09; 在线音乐系统 一、项目演示 音乐网站 二、项目介绍 基于springbootvue的前后端分离在线音乐系统 登录角色 : 用户、管理员 用…

视频提取动图怎么制作?一个方法将视频转换gif

现在这个日益发展的科技社会&#xff0c;视频作为我们广泛应用的一种媒体形式&#xff0c;在各个领域都扮演着重要的角色。视频凭着丰富生动的内容成为传递信息的媒介。但是视频的体积也是比较大的&#xff0c;在使用的过程中会受到各种各样的限制。这个时候就可以使用gif在线制…