您的位置:首頁 > 國際 >

          基于FPGA的M序列擴頻編碼程序Verilog代碼設計實現

          2023-09-09 15:16:10 來源:阿丘達之平凡

          《M序列擴頻編碼程序Verilog代碼設計實現》


          【資料圖】


          第二節:擴頻編碼

          內容:

          1. 理解直擴頻的方式;

          2. 設計基于m序列擴頻編碼程序;

          2.1直擴頻DSSS

          所謂的直擴本質上就是將2個信號疊加,將原始信號(窄帶信號)和載波信號(帶寬繳款的信號)疊加,獲得新的信號(帶寬展寬)。

          如果信號用序列表示的化,擴頻可以表示位如下的公式:

          序列數


          頻道擴展S信道

          2.2信道編碼ECC

          設計采用分組碼的編碼方式,并且采用漢明碼,漢明碼叫做HMM(7-4)碼,具體定義如下:

          HMM7-4

          2.3數據結構

          通信數據在傳輸的時候以一定的數據單位進行傳輸,數據單位對應就是我們的數據結構,常見的數據結構有包和幀,以包為例,數據結構定義如下:

          數據結構定義

          2.4擴頻編碼經典案例

          擴頻編碼

          2.4.1程序設計

          1. m_seq_gen以及dss_tz_code設計實現:

          /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          m_seq_gen

          默認N=5,采用5階,任何一組m序列

          m_seq_gen

          PCML默認K=3,量化精度默認為3

          assign tz = s_seq ^ m_seq;

          always @(*)

          if(flag_s_seq && flag_m_seq )

          if(tz )

          3’b001;//+1

          else

          3’b111;//-1

          else

          3’b000;//-1

          /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          1. s_seq_gen設計實現

          ①通信同步:

          任何通信都需要同步,采用一種同步機制使得通信雙方保持數據的一致性,在這里采用一種握手方式同步。

          ②包定義:

          設計采用包作為通信的數據結構,一個包包含默認512比特的信息,采用并且采用漢明碼,包和包之間附加一個分隔符:

          7bit分隔符:512比特信息 + 384監督位

          設計架構

          flag_s_seq<=1;

          s_seq<= info;

          always @(poeddge clk_c)

          case(cnt)

          0:D3<=info;

          1:D4<=info;

          2: D5<=info;

          3: D6<=info;

          endcase

          if(cnt==2)

          info_rdy<=0;

          ///////////////////////////////////////////////////////////////////////////////////////////////////////////

          flag_s_seq<=1;

          always @(poeddge clk_c)

          case(cnt)

          0: s_seq <=D0;

          1: s_seq <=D1;

          2: D s_seq <=D2;

          endcase

          if( cnt ==2)

          if(hmm_cnt ==127)

          hmm_cnt <=0;

          else

          hmm_cnt <= hmm_cnt+1;

          if(cnt==1)

          if(hmm_cnt!=127)

          info_rdy<=1;

          else

          info_rdy<=0;

          關鍵詞:

          [責任編輯:xwzkw]

          相關閱讀