摘 要: 研究了在直接序列擴頻通信中基于FPGA的基帶PN碼(擴頻碼)的捕獲跟蹤技術,。在PN碼解調(diào)中,,介紹了串并混合的捕獲方案和基于遲早門的跟蹤方案。以Quartus II作為平臺采用Verilog HDL的硬件描述語言進行設計,,并進行了Modelsim的仿真測試,,最終下載到具體FPGA器件進行了基帶的傳輸測試。
關鍵詞: FPGA,;PN碼,;捕獲;跟蹤,;Modelsim
在擴頻通信中直接序列擴頻方式是常用的擴頻方式之一,。關于對傳輸速率要求較高的擴頻通信來說,碼元的快速捕獲和良好的跟蹤性能就顯得至關重要[1],。而FPGA芯片由于其出色的數(shù)據(jù)高速處理能力,、保密性好、開發(fā)方便靈活,、開發(fā)工具智能化等特點在現(xiàn)代數(shù)字通信中得到越來越廣的應用,。在基帶擴頻碼解調(diào)中PN碼的捕獲和跟蹤是原始信號能否正確解擴的關鍵,擴頻碼的捕獲一般有串行捕獲,、并行捕獲和匹配濾波器捕獲方式,。匹配濾波器的方式由于受到碼元周期的限制,隨著m序列周期的增加匹配濾波器的復雜度將會急劇增加,。串行捕獲方式雖然實現(xiàn)簡單但耗費時間,,而并行捕獲方式雖然捕獲時間短但耗費硬件資源。所以本文結(jié)合串行捕獲方式和并行捕獲方式各自的優(yōu)點,,采用串并混合的捕獲方式,。而碼元跟蹤采用的是“遲早門”的跟蹤方式。
1 直接序列擴頻解調(diào)輸出
1.1 直接序列擴頻解調(diào)框圖
直接序列擴頻解調(diào)模塊為直擴系統(tǒng)的重點也是難點,,本次設計PN碼基帶解擴包括4個主要模塊:本地m序列發(fā)生器,、PN碼捕獲模塊、PN碼跟蹤模塊和解調(diào)輸出模塊[2],。其解調(diào)功能框圖如圖1所示,。
本次設計采用的m序列為15位m序列,并且特征多項式為y=x15+x+1,,m序列的主要性質(zhì)有:n級m序列具有周期性,,周期p=2n-1;在m序列一個周期中“1”和“0”的數(shù)目基本相等(嚴格說1的總個數(shù)比0多一個);m序列具有很好的自相關性,。
由于兩個相同m序列稍有相位差相關性就會急劇下降[3],,所以可以利用m序列很好的自相關性和均衡性對其進行解調(diào)。
1.2 PN碼捕獲模塊
在PN碼捕獲模塊中本地m序列發(fā)生器產(chǎn)生的15路PN碼分別送入捕獲模塊的15路通道,,每個通道中首先進行PN碼和接收信號的相關運算,。
(1)相關器
在數(shù)字信號中相關器由乘法器和積分器共同組成,乘法器完成本地PN碼和接收信號的乘法運算,,當本地PN碼和接收信號同為高電平時輸出“1”,,當其中之一為低電平時即為“0”。
積分器的作用是對乘法器輸出的“1”做累加,。采用系統(tǒng)時鐘sys_clk(50 MHz)對積分器進行控制,。為了時序的可控性,定義一個計數(shù)器counter,,counter用于記錄本地PN碼輸出個數(shù),,PN碼每輸出一個,counter加1,,計滿一個周期清零,。
(2)判決器
15路判決器分別對本路積分器輸出數(shù)據(jù)進行判決,在積分器清零前進行相關性判決,,在一個周期(32 767)碼元內(nèi)進行4次判決,,這樣就節(jié)省了捕獲時間和運算量。如果積分值大于預設值,,則認為此路與接收信號相關性最好,,完成捕獲。
(3)15路捕獲判決并時鐘調(diào)整
本模塊完成信號的最終捕獲,,需要15路捕獲判決器,、分頻計數(shù)器和本地時鐘的協(xié)同配合。15路捕獲判決器主要用于判斷哪一路與接收信號最相關,,完成了捕獲,。為了便于接下來的信號的跟蹤,要求最終接收信號要與第0路相關性最大,。如果捕獲判決器檢測到非第0路的其他路信道捕獲到信號,,將會控制分頻計數(shù)器的計數(shù),從而控制時鐘的頻率,。如果15路捕獲判決器檢測到第0路捕獲到信號,,則cnt0=0;如果檢測到第1路捕獲到信號,,則cnt0=1,;依此類推,,如果第14路捕獲到信號,,則cnt0=14,;如果沒有檢測到某一路相關,則cnt0=15[4],。分頻計數(shù)器將根據(jù)送出的cnt0的值調(diào)整計數(shù)方式,,從而調(diào)整時鐘頻率。如圖2所示,,第一次判決第4路與接收信號相關,,分頻計數(shù)器調(diào)整本地時鐘,在下次判決時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,。這樣在經(jīng)過一定的碼元周期后進行超前通道和滯后通道的累加值判斷,如果滯后信號通道累加值大于超前通道累加值,,則接收信號滯后本地時鐘,;反之,則接收信號超前本地時鐘,。PN碼的跟蹤就是采用上面的同步方法,,在本地時鐘的控制下分別采用第0路和第1路作為本地滯后信號behind_clk和本地超前信號ahead_clk。
分頻器計數(shù)器根據(jù)接收到的ahead_clk、behind_clk信號狀態(tài)調(diào)整本地時鐘頻率,。當behind_clk為“1”時,,說明本地時鐘頻率太快,cnt1不再累加計數(shù),;當ahead_clk為“1”時,,說明本地時鐘頻率太慢,cnt1快速計數(shù),;當behind_clk和ahead_clk都為“0”時,,說明本地時鐘與接收信號同步,cnt1正常計數(shù)[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)完成捕獲,,進入跟蹤模塊,,在超前滯后時鐘的控制下對本地信號進行微調(diào)從而實時對輸入信號進行跟蹤。在系統(tǒng)進入跟蹤后,,還會一直監(jiān)視系統(tǒng)是否有大的波動導致失跟蹤,,一旦失跟蹤,就重新進入捕獲模塊,。如果捕獲完成就進入解調(diào)模塊,,本地同步PN碼與接收信號異或即可完成解調(diào)。
2 下載測試
最后將0~F共16個數(shù)據(jù)從一端循環(huán)發(fā)送至另一終端接收,,并數(shù)碼管顯示,。
首先將16個數(shù)據(jù)以自定義幀數(shù)據(jù)格式進行傳輸,,一幀數(shù)據(jù)為10位:1位幀頭位,8位數(shù)據(jù)位,,1位幀尾,。每幀數(shù)據(jù)發(fā)送時間間隔為1.442 56 ms,碼元周期為15 680 ns(碼元傳輸速率為Rs=63.775 kb/s),。然后在系統(tǒng)時鐘的控制下,,用PN碼進行調(diào)制,,PN碼傳輸速率RPN=3.125 Mb/s,,信號的調(diào)制就是PN碼和信號碼元相異或,接收端在碼元嚴格同步情況下用相同PN碼與接收信號異或,,即可得到原始信號,。圖5為信號解調(diào)的Modelsim仿真圖。
sys_clk為系統(tǒng)時鐘,,rev_data為接收信號,,m_seril0為第0路本地相干信號,data為解調(diào)后信號,,send_data為發(fā)送的原始信號,。
將經(jīng)過Verilog HDL編寫的調(diào)制和解調(diào)代碼經(jīng)過編譯、布局布線,、引腳分配后分別下載至兩個終端電路板器件,,并進行兩個終端間數(shù)據(jù)傳輸,結(jié)果正確工作穩(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.