刁彥華, 賈寶青, 王曉君
(河北科技大學 信息科學與工程學院,石家莊 050000)
FPGA與ARM的GPMC總線通信接口設計
刁彥華, 賈寶青, 王曉君
(河北科技大學 信息科學與工程學院,石家莊 050000)
為滿足數據快速、穩定的傳輸,同時簡化硬件設計,增強設計的靈活性,本文提出了一種利用ARM自身帶有的GPMC總線作為ARM與FPGA數據傳輸的接口方案,并詳細介紹了GPMC接口原理及FPGA內部GPMC接口時序的實現。首先,FPGA內部要實現ARM處理器的GPMC接口的讀寫時序,從而完成ARM與FPGA的通信。其次,FPGA完成對高速信號的采集以及存儲,當存儲到一定量時,FPGA中斷ARM處理器進行數據的讀取。仿真結果表明,與以往接口相比,該接口能完成高速信號的穩定傳輸。
接口;GPMC ;ARM ;FPGA ;嵌入式系統
隨著科學技術的不斷發展,微電子領域發生了翻天覆地的變化,嵌入式技術也得到了迅猛發展。與此同時ARM和FPGA之間傳輸數據的接口方式也越來越多,總體可以分為以下三種:第一種是串行傳輸方式,利用ARM處理器的I2C或者是SPI接口與FPGA實現連接,這種傳輸方式連接簡單,對于傳輸速度要求不高的系統是一種非常不錯的選擇;第二種是FPGA和ARM之間通過雙口RAM來實現數據的傳輸,這種方式對高速數據傳輸也能滿足要求,但是設計相對復雜,成本也相對較高;第三種是并行傳輸方式,也就是所謂的總線連接,這種連接方式傳輸速度快,設計也相對簡單[1-5]。通過以上分析,提出了一種ARM本身自帶的GPMC總線的連接方式,微控制器采用Cortex-A8芯片作為主處理器,FPGA采用Xilinx公司的virtex-6器件作為協處理,通過FPGA模擬Cortex-A8的GPMC總線的讀寫時序,來完成ARM與FPGA的高速信號的傳輸。這種接口設計不僅能完成高速數據的傳輸,同時也降低了設計過程中的復雜技術,提高了數據傳輸的穩定性與可靠性,是一種實現ARM和FPGA通信的有效方法。
系統的GPMC接口整體框圖如圖1所示,整個系統由ARM和FPGA組合完成,ARM和FPGA之間采用ARM本身帶有的GPMC總線進行數據的傳輸。其中FPGA器件負責對高速信號的采集,通過一定的運算,按一定的順序將數據存儲到FPGA內部寄存器中,當數據存儲完成,此時FPGA會給ARM發出中斷響應命令,ARM將FPGA內部寄存器的數據進行讀取。ARM采用TI公司的Cortex-A8芯片作為主處理器,Cortex-A8芯片作為系統的核心,實現對FPGA數據的讀寫以及對整個系統的控制。FPGA采用Xilinx公司的Virtex-6器件來完成對高速信號的采集,以及利用它的快速計算能力來完成信號的計算,最重要的是它本身靈活的編程方式能很好地模擬GPMC總線接口的讀寫時序,從而實現FPGA和ARM之間數據的穩定傳輸。

圖1 GPMC接口整體框圖

圖3 ARM寫操作時序圖
ARM中的通用內存控制器(GPMC)是一個統一接口的內存控制器,它支持以下存儲器類型:異步或同步8位存儲器、 外部異步或同步16位的存儲器、外部16位非復用NOR閃存器件以及外部16位地址和數據復用NOR閃存器件、外部8位和16位NAND閃存設備等。它與外部存儲器或外部設備進行通信時,支持以下接口協議,異步讀/寫訪問、異步讀頁訪問等。GPMC總線還可以連接各種外設設備,靈活的編程模型允許它連接多種設備類型和訪問方案,GPMC能夠產生什么樣的控制信號完全取決于所連接的設備和訪問的類型,不僅如此,GPMC還給出了幾種連接實例,比如NAND閃存、NOR閃存,以及其他異步同步接口外設互相連接[6-7]。該設計選擇的是GPMC16位非復用連接外部存儲設備的模式,用FPGA代替外部存儲器,在FPGA內部實現對GPMC總線讀寫時序的模擬,就可以實現該設計方案。GPMC16位地址/數據非復用存儲器連接圖如圖2所示。

圖2 GPMC16位非復用存儲器連接圖
3.1 ARM的寫實現
為了完成ARM對FPGA的寫實現,FPGA必須模擬GPMC的寫時序,ARM對FPGA寫操作的整體時序圖如圖3所示。
該設計采用的是GPMC寫時序中的同步寫方法,ARM的寫實現整體框圖如圖4所示。首先GPMC_CLK的上升沿作為有效時鐘,此時由ARM通過GPMC總線給出數據和片選有效信號,首先接收到這部分信號的是FPGA內部的譯碼器,譯碼器的作用是判決出ARM給出的信號是選擇FPGA內部哪組寄存器,如果確定是選擇FPGA內部寄存器組,FPGA內部狀態計數器開始計數。狀態計數器是為鎖存地址服務的,在狀態計數器的整個計數過程中,每計一個數都和GPMC_CLK的有效時鐘沿一一對應。當GPMC_CLK的第N個上升沿準備讀取第一個數據時,狀態計數器對應的第(N-X)(X代表狀態計數器計數的個數)個數作用于地址鎖存器[8],此時本地地址生成,下一個時鐘到來時,使能信號和寄存器選擇信號都處于有效狀態,同時寫信號也處于有效狀態,在這三個信號共同作用下,FPGA內部寄存器組使能信號才會處于有效狀態。這樣就完成了第一個數據成功寫入FPGA內部寄存器,它所對應的地址區域會自增完成之后三個數據的寫入,最終實現ARM對FPGA內部寄存器快速寫操作。

圖4 ARM的寫實現整體框圖
3.2 ARM的讀實現
同寫操作一樣,要實現ARM對FPGA讀操作以及信號穩定可靠的傳輸,同樣需要FPGA來模擬GPMC的讀時序,ARM對FPGA讀操作的時序圖如圖5所示。

圖5 ARM讀操作時序圖

圖6 ARM的讀實現整體框圖
ARM的讀實現整體框圖如圖6所示,ARM的整個讀實現過程和寫實現過程基本相似,最大的區別是ARM實現寫過程時不需要FPGA給出中斷響應信號,而是直接完成對FPGA內部寄存器的寫操作。而讀的過程中需要FPGA給ARM中斷請求信號,當ARM收到中斷請求信號時,就會執行讀操作,從而很好地提高了CPU的效率。在ARM整個讀的過程中,同樣是GPMC_CLK的上升沿作為有效時鐘,ARM同樣給出地址和片選有效,以此來判斷是訪問FPGA內部寄存器組的哪一組[9]。依然需要狀態計算器計數,計數到和GPMC_CLK的第X個鐘一一對應時,地址鎖存器開始鎖存地址,下一個時鐘到來時自動生成本地地址,同時完成一個數據的讀取,FPGA內部寄存器地址會自增,來完成其余幾個地址的讀取,最終實現ARM對FPGA的讀操作。
為了驗證GPMC接口能夠有效穩定地傳輸數據,使用Modelsim對GPMC接口的FPGA內部實現進行了功能仿真,利用Testbench產生激勵信號輸入到FPGA內部。仿真圖如圖7、圖8所示。測試結果表明,利用GPMC接口作為ARM處理器與FPGA之間的通信接口是合理的,能夠實現ARM處理器與FPGA的正常通信,也沒有數據丟失現象,分別與圖3和圖5完全吻合。

圖7 FPGA內部寫時序

圖8 FPGA內部讀時序
設計采用Cortex-A8芯片本身帶有的GPMC總線,作為ARM與FPGA的通信接口,完成了ARM和FPGA在嵌入式平臺中的通信接口設計,ARM作為主處理器,實現對數據的寫入和讀取,FPGA相當于協處理器,完成信號的采集以及存儲。

[1] 朱曉鵬,肖鐵軍.ARM+FPGA 的實時數據采集系統設計[J].計算機工程與設計2009,30 (13).
[2] 楊擴軍,田書林,蔣俊,等.基與TI ADC的20GS/S高速數據采集系統[J].儀器儀表學報,2014,35(4):841-849.
[3] 彭宇,姜紅蘭,楊智明,等.基于DSP和FPGA的通用數字信號處理系統設計[J].國外電子測量技術,2013,32(1):17-21.
[4] 唐文龍,田茂,吳志強,等.基于SoC FPGA異步通信接口的實現[J].物聯網技術,2015 ,38 (2).
[5] 于春鵬,龔喜文.基于ARM+FPGA架構的船舶電站控制器的設計[J].中國航海, 2015, 34(4).
[6] 馬帥鵬. 基于FPGA_ ARM的機載數據獲取與記錄系統設計[J] .計算機測址與控制,2013,21(9).
[7] 廖奎.ARM與FPGA綜合設計及應用[M].北京:中國電力出版社,2008.
[8] 張淑梅.基于ARM+FPGA的高精度數據采集系統設計[J]. 國外電子測量技術,2014, 33(11).
[9] TI.AM335x ARM Cortex-A8 Microprocessors, 2015.
[10] 飛凌.OK335x硬件手冊-V2.3,2013.
[11] Altera.Corporation.Cyclone.II.Device.Handbook,2015.
[12] 侯伯亨, 劉凱, 顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2004:175-178.
刁彥華(副教授)、賈寶青(碩士研究生)、王曉君(教授),主要研究方向為衛星通信和衛星導航的研究。
GPMC Bus Interface Based on FPGA&ARM
Diao Yanhua,Jia Baoqing,Wang Xiaojun
(College of Information science and engineer,Hebei University of Science&Technology,Shijiazhuang 050000,China)
To meet the rapid and stable transmission of the data,simplify the hardware design and increase the flexibility,a scheme of using GPMC's own ARM bus as the data transmission interface between ARM and FPGA is proposed.The principle of GPMC interface and the implementation of GPMC interface timing in FPGA are introduced in detail.Firstly,the internal FPGA achieves the reading and writing timing of the GPMC interface in ARM processor,then the design completes the communication between ARM and FPGA.Secondly,the FPGA finishes collecting and saving for the high-speed signal.When the stored data to a certain amount,the FPGA interrupts the ARM processor for data read.The simulation results show thatthe new interface can complete the high-speed signal transmission stability comparing with the previous interface.
interface;GPMC;ARM;FPGA;embedded system
TP302
A
?迪娜
2016-09-19)