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