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.pswp.cn/diannao/12398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12398.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nodejs筆記2

模塊化 模塊化初體驗 模塊暴露數據 導入模塊 fs 寫絕對路徑 require寫相對路徑不會受到影響 ./../不能省略 js 和json文件后綴可以省略 如果存在 命名相同的js和json文件&#xff0c;優先導入js文件 導入文件夾時的情況 require導入模塊的基本流程 commonJS模塊…

其它高階數據結構①_并查集(概念+代碼+兩道OJ)

目錄 1. 并查集的概念 2. 并查集的實現 3. 并查集的應用 3.1 力扣LCR 116. 省份數量 解析代碼1 解析代碼2 3.2 力扣990. 等式方程的可滿足性 解析代碼 本篇完。 寫在前面&#xff1a; 此高階數據結構系列&#xff0c;雖然放在⑤數據結構與算法專欄&#xff0c;但還是作…

【數據可視化01】matplotlib實例介紹4之六邊形分箱圖

目錄 一、引言二、實例介紹 一、引言 hexbin是一個二維直方圖&#xff0c;其中箱子是六邊形&#xff0c;顏色表示每個箱子內的數據點數。 二、實例介紹 import matplotlib.pyplot as plt import numpy as np# Fixing random state for reproducibility np.random.seed(19680…

服務器利用率的神器腳本

在服務器管理的過程中&#xff0c;了解服務器的各項性能指標是至關重要的。無論是CPU的負載情況&#xff0c;內存使用情況&#xff0c;還是硬盤的存儲空間以及TCP連接狀態&#xff0c;這些都是我們判斷服務器健康狀態和性能的重要依據。然而&#xff0c;手動一項項去檢查這些指…

【MySQL】Mysql——安裝指南(Linux)

MySQL8.0.26-Linux版安裝 1. 準備一臺Linux服務器 云服務器或者虛擬機都可以; Linux的版本為 CentOS7; 2. 下載Linux版MySQL安裝包 3. 上傳MySQL安裝包 4. 創建目錄,并解壓 mkdir mysqltar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql5. 安裝mysql的安裝包 …

pip鏡像源

1.1 清華大學 https://pypi.tuna.tsinghua.edu.cn/simple 1.2 阿里云 https://mirrors.aliyun.com/pypi/simple/ 1.3 網易 https://mirrors.163.com/pypi/simple/ 1.4 豆瓣 https://pypi.douban.com/simple/ 1.5 百度云 https://mirror.baidu.com/pypi/simple/ 1.6 中科大 ht…

uniapp vue 獲取天氣數據

獲取當前地址&#xff0c;通過高德天氣數據&#xff0c;來展示天氣溫度風度等數據 //獲取天氣 getWeather(){// 獲取天氣預報uni.request({url: https://restapi.amap.com/v3/weather/weatherInfo, data: {city: 長沙,// extensions:all,key: xxxxxxxxxx//自己的高德密鑰key},…

2024OD機試卷-轉盤壽司 (java\python\c++)

題目:轉盤壽司 題目描述 壽司店周年慶,正在舉辦 優惠活動 回饋新老客戶。 壽司轉盤上總共有 n 盤壽司,prices[i] 是第 i 盤壽司的價格, 如果客戶選擇了第 i 盤壽司,壽司店免費贈送客戶距離第 i 盤壽司最近的下一盤壽司 j,前提是 prices[j] < prices[i],如果沒有滿足…

RAG 面向 LLM: 基于檢索增強的大語言模型調研

摘要 作為 AI 領域最先進的技術之一,檢索增強生成(RAG)技術可以提供可靠和最新的外部知識,為眾多任務提供巨大的便利。特別是在 AI 生成內容(AIGC)時代,RAG 中檢索強大的提供額外知識的能力使得檢索增強生成能夠輔助現有生成式 AI 生產高質量輸出。最近,大語言模型(LLM)在語言…

Zoho CRM企業成長的智能引擎,智能化銷售自動化

數字化時代&#xff0c;客戶體驗已成為企業競爭的核心要素。卓豪Zoho CRM&#xff0c;作為全球領先的SaaS云端客戶關系管理平臺&#xff0c;正引領著一場企業運營模式的變革&#xff0c;助力超過25萬家企業跨越180多個國家&#xff0c;實現客戶互動與業務增長的無縫對接。讓我們…

廣汽原車控制系統CAN協議控制汽車基本信息獲取及數據應用

在現代汽車工業的迅速發展中&#xff0c;車輛控制系統的智能化和網絡化已成為提升汽車性能的關鍵。廣汽作為中國汽車行業的佼佼者&#xff0c;其在原車通信網絡方面也取得了顯著的成就。特別是廣汽原車CAN&#xff08;Controller Area Network&#xff09;協議的應用&#xff0…

2024OD機試卷-分割均衡字符串 (java\python\c++)

題目:分割均衡字符串 題目描述 均衡串定義: 字符串 中只包含兩種字符,且這兩種字符的個數相同。 給定一個均衡字符串,請給出可分割成新的均衡子串的最大個數。 約定:字符串中只包含大寫的 X 和 Y 兩種字符。 輸入描述 字符串的長度:[2, 10000]。 給定的字符串均為均…

添磚Java之路(其六)——通過集合制作的學生信息管理系統

目錄 前言&#xff1a; 源碼&#xff1a; 前言&#xff1a; 我對于集合的理解&#xff0c;感覺就類似于順序表這樣的數據結構&#xff0c;然后他存儲的數據不能是基本類型&#xff0c;如果要用也只能用對應基本數據的包裝類。 對于集合有很多方法&#xff0c;我的建議就是去…

【運維】nvidia-smi錯誤信息:Failed to initialize NVML: Driver/library version mismatch

【運維】錯誤信息&#xff1a;Failed to initialize NVML: Driver/library version mismatch 是因為Nvidia的驅動沖突的原因 本地部署&#xff1a;本地Docker容器部署&#xff0c;本地驗證后打包鏡像 遠程部署&#xff1a;鏡像部署阿里云PAI EAS 因為在容器中安裝了驅動版本&a…

短視頻最后的慢動作怎么做:成都鼎茂宏升文化傳媒公司

短視頻最后的慢動作怎么做&#xff1a;技巧與創意實踐指南 在短視頻創作的浩瀚宇宙中&#xff0c;慢動作特效如同一顆璀璨的星辰&#xff0c;為作品增添無限魅力與情感深度。它不僅能夠放大細節之美&#xff0c;還能延長關鍵瞬間&#xff0c;引發觀眾強烈的情感共鳴。短視頻最…

SpringBoot項目的項目部署全過程

一、前端 安裝nginx 1.將提前準備好的nginx的安裝包上傳到Linux中/opt目錄下(我用的是Xftp) 2.解壓 2.1:在xshell中解壓該文件: tar -zxvf nginx-1.20.1.tar.gz 2.2:進入解壓后的目錄 cd nginx-1.20.1/ 2.3:安裝需要的依賴 yum -y install zlib zlib-devel openssl openssl-de…

html特殊字符的html,js,css寫法匯總

? 箭頭類 符號UNICODE符號UNICODEHTMLJSCSSHTMLJSCSS?&#8672\u21E0\21E0?&#8674\u21E2\21E2?&#8673\u21E1\21E1?&#8675\u21E3\21E3?&#8606\u219E\219E?&#8608\u21A0\21A0?&#8607\u219F\219F?&#8609\u21A1\21A1←&#8592\u2190\2…

FreeRTOS【4】線程掛起和恢復

1.開發背景 基于上一篇指引&#xff0c;成功創建并啟動線程后&#xff0c;線程已經開始運行了&#xff0c;但是有時我們需要線程暫停運行&#xff0c;例如某個線程是控制 LED 閃燈的&#xff0c;如果現在需要讓 LED 停止工作&#xff0c;單純的關閉 LED 是沒用的&#xff0c;因…

Python中json數據的常用操作函數:dump load dumps和loads

文章目錄 dump函數load函數dumps函數loads函數 dump函數 功能&#xff1a;將Python對象序列化為JSON格式的字符串&#xff0c;并寫入到文件中。這個方法用于將數據保存到文件中。語法&#xff1a;json.dump(需要進行json序列化的Python對象, 寫入的文件路徑) load函數 功能&…

文科生在三本院校,讀計算機專業

6歲&#xff0c;進入村小&#xff0c;一年級&#xff0c;老師問我的夢想是什么&#xff0c;我說我長大了我要成為科學家。 9歲&#xff0c;三年級&#xff0c;知道科學家不現實&#xff0c;開始學習英語。又因為科學家英語不好發音&#xff0c;于是我的夢想變了&#xff0c;長…