您的位置:首頁 > 國際 >

          基于FPGA的M序列擴頻編碼程序Verilog代碼設(shè)計實現(xiàn)

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

          《M序列擴頻編碼程序Verilog代碼設(shè)計實現(xiàn)》


          【資料圖】


          第二節(jié):擴頻編碼

          內(nèi)容:

          1. 理解直擴頻的方式;

          2. 設(shè)計基于m序列擴頻編碼程序;

          2.1直擴頻DSSS

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

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

          序列數(shù)


          頻道擴展S信道

          2.2信道編碼ECC

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

          HMM7-4

          2.3數(shù)據(jù)結(jié)構(gòu)

          通信數(shù)據(jù)在傳輸?shù)臅r候以一定的數(shù)據(jù)單位進行傳輸,數(shù)據(jù)單位對應(yīng)就是我們的數(shù)據(jù)結(jié)構(gòu),常見的數(shù)據(jù)結(jié)構(gòu)有包和幀,以包為例,數(shù)據(jù)結(jié)構(gòu)定義如下:

          數(shù)據(jù)結(jié)構(gòu)定義

          2.4擴頻編碼經(jīng)典案例

          擴頻編碼

          2.4.1程序設(shè)計

          1. m_seq_gen以及dss_tz_code設(shè)計實現(xiàn):

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

          m_seq_gen

          默認(rèn)N=5,采用5階,任何一組m序列

          m_seq_gen

          PCML默認(rèn)K=3,量化精度默認(rèn)為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設(shè)計實現(xiàn)

          ①通信同步:

          任何通信都需要同步,采用一種同步機制使得通信雙方保持?jǐn)?shù)據(jù)的一致性,在這里采用一種握手方式同步。

          ②包定義:

          設(shè)計采用包作為通信的數(shù)據(jù)結(jié)構(gòu),一個包包含默認(rèn)512比特的信息,采用并且采用漢明碼,包和包之間附加一個分隔符:

          7bit分隔符:512比特信息 + 384監(jiān)督位

          設(shè)計架構(gòu)

          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;

          關(guān)鍵詞:

          [責(zé)任編輯:xwzkw]

          相關(guān)閱讀