中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

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

1.算法仿真效果

vivado2019.2仿真結果如下(完整代碼運行后無水印):

 

設置SNR=25db

 

 

 

 設置SNR=12db

 

 

 

將波形局部放大:

 

 

 

仿真操作步驟可參考程序配套的操作視頻。

 

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

       四頻移鍵控(4FSK)是一種常用的數字調制方法,具有較高的頻帶利用率和抗干擾性能。它利用不同的頻率來傳輸二進制數據,通常應用于無線通信和數據傳輸等領域。

 

2.1 原理與數學公式

       4FSK調制的基本原理是將輸入的二進制數據轉換為不同頻率的信號,以實現數據的傳輸。解調則是將接收到的不同頻率的信號還原為原始的二進制數據。

 

      4FSK調制中,輸入的二進制數據被分為兩組,每組有兩個比特。根據這兩個比特的值,選擇相應的頻率輸出。具體來說,有四個頻率f1、f2、f3、f4與之對應,每個頻率都代表一個二進制組合(00、01、10、11),即十進制的0,1,2,3。

 

        頻率選擇:根據輸入的比特組合選擇相應的頻率輸出。例如,當輸入為“00”時,選擇頻率f1;當輸入為“01”時,選擇頻率f2;當輸入為“10”時,選擇頻率f3;當輸入為“11”時,選擇頻率f4。

調制信號:將選擇的頻率進行幅度調制,以便在傳輸過程中具有更好的抗干擾性能。通常采用開關鍵控(OOK)或脈沖幅度調制(PAM)等方法進行幅度調制。

 

       解調信號:在接收端,根據不同頻率的信號進行解調。首先通過帶通濾波器將所需的頻率信號提取出來,然后通過解調器將其還原為原始的二進制數據。解調方法通常采用相干解調或非相干解調。

 

2.2 幀同步

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

 

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

 

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

 

3.Verilog核心程序

 

//調制
FSK_mod FSK_mod_u(
.i_clk     (i_clk),
.i_rst     (i_rst),
.i_en      (i_en),
.i_bits    (i_bits),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_carrier3(o_carrier3),
.o_carrier4(o_carrier4),
.o_fsk     (o_fsk)
);
    
awgns awgns_u(
    .i_clk(i_clk), 
    .i_rst(i_rst), 
    .i_SNR(i_SNR), //這個地方可以設置信噪比,數值大小從-10~50,
    .i_din(o_fsk), 
    .o_noise(),
    .o_dout(o_fsk_Rn)
    );
解調//解調//解調//解調//解調//解調//解調//解調//解調//解調//解調//解調//解調
FSK_demod FSK_demod_u(
.i_clk(i_clk),
.i_rst(i_rst),
.i_fsk(o_fsk_Rn),
.o_de_fsk1(o_de_fsk1),
.o_de_fsk2(o_de_fsk2),
.o_de_fsk3(o_de_fsk3),
.o_de_fsk4(o_de_fsk4),
.o_de_ffsk1(),
.o_de_ffsk2(),
.o_de_ffsk3(),
.o_de_ffsk4(),
.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)
);
    
    
//error calculate
Error_Chech Error_Chech_u(
    .i_clk(i_clk), 
    .i_rst(i_rst), 
    .i_trans(i_bits), 
    .i_en_data(o_en_data),
    .i_rec(o_bits_data), 
    .o_error_num(o_error_num), 
    .o_total_num(o_total_num),
    .o_rec2()
    );
     
 
endmodule

  

posted @ 2025-07-21 21:01  我愛C編程  閱讀(20)  評論(0)    收藏  舉報