基于FPGA的16QAM軟解調+卷積編碼Viterbi譯碼通信系統,包含幀同步,信道,誤碼統計,可設置SNR

目錄

1.引言

2.算法仿真效果

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

3.1 16QAM調制軟解調原理

3.2 幀同步

3.3 卷積編碼,維特比譯碼

4.Verilog程序接口

5.參考文獻

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


1.引言

? ? ? ? 基于FPGA的16QAM軟解調+卷積編碼Viterbi譯碼通信系統開發,包含幀同步,高斯信道,誤碼統計,可設置SNR。系統包括16QAM調制模塊,16QAM軟解調模塊,217卷積編碼模塊,維特比譯碼模塊,AWGN信道模塊,誤碼統計模塊,幀同步模塊,數據源模塊等。

2.算法仿真效果

本系統是在

基于FPGA的16QAM軟解調+幀同步系統verilog開發,包含testbench,高斯信道,誤碼統計,可設置SNR_quartus 幀同步 仿真圖-CSDN博客

基礎上,增加了217卷積編碼,維特比譯碼(不使用編譯碼IP核),從而提升系統性能。

vivado2022.2測試

設置SNR=15db

設置SNR=6db

設置SNR=3db

系統RTL結構圖如下圖所示:

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

整體系統結構如下所示(其中解調部分為軟解調算法實現)

3.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輸出經抽樣判決可恢復出電平信號。

? ? ? ?16QAM軟解調是一種常用的數字調制解調技術,用于將接收到的16QAM調制的信號轉換為原始數據。該技術結合了16種相位和振幅的調制方式,通過軟判決算法對接收信號進行解調,16QAM軟解調的系統原理是將接收到的16QAM調制信號轉換為軟判決結果,從而恢復原始數據。軟解調是一種非硬判決的解調方法,它利用接收信號的采樣值和相位信息來判斷信號所處的調制狀態,并對其進行解調。在16QAM軟解調中,接收信號經過采樣后,通過比較采樣值和16個調制點的距離,選擇最近的調制點作為解調結果。

? ? ? ?16QAM調制將每四個比特映射到一個復數點上,共有16種相位和振幅的調制方式。每個復數點對應一個調制符號,通過軟解調,我們可以確定接收到的信號所對應的調制符號,進而推導出原始數據。

3.2 幀同步

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

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

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

3.3 卷積編碼,維特比譯碼

? ? ? ? 卷積編碼是一種前向糾錯編碼方式,特別適用于無線通信和其他信道條件惡劣的應用場景。它主要通過卷積算子將信息序列映射成冗余度更高的碼字序列。典型的卷積編碼器由兩個移位寄存器和一個加法器構成,遵循一定的生成多項式進行編碼。

? ? ? ?設信息序列是 u(n),卷積編碼器的兩個生成多項式為 G1?(D) 和 G2?(D),則編碼輸出v(n) 可以表示為:

v(n)=u(n)G1?(D)+u(n?1)G2?(D)+…

此處D 是延遲算子,實際表達形式取決于具體選擇的生成多項式階數及系數。

? ? ? ?維特比譯碼是用于最大似然序列估計的一種動態規劃算法,廣泛應用于卷積編碼以及其他序列編碼的譯碼過程中。在卷積編碼中,維特比譯碼器通過構造一棵稱為“狀態轉移圖”或“trellis”的樹狀結構來尋找最有可能的原始信息序列路徑。

4.Verilog程序接口

 
module TOPS_16QAM(
input i_clk,
input i_clkdx,
input i_clkd2x,
input i_rst,
input signed[7:0]i_SNR,
input[1:0]i_en,
input i_dat,
//卷積編碼
output [1:0]o_enc,
output      o_encs,output [3:0]o_ISET,
output  signed[15:0]o_I16QAM,
output  signed[15:0]o_Q16QAM,
output signed[15:0]o_I16QAMs,
output signed[15:0]o_Q16QAMs,
output signed[31:0]o_mod_T,
output signed[15:0]o_Nmod_T,output  signed[31:0]o_modc_R,
output  signed[31:0]o_mods_R,
output signed[31:0]o_Ifir_R,
output signed[31:0]o_Qfir_R,
output  [3:0]o_wbits,
output       o_bits,
output [1:0]o_bits_head,
output [7:0]o_peak,
output  o_en_data,
output  o_en_pn,
output  o_frame_start,
output o_dec_enable, 
output o_dec, 
output signed[31:0]o_error_num,
output signed[31:0]o_total_num  
);

5.參考文獻

[1]向勁松,陳懷柔.QAM調制下基于卷積碼與累加編碼調制級聯的糾錯碼性能研究[J].半導體光電, 2023(6):924-930.

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

完整程序見博客首頁左側或者打開本文底部

V

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

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

相關文章

Python數據分析基礎(二)

一、Numpy 常用函數分類概覽函數類別常用函數基本數學函數np.sum(x)、np.sqrt(x)、np.exp(x)、np.log(x)、np.sin(x)、np.abs(x)、np.power(a, b)、np.round(x, n) 等統計函數np.mean(x)、np.median(x)、np.std(x)、np.var(x)、np.min(x)、np.max(x)、np.percentile(x, q) 等比…

Colab中如何臨時使用udocker(以MinIO為例)

本文主要是想記錄一下自己在Colab中用udocker啟動一個MinIO的容器的過程。 1. 命令行配置環境 由于目前沒有用到GPU,所以我選擇的是CPU的環境。(內存12G)然后就可以在命令行里安裝udocker了,并配置minio的環境 # 由于minio需要做兩個端口映射&#xff0c…

rt-thread 5.2.1 基于at-start-f437開發過程記錄

基于rt-thread 5.2.1 bsp/at/at32f437-start進行開發,記錄詳細過程,包括中間遇到的各種坑。 at32f437-start原理圖 自己設計的電路板主要換了一塊小封裝的同系列芯片, 目標是移植opENer。 1. 開發環境 env長時間不用,有點忘了。這次新下載…

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家,覺得好請收藏。點擊跳轉到網站。 摘要 本文詳細介紹了基于Python的EMCCD相機&#xff0…

前綴和-560.和為k的子數組-力扣(LeetCode)

一、題目解析1.子數組是數組中元素的連續非空序列2.nums[i]范圍為[-1000,1000],存在負數3.由于2的題目條件,該題不能用雙指針算法,不具備單調性 二、算法原理解法1:暴力解法->枚舉 O(N^2)固定一個值,向后枚舉數組和…

解決企業微信收集表沒有圖片、文件組件,不能收集圖片的問題

問題: 企業微信里面的收集表功能,有一個圖片收集的收集表,但是插入的組件沒有收集圖片的組件? 原因: 大概率是微盤未啟用 解決方法: 1、登陸企業微信管理后臺 企業微信 2、訪問微盤頁面,…

認識單片機

《認識單片機》課程內容 一、課程導入 在我們的日常生活中,有很多看似普通卻充滿智慧的小物件。比如家里的智能電飯煲,它能精準地控制煮飯的時間和溫度,讓米飯煮得香噴噴的;還有樓道里的聲控燈,當有人走過發出聲音時&a…

數據結構(2)順序表算法題

一、移除元素1、題目描述2、算法分析 思路1:查找val值對應的下標pos,執行刪除pos位置數據的操作。該方法時間復雜度為O(n^2),因此不建議使用。思路2:創建新數組(空間大小與原數組一致&#xff0…

汽車電子架構

本文試圖從Analog Devices官網中的汽車解決方案視角帶讀者構建起汽車電子的總體架構圖,為國內熱愛和從事汽車電子行業的伙伴們貢獻一份力量。 一 、汽車電子架構總覽 整個汽車電子包括四個部分:車身電子(Body Electronics)、座艙與…

pycharm 2025 專業版下載安裝教程【附安裝包】

安裝之前,請確保已經關閉所有安全軟件(如殺毒軟件、防火墻等)安裝包 👇鏈接:https://pan.xunlei.com/s/VOU-5_L1KOH5j3zDaaCh-Z28A1# 提取碼:6bjy下載 PyCharm2025專業版 安裝包 并 進行解壓運行 pycharm-2…

在 Java 世界里讓對象“旅行”:序列化與反序列化

Java 生態里關于 JSON 的序列化與反序列化(以下簡稱“序列化”)是一個久經考驗的話題,卻常因框架繁多、配置瑣碎而讓初學者望而卻步。本文將圍繞一段極簡的 JsonUtils 工具類展開,以 FastJSON 與 Jackson 兩大主流實現為例&#x…

High Speed SelectIO Wizard ip使用記錄

本次實驗的目的是通過VU9P開發板的6個TG接口,采用固定連接的方式,即X和X-維度互聯,其框圖如下所示:IP參數配置通過調用High Speed SelectIO Wizard來實現數據通路,High Speed SelectIO Wizard ip有24對數據通道&#x…

Execel文檔批量替換標簽實現方案

問題背景需求:俺現網班級作為維度,批量導出每個班級學員的數據,excel的個數在1k左右,每一張表的人數在90左右。導出總耗時在10小時左右。代碼編寫完成并導出現網數據后,發現導出的標題錯了。解決方案1.通過修改代碼&am…

SpringBoot配置多數據源多數據庫

Springboot支持配置多數據源。默認情況,在yml文件中只會配置一個數據庫。如果涉及到操作多個數據庫的情況,在同實例中(即同一個ip地址下的不同數據庫),可以采用數據庫名點數據庫表的方式,實現跨庫表的操作。…

Rocky9.4部署Zabbix7

一、配置安裝源 rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm ? yum clean all 二、安裝Zabbix server,Web前端,agent yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf z…

【Java】對象類型轉換(ClassCastException)異常:從底層原理到架構級防御,老司機的實戰經驗

在開發中,ClassCastException(類轉換異常)就像一顆隱藏的定時炸彈,常常在代碼運行到類型轉換邏輯時突然爆發。線上排查問題時,這類異常往往因為類型關系復雜而難以定位。多數開發者習慣于在轉換前加個instanceof判斷就…

探路者:用 AI 面試加速人才集結,為戶外愛好者帶來更專業的服務

作為深耕戶外用品領域的知名品牌,探路者已構建起覆蓋全國的銷售服務網絡,上千品種的產品矩陣更是為品牌在市場中站穩腳跟提供了有力支撐。對探路者來說,要持續為戶外愛好者帶來專業且貼心的體驗,專業人才是核心支撐。然而&#xf…

LeetCode——面試題 05.01 插入

通過萬歲!!! 題目:一共會給四個數,分別是N、M、i、j,然后希望我們把N和M抓怒換為2進制以后,將M的二進制放在i到j之間的區域,如果M的二進制長度小于i-j1,則前面補0即可。最…

前端設計中如何在鼠標懸浮時同步修改塊內樣式

雖然只是一個小問題,但這個解決問題的過程也深化了自己對盒子模型的理解問題緣起正在寫一個登錄注冊的小窗口,想要在鼠標懸浮階段讓按鈕和文字都變色,但是發現實操的時候按鈕和文字沒辦法同時變色鼠標懸停前鼠標懸停后問題分析仔細分析了下該…

航空發動機高速旋轉件的非接觸式信號傳輸系統

航空發動機是飛機動力系統的核心,各種關鍵部件如渦輪、壓氣機等,經常處于極端高溫、高速旋轉的工作環境中。航空發動機內的傳感器數據,如何能夠穩定可靠的通過無線的方式傳輸到檢測太,一直是業內的一個難點和痛點。在這個領域&…