QPSK數字調製解調的FPGA實現,包括源程序

2021-01-11 電子產品世界

本文引用地址:http://www.eepw.com.cn/article/201706/352633.htm

摘要:隨著FPGA技術的發展,數字通信技術與FPGA的結合體現了現代數字通信系統發展的一個趨勢。為了使高速通信系統更加緊湊、成本更低、減小功耗,特別是提高設備的可靠性,可採用Q P S K數字調製技術來實現,其具有頻譜利用率高、頻譜特性好、抗幹擾性能強、傳輸速率快等特點。運用verilog編寫在QPSK調製解調代碼以及ISE自帶的IP CORE在Xilinx公司的FPGA平臺上測試,結果表明系統可完全實現調製解調功能,並具有集成度高和可軟體升級等優點。

引言:四相絕對移相鍵控(QPSK)技術以其抗幹擾性能強、誤碼性能好、頻譜利用率高等優點,廣泛應用於數字通信系統。隨著超大規模集成電路的出現,FPGA在數字通信系統中的應用日益廣泛,目前已提出了多種基於FPGA實現QPSK的方法。本文基於FPGA實現直接數字頻率合成(DDS),通過對DDS信號(載波信號)輸出相位的控制實現調相,除DA轉換外,其它過程均可以FPGA實現。QPSK調製信號是抑制載波的信號,無法用常規的鎖相環或窄帶濾波器直接提取參考載波,但它又不同於一些連續相位調製信號,其載波相位變化只能取有限的幾個離散值,這就隱含了參考載波的相位信息。所以,可以通過非線性處理,消除信號中的調製信息,產生與原載波相位有一定關係的分量,然後再提純該信號,恢復已被抑制的載波信號,進而完成信號的相干解調。本文所設計的QPSK數據機由於具有較好的頻帶利用率,具有體積小、功耗低、集成度高、軟體可移植性強、擾幹擾能力強的特點,符合未來通信技術設計的方向。

1.QPSK調製的基本原理

四相絕對移相鍵控QPSK是MPSK的一種特殊情況,它利用載波的四種不同相位來表徵數字信息。由於每一種載波相位代表兩個比特信息,故每個四進位碼元又被稱為雙比特碼元。我們把組成雙比特碼元的前一信息比特用a表示,後一比特信息用b表示。雙比特碼元中兩個信息比特ab通常是按格雷碼(即反射碼)排列的,當ab為00時,載波相位為0°,當ab為01時,載波相位為90°,當ab為11時,載波相位為180°,當ab為10時,載波相位為270°。

QPSK信號的產生分為調相法和相位選擇法。由於調相法比較常用,且實際操作性更強,故在本文中,選擇調相法。用調相法產生QPSK信號的組成方框圖如圖1所示。圖中,串/並變換器將輸入的二進位序列依次分為兩個並行的雙極性序列。設兩個序列中的二進位數字分別為a和b,每一對ab稱為一個雙比特碼元。雙極性的a和b脈衝通過兩個平衡調製器分別對同相載波及正交載波進行二相調製。將ab兩路輸出疊加,得到四相移相信號,其相位編碼邏輯關係為:當雙比特碼元ab為11時,輸出相位為315°的載波;ab為01時,輸出相位為225°的載波;ab為00時,輸出相位為135°的載波;ab為10時,輸出相位為45°的載波,相應的對照關係如下表所示。

數據與相位的對照關係

傳統的QPSK模擬調製器結構,一般採用正交調製方法。全數字調製器的實現仍採用正交調製方法,只是將模擬處理單元採用數位訊號處理的算法實。QPSK採用四種不同的載波相位來表示數字信息,每個載波相位代表2比特信息,其實現有兩種方法,相位選擇法與正交調製法,相位選擇法又分為A、B兩種方式。本文採用相位選擇法B方式來實現QPSK信號,如圖1所示。

圖1 QPSK調製框圖

2.QPSK調製的MATLAB仿真

QPSK調製的MATLAB仿真相關的代碼網上有很多,本文作者自己編寫了一段代碼,可以簡單的表示調製的原理,在此僅將代碼羅列如下,相的注釋已經很清楚,不再贅述。代碼要綜合解調部分一起研讀。

clear all;

clc

M=4;

Ts=1;

fc=5;

N_sample=8;%每個正弦波採樣點數

N_num=300;%I Q路分別100個bit

dt=1/fc/N_sample;

t=0:dt:N_num*Ts-dt;

T=dt*length(t);

Noise=(1/500)*randn(1,length(t))*32767;%加入噪聲

py1f=zeros(1,length(t));

py2f=zeros(1,length(t));

for PL=1:1:700%加入噪聲強度加大

d1=sign(randn(1,N_num));

d2=sign(randn(1,N_num));

d=[d1;d2];

D=reshape(d,1,[]);%D是輸入的信息序列

gt=ones(1,fc*N_sample);

s1=sigexpand(d1,fc*N_sample);%此為符號位擴展函數,相關函數在原代碼中可見

s2=sigexpand(d2,fc*N_sample);

b1=conv(s1,gt);

b2=conv(s2,gt);

s1=b1(1:length(s1));

s2=b2(1:length(s2));

st_qpsk_1=s1.*round(cos(2*pi*fc*t)*32767);

st_qpsk_2=s2.*round(sin(2*pi*fc*t)*32767);

st_qpsk=st_qpsk_1+st_qpsk_2;%定點量化後的數據

%----

% 發射信號的功率譜

%plot((abs(fft(st_qpsk,2048))).^2);

3.QPSK調製的FPGA實現

QPSK的FPGA設計內部邏輯關係如下圖2所示,設計最高發送信息速率為2.5Mbit/s,首先經過一個串並變換模塊將信息速率減半至1.25Mbit/s,然後經過相位選擇模塊分別選擇45 135 225 315度相角中的一個作為正弦波的初始相位,每個碼片持續5個正弦波周期,由於在每個碼片的開始和結束會跟其相鄰的碼片的相位存在差異,導致輸出的信號頻譜發生嚴重的混跌,不便於後續處理,所以在輸出埠加入FIR型帶通濾波器,讓帶外信號儘快的衰減至最小。

輸出的信號經過AD變換,轉換成模擬信號,此時的信號可以輸出到後續相關晶片進行處理,本文不再做介紹。

圖2 系統框圖

調製代碼文件之間的邏輯關係入下圖所示:

各個文件的邏輯關係

其中QPSK_CODING.V文件是調製的最上層文件其對外埠如下所示,

module QPSK_CODING(clk_2_5M,clk_50M,clk_1_25M,EN,din,ready,dataout,count);

input clk_2_5M,clk_50M,clk_1_25M,EN,din;

output ready;

output [15:0]dataout;

output [5:0]count;

本設計用到3種時鐘,他們之間的關係如下所示,時鐘在具體的硬體實現是要有2個DCM單元組成。

數字時鐘管理單元

各時鐘之間的關係圖

下圖所作的仿真是假設有14bit的數據輸入到改調製模塊,最後經過調製器後的輸出結果如下所示:

經過調製後的QPSK信號波形圖(未加濾波器前的輸出)

改設計的其他相關模塊的設計上層邏輯模塊如下所示:

數據經過串並變換模塊module serial_to_parallel(clk_2_5M,EN,din,ready,dataout);

然後再經過產生正弦波模塊module Produce_Sin(EN,clk_2_5M,clk_50M,datain,ready,addr,count);

4.QPSK解調的基本原理

在全數字實現Q P S K解調的過程中,與AD接口的前端需要很高的處理速度,但是這些處理的算法又比較簡單,FPGA器件獨特的並行實時處理的特點剛好可以在這裡得到體現,因此,A D C以後的數位訊號處理全部由FPGA來實現。考慮到QPSK相干檢測比差分檢測有2.3dB功率增益,選擇用相干解調算法實現解調。解調方框圖如下圖2:

本文採用的解調方案是將A/D量化得到的數位訊號x(n)與NCO產生的一對相互正交的本地載波相乘,然後分別經過低通濾波器濾波得到基帶信號,從中提取為同步信息,並通過載波同步模塊對NCO的輸出進行調整,最後經過解差分與並串轉換得到調製信息。

圖2 QPSK解調框圖

如上圖所示,載波恢復電路從接收到的Q P S K信號中,恢復出與原傳輸載波頻率和相位相干的載波振蕩信號,同時將接收的Q P S K信號分成兩路,一路與恢復的載波直接相乘;另一路與移相9 0°的恢復載波相乘,乘積項分別積分,恢復的位時鐘對結果進行抽樣,經判決再生出原I、Q數據比特,並、串變換器將並行的I、Q數據變成串行二進位輸出數據。

卡斯特環法提取載波的一個方法入下圖所示:

卡斯特環法提取載波原理圖

5.QPSK解調的MATLAB仿真

此代碼上接QPSK調製代碼,

%--

% 信道傳輸

st_qpsk=st_qpsk+Noise*(PL-1);%加入噪聲

st_qpsk=round(st_qpsk/max(abs(st_qpsk))*32767);%AD採樣後的數據 16比特

%--

% 解調 將32位寬截取到16位

decode_qpsk_s1=round((st_qpsk.*round(cos(2*pi*fc*t)*32767))/(2^16));

decode_qpsk_s2=round(st_qpsk.*round((sin(2*pi*fc*t))*32767)/(2^16));

%-

% 定點FIR濾波器

Num_fix=[106,372,745,1024,1024,745,372,106;];

Num_fix_2=[1,8,23,55,109,189,298,431,581,732,867,969,1024,1024,969,867,732,581,431,298,189,109,55,23,8,1;];

fir_output_s1=filter(Num_fix,1,decode_qpsk_s1);

fir_output_s1=round(fir_output_s1/(2^10));%截取

subplot(2,1,1); plot(t,fir_output_s1);

fir_output_s2=filter(Num_fix_2,1,decode_qpsk_s2);

fir_output_s2=round(fir_output_s2/(2^10));%截取

subplot(2,1,2); plot(t,fir_output_s2);

%-

% 判決decode_s1 decode_s2

for(k=20:40:(N_num*N_sample*fc))

if(fir_output_s1(k)>0)

decode_s1(round((k)/40))=1;

else

decode_s1(round((k)/40))=-1;

end

if(fir_output_s2(k)>0)

decode_s2(round((k)/40))=1;

else

decode_s2(round((k)/40))=-1;

end

end

%---

% 誤碼率分析

c=[decode_s1;decode_s2];

C=reshape(c,1,[]);

compare=C>D;

Error=find(compare);

E(PL)=length(Error)/N_num;%E(PL)中存放誤碼率

end

figure(2);

plot(E);

完整的調製解調及誤碼率分析可見本文附帶MATLAB代碼文件(QPSK_fir_compare.m)

其中的濾波器的選擇不同會直接影響到相同信噪比下的誤碼率參數。

6.QPSK解調的FPGA實現

經過調製後的數據具有50Mbit/s的信息速率,經過有符號數乘法模塊,數據分別與相互正交的兩正弦波相乘,相乘後的數據再經過FIR低通濾波器模塊,濾除掉高頻信號,經定時抽判模塊生成碼率為1.25Mbit/s的兩列數據,最後經過並串變換模塊合併為原先的2.5Mbit/s的符號速率。

系統框圖

Verilog代碼各個文件的邏輯關係入下圖所示:

各個文件的邏輯關係

其中TEST_QPSK.V文件是測試文件,用來測試編寫的Verilog代碼是否正確,其中ROM文件中存放的經過MATLAB定點數仿真生成的QPSK調製數據,共有1K字節的數據量。測試文件通過沒個時鐘周期將ROM中存放的調製數據輸出到編寫的QPSKR文件中,實現解調測試。

QPSK.V文件是用到的解調文件的最上層文件,其對外埠如下:

module QPSKR(clk, en, DIN, dout, ready

);

input clk;

input en;

input [15:0]DIN;

output [1:0]dout;

output ready;

用兩路正交的相干載波去解調,可以很容易地分離這兩路正交的2PSK信號。相干解調後兩路並行碼元a和b,經過並/串變換後,成為串行數據輸出。

輸入的數據與已經鎖定的正交載波相乘後的輸出結果如下圖所示,圖中只列出了一路信號的輸出結果。

未濾波前的輸出數據

本文的一個設計重點在於濾波器的設計,使用MATLAB中濾波器協同設計單元,如下圖所示,可以生成7階濾波器,其係數為[0.0195568849377802 0.0684534436681266 0.136904053813160 0.188242810004127 0.188242810004127 0.136904053813160 0.0684534436681266 0.0195568849377802];

經過定點量化後得到0,23170,32767,23170,0,42366,32769,42366;將其寫入到coe文件中作為濾波器的抽頭係數。

FDATOOL工具輸出結果

經過FIR低通濾波器後的輸出結果如下圖所示:

FIR濾波器輸出的兩路信號

經過濾波器後的頻譜如下所示,從圖中可以看出帶外信號已經衰減到很小值。

經過濾波器後的信號頻譜

經過定時提取模塊的抽判最後兩路信號的輸出結果如下,從圖中我們可以看到dout輸出的數據速率為1.25Mbit/s。

兩路解調後的數據輸出

總上所述,當頂層模塊檢測到有有效數據到達時,en信號被置為高電平,此時信號輸入到後解調模塊,在輸出埠,當ready信號有效時,在dout埠會有有效的數據輸出。輸出的數據如下所示:

上層模塊中包含了如下個模塊

MUL_QPSKR mul1(clk, p1, data_out1, DIN, ce, ready1);

MUL_QPSKR mul2(clk, p2, data_out2, DIN, ce, ready2);

ROM_SIN sin0(clk,addr,en,ready0,data_out1, data_out2);

FIR fir1(rfd1, rdy1, ~ready1, clk, dout1, p1[31:16]);

FIR fir2(rfd2, rdy2, ~ready2, clk, dout2, p2[31:16]);

judgebit judge0(clk, dout1[34], dout2[34], rdy1, rdy2, dout, ready);

其中MUL_QPSKR是乘法器單元,實現有符號數乘法;ROM_SIN模塊存放的正弦波數據,此模塊最後可用DDS模塊代替,最後是濾波器模塊。本設計中最重要的一個模塊CASTA載波提取還在編寫中,暫時還不能提交相關代碼。

濾波器模塊是本設計的關鍵,如果提高相同信噪比條件下的誤碼率可以提高濾波器的階數,但會相應的提高器件實現的複雜度,也即提高FPGA器件的面積。

7.結語

目前,全數字數據機使得通信設備緊湊、成本低、功耗小,且可靠性高。高速數字通信系統多採用Q P S K調製方式,可獲得較高的信噪比,又有較高的頻帶效率。但專用Q P S K晶片的通用性較差,價格較貴。通用Q P S K晶片大多基於D S P晶片,運算量較大和受硬體的限制。用FPGA是實現通用Q P S K的最佳途徑,所有參數均由用戶設置,提高了通信設備的靈活性和通用性。

相關焦點

  • 基於QPSK數字調製解調的FPGA實現
    基於QPSK數字調製解調的FPGA實現 佚名 發表於 2018-02-20 07:50:00 隨著FPGA技術的發展,數字通信技術與FPGA的結合體現了現代數字通信系統發展的一個趨勢。
  • 基於FPGA器件的QPSK調製解調程序實現系統的設計與測試
    基於FPGA器件的QPSK調製解調程序實現系統的設計與測試 電子設計 發表於 2019-04-23 08:19:00 1 引言 工程實踐中,我們往往需要對所設計的硬體電路進行設計檢驗以保證其正常運作
  • 基於FPGA的AM調製與解調(Verilog語言)
    又是課程的作業,要通過FPGA實現AM信號的產生與解調。我們最開始手上是有硬體的板卡的,型號是叫Nexys Video。(當然現在被老師收走了,所以下面的程序只能講解到仿真的層次)要求是通過VIO控制載波頻率、調製信號頻率、調製深度可調,然後通過ILA觀察AM信號和解調後的信號。我記得載波信號的頻率要求是1M~10M,調製信號的頻率要求是1K~10K,調製深度從0到1、步進0.1。
  • 基於MATLAB的QPSK信號調製技術及其頻譜分析
    本次設計在理解QPSK調製解調原理的基礎上應用MATLAB語言來完成仿真,仿真出了QPSK的調製以及解調的仿真圖,包括已調信號的波形,解調後的信號波形,眼圖和誤碼率。通過用Matlab編寫腳本程序對QPSK通信系統的發射和接收過程的具體實現進行模擬仿真,並對各模塊進行頻譜分析,對於理解QPSK系統的性能並在系統上作進一步的設計,提供極大的便利,在仿真的基礎上分析比較了各種調製方法的性能,並通過比較仿真模型與理論計算的性能,證明了仿真模型的可行性。
  • 基於CPLD器件和EDA技術實現QDPSK調製解調電路的設計
    基於CPLD器件和EDA技術實現QDPSK調製解調電路的設計 電子設計 發表於 2019-05-24 08:12:00 隨著無線通信頻帶資源的日益緊張,無線通信主要包括微波通信和衛星通信。
  • 無線系統中自適應數字調製、STBC編碼和FFT/IFFT模塊的FPGA實現方法
    無線基帶傳輸系統,提出了一種並行復用的基4-FFT/IFFT算法的FPGA實現方法,並對其中的自適應數字調製、STBC編碼和FFT/IFFT模塊進行了FPGA實現研究和仿真。信源經過信道編碼和交織後被送入數字調製模塊,此模塊根據接收端反饋回的信道信息選擇合適的調製方案。被調製的信號送入STBC編碼模塊,經過Alamouti空時編碼後生成兩路正交的碼流,再經過串並轉換後進入IFFT模塊進行OFDM調製。解調端的處理是調製的逆過程,需要注意的是在解調端需要引入信道估計模塊,用於採集信道信息以實現系統的同步和發射端的自適應調製。
  • 鎖相環在調製和解調中的應用
    調製和解調的概念本文引用地址:http://www.eepw.com.cn/article/148379.htm  為了實現信息的遠距離傳輸
  • 基於SDR的FM調製與解調器的實現
    對於戰場上單兵作戰通信,飛機通信,人們對SDR要求越來越高,本文提出了在ZYNQ+AD9361的架構上實現的FM調製與解調方案。本方案電路結構簡單,功耗低,接收和發射頻點靈活可調,高動態範圍等優點,FM解調也相對於傳統的鎖相環相干解調具有結構簡單,抗載頻失配,同時滿足解調寬帶和窄帶的信號 [3] 。
  • 基於STM32的高頻無線調製信號分析儀的設計與實現
    摘要:隨著無線通信技術的發展,無線調製信號分析儀在無線電監測、科學化管理方面有重要的實用意義。文章基於STM32嵌入式平臺,採用二次變頻晶片MC13135接收並解調出調製信號,並通過FFT算法分析處理,設計實現了一套新型的無線監測管理設備。
  • 蘋果收購英特爾的5G數據機業務
    蘋果今天確認了購買英特爾5G數據機業務的計劃。該公司周四表示: 「大約有2200名英特爾員工以及智慧財產權,設備和租賃將加入蘋果公司。這項價值10億美元的交易預計將於2019年第四季度完成。」
  • 常用多進位數字調製技術基礎
    在衛星數位電視傳輸中普遍採用的QPSK調諧器可以說是當今衛星數位電視傳輸中對衛星功率、傳輸效率、抗幹擾性以及天線尺寸等多種因素綜合考慮的最佳選擇。歐洲與日本的數位電視首先考慮的是衛星信道,採用QPSK調製,我國也出現了採用QPSK調製解調的衛星廣播和數位電視機。
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    ,再加上大容量FPGA晶片做數位訊號的前端處理,可作為較高速率的綜合通信數據業務處理通用數字平臺。實現對FPGA晶片的固件動態加載,既可以去掉FPGA晶片外掛用於存儲其固件的FLASH晶片以降低成本,又可以滿足動態改變FPGA運行程序以實現多種應用場合快速靈活的切換要求。
  • 通信系統仿真開發基於MATLABDSP及FPGA的設計與實現
    私信小編,回覆:【4640】即可獲取)【最好的電子書下載網站】https://bestebookdownload.com/【網盤地址】https://590m.com/dir/14789250-38900555-6453cb本書詳細介紹了現代通信系統各個組成模塊的基本概念、基本原理、基本技術和典型Matlab、DSP及FPGA實現,通過實用的例程加深讀者對通信模塊的理解
  • LTE-A PDSCH信道的解調技術研究與實現
    為了檢測LTE-A物理層的業務信息,LTE-A PDSCH的解調成為物理層分析的核心模塊。本文結合自主研發的綜合測試儀,對LTE-A PDSCH解調技術進行探討,儀器分析結果表明提出的檢測技術正確有效。引言  當前各地LTE測試工作不斷展開,並逐步開始規模商用。
  • 5G 測試:採用調製失真方法加速功率放大器表徵
    現代通信系統採用正交頻分復用(OFDM)波形進行數位訊號解調。然而,OFDM波形的線性度並不高,在解調過程中容易產生誤差,引發信號質量問題。如果設備內部的元器件(例如功率放大器,PA)能效也不高,那麼還會影響電池續航時間。
  • 1024QAM調製中EVM要小於多少才能正常通信?
    直觀來看,更高階QAM 調製方式對EVM 有更高要求,但是具體要求是多少?例如對1024QAM 調製,EVM 要小於多少才能實現正常通信?本文主要討論這個問題。EVM確定了,就可以指導系統信噪比SNR(SIGNAL NOISE RATIO)的指標分解和預算。
  • 無線通信系統的GUI設計與仿真實現
    經過調製以後的信號稱為已調信號,已調信號有三個基本特徵:攜帶有用信息;適合在信道中傳輸;信號的頻譜具有帶通形式且中心頻率遠離零頻。  (2)數字通信系統模型  數字通信系統是利用數位訊號來傳遞信息的通信系統。數字通信涉及的技術問題很多,其中主要有信源編碼/解碼、信道編碼/解碼、數字調製/解調、數字復接、同步以及加密等。
  • 直接數字頻率合成知識點匯總(原理_組成_優缺點_實現)
    直接數字頻率合成是一種新的頻率合成技術和信號產生的方法,具有超高速的頻率轉換時間、極高的頻率解析度解析度和較低的相位噪聲,在頻率改變與調頻時,DDS能夠保持相位的連續,因此很容易實現頻率、相位和幅度調製。此外,DDS技術大部分是基於數字電路技術的,具有可編程控制的突出優點。
  • 通信QPSK調製,為什麼要對數據串並轉換?
    班長聊通信原理 | 系列文章請至主頁「文章」查閱通信中的很多調製都有一個把串行數據轉換為並行數據的過程,QPSK就是一個典型的例子。其實不光QPSK,其他的調製方法都是這個模式。很多小夥伴最近都在問關於QPSK的問題,很多人在串並轉換地方就犯糊塗了。
  • 蘋果或10億美元收購英特爾的5G數據機業務
    蘋果將以10億美元的價格收購英特爾的5G數據機業務 根據華爾街日報報導,蘋果正以10億美元的價格收購英特爾的5G數據機業務。 英特爾當前為蘋果最新一代的iPhone提供LTE數據機晶片。