一種基于A(yíng)RM和FPGA的環(huán)形緩沖區接口設計
摘要:目前,基于ARM和FPGA架構的嵌入式系統在通信設備中得到廣泛的應用。文章提出了一種基于ARM和FPGA的環(huán)形緩沖區接口設計方案,從而實(shí)現了ARM和FPGA之間的數據緩沖和速率匹配。實(shí)際測試表明該方案能夠有效地對數據速率進(jìn)行匹配,且具有良好的可擴展性。
關(guān)鍵詞:ARM;現場(chǎng)可編程門(mén)陣列;環(huán)形緩沖區
0 引言
隨著(zhù)嵌入式系統、軟件無(wú)線(xiàn)電和無(wú)線(xiàn)通信的發(fā)展,基于嵌入式系統和軟件無(wú)線(xiàn)電的實(shí)現架構廣泛應用到無(wú)線(xiàn)通信設備中。其中,采用ARM+FPGA的軟件無(wú)線(xiàn)電體系結構來(lái)實(shí)現的通信設備是最近十分流行的一種方案。該方案充分利用ARM CPU靈活便捷的優(yōu)勢,用來(lái)處理用戶(hù)輸入、系統控制、網(wǎng)絡(luò )協(xié)議功能,而利用FPGA卓越的實(shí)時(shí)信號處理優(yōu)點(diǎn),對無(wú)線(xiàn)通信的物理層信號進(jìn)行無(wú)線(xiàn)收發(fā)處理。在這種體系結構中,ARM和FPGA的數據通信信號接口設計是其中十分關(guān)鍵的一個(gè)環(huán)節。由于無(wú)線(xiàn)設備的數據收發(fā)往往具有一定的突發(fā)性,在高速數據收發(fā)情況下,需要設計一種合理的緩沖區進(jìn)行數據傳輸速率的匹配和緩沖。另外,對于A(yíng)RM CPU來(lái)說(shuō),由于CPU往往需要同時(shí)并行處理多種任務(wù),如何盡可能地保證數據的實(shí)時(shí)接收,也是設計中的一個(gè)關(guān)鍵。本文提出了一種基于A(yíng)RM和FPGA的環(huán)形緩沖區設計結構,能可靠有效地處理好兩者之間數據傳輸速率匹配和緩沖,且具有很好的擴展性。
1 緩沖區接口硬件設計
本方法設計的硬件接口如圖1所示。FPGA作為一個(gè)存儲器外設與ARM連接,采用的是標準的總線(xiàn)接口,由nGCS片選線(xiàn)、雙向數據線(xiàn)DATA、地址線(xiàn)ADDR、以及讀寫(xiě)控制線(xiàn)nOE和nWE等信號線(xiàn)組成。另外,EINT是中斷信號線(xiàn),FPGA發(fā)起中斷向ARM請求處理。
2 緩沖區接口軟件設計
為了設計ARM和FPGA的緩沖區接口,首先要利用圖1中的信號線(xiàn)實(shí)現ARM對FPGA的基本讀寫(xiě)操作,這需要雙方遵循擬定的接口時(shí)序相互配合進(jìn)行,這可以通過(guò)參考相應的ARM內核CPU用戶(hù)手冊,在FPGA端編寫(xiě)相應的接口代碼來(lái)配合ARM CPU2端的讀寫(xiě)時(shí)序實(shí)現。
下面重點(diǎn)介紹環(huán)形緩沖區接口的軟件實(shí)現。
2.1 緩沖區空間設計
如上所述,FPGA是作為ARM的一個(gè)存儲器外設來(lái)設計的。在本方案中,FPGA存儲器空間包括兩個(gè)部分:寄存器空間和數據緩沖區空間。
寄存器空間用于設置各種讀寫(xiě)的參數,包括緩沖區讀寫(xiě)指針、緩沖區忙閑狀態(tài)等;而緩沖區用于大量數據的臨時(shí)存儲,按作用分為發(fā)送緩沖區和接收緩沖區。設計中對所有空間都采用統一編址方式實(shí)現,利用ARM與FPGA之間相連的接口地址線(xiàn)(ADDR)的最高兩位來(lái)區分,例如,00表示寄存器空間,01表示發(fā)送緩沖區空間、10表示接收緩沖區空間,11為保留。
在本文的環(huán)形緩沖區結構設計中,發(fā)送(接收)緩沖區又分為若干大小相同的子緩沖空間,這些子緩沖空間共享同一個(gè)地址空間,由FPGA內部的緩沖區忙閑指示寄存器和子緩沖空間的控制指針來(lái)引導ARM對子緩沖區的讀寫(xiě)。子緩沖空間的控制指針循環(huán)依次變化,數據幀也循環(huán)依次寫(xiě)入指針指向的子緩沖空間或被讀走,這樣就構成了環(huán)形緩沖區。
以實(shí)際項目的設計為例,發(fā)送(接收)緩沖區分別由16個(gè)子緩沖空間組成,每個(gè)子緩沖空間的大小為256雙字節,這16個(gè)子緩沖空間共享一個(gè)地址空間。設計中的接口地址線(xiàn)一共為10位,數據線(xiàn)是16位。每個(gè)數據幀的最大長(cháng)度也設置為256雙字節,以便一個(gè)緩沖區能夠裝滿(mǎn)一個(gè)幀,簡(jiǎn)化緩沖區管理。以發(fā)送緩沖區為例,其結構設計如圖2所示。
盡管設置了16個(gè)子緩沖空間來(lái)應對可能的突發(fā)數據流,為了防止ARM將所有的子緩沖區寫(xiě)溢出,在FPGA內部設置了緩沖區忙閑寄存器指示,當所有的子緩沖空間都寫(xiě)滿(mǎn)后,緩沖區忙閑指示寄存器設置為忙。
fpga相關(guān)文章:fpga是什么
評論