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