999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的幀同步系統設計

2013-04-12 00:00:00杜勇劉帝英
現代電子技術 2013年15期

摘 要:介紹了集中式插入法幀同步系統的原理,分析了幀同步系統的工作流程。采用模塊化的設計思想,利用VHDL設計了同步參數可靈活配置的幀同步系統,闡述了關鍵部件的設計方法。在Xilinx的FPGA器件XC3S200?4FT200上對幀同步系統進行了實現,利用Modelsim 6.0軟件進行了仿真測試。仿真結果表明,同步系統工作穩定,滿足性能要求。

關鍵詞: 幀同步; FPGA; VHDL; 模塊化

中圖分類號: TN914?34 文獻標識碼: A 文章編號: 1004?373X(2013)15?0069?04

Design of frame synchronization system based on FPGA

DU Yong, LIU Di?ying

(Jiuquan Satellite Launch Center, Jiuquan 732750, China)

Abstract: The principles and work flow of centralized plug?in frame synchronization system are described and analyzed. Modular programming idea is used to design a frame synchronization system which synchronization parameters can be flexibly configured based on VHDL. The design methods of key components are described in detail. The frame synchronization system was implemented on XC3S200?4FT200 of Xilinx FPGA, Modelsim 6.0 software is used in the simulation test. The simulation results show that the system is stable and can meet the performance requirements.

Keywords: frame synchronization; FPGA; VHDL; modularization

0 引 言

在數字通信系統中,發送端一般以一定數目的碼元組成一個個“字”或“句”,即組成一個個數據幀進行傳輸,因此幀是數據傳輸的基本單位。不同的通信系統具有不同的幀結構。幀一般分為幀同步碼和數據兩部分,幀同步碼用于標志幀的起始位置;數據則是需要傳輸的有效碼元。幀同步碼組的插入方法主要有兩種[1]:集中式插入法和間隔式插入法。集中式插入法就是在每幀的開頭集中插入幀同步碼組的方法;間隔式插入法則是將幀同步碼組分散插入到數據流中,即每隔一定數量的信息碼元插入一個幀同步碼元。本文主要討論集中式插入法幀同步的FPGA實現。

一般來講,幀同步在位同步之后才能進行。雖然信號的頻率很容易由位同步信號經過分頻得到,但是幀的起始和末尾時刻則無法由位同步信號分頻確定[2]。幀同步的主要任務就是要獲取每個數據幀的起始及結束位置。隨著可編程邏輯器件的發展,采用FPGA實現幀同步等數字系統具有速度快、使用方便、可編程配置各種參數等一系列優點,因而得到了越來越廣泛的應用[3?5]。

1 集中式插入法幀同步的原理及流程

1.1 集中式插入法幀結構

集中式插入法是指在每幀數據的開始位置集中插入幀同步碼序列的方法。在這種同步傳輸方式中,被傳輸的數據比特被編成幀,每幀包括多個數據,幀的首部加一個幀同步碼組(也稱為幀的標志字),記作U,其長度為[M](單位:b),幀內的數據比特數為[D。]接收端對接收的比特流進行搜索,一旦檢測到標志字U,就知道了一幀數據的開始,并據此對幀內的數據進行分組處理,以此建立起同步傳輸機制。集中式插入法的數據幀格式如圖1所示。

圖1 集中式插入法的數據幀格式

顯然,幀同步碼組必須滿足一定的條件[2]:首先,同步碼組要求盡量與所要傳輸的數據不同,以免將數據誤認為是同步碼組;其次要求幀同步碼組具有尖銳單峰的自相關特性,以便于接收端進行正確檢測;第三個要求是長度不能太長,以免占用過多的信道資源。目前常用的幀同步碼組主要有廣義巴克(Barker)碼序列,一些系統也使用具有偽隨機特性的m序列作為同步碼組[3?6]。

1.2 幀同步的幾種狀態

根據幀同步搜索的原理,在幀同步搜索過程中顯然存在假鎖的可能性(也稱虛警概率),因為數據比特所構成的碼序列,或部分的標志字與部分的數據比特所構成的長度為[M]的碼序列也有可能滿足檢測條件,而被誤認為U。因此,為了提高幀同步系統的性能(減小假鎖的概率,鎖定后盡量增加同步的穩定性),工程上通常通過增加同步流程的復雜性來實現改善性能的目的。一般來講,將幀同步的過程分為三個狀態:搜索態、校核態和同步態,其狀態轉移圖如圖2所示。

圖2 幀同步過程的狀態轉移圖

搜索態:在數據接收的起始時刻,或幀校核時出現未同步幀,或同步態時發現有多個連續幀未同步時轉入搜索態。搜索態下,程序在數據流中持續搜索幀同步碼,當從接收到的比特流中找到幀同步碼時,表明已搜索到了一個同步幀頭,此時輸出一個脈沖信號,系統可進入校核態。

校核態:若連續經過[N]幀同步碼確認搜索態中找到的幀頭正確,則系統可立即轉入同步狀態;否則說明存在假同步,需要返回搜索態重新對幀同步碼進行搜索。由首次搜索到幀同步頭到進入同步態的[N]幀時間叫做后方保護時間。

同步態:幀同步系統處于同步狀態時,若沒有出現連續[M]幀數據未同步,則保持在同步狀態。考慮到接收的數據流中可能受外界干擾而存在誤碼,在同步狀態中只有連續[M]幀丟失同步碼才進入失步狀態,并返回搜索態,這個[M]幀的時間叫做前方保護時間。

2 幀同步系統的VHDL設計與仿真

2.1 總體結構設計

根據實例需求,幀同步碼組長度(LenCode)、幀同步碼組(FrameCode)、容錯位數(ErrorNum)、幀長(LenFrame)、校核態校核幀數(CheckNum)以及同步態校核幀數(SyncNum)均以常量的形式設置,便于VHDL程序中修改同步參數。系統數據速率及時鐘頻率為50 MHz。

根據圖2所示的結構,很容易想到采用狀態機的設計方法來實現同步系統[3?5]。不論是采用狀態機方式,或原理圖方式進行VHDL程序設計[7],最終均可以轉換成VHDL代碼的形式。顯然,直接采用編寫VHDL代碼的形式,更利于程序的修改及升級維護。因此,本文完全采用代碼編寫方式來進行程序設計。

圖2是一個典型的狀態轉移圖,可以將轉移條件看作狀態之間的信號接口。整個幀同步系統可以劃分為搜索狀態模塊(Search)、校核狀態模塊(Check)及同步狀態模塊(Sync)。除了上電后啟動搜索狀態之外,當校核未通過(CheckNum幀內有一個校核幀未同步)或同步態失鎖(連續SyncNum幀未同步)時也需啟動搜索狀態,因此搜索狀態的啟動信號有復位信號(rst)、校核態重搜索信號(Research_check)和同步態重搜索信號(Research_sync);校核態的啟動信號僅來自于搜索態(search_over),即只有當搜索到幀同步碼后才能轉入校核態,如果校核通過則送出校核完成信號(check_over),校核未通過則送出重新搜索信號(Research_check);同步態的啟動信號僅來自于校核態(check_over),只有校核通過后才能進入同步狀態。進入同步態后,持續對同步碼組進行檢測,當檢測到重新失鎖后送出Research_sync,重新啟動搜索狀態。圖3為幀同步系統頂層VHDL程序文件采用Synplify Pro綜合后的RTL原理圖。

2.2 搜索模塊的VHDL設計與仿真

搜索模塊的對外接口如圖3所示。其中,CLK_BitSync及Data_in分別為位同步時鐘信號和輸入數據;Data_out為經2個時鐘周期延時后的比特流數據。對輸入數據的延時處理,是為了補償產生search_over時的處理時延,以便于脈沖信號search_over與最后一位幀同步碼對齊。

搜索輸入比特流中的幀同步碼組,首先需要將輸入數據送入移位寄存器(Regdin)中,而后將Regdin中的數據與幀同步碼組相比即可。程序中將多路啟動信號(rst、Research_check、Research_sync)取或后,作為異步復位信號,用于啟動一次搜索過程。搜索過程中,采用for循環對寄存器Regdin與同步碼組進行比較,通過逐位比較,每發現1 b不相同,則計數加1,計算出兩者之間的漢明距離。計算完漢明距離后,判斷是否大于容錯門限ErrorNum,如大于容錯門限則繼續搜索,否則輸出同步脈沖search_over,并停止搜索。

圖4為搜索模塊的Modelsim仿真波形。其中,幀同步碼長度LenCode=7,幀同步碼FrameCode= “1011000”,容錯門限ErrorNum=1。可以看出,復位后首先搜索到一次幀同步碼組;當Research_check為高電平,啟動另一次搜索過程,比特流中搜索到“1001000(ErrorNum=1)”時,此時容錯位數設置為1,因此輸出同脈沖search_over,并停止搜索過程,即使后續比特流中出現了“1011001(ErrorNum=1)”,仍然不輸出同步脈沖。

圖4 搜索模塊Modelsim仿真波形圖(ErrorNum=1)

2.3 校核模塊的VHDL設計與仿真

為便于程序編寫,校核模塊主要由Check_Ce進程和Checking進程組成。Check_Ce進程用于檢測search_over信號,檢測到信號出現高電平后,產生長度為CheckNum幀數據的高電平允許信號CheckCe,并通過計數器Number來標識每幀中數據及同步碼組的位置。產生了CheckCe及Number信號后,Checking進程只需在CheckCe信號為高電平的范圍內對同步碼組進行校核即可。校核完成后,需要使check_over(連續CheckNum幀均同步)或research_check(CheckNum幀內有一幀未同步)信號產生一個高電平脈沖。幀校核的方法與搜索同步碼組的方法類似,即通過漢明距離來判斷是否同步。將校核態分成Check_Ce進程和Checking進程來分別進行實現,則每個進程的功能劃分更為簡單,編程實現時也相對容易得多。

圖5是校核模塊的Modelsim仿真波形。其中,幀長度LenFrame=16,校核幀數CheckNum=2,容錯門限ErrorNum=0,其余參數與搜索模塊相同。從波形上很容易看出,當search_over第一次出現高電平時,其后連續兩組同步碼均為“1011000(ErrorNum=0)”;當search_over第二次出現高電平時,其后第一組同步碼為“1001000(ErrorNum=1)”,第二組同步碼為“1011000(ErrorNum=0)”。因此第一次幀校核順利通過,校核完成后check_over輸出一個高電平脈沖,research_check保持為低電平;第二次校核未通過,校核完成后research_check輸出一個高電平脈沖,check_over保持為低電平。

圖5 校核模塊Modelsim仿真波形圖(ErrorNum=0)

2.4 同步模塊的VHDL設計與仿真

為了簡化設計,將同步狀態分為三個進程來完成,即計數器進程(Counter)、幀校驗進程(FrameChecking)和同步校驗進程(SyncChecking)。Counter進程用于產生幀內數據位置的計數,當檢測到check_over信號為高電平時,重新開始以幀周期(LenFrame)循環計數;FrameChecking進程用于產生幀起始位置的同步脈沖,且高電平脈沖與同步碼的最后1 b對齊,該進程首先需要對同步碼組進行校核,如校核通過,則在同步碼位置處產生一個高電平脈沖FramePosition,如果校驗未通過,則在同步碼位置不產生高電平脈沖;SyncChecking進程通過判斷FramePosition來確定系統是否處于同步狀態,即只需判斷FramePosition是否連續在同步碼組的位置出現低電平,如連續出現SyncNum次低電平,則判斷為失鎖,否則繼續維持同步狀態。

圖6是同步模塊的Modelsim仿真波形。其中同步態校核幀數SyncNum=2,其他參數與校核態相同。從圖中可以看出,當檢測到check_over為高電平時,計數器Number開始以周期為幀長LenFrame=16循環計數。當check_over出現高電平時,其后連續4組同步碼為“1011000(ErrorNum=0)”,“1001000(ErrorNum=1)”,“1001000(ErrorNum=1)”,“1001000(ErrorNum=1)”。由于此時設置的容錯門限ErrorNum=0,因此第一幀同步碼校核通過,輸出了同步脈沖FramePosition,此后出現連續3個校核未通過的數據幀。同步狀態信號State_Sync高電平狀態持續維持了2幀數據的長度,而后停止同步狀態,輸出失步信號research_sync,用于啟動搜索過程。

圖6 同步模塊Modelsim仿真波形圖(ErrorNum=0)

3 幀同步系統的FPGA實現及仿真

本實例的目標器件為XC3S200?4FT200,FPGA實現后,查找表資源(LUTs)占用了484個(12%),全局時鐘資源(GCLKs)占用了1個(12%)。最高系統時鐘頻率(Maximum frequency)可達54.81 MHz。圖7是幀同步系統的Modelsim仿真波形。其中,各模塊的容錯門限ErrorNum均為0,其他同步參數不變。

圖7 幀同步系統Modelsim仿真波形圖

圖7實際上對幀同步系統的搜索、校核、校核未通過、失步、重新搜索、重新同步等過程進行了完整的仿真測試。下面根據圖中的標號順序對同步系統的各個狀態進行分析。①系統上電,復位信號rst由高電平變為低電平后,首先啟動搜索過程,搜索到同步碼時輸出search_over脈沖;②檢測到search_over后,轉入校核過程,由于連續通過2個數據幀的校核,輸出校核通過脈沖check_over;③檢測到check_over后,轉入同步過程,在同步狀態下檢測到1個未同步幀(“0010000”),由于不是連續出現2個未同步幀,因此保持同步狀態;④在同步狀態下連續檢測到2個未同步幀(“0010000”),停止同步狀態,輸出research_sync高電平脈沖,重啟搜索過程;⑤重新搜索到同步碼后,輸出search_over脈沖,重啟校核過程,但校核過程檢測到了一個未同步幀,輸出research_check脈沖;⑥research_check脈沖再次啟動搜索過程,搜索到同步碼后輸出search_over脈沖;⑦search_over啟動校核過程,且通過了校核,輸出check_over脈沖;⑧check_over啟動同步過程,在同步狀態下,連續檢測到2個未同步數據幀,再次輸出失步脈沖research_sync;⑨Research_sync重啟搜索過程,搜索完成后輸出search_over脈沖,啟動校核過程,校核通過,輸出check_over脈沖信號,重新回到同步狀態。

4 結 語

本文基于模塊化設計思想,采用VHDL語言對幀同步系統進行設計實現,有利于程序的移置及維護。設計的關鍵在于理解各模塊之間的信號接口關系及時序關系。在模塊設計時,通過進一步合理劃分模塊內部的結構,可以更好地理清程序思路并提高設計效率。

參考文獻

[1]樊昌信,張莆翊,徐炳祥.通信原理[M].5版.北京:國防工業出版社,2001.

[2]郭梯云,劉增基,詹道庸.數據傳輸[M].2版.北京:人民郵電出版社,1998.

[3]陳惠珍,包天珍.一種基于FPGA的幀同步提取方法的研究[J].電子技術應用,2003(10):70?72.

[4]李世超.基于FPGA的集中插入式巴克碼幀同步的實現[J].數據通信,2010(6):33?35.

[5]孫志雄,李太君.基于FPGA的高速數字相關器設計[J].微計算機信息,2009,25(17):254?255.

[6]查光明,熊賢祚.擴頻通信[M].西安:西安電子科技大學出版社,1997.

[7]杜勇.FPGA/VHDL設計入門與進階[M].北京:機械工業版社,2011.

主站蜘蛛池模板: 青草91视频免费观看| 日韩午夜福利在线观看| 久久久久久久久18禁秘| 欧美一级黄片一区2区| 国产高潮流白浆视频| 91外围女在线观看| 亚欧美国产综合| av一区二区无码在线| 免费无遮挡AV| 国模私拍一区二区| 亚洲爱婷婷色69堂| 亚洲婷婷丁香| 久久永久精品免费视频| 国产高清自拍视频| 一级毛片不卡片免费观看| 2020国产在线视精品在| 国产亚洲成AⅤ人片在线观看| 亚洲六月丁香六月婷婷蜜芽| 亚洲天堂区| 久久婷婷综合色一区二区| 国产在线观看精品| 日韩精品一区二区三区视频免费看| 五月天在线网站| 久久久久亚洲精品无码网站| 九九热免费在线视频| 国产精品一老牛影视频| 欧美精品xx| 免费三A级毛片视频| 国产一级妓女av网站| 久久国产精品电影| V一区无码内射国产| 亚洲国产综合精品一区| 无码高清专区| 国产精品v欧美| 国产经典在线观看一区| 人妻丰满熟妇AV无码区| 国产成人91精品免费网址在线| 久久久久久国产精品mv| 在线va视频| 国产在线专区| 91香蕉视频下载网站| 欧美一区二区丝袜高跟鞋| 久久精品国产免费观看频道| 欧美第一页在线| 欧美一区二区三区欧美日韩亚洲| 国产Av无码精品色午夜| 欧美特黄一级大黄录像| 嫩草国产在线| 玖玖精品在线| 国产视频只有无码精品| 国产成人一区二区| 国产成人在线小视频| 香蕉伊思人视频| 日韩精品专区免费无码aⅴ| 91丝袜乱伦| 国产一区二区色淫影院| 国产精品亚洲一区二区在线观看| 精品一区二区三区自慰喷水| 原味小视频在线www国产| 精品国产免费观看| 99一级毛片| 亚洲午夜18| 欧美成人手机在线观看网址| 亚洲视频二| 久久久久九九精品影院| 久久动漫精品| 国产精品精品视频| 国产91久久久久久| 97影院午夜在线观看视频| 国产精品自在线拍国产电影| 毛片免费高清免费| 国产欧美视频在线观看| 啪啪啪亚洲无码| 性欧美久久| 国产精品一线天| 日本午夜三级| 成人在线欧美| 亚洲欧美不卡中文字幕| 亚洲国产成人自拍| 久久精品中文字幕免费| 国产在线一二三区| 国产拍揄自揄精品视频网站|