GPMC(通用内存控制器)是TI 处理器独有的通用内存控制器接口。它是AM335x、AM437x、AM5708、AM5728 等处理器与外部存储设备连接的专用接口,例如:
类似于异步SRAM 存储器和专用集成电路(ASIC) 器件。
异步、同步和页模式(仅限非复用模式)突发NOR 闪存器件。
NAND闪存。
ADC器件。
图1GPMC概述
2GPMC并口特点
为什么工业现场与FPGA/ADC通信时更喜欢使用GPMC接口?本文给出了三个原因,即:高带宽、丰富的连接方式、灵活的配置。详情如下:
PS:下面将介绍基于AM570x GPMC的ARM+FPGA通信案例和多路AD(AD7606/ADS8568)采集综合案例。
(1)高带宽,速率可达100MB/s以上
以AM57x为例,通过GPMC接口与FPGA连接,使用DMA读取FPGA侧的数据。速度可达69MB/s。事实上,通过配置GPMC接口的时序参数和不同的工作模式,速度可以超过100MB/s。
(2)丰富的连接方式,灵活的8位和16位异步存储器接口
由于有16个信号引脚gpmc_ad[15:0]支持地址线和数据线的复用和非复用模式,GPMC与外设的连接方式变得非常丰富,可以与多种外部设备进行通信,例如作为:
外部异步或同步8位宽存储器或设备(非突发设备)
外部异步或同步16位宽存储器或设备
外部16位非复用NOR Flash器件
外部16位地址和数据复用NOR Flash器件
外部8位和16位NAND闪存设备
外部16位伪SRAM(pSRAM)器件
下面介绍几种连接方式。
1)16-bit Address/Data Multiplexed(地址线和数据线复用模式)
图2
2)16-bit Non Multiplexed(地址线和数据线非复用模式)
图3
3)8-bit Non Multiplexed(地址线和数据线非复用模式)
图4
4)8-bitNAND(仅使用数据线模式)
该模式适用于不需要地址线的情况,例如将GPMC连接到NAND FLASH。 NAND FLASH不需要地址线,通过数据线D[x:0]发送读写命令来读/写数据。
图5
(3) 配置灵活,最多有8个片选
GPMC 基本编程模型提供了最大的灵活性,支持八种具有不同时序参数和位宽配置的可配置芯片选择。可以根据外部器件的特性使用最佳的片选设置。
可选择不同的协议来支持通用异步或同步随机存取器件(NOR flash、SRAM)或支持特定的NAND器件。
地址和数据总线可以复用在同一外部总线上。
读写访问可以独立定义为异步或同步。
系统请求(字节、16位字、突发)通过单次或多次访问发出。外部设备访问配置文件(单个或多个优化突发长度、本机数据包或模拟数据包)基于外部设备特性(支持的协议、总线宽度、数据缓冲区大小、本机数据包支持)。
系统突发读或写请求是同步突发(多次读或多次写)。在缺乏外部存储器或ASIC 设备支持的突发或页面模式的情况下,系统将突发读或写请求转换为连续的单次同步或异步访问(单次读取或单次写入)。仅在单同步或单异步读写模式下支持8 位宽设备。
为了模拟可编程内部等待状态,可以监视外部等待引脚,以在开始时(初始访问时间)和突发访问期间动态控制外部访问。
图6GPMC框图
创龙科技基于AM5708和AM5728设计的工业评估板——TL570x-EVM和TL5728-EasyEVM由核心板和评估基板组成。核心板经过专业PCB Layout和高低温测试验证。稳定可靠,可满足运动控制、工业PC、机器视觉、智能电力、视频监控等工业应用环境。
* AM5708
图7SOM-TL570x核心板
图8TL570x-EVM开发板
*AM5728
图9SOM-TL5728核心板
图10TL5728-EasyEVM开发板
图11
本文讲解基于AM570x GPMC的ARM+FPGA通信案例和多路AD采集综合案例。
DSP端使用EDMA将数据移动到指定的内存空间物理地址(GPMC片选基地址),然后读回数据保存到DSP端L2SRAM,并验证数据读写的正确性,并计算数据读写速率。 ARM端通过MessageQ将读写地址和读写大小发送给DSP端。 DSP端读写相应的内存空间,并将传输时间和传输速率返回给ARM端。 GPMC的初始化由ARM端驱动程序实现。
程序工作流程框图如下所示。
图12
通过TL-HSAD-LX-PinBoard转接板和软电缆将TL-HSAD-LX采集卡插入TL570x-EVM评估板的GPMC扩展接口J5,并使用5V2A电源给TL-HSAD-LX采集供电卡供电、硬件连接图如下。
图13
图14 测试结果
单次EDMA传输的数据大小为2KByte(0x800),总周期为100次。如果需要再次测试读写速度,请重新运行DSP程序。
从上图可以看出,本次测试的误码率为0%(errcnt: 0);平均写入时间约为101us,写入速率约为38.53MB/s;平均读取时间约为118us,读取速率约为118us。约32.98MB/秒。
注:本测试板通过软电缆连接。软电缆的长度会影响误码率和读写带宽。目前测得的最高速率为38.53MB/s(写入速率)。如果FPGA设计在背板上,最高速率可以达到69MB/s(写入时间为28us)
AM570x DSP使用EDMA通过GPMC接口采集AD7606或ADS8568模块的8通道AD信号。同时DSP对6路AD信号进行FFT处理。最后对FFT处理后的8通道时域数据和6通道频域数据进行处理。数据保存到DSP端L2SRAM中,通过仿真器和CCS软件可以查看相应通道的时域波形和频域波形。
程序将通道0的时域数据和FFT处理后的频域数据保存到CMEM(共享内存)空间,通过IPC组件通知ARM端读取该通道的时域数据和频域数据,并使用Qt将时域数据显示在LCD显示屏上进行波形绘制,最后将数据保存到文件中。
本例中AD7606模块的采样周期默认配置为6us,即采样率约为167KHz;配置的ADS8568模块的采样周期为5us,即采样率为200KHz。程序流程图如下:
图15
将创龙的TL7606I(AD7606)模块或TL8568I(ADS8568)模块插入评估板的GPMC扩展接口,并为模块提供独立电源。 TL7606I模块使用5V供电,将J1跳线帽接0,使用5V量程。 TL8568I模块使用12V电源,软件已配置为12V范围。
将待测模块的输出通道正确连接至信号发生器。信号发生器输出频率为4KHz、峰峰值为2Vpp(即幅度为1V)的正弦波信号。被测信号电压不能超过模块范围,否则可能损坏模块。评估板连接到LCD显示器,并通过仿真器连接到PC。硬件连接图如下:
图16TL7606I模块硬件连接图
图17TL7606I模块硬件连接图
图18TL8568I模块硬件连接图
运行程序后,可以在LCD显示屏上看到通道0的时域波形和频域波形。
图19 时域波形
图20 频域波形