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