FPGA与ARM的GPMC总线通信接口设计
2017-03-31刁彦华贾宝青王晓君
刁彦华, 贾宝青, 王晓君
(河北科技大学 信息科学与工程学院,石家庄 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通信的有效方法。
1 接口总体设计
系统的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接口整体框图
2 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 ARM的读写实现
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的读操作。
4 测试结果与分析
为了验证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)