<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的幀同步系統設計方案

基于FPGA的幀同步系統設計方案

作者:杜勇 劉帝英 時(shí)間:2014-02-14 來(lái)源:摘自《電子發(fā)燒友》 收藏

  2 系統的設計與仿真

本文引用地址:http://dyxdggzs.com/article/221559.htm

  2.1 總體結構設計

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

  根據圖2所示的結構,很容易想到采用狀態(tài)機的設計方法來(lái)實(shí)現同步系統。不論是采用狀態(tài)機方式,或原 理圖方式進(jìn)行程序設計,最終均可以轉換成VHDL代碼的形式。顯然,直接采用編寫(xiě)VHDL代碼的形式,更利于程序的修改及升級維護。因此,本文完 全采用代碼編寫(xiě)方式來(lái)進(jìn)行程序設計。

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

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

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

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

幀同步系統的頂層RTL原理圖

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

搜索模塊Modelsim仿真波形圖

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

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

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: Xilinx FPGA 幀同步 VHDL 寄存器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>