摘 要: 設計了一種基于EPF10KRC208-4的誤碼儀,該設計充分利用了FPGA強大的可編程能力和豐富的資源,以及軟件開發平臺Quartus Ⅱ的完備功能,具有體積小巧、攜帶方便、測量精確等優點。其核心部分分別采用了逐位比較法和移位寄存器法,并在仿真過程中設置了多種誤碼情況進行對比。最后,根據仿真結果分析了方案的可行性和兩種方法的優缺點。
自20世紀下半葉以來,信息技術的飛速發展在軍事領域掀起了軍事變革的浪潮,使武器裝備、作戰模式和作戰理論的本質發生了深刻變化。信息技術促進了衛星通信、光纖通信等現代通信手段與現代偵查監視系統、計算機網絡和武器控制的結合,實現了情報、通信、指揮與控制一體化的情報指揮控制系統(C3I系統)正改變著傳統的作戰模式,使戰爭形態由機械化戰爭轉變為信息化戰爭。
隨著通信技術的不斷發展,數字通信正在逐步取代模擬通信成為主要的通信方式。而誤碼是影響數字通信系統最重要的因素,因為誤碼直接破壞了信息傳遞的正確性。然而在信息化戰場上,存在各種各樣復雜的干擾,人為干擾如雷達波、各種電器開關通斷產生的短脈沖等的電磁波,敵方的電子干擾、各種干擾彈、機動馬達和炮擊爆炸等電磁輻射,還有非人為的雷電、宇宙輻射、鄰近通信系統等的干擾,這些干擾往往是導致信道產生誤碼的最重要因素。
為了正確地評估戰場環境下通信系統的性能,本文研究了基于FPGA的誤碼儀設計,采用FPGA使設計具有結構小巧,攜帶方便等優點,其核心部分的設計分別采用了逐位比較法和移位寄存器法。
1 基本原理
設計過程中FPGA開發環境采用Altera公司的開發軟件Quartus Ⅱ 9.0,它集成邏輯分析、功率分析、時序優化和EDA工具等功能,使設計變得十分簡潔。
1.1 逐位比較法的基本原理
逐位比較法誤碼儀示意圖如圖1所示,誤碼儀由發送和接收兩部分組成[3]。發送部分由碼型發生器組成,Select為測試碼類型選擇輸入,接收部分由時鐘同步器、本地碼產生器、逐位比較器和誤碼統計模塊組成。
其原理為:在低頻時鐘CLK1的驅動下,將碼型發生器生成的測試碼m序列輸入到被測信道,然后由接收端接收,并提取時鐘同步器進行時鐘同步。在8倍高頻時鐘CLK8的驅動下,提取數據流的時鐘信號。時鐘同步完成后,位同步器輸出頻率同CLK1的同步時鐘CLK一致,其上升沿對準接收數據的中間部分,以保證接收數據的正確性。
m序列經過被測信道后,進入接收端的本地碼產生器和逐位比較器。接收端把接收到的m序列前N個碼元(N為m序列發生器級數)對本地碼產生器進行灌碼,并把所灌碼作為本地產生器的初值。本地碼產生器的結構與發送端的碼型發生器結構相同,因此,如果所灌碼正確,就可以產生與發送端完全一致的m序列,該序列與接收到的數據在逐位比較器中進行逐位比較。
如果測試數據在傳輸中有誤碼,則在逐位比較過程中可以檢測出來。逐位比較器將檢測到的誤碼信號傳輸給誤碼統計模塊,該模塊的功能是進行誤碼數累計,累計的數據傳送給計算顯示模塊。當一段時間內誤碼數量超過所設上限,則該模塊給出失步信號LostSyn,說明此時系統失步,統計的誤碼數據無效,需重新同步。失步信號LostSyn使本地碼產生器重新進行灌碼,并產生新的本地序列。后續步驟同上。
1.2 移位寄存器法的基本原理
移位寄存器法誤碼儀的示意圖如圖2所示,誤碼儀的設計也包括發送部分和接收部分。發送部分由碼型發生器組成,接收部分由時鐘同步器、誤碼檢測器和誤碼統計模塊組成。碼型發生器與上一種方法工作方式不同,在同一次測試中要先后產生兩種碼型,先產生時鐘同步碼,再產生m序列。時鐘同步碼只用于接收端時鐘提取,時鐘同步器工作原理與第一種方法相同。時鐘同步后時鐘同步器發出Syn信號通知碼型發生器產生m序列,這樣可以避免測試數據的丟失,保證誤碼檢測的正確性。
該方法的最大特點是用一個誤碼檢測器代替了上一種方法的本地碼產生器和逐位比較器。當時鐘同步后,m序列經過被測信道直接進入接收端的誤碼檢測模塊進行誤碼檢測,而不需要再產生本地碼,這種設計方法的優點是抗干擾能力更強,設計也簡單;缺點是占用FPGA資源多,耗用83%的邏輯單元,設計多種碼型時占用資源更是明顯增多。而逐位比較法對FPGA資源要求不高,僅占13%的邏輯單元,容易實現多種碼型測試。誤碼統計模塊的工作原理與前一種方法相同。
2 設計方法
2.1 逐位比較法的設計方法
碼型發生器模型圖如圖3所示,其核心為m序列發生器。其中,CLK1為產生測試數據的基準時鐘;Select為碼型選擇輸入端,在這里設計了兩種碼型,通過控制Select端狀態來實現測試碼型的切換;ErrorIN為手動誤碼輸入端,該端連接一個按鈕,按一次按鈕產生一個誤碼;DATA為數據輸出端口。
圖4為時鐘同步器模型,其核心為一個抽樣電路。CLK8為8倍高頻時鐘輸入端,DataIN為數據輸入端,SynCLK為同步時鐘輸出端,Syn為時鐘同步標志位。設計的方法為:數據輸入端DataIN作為抽樣電路的控制端,高電平時抽樣電路工作,在一個周期內抽樣電路需進行3點抽樣,當輸入數據的寬度無法滿足3點抽樣時,視為干擾,繼續進行時鐘同步搜索。當3點抽樣皆為高電平時,才視為正常數據,使該模塊輸出同步時鐘和時鐘同步標志位。該同步時鐘作為接收端后續電路的時鐘信號。
圖5為本地碼產生模塊模型圖,其核心為灌碼電路設計和m序列發生器。CLK為時鐘輸入端(后續模塊相同),DataIN為數據輸入端,Reset為復位端,DATA為本地碼輸出端。灌碼電路設計的關鍵是,在進行灌碼時,將m序列發生器(最長線型反饋移位寄存器)的循環回路斷開,使其成線性移位寄存器;當灌碼完成后,將m序列發生器循環回路接通,此后,DataIN輸入的數據無效,即可按照所灌初值自行產生m序列。當出現失步或者手動復位時,復位信號從Reset端輸入使該模塊重新進行灌碼操作。
圖6所示為逐位比較器模型圖,其核心為一個異或門和相應的時延電路。其中A為本地碼輸入端;B為接收數據的輸入端,其在內部需要經過一定的時延,再跟A端數據接到異或門;EN為使能端。若出現誤碼,則在某時刻B端的碼元跟A端的碼元相異,經過異或門后輸出一個高電平,其他相同的碼元經過異或運算后輸出為低電平,這樣就能判別誤碼的情況了。Q即為誤碼輸出端,高電平表示有誤碼,一個時鐘的高電平表示有一個誤碼。
圖7為誤碼統計模塊模型圖,其核心為高電平到窄脈沖的轉換電路和誤碼計數電路。其中ErrorIN為誤碼信號輸入端,其在內部經過轉換電路轉換為窄脈沖信號;LostSyn為失步信號輸出端;Z[16..1]為誤碼統計數據輸出端。在給定時間內誤碼數量達到上限,則給出失步信號。失步信號通過一個8位計數器給出,該計數器8位輸出連接到一個8位與非門,通過改變連接方法可以設置0~255的任何一個定時值。另外,在其內部設計一個清零電路,清零周期即為所設時間段,每個周期結束時的一個時鐘清零電平將計數器清零,以保證每個周期從零計數。誤碼數據統計器為16位計數器。
2.2 移位寄存器法的設計方法
移位寄存器法的時鐘同步器和誤碼統計模塊的設計方法與上一種方法相同。下面僅介紹一下碼型發生器和誤碼檢測器的設計。
圖8為碼型發生器模型圖,其核心為m序列發生器和方波發生器。其模型圖跟逐位比較法的不同之處在于輸入端沒有Select端,而有Syn端。Syn信號來自時鐘同步器的同步標志位Syn。該輸入通過控制一個開關電路來達到切換方波發生器和m序列發生器的目的。由于移位寄存器設計方法耗用資源多,不適合設計多種碼型,這里僅設計了一種m序列發生器,所以沒有Select端。當然,如果不考慮成本,也可以設計多種碼型。
圖9為誤碼檢測器模型圖,其核心為一個串入并出移位寄存器和一個并入串出移位寄存器。其中,DataIN為數據輸入端,STLD為并入串出移位寄存器的移位加載端,Error為誤碼輸出端。
圖10為誤碼檢測器設計思路示意圖。m序列每一周期的排列規則是固定不變的,即每個周期中的對應位都是相同的。移位寄存器法就是利用了這種周期性。假設該方法設計的碼型為511碼,又設每個周期的第20~24位的排列是“11001”,則移位寄存器對應位設計如圖10所示。按照這種設計方法,當一個周期的511個碼元正好出現在SREG1的輸出端口上時,如果傳輸的碼元無誤碼,則SREG2的輸入端口全是低電平,否則,對應的高電平即為誤碼,此時給STLD端口一個低電平,則將SREG1的511個輸出數據經過上述處理后加載到SREG2。SREG2在CLK的驅動下,將加載進來的數據從Error端口串行輸出,高電平即代表誤碼。
3 仿真分析
下面利用Quartus Ⅱ開發平臺對上述兩種方法在給定多種條件下進行時序仿真,并進行分析。
圖11、圖12所示是在沒有手動加入誤碼的情況下(即ErrorIN為低電平)兩種方法的仿真截圖,所用碼型皆為511碼,所用時鐘頻率相同,分別在兩個不同的時間段進行了截取。從圖11、圖12可以看出,逐位比較法在時間t=499.0 ns處完成了時鐘同步,移位寄存器法在時間t=500 ns處完成了時鐘同步,在所給時間段內,兩種方法的誤碼輸出皆為低電平。對于移位寄存器法,在時間t=205.275 ?滋s處移位加載端STLD加載有效,把一個周期的511個碼元經過處理后同時加載到SREG2,此后每隔一個周期就給出一個加載有效信號。
圖13、圖14所示是手動加了一個誤碼的情況下兩種方法的仿真截圖,碼型和頻率同前,分別在3個不同時間段進行了截取。由圖13、圖14可以看出,在時鐘同步之后,ErrorIN有一段高電平,此操作即給測試碼手動加入了一個誤碼。在此必須注意,加入的誤碼是落在測試碼的前9個碼元之內的。對于逐位比較法,這種誤碼將會使逐位比較法灌碼碼元出現誤碼。如圖13所示,在時間t=10.45 ?滋s之后連續出現了誤碼,直到t=108.85 ?滋s誤碼數在設定時間內達到了上限,系統判斷為失步并給出LostSyn信號后,又重新進行灌碼等一序列操作,才使誤碼數歸零,繼續進行測試。而逐位比較法則可以正確地檢測出誤碼。
圖15、圖16也是手動加了一個誤碼的情況下兩種方法的仿真截圖,截取了兩個時間段。與前一仿真相比,所給條件唯一不同就是加入的誤碼落在測試碼的前9個碼元之外,即逐位比較法首次灌碼碼元正確。由圖15、16中可以看出,在給定條件下,兩種方法都沒有出現失步現象,而且都能正確檢測出誤碼信息。結果說明,逐位比較法能否正確檢測出誤碼,取決于所灌碼元正確與否,也即抗干擾能力差,如果出現連續的灌碼碼元誤碼,則也會連續出現失步現象。而移位寄存器法不會出現這個問題。
通過對誤碼儀兩種實現方法的設計、仿真與分析可以看出,逐位比較法耗用邏輯單元少,擴展性能也好,適合設計多種PN碼的測試。但它的抗干擾能力也相對較差,一旦灌碼碼元出現誤碼,則后續測試會出現一連串誤碼,導致測試結果錯誤,直到系統判斷為失步,才能再次進行灌碼操作,重新測試。而移位寄存器法的抗干擾能力好,但耗用資源多,不適合多種PN碼測試的設計。結果表明,兩種方法都是可行的,但各有優缺點,在實踐中可以根據實際需求進行選擇。
參考文獻
[1] 樊昌信,曹麗娜。通信原理(第六版)[M]。北京:國防工業出版社,2006.
[2] 褚振勇,齊亮,田紅心,等.FPGA設計及應用[M]。西安:西安電子科技大學,2006.
[3] 李斌。基于FPGA的誤碼儀的研究與設計[D]。武漢:武漢理工大學,2006.
[4] 吳繼華,王誠.Altera FPGA/CPLD設計(初級篇)[M]。北京:人民郵電出版社,2005.
編輯:jq
-
FPGA
+關注
關注
1630文章
21759瀏覽量
604348 -
EDA工具
+關注
關注
4文章
268瀏覽量
31842 -
開發軟件
+關注
關注
1文章
25瀏覽量
12976
發布評論請先 登錄
相關推薦
評論