【硬件測試】基于FPGA的16QAM+幀同步系統開發與硬件片內測試,包含高斯信道,誤碼統計,可設置SNR

目錄

1.算法硬件測試效果

2.算法涉及理論知識概要

2.1 16QAM調制解調原理

2.2 幀同步

3.Verilog核心程序

4.開發板使用說明和如何移植不同的開發板

5.完整算法代碼文件獲得


1.算法硬件測試效果

本文是之前寫的文章:

《基于FPGA的16QAM+幀同步系統verilog開發,包含testbench,高斯信道,誤碼統計,可設置SNR》

的硬件測試版本。

在系統在仿真版本基礎上增加了ila在線數據采集模塊,vio在線SNR設置模塊,數據源模塊。硬件ila測試結果如下:(完整代碼運行后無水印):

vio設置SNR=20db

vio設置SNR=15db

硬件測試操作步驟可參考程序配套的操作視頻。

2.算法涉及理論知識概要

? ? ? 16QAM全稱正交幅度調制是英文Quadrature Amplitude Modulation的縮略語簡稱,意思是正交幅度調制,是一種數字調制方式。產生的方法有正交調幅法和復合相移法。16QAM是指包含16種符號的QAM調制方式。

2.1 16QAM調制解調原理

? ? ? 16QAM是用兩路獨立的正交 4ASK 信號疊加而成,4ASK 是用多電平信號去鍵控載波而得到的信號。它是 2ASK 調制的推廣,和 2ASK 相比,這種調制的優點在于信息傳輸速率高。正交幅度調制是利用多進制振幅鍵控(MASK)和正交載波調制相結合產生的。16進制的正交振幅調制是一種振幅相位聯合鍵控信號。16QAM 的產生有 2 種方法:

(1)正交調幅法,它是有 2 路正交的四電平振幅鍵控信號疊加而成;

(2)復合相移法:它是用 2 路獨立的四相位移相鍵控信號疊加而成。

這里采用正交調幅法。 ? ? ??

? ? ? ?數字信號是通過FPGA的輸出端口生成的。在16QAM調制中,每個符號包含4個比特,因此需要一個4位二進制計數器來生成數字信號。計數器的輸出被映射到星座圖上的一個點,然后通過數字到模擬轉換器(DAC)轉換為模擬信號。串/并變換器將速率為Rb的二進制碼元序列分為兩路,速率為Rb/2.2-4電平變換為Rb/2 的二進制碼元序列變成速率為RS=Rb/log216 的 4 個電平信號,4 電平信號與正交載波相乘,完成正交調制,兩路信號疊加后產生 16QAM信號.在兩路速率為Rb/2 的二進制碼元序列中,經 2-4 電平變換器輸出為 4 電平信號,即M=16.經 4 電平正交幅度調制和疊加后,輸出 16 個信號狀態,即16QAM.

? ? ? 16QAM信號采取正交相干解調的方法解調,解調器首先對收到的16QAM 信號進行正交相干解調,一路與cosωct 相乘,一路與sinωct相乘。然后經過低通濾波器,低通濾波器LPF濾除乘法器產生的高頻分量,獲得有用信號,低通濾波器LPF 輸出經抽樣判決可恢復出電平信號。

2.2 幀同步

? ? ? ? 在數字通信中,信息通常是以幀為單位進行組織和傳輸的。幀同步的目的是確定每一幀的起始位置,以便接收端能夠正確地解調出每幀中的數據。

? ? ? ?設發送的幀結構為:幀同步碼 + 信息碼元序列 。幀同步碼是具有特定規律的碼序列,用于接收端識別幀的起始。

? ? ? ?幀同步的過程就是在接收序列中尋找與幀同步碼匹配的位置,一旦找到匹配位置,就確定了幀的起始位置,后續的碼元就可以按照幀結構進行正確的劃分和處理。

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/03/23 12:49:36
// Design Name: 
// Module Name: tops_hdw
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module tops_hdw(
input i_clk,
input i_rst,
output reg [3:0] led
);wire o_msg;
wire[1:0]o_en;
signal signal_u(
.i_clk (i_clk),
.i_rst (~i_rst),
.o_bits(o_msg),
.o_en  (o_en)
);//設置SNR
wire signed[7:0]o_SNR;
vio_0 your_instance_name (.clk(i_clk),                // input wire clk.probe_out0(o_SNR)  // output wire [7 : 0] probe_out0
);wire[3:0]o_ISET;
wire signed[15:0]o_I16QAM;
wire signed[15:0]o_Q16QAM;
wire signed[15:0]o_I16QAMs;
wire signed[15:0]o_Q16QAMs;
wire signed[31:0]o_mod_T;
wire signed[15:0]o_Nmod_T;
wire signed[31:0]o_modc_R;
wire signed[31:0]o_mods_R;
wire signed[31:0]o_Ifir_R;
wire signed[31:0]o_Qfir_R;
wire  [3:0]o_wbits;
wire       o_bits;
wire [1:0]o_bits_head;
wire [7:0]o_peak;
wire  o_en_data;
wire  o_en_pn;
wire  o_frame_start;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num;  
TOPS_16QAM TOPS_16QAM_u(
.i_clk        (i_clk),
.i_rst        (~i_rst),
.i_SNR        (o_SNR),
.i_en         (o_en),
.i_dat        (o_msg),
.o_ISET       (o_ISET),
.o_I16QAM     (o_I16QAM),
.o_Q16QAM     (o_Q16QAM),
.o_I16QAMs     (o_I16QAMs),
.o_Q16QAMs     (o_Q16QAMs),
.o_mod_T      (o_mod_T),
.o_Nmod_T     (o_Nmod_T),.o_modc_R     (o_modc_R),
.o_mods_R     (o_mods_R),
.o_Ifir_R     (o_Ifir_R),
.o_Qfir_R     (o_Qfir_R),
.o_wbits      (o_wbits),
.o_bits       (o_bits),
.o_bits_head  (o_bits_head),
.o_peak       (o_peak),
.o_en_data    (o_en_data),
.o_en_pn      (o_en_pn),
.o_frame_start(o_frame_start),
.o_error_num  (o_error_num),
.o_total_num  (o_total_num)
);//ila篇內測試分析模塊140
//ila篇內測試分析模塊140
ila_0 ila_u (.clk(i_clk), // input wire clk.probe0({ o_msg,o_SNR,o_I16QAMs[9:0],o_Q16QAMs[9:0],//30o_Nmod_T,o_Ifir_R[27:14],o_Qfir_R[27:14],o_wbits,//48o_error_num[15:0],o_total_num[23:0],//40//28o_en_pn,o_en_data,o_peak,o_bits_head,o_bits}));	endmodule
0sj2_069m

4.開發板使用說明和如何移植不同的開發板

注意:硬件片內測試是指發射接收均在一個板子內完成,因此不需要定時同步模塊。

在本課題中,使用的開發板是:

如果你的開發板和我的不一樣,可以參考代碼包中的程序移植方法進行移植:

5.完整算法代碼文件獲得

V

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899519.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899519.shtml

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

相關文章

多路徑 TCP 調度的另一面

參考前面的文章 一個原教旨的多路徑 TCP 和 MP-BBR 公平性推演,一直都破而不立,不能光說怎樣不好,還得說說現狀情況下,該如何是好。 如果 receiver 亂序重排的能力有限(拜 TCP 所賜),如果非要在多路徑上傳輸 TCP&…

大數據學習(92)-spark詳解

🍋🍋大數據學習🍋🍋 🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一…

RAG - 五大文檔切分策略深度解析

文章目錄 切分策略1. 固定大小分割(Fixed-Size Chunking)2. 滑動窗口分割(Sliding Window Chunking)3. 自然語言單元分割(Sentence/Paragraph Segmentation)4. 語義感知分割(Semantic-Aware Seg…

微信小程序引入TDesign組件后報錯一直提示路徑不對(Component is not found in path)的解決方法

最近在做微信小程序的項目,創建好項目后,按官方方式引入TDesign組件,但還是一直提示報錯(Component is not found in path "miniprogram_npm/tdesign-miniprogram/button/button" (using by "pages/login/login&qu…

攔截器和過濾器詳解

在 Java Web 開發中,攔截器(Interceptor)和過濾器(Filter)是兩種常見的請求處理機制,它們用于對請求和響應進行預處理和后處理 1. 過濾器(Filter) 1.1 作用 Filter 主要用于對 請求…

【機械視覺】C#+VisionPro聯合編程———【六、visionPro連接工業相機設備】

【機械視覺】C#VisionPro聯合編程———【六、visionPro連接工業相機設備】 目錄 【機械視覺】C#VisionPro聯合編程———【六、visionPro連接工業相機設備】 前言: 連接步驟說明 一. 硬件連接 支持的相機接口類型: 連接步驟 2. 軟件配置 Visio…

筆記:基于環境語義的通感融合技術,將傳統通信由“被動接收”轉為“主動感知”

《基于計算機視覺的感知通信融合理論與關鍵技術研發進展》 介紹了聯合研發的基于環境語義的通感融合技術研發進展。 觀點:利用環境感知信息或環境語義輔助通信的通感融合技術成為6G重要方向之一 產出:基于環境感知的毫米波波束管理方案,并…

Kafka 多線程開發消費者實例

目前,計算機的硬件條件已經大大改善,即使是在普通的筆記本電腦上,多核都已經是標配了,更不用說專業的服務器了。如果跑在強勁服務器機器上的應用程序依然是單線程架構,那實在是有點暴殄天物了。不過,Kafka …

zynq7000 + ucos3 + lwip202_v1_2調試過程

1 現在裸機應用上驗證lwip 跑起來可能會報錯,看下面的鏈接解決 zynq 網卡Phy setup error問題 zynq 網卡Phy setup error問題-CSDN博客 2 ping同以后,在zynq上添加ucos系統 鏈接如下: ZYNQ移植uCOSIII_zynq ucos-CSDN博客 3 移植lwip協議…

Android7 Input(二)Linux 驅動層輸入事件管理

概述 在Linux系統中,將鍵盤,鼠標,觸摸屏等這類交互設備交由Linux Input子系統進行管理,Linux Input驅動子系統由于具有良好的和用戶空間交互的接口。因此Linux Input驅動子系統,不止于只管理輸入類型的設備。也可以將其…

Java內存中的Heap(堆)的作用

Java內存中的Heap(堆)的作用 在 Java 的內存模型中,Heap(堆) 是 JVM(Java Virtual Machine)管理的運行時數據區域之一,主要用于存儲程序運行過程中動態分配的對象和數據。它是 Java…

自行車模型與汽車模型的混合策略在自動駕駛中的多維度協同優化

基于動態架構與智能調度的自動駕駛系統設計 #mermaid-svg-1yvF1EzG07ktndY6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1yvF1EzG07ktndY6 .error-icon{fill:#552222;}#mermaid-svg-1yvF1EzG07ktndY6 .error-tex…

mysql.8.4.4--初始化報錯--libnuma.so.1缺失

錯誤 mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory解決辦法:下載相關依賴 sudo apt update sudo apt install numactl然后重新初始化 mysqld --initialize

【區塊鏈安全 | 第三篇】主流公鏈以太坊運行機制

文章目錄 1. 以太坊賬戶類型2. 以太坊網絡架構2.1 節點類型2.2 交易流程 3. 共識機制4. Gas 機制4.1 Gas 計算方式4.2 以太坊 EIP-1559 交易機制 5. EVM(以太坊虛擬機)5.1 EVM 結構5.2 EVM 指令5.3 EVM 運行機制 6. 智能合約7. ERC 代幣標準7.1 ERC-207.…

計算機三級信息安全部分英文縮寫

eip,指令寄存器,用于存放指向下一條將執行指令的指針,即返回地址棧頂指針esp基址指針寄存器EBP,基地址數據執行保護DEP(Data Execute Prevention)技術可以設置內存堆棧區的代碼為不可執行狀態,從而防范溢出后代碼的執行…

【Goalng】第九彈-----文件操作、JSON處理

🎁個人主頁:星云愛編程 🔍所屬專欄:【Go】 🎉歡迎大家點贊👍評論📝收藏?文章 長風破浪會有時,直掛云帆濟滄海 目錄 1.文件操作 1.1文件介紹 1.2.文件流 1.3.打開和關閉文件 1…

C#高級:啟動、中止一個指定路徑的exe程序

一、啟動一個exe class Program {static void Main(string[] args){string exePath "D:\測試\Test.exe";// 修改為你要運行的exe路徑StartProcess(exePath);}private static bool StartProcess(string exePath){// 創建一個 ProcessStartInfo 對象來配置進程啟動參…

猜猜我用的是哪個大模型?我的世界游戲界面簡單的模擬效果

我的羅里吧嗦的,根據小朋友的要求,邊聽邊寫邊輸入的提示詞: 請生成一段完整的在網頁中用html5和javascript代碼模擬“我的世界”中游戲場景的互動畫面,要求提供若干人物選項可以選擇,請自行選擇需要使用哪些庫或框架來…

AI知識補全(八):多模態大模型是什么?

名人說:人生如逆旅,我亦是行人。 ——蘇軾《臨江仙送錢穆父》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 上一篇:AI知識補全(七):AI Agent 智能…

更新docker 容器時,提前換后端jar 包,為什么會存在異常

我們現場更新時,通常都是提前將后端jar 包替換了,然后到了更新的時間,只需要更新相關的前端文件和修改各種配置,就行了。 但是最近一次更新操作中,忽然發現,提前更新后端包,會存在依賴丟失問題…