《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的PN碼捕獲和跟蹤技術的研究與實現(xiàn)
基于FPGA的PN碼捕獲和跟蹤技術的研究與實現(xiàn)
來源:微型機與應用2014年第4期
張 展,龍海南
(河北大學 電子信息工程學院,河北 保定071000)
摘要: 研究了在直接序列擴頻通信中基于FPGA的基帶PN碼(擴頻碼)的捕獲跟蹤技術。在PN碼解調中,介紹了串并混合的捕獲方案和基于遲早門的跟蹤方案。以Quartus II作為平臺采用Verilog HDL的硬件描述語言進行設計,并進行了Modelsim的仿真測試,最終下載到具體FPGA器件進行了基帶的傳輸測試。
Abstract:
Key words :

摘  要: 研究了在直接序列擴頻通信中基于FPGA的基帶PN碼(擴頻碼)的捕獲跟蹤技術。在PN碼解調中,介紹了串并混合的捕獲方案和基于遲早門的跟蹤方案。以Quartus II作為平臺采用Verilog HDL的硬件描述語言進行設計,并進行了Modelsim的仿真測試,最終下載到具體FPGA器件進行了基帶的傳輸測試。
關鍵詞: FPGA;PN碼;捕獲;跟蹤;Modelsim

    在擴頻通信中直接序列擴頻方式是常用的擴頻方式之一。關于對傳輸速率要求較高的擴頻通信來說,碼元的快速捕獲和良好的跟蹤性能就顯得至關重要[1]。而FPGA芯片由于其出色的數據高速處理能力、保密性好、開發(fā)方便靈活、開發(fā)工具智能化等特點在現(xiàn)代數字通信中得到越來越廣的應用。在基帶擴頻碼解調中PN碼的捕獲和跟蹤是原始信號能否正確解擴的關鍵,擴頻碼的捕獲一般有串行捕獲、并行捕獲和匹配濾波器捕獲方式。匹配濾波器的方式由于受到碼元周期的限制,隨著m序列周期的增加匹配濾波器的復雜度將會急劇增加。串行捕獲方式雖然實現(xiàn)簡單但耗費時間,而并行捕獲方式雖然捕獲時間短但耗費硬件資源。所以本文結合串行捕獲方式和并行捕獲方式各自的優(yōu)點,采用串并混合的捕獲方式。而碼元跟蹤采用的是“遲早門”的跟蹤方式。
1 直接序列擴頻解調輸出
1.1 直接序列擴頻解調框圖

    直接序列擴頻解調模塊為直擴系統(tǒng)的重點也是難點,本次設計PN碼基帶解擴包括4個主要模塊:本地m序列發(fā)生器、PN碼捕獲模塊、PN碼跟蹤模塊和解調輸出模塊[2]。其解調功能框圖如圖1所示。

    本次設計采用的m序列為15位m序列,并且特征多項式為y=x15+x+1,m序列的主要性質有:n級m序列具有周期性,周期p=2n-1;在m序列一個周期中“1”和“0”的數目基本相等(嚴格說1的總個數比0多一個);m序列具有很好的自相關性。
    由于兩個相同m序列稍有相位差相關性就會急劇下降[3],所以可以利用m序列很好的自相關性和均衡性對其進行解調。
1.2 PN碼捕獲模塊
    在PN碼捕獲模塊中本地m序列發(fā)生器產生的15路PN碼分別送入捕獲模塊的15路通道,每個通道中首先進行PN碼和接收信號的相關運算。
    (1)相關器
    在數字信號中相關器由乘法器和積分器共同組成,乘法器完成本地PN碼和接收信號的乘法運算,當本地PN碼和接收信號同為高電平時輸出“1”,當其中之一為低電平時即為“0”。
    積分器的作用是對乘法器輸出的“1”做累加。采用系統(tǒng)時鐘sys_clk(50 MHz)對積分器進行控制。為了時序的可控性,定義一個計數器counter,counter用于記錄本地PN碼輸出個數,PN碼每輸出一個,counter加1,計滿一個周期清零。
    (2)判決器
    15路判決器分別對本路積分器輸出數據進行判決,在積分器清零前進行相關性判決,在一個周期(32 767)碼元內進行4次判決,這樣就節(jié)省了捕獲時間和運算量。如果積分值大于預設值,則認為此路與接收信號相關性最好,完成捕獲。
    (3)15路捕獲判決并時鐘調整
    本模塊完成信號的最終捕獲,需要15路捕獲判決器、分頻計數器和本地時鐘的協(xié)同配合。15路捕獲判決器主要用于判斷哪一路與接收信號最相關,完成了捕獲。為了便于接下來的信號的跟蹤,要求最終接收信號要與第0路相關性最大。如果捕獲判決器檢測到非第0路的其他路信道捕獲到信號,將會控制分頻計數器的計數,從而控制時鐘的頻率。如果15路捕獲判決器檢測到第0路捕獲到信號,則cnt0=0;如果檢測到第1路捕獲到信號,則cnt0=1;依此類推,如果第14路捕獲到信號,則cnt0=14;如果沒有檢測到某一路相關,則cnt0=15[4]。分頻計數器將根據送出的cnt0的值調整計數方式,從而調整時鐘頻率。如圖2所示,第一次判決第4路與接收信號相關,分頻計數器調整本地時鐘,在下次判決時cmp0為高電平完成捕獲。
      圖2中,sys_clk為全局時鐘;clk為本地PN碼發(fā)生器時鐘;cmp0~cmp5為積分判決器輸出;cnt0為15路捕獲判決器輸出。

1.3 PN碼跟蹤模塊
      在完成PN碼捕獲后,系統(tǒng)進入跟蹤狀態(tài),在跟蹤模塊中采用的是“遲早門”[5]位同步法。關于“遲早門”的原理如圖3所示,采用8倍于碼元信號的速率對信號進行跟蹤采樣。每個采樣脈沖出現(xiàn)時,“接收信號”與“本地滯后信號”、“本地超前信號”分別進行相乘。以一個碼元來說明,如圖3中的兩條實線之間,在此碼元期間進行乘加操作后,如果碼元接收信號與本地時鐘同步,則乘加后超前和滯后兩路信號的值應該都為4。但如果接收信號滯后本地時鐘(如圖3虛線所示),則在一個碼元周期后,本地滯后信號的累加值為5,而超前信號的累加值為2。這樣在經過一定的碼元周期后進行超前通道和滯后通道的累加值判斷,如果滯后信號通道累加值大于超前通道累加值,則接收信號滯后本地時鐘;反之,則接收信號超前本地時鐘。PN碼的跟蹤就是采用上面的同步方法,在本地時鐘的控制下分別采用第0路和第1路作為本地滯后信號behind_clk和本地超前信號ahead_clk。

    分頻器計數器根據接收到的ahead_clk、behind_clk信號狀態(tài)調整本地時鐘頻率。當behind_clk為“1”時,說明本地時鐘頻率太快,cnt1不再累加計數;當ahead_clk為“1”時,說明本地時鐘頻率太慢,cnt1快速計數;當behind_clk和ahead_clk都為“0”時,說明本地時鐘與接收信號同步,cnt1正常計數[6]。
    如圖4的捕獲跟蹤全局圖所示,由上到下,sys_clk為系統(tǒng)時鐘;clk為本地時鐘;rev_data為接收信號;m_seril0、m_seril1為本地15路相干PN碼中的第0路和第1路;add_out0、add_out1為15路積分累加器中的第0路和第1路累加器;add_out15為超前路累加器;add_out16為滯后路累加器;ahead_clk為判決點超前標志信號;behind_clk為判決點滯后標志信號;m_behind為滯后信號;m_ahead為超前信號;cmp0~cmp4為第0路到第4路積分判決器輸出,cnt0為15路判決器輸出。在cmp0輸出為高電平后系統(tǒng)完成捕獲,進入跟蹤模塊,在超前滯后時鐘的控制下對本地信號進行微調從而實時對輸入信號進行跟蹤。在系統(tǒng)進入跟蹤后,還會一直監(jiān)視系統(tǒng)是否有大的波動導致失跟蹤,一旦失跟蹤,就重新進入捕獲模塊。如果捕獲完成就進入解調模塊,本地同步PN碼與接收信號異或即可完成解調。


2 下載測試

 


    最后將0~F共16個數據從一端循環(huán)發(fā)送至另一終端接收,并數碼管顯示。
    首先將16個數據以自定義幀數據格式進行傳輸,一幀數據為10位:1位幀頭位,8位數據位,1位幀尾。每幀數據發(fā)送時間間隔為1.442 56 ms,碼元周期為15 680 ns(碼元傳輸速率為Rs=63.775 kb/s)。然后在系統(tǒng)時鐘的控制下,用PN碼進行調制,PN碼傳輸速率RPN=3.125 Mb/s,信號的調制就是PN碼和信號碼元相異或,接收端在碼元嚴格同步情況下用相同PN碼與接收信號異或,即可得到原始信號。圖5為信號解調的Modelsim仿真圖。
    sys_clk為系統(tǒng)時鐘,rev_data為接收信號,m_seril0為第0路本地相干信號,data為解調后信號,send_data為發(fā)送的原始信號。
    將經過Verilog HDL編寫的調制和解調代碼經過編譯、布局布線、引腳分配后分別下載至兩個終端電路板器件,并進行兩個終端間數據傳輸,結果正確工作穩(wěn)定。
參考文獻
[1] 郭黎利,李北明,竇崢.擴頻通信系統(tǒng)的FPGA設計[M]. 北京:國防工業(yè)出版社,2013.
[2] 李振宇.基于FPGA的擴頻信號發(fā)生器的研究與設計[D]. 哈爾濱:哈爾濱工程大學,2007.
[3] 樊昌信,曹麗娜.通信原理[M].北京:國防工業(yè)出版社,2007.
[4] 宮二玲,王躍科,楊俊.直序擴頻通信中碼元同步的快速捕獲[J].通信學報,2003,24(11):34-39.
[5] 瞿俊杰.基于模糊控制的遲早門同步器及其FPGA實現(xiàn)[J]. 電子技術應用,2003,29(8):37-38.
[6] 楊迪.直接擴頻接收機的碼捕獲與跟蹤技術研究[D].昆明:昆明理工大學,2007.

此內容為AET網站原創(chuàng),未經授權禁止轉載。