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