用FPGA實現(xiàn)非標碼速向標準碼速的調(diào)整
關鍵詞:碼速調(diào)整 FPGA
一、概述
現(xiàn)在,利用計算機進行異地數(shù)據(jù)采集正應用到越來越多的場合,如何高效而低成本地回傳數(shù)據(jù)成為一個值得討論的問題。由于計算機輸出的數(shù)據(jù)一般都是異步數(shù)據(jù),而且碼率與通信的標準碼率也不一致,如果要利用現(xiàn)有的電信網(wǎng)絡進行傳輸,就會涉及到碼速調(diào)整和異同步轉(zhuǎn)換的接口問題,由于碼速調(diào)整的內(nèi)型比較多,本文將只討論如何將較低的異步非標碼速調(diào)整到比它高的標準碼速上。
二、方案設計
在傳統(tǒng)的數(shù)字電路中,對異步數(shù)據(jù)的變換處理一般采用通用異步收發(fā)器與單片機聯(lián)合工作的方式。這種方式的優(yōu)點就是電路結構成熟,軟件編程簡單,只要掌握一定的單片機語言即可進行開發(fā)。但它的缺點也是顯而易見的,集成度不高,硬件電路結構復雜,當同時處理多路數(shù)據(jù)時,軟件設計的難度也將加大?,F(xiàn)在隨著科技的進步,可編程器件的價格已經(jīng)可以接受,一塊一萬邏輯門的FPGA芯片百元左右就可以買到,而這樣一塊芯片足可以集成3~4路獨立的碼速調(diào)整電路,所以采用FPGA芯片編程實現(xiàn)異步數(shù)據(jù)的處理將會使外圍電路變得非常簡潔,同時由于數(shù)據(jù)絕大部分時間都是在芯片內(nèi)部運行,也有利于其傳輸穩(wěn)定性的提高。另外,F(xiàn)PGA芯片大部分都可以重復擦寫,只要改動程序設計即可實現(xiàn)不同功能的轉(zhuǎn)換,從而加速同類型產(chǎn)品的開發(fā)速度,節(jié)約投資。用于開發(fā)可編程器件的軟件可以到各器件廠家的網(wǎng)站直接下載。
碼速調(diào)整方案的具體框圖見圖一,在其數(shù)據(jù)接收端內(nèi)置了一個類似異步收發(fā)器的結構,采用16倍速高速采樣檢測異步信號起始電平的到來。為了便于描述,這里我們假設要處理的異步數(shù)據(jù)為7bit,加上一位起始位和一位停止位,總共為9bit。
三、工作流程描述
我們設計的思路是仿照通用異步收發(fā)器的執(zhí)行過程,但在接收數(shù)據(jù)時并不去掉起始位和停止位,而是將數(shù)據(jù)按原來的碼速全部接收下來后再以標準的碼速發(fā)送出去,接收方的電路結構與發(fā)送方基本相同,只是少了一個空閑時插入“1”碼的電路。
根據(jù)異步信號的通信規(guī)則,沒有信號時數(shù)據(jù)線應表現(xiàn)為高電平,這時使用一個16倍于數(shù)據(jù)流的高速時鐘對數(shù)據(jù)線進行采樣,當檢測到信號下降沿后,表示數(shù)據(jù)的起始電平有可能已經(jīng)到來,這時采樣器會輸出一個reset信號使一個16分頻的計數(shù)器復位,如果在8個高速脈沖內(nèi)輸入信號又恢復到高電平,則說明剛才是干擾信號,系統(tǒng)又回到起始狀態(tài);反之如果信號仍維持低電平,則表示數(shù)據(jù)起始電平已經(jīng)到來, 16分頻的計數(shù)器開始工作,
經(jīng)16分頻后輸出一個與輸入數(shù)據(jù)準同步的數(shù)據(jù)寫入時鐘Write_clk,將數(shù)據(jù)讀入并存放在一個9位寄存器中。
在異步數(shù)據(jù)的讀取過程中,使用一個10位計數(shù)器進行計數(shù),在一幀數(shù)據(jù)讀入結束后計數(shù)器復位并產(chǎn)生一個標志信號over=‘1’,一方面使16分頻計數(shù)器停止工作,數(shù)據(jù)暫停讀入,直到下一幀數(shù)據(jù)的起始電平到來;另一方面將數(shù)據(jù)轉(zhuǎn)移到發(fā)送區(qū),準備數(shù)據(jù)的發(fā)送。
數(shù)據(jù)發(fā)送由Ready信號控制,也是通過一個10bit的計數(shù)器進行發(fā)送計數(shù)。發(fā)送區(qū)在上電后將一直發(fā)送“1”碼,直至檢測到第二幀數(shù)據(jù)的起始位,這時發(fā)送區(qū)將發(fā)送已經(jīng)結束完畢的第一幀數(shù)據(jù),依次類推。由于碼速都是由低向高調(diào)整(即慢收快發(fā)),故一幀數(shù)據(jù)發(fā)送完畢后,其下一幀數(shù)據(jù)的讀入還沒有完成,為了保證數(shù)據(jù)的連續(xù)性和完整性,這時系統(tǒng)將自動插入空碼“1” ,這些插入的“1”碼在接收端接收時會因碼速的差別(即快收慢發(fā))而被自動去掉。
當處理多路數(shù)據(jù)時,如果大家都采用相同的clock2,則經(jīng)變換后輸出的多路數(shù)據(jù)將變成同步數(shù)據(jù),可以直接進行同步復接。
主要信號工作時序如圖二示,所有程序在ALTERA 的MAXPLUSII 10.0BASE環(huán)境下編譯通過。
四、參考文獻
1.《VHDL簡明教程》 電子科技大學出版社 潘松 王國棟 編著 2000.2
2.《MCS-51系列單片機實用接口技術》 北京航空航天大學出版社 李華主編 1993
評論