擴頻通訊中偽隨機序列轉碼器的FPGA實現

來源:互聯網
上載者:User
擴頻通訊中偽隨機序列轉碼器的FPGA實現
[日期:2008-12-30] 來源:電子技術應用  作者:廖 芳 [字型: ]

 

 

1 擴頻通訊技術及理論基礎
    擴頻通訊技術一般是將待傳送的資訊資料被偽隨機編碼(擴頻序列:Spread Sequence)調製,實現頻譜擴充後再傳輸;接收端則採用相同的編碼進行解調及相關處理,恢複原始資訊資料。
    一種典型的擴頻系統的物理模型1所示。

 


2 擴頻系統的偽隨機序列
    在擴充頻譜通訊系統中,偽隨機序列起著很重要的作用。在直擴系統中,用偽隨機序列將傳輸資訊展寬,在接收時又用它將訊號壓縮,並使幹擾訊號功率擴散,提高了系統的抗幹擾能力;在跳頻系統中,用偽隨機序列控制脈衝發送的時間和期間。由此可見,偽隨機序列效能的好壞是一個至關重要的問題。
    m序列是最常用的一種偽隨機序列。它是最長線性反饋移位寄存器序列的簡稱。是由帶線性反饋的移位寄存器產生的序列,並且具有最長的周期。
    帶線性反饋邏輯的移位寄存器設定各級寄存器的初始狀態後,在時鐘觸發下,每次移位後各級寄存器狀態會發生變化。觀察其中一級寄存器(通常位末級)的輸出,隨著移位時鐘節拍的推移會產生移位寄存器序列。它是一個周期序列,其周期不但與移位寄存器的級數有關,而且與線性反饋邏輯有關。此外,周期還與移位寄存器的初始狀態有關。
    一般情況下,n極線性反饋移位寄存器的構造2所示。

 


    圖中,ci(i=0,1,···,n)表示反饋線的串連狀態,ci=1表示連接線通,第n-i級輸出加入反饋中;ci=0表示連接線斷開,第n-i級輸出為參加反饋。因此,一般形式的線性反饋邏輯運算式為:

   

將等式左邊的an移至右邊,並將an=C0an(C0=1)代入上式,則上式可以改寫為:

   

並稱之為線性反饋移位寄存器的特徵多項式。特徵多項式與輸出序列的周期有密切的關係,一個產生最長線性反饋移位寄存器序列(即m序列)的n級移位寄存器,其特徵多項式必須是n次的本原多項式。
3 設計模組圖
    設計選擇用(12,8)線性分組碼、5級M序列從2倍雜訊中恢複原始訊號, 整個系統的構架3所示。

 

 

    整個系統分為6大模組,分別實現不同的功能。其中包括兩個行為模組:訊號產生即頂層測試模組(Signal)、類比通道加噪模組(add_noise);4個可綜合模組:漢明碼編碼和解碼模組(ham_code、ham_decode)、m序列編碼和解碼模組(m_code、 m_decode)。
    首先要解決幀同步的問題,即如何在對真正訊號進行m序列解碼之前判斷已經達到完全的同步。在發送實際訊號之前,發送一個8位的同步頭資料1111110,在接收端開始時每進入一個訊號就進行一次乘法加法運算,選取一個比較大的閾值,只有在開始接收到一個超過閾值的訊號之後才認定達到了完全的同步;在此之後進行同步解碼,等收到第一個0訊號之後,進入資料接收狀態,這樣就解決了如何同步的問題。在進入資料接收狀態後,每收到480個(實際發送400個,經漢明碼編碼後變為480個)訊號就進行下一次尋找同步的狀態,也就是重新發送一個8位的同步頭訊號,重複上面的過程,再次達到同步,繼續接收下480個訊號。這樣即使產生頻率錯位也只會在480個訊號的後幾個訊號產生錯誤,不會保持很多的錯碼,是個很好的方案。
3.1 時鐘訊號
    此處把M序列時鐘訊號串連到FPGA管腳上,clk_1及其31倍頻clk_31,其中clk_31時鐘頻率為20MHz(4所示)。為驗證此時鐘訊號,選用RIGOL DS1102CD數字儲存示波器。DS1102CD數字儲存示波器是可選裝16通道邏輯分析儀的混合訊號示波器,可以將16路數字訊號和2路類比訊號同時顯示到螢幕上,它具備400 MSa/s即時採樣率、25 GSa/s等效採樣率和1M的儲存深度,且體積小巧、觸發靈敏度可調,很適合日常實驗使用。

 


3.2 ham_code,ham_decode模組
    漢明碼編解碼模組的內部框圖5所示,其中s_p,p_s分別為串列轉並行和並行轉串列模組。由於漢明碼的編解碼過程是對並行資料進行處理,所以需要將輸入的串列資料流進行轉換,編解碼完畢以後再轉換為串列。

 


    兩個模組聯合模擬結果6所示,p_out_link訊號為並行輸出控制訊號,error為錯誤指示位。先把串列資料流依次讀入8位移位寄存器,每讀入 8個資料,產生一個p_out_link脈衝,將移位寄存器中的資料並行輸出;經過漢明碼編碼後變為12位並行資料;在p_s模組,把12位並行資料讀入寄存器,再依次移位輸出,即完成了編碼的過程。解碼過程與其類似。可以看到,經編碼後8位元據(如11011010)變為12位(1101101011100),之後又可解碼出原資料,說明這兩個模組的設計達到了預期效果。

 


3.3 m_code模組
    當本模組中的資料採樣時鐘訊號clk_1的上升沿來臨的時候,對同步頭訊號或者要發送的隨機資料訊號進行採樣,並將採樣值存在輸入資料寄存器 indata_buf中。由clk_31控制產生m序列的移位寄存器進行迴圈,產生相應的m序列串(包含0、1訊號),完成編碼的過程。在本模組中還同時進行了發送訊號的調製過程,也就是在產生m序列串的同時對其完成相應的調製:將訊號1調製為2位的01(帶符號位的+1)訊號;將訊號0調製為2位的 11(帶符號位的-1)訊號。
    圖7中最下邊的訊號shift_buf就是產生m序列的5級移位寄存器,通過查表知道產生5級m序列的本原多項式為x5+x2+1,推出其線性反饋邏輯運算式為a5=於是將一個+1資料訊號編碼並調製為相應的+M序列串:1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1;相應的0訊號對應於一個-m序列串。每進來一個clk_31上升沿就根據indata_buf中存的待發資料和移位寄存器的相應關係發送一位訊號, 將待發送的訊號轉化為與之對應的±m序列串。

 


3.4 addnoise模組
    此模組是一行為模組,類比的是實際傳輸過程。這個模組相對比較簡單:將前一個coder模組產生的m序列串(unnoised_data)讀入之後加入帶符號的2倍雜訊(noise<=random % 3產生最大值為2的隨機數),這樣所得到的就是加入雜訊的接收端訊號(noised_data)。
    圖8中可以看到, noised_data=unnoised_data+noise。也就是說在clk_31的上升沿到來的時候,將收到的M序列串與隨機雜訊相加,得到加雜訊的訊號,在接收端進行相應的解調,恢複原有訊號。

 


3.5 decoder模組
    當接收到同步頭結束訊號0之後,就進入了同步解調主體部分。在coder模組中曾經說過,為瞭解決編碼和解碼時鐘不完全一樣的問題,在每發送480個資料之後重新進行一次同步尋找過程。這由其中的一個計數器main_counter來控制,當尋找到同步頭結束0訊號之後,開始對main_counter進行計數加1。當main_counter計數到480後,進行同步頭再次檢測,再次達到同步之後重複上面的步驟。所以每次解碼只能得到480個資料,要進行多次的過程才可以將一個完整的資訊完全發送到接收端。
    在這裡需要對程式中的一些細節與對應的映像進行比較詳細的說明。
    首先,在同步頭的判斷時選取的閾值是28。在尋找同步的過程中,如果接收到的31個訊號和本地的31位M序列沒有完全同步,則由於M序列的性質使得累加的結果比較小,一般小於10,即使在雜訊的幹擾下也不會超出20的水平;但是如果兩者完全同步,累加的結果應當在30左右。所以在這裡所選取的閾值為28。
    第二,在本模組中,不論是尋找同步頭還是同步解碼,對解碼用到的累加器所賦的初始值都為50。也就是說,在上面介紹的判斷同步頭的過程中,在對每一個輸入資料都進行累加之後,實際選取的閾值是50+28=78。這樣做的目的很簡單,為了方便計算和相應的判斷。因為輸入的訊號可能是正的也可能是負的,所以所做的運算也可能是加法或減法。如果把基準值都賦為0,那麼在電路實現的過程中,舉個很簡單的例子:9位的累加結果寄存器如果為0(二進位表示為 2’b000000000),加上輸入訊號-2(即帶符號的3’b110),本應當產生-2的結果,但是在實際硬體實現的時候卻不能得到所要的答案。它的運算方法為:
      

    可以從上面的運算結果中清楚地看出,直接在0的基礎上進行加減運算會出現預料之外的結果。這種方法只有通過相應的擴位元運算才可以達到所要的結果。也就是說對於輸入的3位訊號(indata),必須將其擴充成為相應的9位值才可以跟sum進行加減運算。還是以上面資料為例,在indata(2’b110)資料一進來就將其擴充成為帶符號位9位的資料(9’b111111110),兩者都是表示帶符號位的資料-2,但是後者和sum進行加減時就不會出現上面的問題。
   

    但是這樣對於這種方法來說,遠不如直接將累加器sum的初始值設定為50方便,這樣一來就只在正數的範圍內進行考慮。同樣的到達同步解碼狀態後,實際也不是將0定為判斷基準,而是50。通過9所示的映像可以看出來。

 


    上面的圖形是在找到同步頭之後進行同步解碼的開始情況。最上面兩個訊號是輸入訊號indata和將輸入訊號經過絕對值運算得到的結果psumi,將帶符號的3位訊號轉化為不帶符號的2位元據,再根據與第j位+M序列符號位與輸入資料符號位的比較,選取相應的加法或者減法運算。
  從中還可以看出,累加器sum的開始的基準值為50。每進入一個資料就在50的基準上進行加減法運算。最後當計數器j從0累加到31之後,就做一次相應的判決輸出:如果sum值大於50就輸出訊號為1,如果小於50就輸出為0,見圖10。

 


    圖中在計數器j達到30的時候,對應的sum值為12(小於50),於是outdata進行判斷輸出,輸出訊號為0(低電平)。這樣就完成了計數累加判斷的過程。
4 系統效能
    在加入差錯控制編碼後,傳輸20 000個位元組未發現誤碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.