【硬件測試】基于FPGA的BPSK+幀同步系統(tǒng)開發(fā)與硬件片內(nèi)測試,包含高斯信道,誤碼統(tǒng)計(jì),可設(shè)置SNR

1.硬件片內(nèi)測試效果

本文是之前寫的文章


《基于FPGA的BPSK+幀同步系統(tǒng)verilog開發(fā),包含testbench,高斯信道,誤碼統(tǒng)計(jì),可設(shè)置SNR》


的硬件測試版本。


在系統(tǒng)在仿真版本基礎(chǔ)上增加了ila在線數(shù)據(jù)采集模塊,vio在線SNR設(shè)置模塊,數(shù)據(jù)源模塊。


硬件ila測試結(jié)果如下:(完整代碼運(yùn)行后無水?。?/p>


vio設(shè)置SNR=15db




vio設(shè)置SNR=5db




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


2.算法涉及理論知識(shí)概要

2.1 bpsk

BPSK信號與2ASK信號的時(shí)域表達(dá)式在形式上是完全相同的,所不同的只是兩者基帶信號s(t)的構(gòu)成,一個(gè)由雙極性NRZ碼組成,另一個(gè)由單極性NRZ碼組成。因此,求BPSK信號的功率譜密度時(shí),也可采用與求2ASK信號功率譜密度相同的方法。

(1)當(dāng)雙極性基帶信號以相等的概率(p=1/2)出現(xiàn)時(shí),BPSK信號的功率譜僅由連續(xù)譜組成。BPSK信號的功率譜由連續(xù)譜和離散譜兩部分組成。其中,連續(xù)譜取決于數(shù)字基帶信號s(t)經(jīng)線性調(diào)制后的雙邊帶譜,而離散譜則由載波分量確定。

(2)BPSK的連續(xù)譜部分與2ASK信號的連續(xù)譜基本相同(僅差一個(gè)常數(shù)因子)。因此,BPSK信號的帶寬、頻帶利用率也與2ASK信號的相同。

在數(shù)字調(diào)制中,BPSK(后面將會(huì)看到2DPSK也同樣)的頻譜特性與2ASK十分相似。相位調(diào)制和頻率調(diào)制一樣,本質(zhì)上是一種非線性調(diào)制,但在數(shù)字調(diào)相中,由于表征信息的相位變化只有有限的離散取值,因此,可以把相位變化歸結(jié)為幅度變化。這樣一來,數(shù)字調(diào)相同線性調(diào)制的數(shù)字調(diào)幅就聯(lián)系起來了,為此可以把數(shù)字調(diào)相信號當(dāng)作線性調(diào)制信號來處理了。但是不能把上述概念推廣到所有調(diào)相信號中去。

BPSK (Binary Phase Shift Keying)-------二進(jìn)制相移鍵控。是把模擬信號轉(zhuǎn)換成數(shù)據(jù)值的轉(zhuǎn)換方式之一,利用偏離相位的復(fù)數(shù)波浪組合來表現(xiàn)信息鍵控移相方式。BPSK使用了基準(zhǔn)的正弦波和相位反轉(zhuǎn)的波浪,使一方為0,另一方為1,從而可以同時(shí)傳送接受2值(1比特)的信息。


由于最單純的鍵控移相方式雖抗噪音較強(qiáng)但傳送效率差,所以常常使用利用4個(gè)相位的QPSK和利用8個(gè)相位的BPSK。


????????二進(jìn)制相移鍵控(BPSK)信號進(jìn)行相干解調(diào)的系統(tǒng),其包括:用于從所述BPSK信號中恢復(fù)出頻率為2F的載波信號(C)的裝置;用于將頻率為2F的所述信號注入到注入鎖定振蕩器(ILO)中的裝置,該注入鎖定振蕩器的固有諧振頻率為f[r],該f[r]大致等于f,該注入鎖定振蕩器提供用于恢復(fù)具有(θ[e]-k)/2相移的原始載波的差分輸出(o[p]、o[n])信號,其中θ=arcsin[(f[r]-r)/αA[i]f],其中α和k是取決于所述注入鎖定振蕩器(ILO)中的主要非線性的類型的參數(shù),而A[i]是所恢復(fù)的頻率為2f的載波信號的幅值,以及用于將所述差分輸出(o[p]、o[n])信號與所述輸入BPSK信號的副本進(jìn)行組合,以產(chǎn)生解調(diào)信號(DEMOD)的裝置。


2.2 幀同步

在數(shù)字通信中,信息通常是以幀為單位進(jìn)行組織和傳輸?shù)摹降哪康氖谴_定每一幀的起始位置,以便接收端能夠正確地解調(diào)出每幀中的數(shù)據(jù)。


設(shè)發(fā)送的幀結(jié)構(gòu)為:幀同步碼+ 信息碼元序列 。幀同步碼是具有特定規(guī)律的碼序列,用于接收端識(shí)別幀的起始。


幀同步的過程就是在接收序列中尋找與幀同步碼匹配的位置,一旦找到匹配位置,就確定了幀的起始位置,后續(xù)的碼元就可以按照幀結(jié)構(gòu)進(jìn)行正確的劃分和處理。




3.Verilog核心程序


wire [1:0]o_msg;


//產(chǎn)生模擬測試數(shù)據(jù)

signal signal_u(

.i_clk (i_clk),

.i_rst (~i_rst),

.o_bits(o_msg)

);







//設(shè)置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 signed[15:0]o_fir;

wire signed[15:0]o_carrier;

wire signed[31:0]o_mod;

wire signed[15:0]o_modn;

wire signed[15:0]o_carrier_local;

wire signed[31:0]o_dw;

wire signed[31:0]o_demod ;

wire signed[31:0]o_error_num;

wire signed[31:0]o_total_num;

wire ?o_bits;

wire [1:0]o_bits_data;

wire [1:0]o_bits_head;

wire [7:0]o_peak;

wire ?o_en_data;

wire ?o_en_pn;

wire ?o_frame_start;


BPSK uut(

.i_clk(i_clk),

.i_rst(~i_rst),

.i_bits(o_msg),

.i_SNR(o_SNR),

.o_fir(o_fir),

.o_carrier(o_carrier),

.o_mod(o_mod),

.o_modn(o_modn),

.o_carrier_local(o_carrier_local),

.o_dw(o_dw),

.o_demod(o_demod),

.o_bits ?????????(o_bits),

.o_bits_data ????(o_bits_data),

.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)

);




wire signed[15:0]o_mod2=o_mod[21:6];

wire signed[15:0]o_demod2=o_demod[23:8];



//ila篇內(nèi)測試分析模塊

ila_0 ila_u (

?.clk(i_clk), // input wire clk

?.probe0({

?o_msg,o_SNR,//10

o_fir,o_mod2,o_modn,o_demod2,//80

?o_bits_data,o_bits_head,o_peak,o_en_data,o_en_pn,//14

?o_error_num[19:0],o_total_num[23:0]//44


?})

?);??




endmodule




?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容