?
中國科商網
基于FPGA的擴頻系統設計(中)
發布日期: 2023-08-01 14:33:52 來源: 與非網

今天給大俠帶來基于FPGA的擴頻系統設計,由于篇幅較長,分三篇。今天帶來第一篇,中篇。話不多說,上貨。

在無線通信系統中,普遍使用擴頻通信技術,因此擴頻技術對通信系統具有重要的現實意義。直接序列擴頻技術是應用最廣的一種擴頻技術,FPGA具備高速度的并行性特點在無線通信系統中的優勢日益增強,利用FPGA實現直接序列擴頻技術,可增大傳輸速率,可以使擴頻技術有更好的發展與應用。


(資料圖)

本篇利用本原多項式產生偽隨機序列用作擴頻,通過同步模塊對擴頻后的信號進行捕獲,通過直接序列解擴模塊進行解擴。本篇給出了編解碼、擴頻解擴、同步的整體方案,使用Quartus實現功能,并結合Matlab和ModelSim對模塊進行調試和測試,實現擴頻通信模塊的搭建仿真,驗證其設計的正確性。首先概述了方案設計與論證、整體方案的設計、各個模塊的設計、個別模塊的調試與各個模塊的仿真驗證。本篇主要實現的模塊有:漢明編碼模塊、直接序列擴頻模塊、量化器模塊、同步模塊、直接序列解擴模塊和漢明譯碼模塊。各位大俠可依據自己的需要進行閱讀,參考學習。

第二篇內容摘要:本篇會介紹軟件開發平臺及軟件模塊設計,包括FPGA芯片、設計和仿真驗證平臺、漢明碼編碼設計模塊、直接序列擴頻模塊原理、量化器模塊設計、同步模塊設計、直接序列解擴模塊設計、漢明碼譯碼模塊設計等相關內容。

三、軟件開發平臺及軟件模塊設計

FPGA芯片

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物,通過提高密度、降低功耗和成本等手段,FPGA已經披靡傳統ASIC領域,在眾多新興應用領域加速滲透。如今FPGA在通信、圖像處理和控制方面也有發展,在未來具有很好的發展前景。

本論文設計采用的FPGA芯片是altera公司的CycloneⅡ系列EP2C70F896C6芯片,該芯片具有4個鎖相環,150個內嵌乘法器、622個I/O引腳、48416個寄存器和68416個邏輯單元,其中擁有專用的乘法器,可以大幅度有效地提高系統的整體性能,同時也可以提高系統的整體穩定性。

設計和仿真驗證平臺

Quartus設計軟件平臺

Quartus II 是 Altera 公司的綜合性PLD/FPGA開發軟件,支持原理圖、VHDL、Verilog等多種設計形式,自帶有綜合器和仿真器,支持IP核,包含宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設計流程,加快了設計速度。該平臺支持一個工作環境下的設計要求,其中包括支持基于Internet的協作設計,可以在XP、Linux和Unix上使用。

ModelSim仿真驗證軟件平臺

ModelSim 是Mentor公司的HDL語言仿真軟件,是業界唯一的單內核支持VHD和Verilog混合編程仿真器。編譯仿真速度快,編譯代碼與平臺無關,有利于IP核的保護,ModelSim 具有以下特點:RTL和門級優化、本地編譯結構、編譯仿真速度快和跨平臺跨版本仿真;集成了性能分析、波形比較和代碼覆蓋等。選用ModelSim 作為本設計的各個模塊的功能及仿真波形驗證軟件。

Matlab仿真驗證軟件平臺

Matlab是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業數學軟件。Matlab是一種用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境。利用Matlab r2011b軟件所帶庫函數,有利于部分功能仿真。

漢明碼編碼模塊設計

漢明編碼原理

在香農的時代,二戰結束的那段時候,貝爾實驗室聚集了很多人才,他們那時的工作對我們今天數字世界的影響非常重要,如圖基(John Tukey)創始了現代統計學,漢明(Richard Wesley Hamming)成功的進行了糾錯碼研究,他們的成果恩澤天下。

本文中的漢明編碼模塊采用漢明(7,4)碼,全部碼長是7位:C6~C0,其中4位是原始信息位D,3位是奇偶效驗位P,通過如下表方式組成:

表 漢明碼組成表

由表可知,漢明碼具有糾正錯碼的能力,在后續章節節詳細介紹。

漢明編碼設計

根據表可知,校驗位P為對應的原始信息碼異或得到,其它位直接輸出即可,因此設計得到如圖的設計模型:

圖 漢明碼編碼設計模型

如圖為漢明編碼模塊在總設計中的設計模型。首先利用控制模塊h_fsm的h_load信號控制輸入數據的更新,當完成8bits數據編碼后才更新輸入數據。由于數據是8bits而漢明碼每次編碼對象數據為4bits,因此利用控制模塊h_fsm的hm_sel信號控制數據高4位或低4位進行漢明編碼,利用h_fifo模塊(fifo)對數據進行緩存,通過對fifo空標志信號m_empty高電平有效進行判斷,如信號m_empty有效則置fifo讀操作使能信號m_rdreq高電平進行讀取編碼后的數據,其他情況為低電平。設計模型對應Verilog代碼詳見附錄A。

圖 漢明編碼模塊總設計模型

直接序列擴頻模塊設計

直接序列擴頻原理

直接序列擴頻是用待傳輸的數據信息與偽隨機序列異或,用來擴展傳輸信號的帶寬。原理如圖所示。傳輸信號不經過擴頻直接傳輸,受到信道的噪聲干擾,導致信號失真。若經過擴頻后傳輸,可以提高抗噪聲能力。

圖 直接序列擴頻原理圖

在香農定理公式中,C是信道容量,單位為比特每秒(bps);B是信道帶寬,單位是Hz,S/N是信噪比。

()

根據香農定理公式可知,當信道容量C不變時,增加帶寬B,則可以容許信噪比減小;或者說,在信道的信噪比很小時(如無線通信中噪聲很大情況下)為了保證正常的通信,則需要增大帶寬B。很多情況下,基帶(原始數據)信號的帶寬不足以滿足上式,直接用這樣的基帶信號經過調制后進行通信,經常會受到噪聲的干擾,甚至無法進行正常通信,因此使用直接序列進行擴頻。

偽隨機序列是最長線性移位寄存器序列的簡稱,它是由多級移位寄存器或其延遲元件通過線性反饋產生最長的碼序列,在移位寄存器里,若移位寄存器級數為n,則能產生2n個狀態,除去一個全“0”狀態,則還剩2n-1個狀態。因此n級移位寄存器能產生的最大長度的碼序列為2n-1。

本文采用本原多項式產生偽隨機序列,利用偽隨機序列與原始信號異或得到擴頻后的信號。本原多項式an-i、…a1、a0為一組N位移位寄存器,在每個時鐘下,該移位寄存器的每一位發送變化,每一位ai的變化是由其輸入信號決定,該輸入信號則是后級電路與系數C層次異或的結果決定的,原理圖如圖所示。

圖 偽隨機序列原理圖

直接序列擴頻模塊設計

要產生所需的偽隨機序列,需要先確定序列級數r,確定級數相當于確定了偽隨機序列的長度,本文采用5相多項式:X5+X2+1,對應有31個偽隨機數,原理圖如圖所示:

圖 5相偽隨機序列原理圖

5相多項式的初始狀態為a4a3a2a1a0=00001,a4為a0和a3異或得到的,其余的為上一級得到。每到來一個時鐘上升沿按上圖移位一次,從a0產生輸出(1個bit寬度的串行輸出,5位變量最多可產生31種組合),不同的初始值對應不同的輸出序列,輸出的序列都為31bits,對應輸出序列如表所示:

表 偽隨機序列表

根據表可得出本原多項式具有以下9點特性:

1. 無論設置的初始值是什么,序列僅是開始位置變化,序列本身并無變化;

2. 偽隨機數PRN是偽隨機序列從置位開始后的頭5個比特;

3. 每一個相鄰的偽隨機序列,其相位差一拍;

3. 每31個時鐘周期循環一次;

4. PRN中沒有0;

5. 在一個偽隨機序列周期內,PRN隨機分布(被洗牌);

7. 序列名與ms序列頭5比特為鏡像對稱;

8. 前一個為下一個的向左循環移位;

9. 1的個數比0的個數多1個。

本設計主時鐘信號clk為10MHz,設計模型如圖所示。首先,編碼后的信號經過接口m_interface模塊接收到數據信號。其次,將接收到的數據信號通過并串轉換模塊變成單比特數據,利用計數器counter模塊控制偽隨機序列與單比特數據進行異或操作,最后達到擴頻的目的,設計模型對應Verilog代碼詳見附錄A。

圖 擴頻模塊設計圖

量化器模塊設計

在實際傳輸過程中,需要用D/A轉換芯片將數字信號轉換為模擬信號進行發送,在傳輸過程會引入噪聲,量化器的模塊主要是模擬此過程,將單比特的信號變為8bits有符號數,也為后續引入噪聲做準備。在模塊設計中,利用選擇器即可實現此操作,設計模型如圖所示,對應Verilog代碼詳見附錄A。

圖 量化器模塊設計圖

同步模塊設計

同步原理

同步的作用就是在時間不確定的情況下,捕獲到有用的偽隨機序列,使本地的偽隨機序列與數據同步,因此在解調前必須對數據進行同步處理。如圖所示,接收端無法知道序列中起始位置,無法保證接收序列的開始位與發送序列的開始位一致,同時為避免丟失發送數據和保證正確恢復數據位,所以在發送數據前需加同步頭,能夠起到接收端接收數據的同步作用。

圖 接收端信號接收示意圖

同步頭需要加到發送端數據信號起始位置,同步頭Frame_Head為14bits,數據信號為8bits位寬。具體如表所示:

表 字邊界和幀邊界定義表

在檢測到同步頭之前,首先接收端應與同步頭擴頻后的數據進行對齊,由于接收端采到某位同步頭數據的不定位置,所以要用31個不同偽隨機序列模板對采集到的31bits數據進行最小二乘法(節進行介紹)計算。以進行判定與哪個序列模板最吻合,判定的方法是將累加器的初始值設定為0,利用累加器對最小二乘法運算的結果進行累加,與閾值進行比較,經過多次實驗,最終判定閾值為50000。

最小二乘法原理

最小二乘法(least square)由德國數學家高斯發明,其基本思想就是多維空間的點距問題,由此可以解決數學中的相關分析和擬合等問題。

1801年,由于谷神星運行至太陽背后,失去了谷神星的軌跡,奧地利天文學家海因里希·奧爾伯斯根據高斯計算出來的軌道,重新發現了谷神星。高斯計算的軌道,看成是多維空間的一個點,原觀察軌道亦為另一個點,將這兩點的距離趨于最小化,即是當時高斯所做的一切,這就是最小二乘法的來源。

直接序列同步利用最小二乘法來比對31bits數據與模板之間的相似程度,通過與閾值進行比較,確定是否捕獲到有用信號,如果為有用信號,則進行相應的延時處理,已達到能夠與同步頭數據對齊的目的,盡最大可能地正確還原數據信息。

同步設計

設計模型如圖所示,首先,在接收端生成與發送端相同的偽隨機數,其次用計數器控制輸入31bits數據,輸入數據分別與31個模板進行最小二乘法計算,用來比對相似度,通過得到的計算值與閾值進行比較,該模塊會判斷出輸入數據為對應的偽隨機數,從而判斷出對齊幀頭需要多少個系統時鐘周期。最后,位置信息輸出后利用計數器進行計數,相當于延時操作,當計數值達到所需延時時間后,說明已對齊同步頭中的某一位,設計模型對應Verilog代碼詳見附錄A。

圖 同步頭位置判斷模塊

直接序列解擴模塊設計

設計模塊如圖所示。在同步頭對齊后,對于直接序列解擴模塊與同步模塊相似,首先,利用本地時鐘生成與發送端相同的偽隨機序列,m_leastsouare模塊是對數據“0”和“1”擴頻后的偽隨機序列模板與對齊后31bits數據進行最小二乘法計算,計算值進行比較大小,計算值小的對應解擴為“0”或“1”,通過判斷連續幾個“1”后并且判斷出“0”,說明同步頭結束,下一位則是發送端發送的數據信息,將數據信息解擴后輸出送給串并轉換及漢明譯碼模塊。設計模型對應Verilog代碼詳見附錄A。

圖 直接序列解擴模塊設計圖

漢明譯碼模塊設計

漢明譯碼原理

由本文節說明了編碼模塊編碼原理,根據表漢明碼組成結構,可以知道P0P1P2為校驗字節,C0為D3D1D0P0異或得到,C1為D3D2D0P1異或得到,C2為D3D2D1P2異或得到。如果由附加位C0和C1為“1”,C2為“0”,因此可以推斷D0發生錯誤;如果由附加位C1和C2為“1”,C0為“0”,則可以判斷D2發生錯誤;如果附加位C0、C1和C2均為“1”,則可以判斷D3發生錯誤;如果僅C0為“1”,則可以判斷校驗位P0發生錯誤。

以此類推,通過判斷哪個區域發生共同錯誤,來判斷具體哪一位發生錯誤,如圖所示:

圖 漢明糾錯碼原理圖

漢明譯碼設計

設計模型如圖所示。首先,通過inteface模塊對數據信息進行串并轉換將串行信號轉換為并行信號。其次,利用start1_mk模塊對haming_decoder模塊進行使能控制,當使能信號start高電平有效時,haming_decoder模塊對數據進行譯碼和糾錯。haming_decoder模塊輸出數據位4bits,通過start_mk模塊的信號lh進行控制輸出信號為數據的高四位還是低四位。counter模塊用來輔助inteface模塊和haming_decoder模塊,對數據比特位置進行判斷。最后輸出信號為8bits位寬。設計模型對應Verilog代碼詳見附錄A。

圖 漢明譯碼模塊設計圖

本篇到此結束,下一篇帶來基于FPGA的擴頻系統設計(下),介紹分析調試,包括漢明碼解碼模塊調試、直接序列擴頻模塊調試、同步模塊調試、整體設計資源占用率、整體設計RTL設計圖,還會介紹系統測試,包括漢明編碼模塊測試、直接序列擴頻模塊測試、量化器模塊測試、同步模塊測試、直接序列解擴模塊測試、漢明譯碼模塊測試、系統整體測試等相關內容。

關鍵詞:

?