用FPGA實現非標碼速向標準碼速的調整
作者:信息產業部電子第34研究所
時間:2003-03-17
來源:電子設計應用
關鍵詞:碼速調整 FPGA
一、概述
現在,利用計算機進行異地數據采集正應用到越來越多的場合,如何高效而低成本地回傳數據成為一個值得討論的問題。由于計算機輸出的數據一般都是異步數據,而且碼率與通信的標準碼率也不一致,如果要利用現有的電信網絡進行傳輸,就會涉及到碼速調整和異同步轉換的接口問題,由于碼速調整的內型比較多,本文將只討論如何將較低的異步非標碼速調整到比它高的標準碼速上。
二、方案設計
在傳統的數字電路中,對異步數據的變換處理一般采用通用異步收發器與單片機聯合工作的方式。這種方式的優點就是電路結構成熟,軟件編程簡單,只要掌握一定的單片機語言即可進行開發。但它的缺點也是顯而易見的,集成度不高,硬件電路結構復雜,當同時處理多路數據時,軟件設計的難度也將加大。現在隨著科技的進步,可編程器件的價格已經可以接受,一塊一萬邏輯門的FPGA芯片百元左右就可以買到,而這樣一塊芯片足可以集成3~4路獨立的碼速調整電路,所以采用FPGA芯片編程實現異步數據的處理將會使外圍電路變得非常簡潔,同時由于數據絕大部分時間都是在芯片內部運行,也有利于其傳輸穩定性的提高。另外,FPGA芯片大部分都可以重復擦寫,只要改動程序設計即可實現不同功能的轉換,從而加速同類型產品的開發速度,節約投資。用于開發可編程器件的軟件可以到各器件廠家的網站直接下載。
碼速調整方案的具體框圖見圖一,在其數據接收端內置了一個類似異步收發器的結構,采用16倍速高速采樣檢測異步信號起始電平的到來。為了便于描述,這里我們假設要處理的異步數據為7bit,加上一位起始位和一位停止位,總共為9bit。
三、工作流程描述
我們設計的思路是仿照通用異步收發器的執行過程,但在接收數據時并不去掉起始位和停止位,而是將數據按原來的碼速全部接收下來后再以標準的碼速發送出去,接收方的電路結構與發送方基本相同,只是少了一個空閑時插入“1”碼的電路。
根據異步信號的通信規則,沒有信號時數據線應表現為高電平,這時使用一個16倍于數據流的高速時鐘對數據線進行采樣,當檢測到信號下降沿后,表示數據的起始電平有可能已經到來,這時采樣器會輸出一個reset信號使一個16分頻的計數器復位,如果在8個高速脈沖內輸入信號又恢復到高電平,則說明剛才是干擾信號,系統又回到起始狀態;反之如果信號仍維持低電平,則表示數據起始電平已經到來, 16分頻的計數器開始工作,

經16分頻后輸出一個與輸入數據準同步的數據寫入時鐘Write_clk,將數據讀入并存放在一個9位寄存器中。
在異步數據的讀取過程中,使用一個10位計數器進行計數,在一幀數據讀入結束后計數器復位并產生一個標志信號over=‘1’,一方面使16分頻計數器停止工作,數據暫停讀入,直到下一幀數據的起始電平到來;另一方面將數據轉移到發送區,準備數據的發送。
數據發送由Ready信號控制,也是通過一個10bit的計數器進行發送計數。發送區在上電后將一直發送“1”碼,直至檢測到第二幀數據的起始位,這時發送區將發送已經結束完畢的第一幀數據,依次類推。由于碼速都是由低向高調整(即慢收快發),故一幀數據發送完畢后,其下一幀數據的讀入還沒有完成,為了保證數據的連續性和完整性,這時系統將自動插入空碼“1” ,這些插入的“1”碼在接收端接收時會因碼速的差別(即快收慢發)而被自動去掉。
當處理多路數據時,如果大家都采用相同的clock2,則經變換后輸出的多路數據將變成同步數據,可以直接進行同步復接。
主要信號工作時序如圖二示,所有程序在ALTERA 的MAXPLUSII 10.0BASE環境下編譯通過。

四、參考文獻
1.《VHDL簡明教程》 電子科技大學出版社 潘松 王國棟 編著 2000.2
2.《MCS-51系列單片機實用接口技術》 北京航空航天大學出版社 李華主編 1993
相關推薦
-
-
| 2009-04-03


評論