一種基于ARM和FPGA的環(huán)形緩沖區(qū)接口設(shè)計(jì)
2.3 接收程序設(shè)計(jì)
數(shù)據(jù)的接收同樣包括ARM端和FPGA端兩部份程序,相互配合共同完成ARM從FPGA讀取數(shù)據(jù)幀的流程。FPGA端的程序主要有兩個(gè)任務(wù),一是負(fù)責(zé)把從物理層接收到的數(shù)據(jù)幀寫(xiě)入接收緩沖區(qū)中,并向ARM發(fā)出中斷請(qǐng)求接收數(shù)據(jù)幀,另一個(gè)是在得到ARM接收完畢確認(rèn)后處理好接收緩沖區(qū)的空間釋放;ARM端的程序負(fù)責(zé)從FPGA接收緩沖區(qū)中讀取數(shù)據(jù)幀。
接收部分FPGA端仍然是利用子緩沖空間的忙閑狀態(tài)與讀寫(xiě)指針的變化來(lái)控制數(shù)據(jù)幀的寫(xiě)入和讀取,并實(shí)現(xiàn)接收完來(lái)自物理層數(shù)據(jù)幀后向ARM發(fā)出發(fā)起中斷,當(dāng)ARM讀取數(shù)據(jù)幀后釋放子緩沖區(qū)空間,程序結(jié)構(gòu)如圖6和圖7所示。本文引用地址:http://www.ex-cimer.com/article/148003.htm
接收部分ARM端的程序流程如圖8所示,當(dāng)ARM接收到FPGA的中斷后,判斷是否有數(shù)據(jù)幀要上傳,若不是則不做任何處理;若是則從統(tǒng)一編址的接收緩沖區(qū)讀取數(shù)據(jù)幀,然后向FPGA發(fā)出接收完畢指示以便于FPGA及時(shí)釋放相應(yīng)的子緩沖空間。
3 測(cè)試結(jié)果
本方案在實(shí)驗(yàn)室自行開(kāi)發(fā)設(shè)計(jì)的BCNG2440寬帶無(wú)線收發(fā)平臺(tái)上進(jìn)行了測(cè)試運(yùn)行。該平臺(tái)主要由Samsung公司S3C2240型的ARM CPU和Xi-linx公司的V5系列SX95T型FPGA組成。物理層最高速率為1Mb/s,通過(guò)變化來(lái)自應(yīng)用層的數(shù)據(jù)包大小和的間隔來(lái)改變用戶速率,用以測(cè)試
ARM和FPGA的數(shù)據(jù)緩沖區(qū)和匹配功能。實(shí)際測(cè)試和運(yùn)行表明,此方案是有效而合理的。
以發(fā)送緩沖區(qū)設(shè)計(jì)為例,圖9給出了用chipscope觀察該部分設(shè)計(jì)方法的正確性。ARM發(fā)送數(shù)據(jù)幀到發(fā)送緩沖區(qū)后FPGA的內(nèi)部變化如圖7所示。可以看到ARM發(fā)送的數(shù)據(jù)幀寫(xiě)入了FPGA中序號(hào)為13的子緩沖空間,結(jié)束時(shí)寫(xiě)指針(nTxBuffWNum)遞增指向了序號(hào)為14的子緩沖空間,同時(shí)序號(hào)為13(實(shí)際上是第14個(gè),這是由于序號(hào)是從0到15)的子緩沖空間被標(biāo)示為占用。從圖中也可以看到前面寫(xiě)入的數(shù)據(jù)幀已經(jīng)發(fā)送,其它子緩沖空間都為空閑狀態(tài),讀指針(nTxBuffRNum)也是正常變化的。
應(yīng)該指出的是,本方案具備良好的擴(kuò)展性。通過(guò)改變子緩沖區(qū)的數(shù)目和子緩沖區(qū)的大小,可以用來(lái)對(duì)不同的應(yīng)用情況進(jìn)行速率匹配。
4 結(jié)語(yǔ)
本文介紹了基于ARM和FPGA的環(huán)形緩沖區(qū)的設(shè)計(jì)方法,實(shí)現(xiàn)簡(jiǎn)單并便于擴(kuò)展。測(cè)試結(jié)果表明此方法能實(shí)現(xiàn)ARM和FPGA之間數(shù)據(jù)的有效傳輸。對(duì)網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)具有重要的參考價(jià)值。
fpga相關(guān)文章:fpga是什么
評(píng)論