OFDM 802.11a的FPGA实现(十八)signal域数据处理

目录

[1. 前言](#1. 前言)

2.硬件实现

3.verilog代码

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

1. 前言

在之前的博客当中,已经实现了802.11a当中数据域的一系列处理,最终得到了数据域的时域波形。相较于数据域,signal域的处理很类似并且更简单。

2.硬件实现

·signal域的数据不需要进行加扰和删余操作,因此实现起来比较简单。

·signal域的数据不需要进行二级交织,只需一级交织。

·signal域的数据采用的是BPSK的调制方式,占据一个OFDM符号。

下图的紫色部分,显示了signal域数据的处理过程。

OFDM发射模块

signal域数首先会根据格式产生一帧数据,然后这个数据再依次经过1/2卷积编码,一级交织,BPSK调制,IFFT转换以及添加循环前缀之后,最终得到signal域的时域波形。和data域的区别是不进行扰码,删余和二级交织,所示设计上,在data域处理流程中添加Signal_Flag为Signal符号标志信号,屏蔽这些模块即可实现signal域数剧处理。如下图所示:

添加Signal_Flag后的打他域处理电路图

3.verilog代码

以扰码模块为例进行,添加Signal_Flag为Signal符号标志信号,如下所示:

cpp 复制代码
 
`timescale 1ns / 1ps 
///
//扰码多项式  s(x) = x^7 + x^4 + 1                                                                                
/// 
 
module scramler( 
input               clk           , 
input               rst_n         , 
input       [6:0]   scram_seed    , //扰码器初始状态
input               scram_load    ,
input               scram_din     , 
input            scram_din_vld  , 
input    scram_din_rdy  ,
input    scram_din_sig_flag ,
input  [3:0] scram_din_rate_con ,                                      
output  reg      scram_dout    ,
output  reg      scram_dout_vld  ,
output     scram_dout_rdy  ,
output reg   scram_dout_sig_flag ,
output reg [3:0] scram_dout_rate_con 
);

    reg     [6:0]   shift_reg ;
 wire   scram_en ;
 
assign scram_dout_rdy = scram_din_rdy    ; 
assign scram_en =  scram_dout_rdy & scram_din_vld ;
 
    always@(posedge clk or negedge rst_n ) begin
        if(!rst_n) begin
            shift_reg <= 0;
            scram_dout <= 0;
            scram_dout_vld  <= 0; 
   scram_dout_sig_flag <= 0;
   scram_dout_rate_con <= 4'b1011;
        end 
        else if( scram_load ) begin 
            shift_reg <= scram_seed; 
            scram_dout_vld <= 0; 
        end
        else if( scram_en) begin
   if(~scram_din_sig_flag)begin
    scram_dout <= shift_reg[6] + shift_reg[3] + scram_din; //s(x) = x^7 + x^4 + 1 
    scram_dout_vld  <= 1; 
    shift_reg <= {shift_reg[5:0],(shift_reg[6]+shift_reg[3])}; 
   end
   else begin
    scram_dout <= scram_din;
    scram_dout_vld  <= 1;
   end
   scram_dout_sig_flag <= scram_din_sig_flag;
   scram_dout_rate_con <= scram_din_rate_con;
        end
        else if(scram_dout_vld & scram_din_rdy)begin //下游接受完毕,没有新数据进来,vld拉低 
            scram_dout_vld  <= 0; 
        end
    end

endmodule   

在scram_din_sig_flag = 1时,不启动扰码模块直接将输入进行输出。同时还添加了scram_din_rate_con信号,用于接收调制方式和数据速率。

这里只展示了扰码模块的修改,其他模块修改也是一样的。Signal域中的信息比特的处理过程与Data域相同,只是标准规定其只能采用BPSK调制而不能用更加复杂的调制方式,编码方式为1/2码率的卷积编码,不再进行删余操作,以尽可能保证可靠传输。这样Signal域就可以得到6Mb/s的信息传输速率,这是IEEE802.11a中所规定的最低速率,同时也是最为可靠的传输方式,以确保Signal域信息的正确接收。

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

相关推荐
LabVIEW开发19 小时前
LabVIEW与FPGA超声探伤
fpga开发·labview·labview功能
cycf20 小时前
FPGA设计中的数据存储
fpga开发
FPGA之旅2 天前
FPGA从零到一实现FOC(一)之PWM模块设计
fpga开发·dubbo
XMAIPC_Robot2 天前
基于ARM+FPGA的光栅尺精密位移加速度测试解决方案
arm开发·人工智能·fpga开发·自动化·边缘计算
cycf2 天前
状态机的设计
fpga开发
szxinmai主板定制专家2 天前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
千宇宙航2 天前
闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
fpga开发
千宇宙航3 天前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
小眼睛FPGA3 天前
【RK3568+PG2L50H开发板实验例程】FPGA部分/紫光同创 IP core 的使用及添加
科技·嵌入式硬件·ai·fpga开发·gpu算力
forgeda3 天前
如何将FPGA设计验证效率提升1000倍以上(2)
fpga开发·前沿技术·在线调试·硬件断点·时钟断点·事件断点