基于ARM和FPGA的高速图像数据采集板设计
1.概述
本文引用地址:http://www.amcfsurvey.com/article/234837.htm随着图像处理技术的快速发展,图像采集处理系统在提高工业生产自动化程度中的应用越来越广泛。本文结合实际系统中的前端图像处理和图像数据传输的需要,充分利用ARM的灵活性和FPGA的并行性的特点,设计了一种基于ARM+FPGA的高速图像数据采集传输系统。所选用的ARM体系结构是32位嵌入式RISC微处理器结构,该微处理器拥有丰富的指令集且编程灵活;而FPGA则在速度和并行运算方面有很大优势,适合图像处理的实时性要求;并且通过千兆以太网接口实现了采集板与上位机之间图像数据的高速远程传输。
2.硬件设计方案
2.1 系统总体设计
本设计采用的ARM芯片为三星公司的S3C2440A、FPGA芯片为Xilinx公司生产的Spartan系列的S3C500E芯片,系统组成还包括千兆以太网控制芯片AX88180、千兆PHY芯片88E1111、存储器、嵌入式Linux、网络驱动程序等(如图1所示)。
本设计的主控芯片S3C2440A是基于ARM920T核的16/32位RISC微处理器,采用了0.13um的CMOS标准宏单元和存储器单元,运行频率高达500MHz.ARM920T 实现了MMU,AMBA BUS和Harvard高速缓冲体系结构构。这一结构具有独立的16KB指令Cache和16KB数据Cache.每个都是由具有8字长的行组成。通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额外的组件。它主要面向手持设备以及高性价比、低功耗的应用,具有非常丰富的片上资源。
FPGA芯片S3C500E主要用于图像传感器的控制、图像数据的缓存及外围芯片时序的产生。它通过控制A/D实现数据采集,并保存至SRAM,对ARM的读写信号进行译码以将目标数据读回ARM并传到上位机。
ARM芯片S3C2440A负责整个系统的控制,它通过读写总线上的地址来进行指令和数据的传输以控制FPGA的所有动作[1-2].嵌入式Linux内核负责系统任务的管理并集成TCP/IP协议,方便实现网络控制功能。
S3C2440A与AX88180以总线方式连接,是通信控制的主体。S3C2440A通过网络驱动程序实现对AX88180内部寄存器编程,以及对以太网数据的发送和接收,从而完成网络与系统之间的数据传输。
AX88180与88E1111之间采用RGMII接口方式互连,负责数据传送底层协议的实现。
2.2 数据采集接口设计
系统设计的难点在于数据采集接口的设计,它是数据传输的通道,同时也是连接系统前后端的桥梁。本系统采用S3C2440A和S3C500E配合共同实现数据的高速采集。
直接内存存取(DMA)作为一种独立于CPU的后台批量数据传输技术,以其快速、高效的特点在数据采集领域得到了广泛的应用。本设计中,S3C2440A采用外部DMA方式采集FPGA内部存储数据,其接口信号连接如图2所示。
接口设计的FPGA部分主要包括异步FIFO模块、复位模块和数据缓冲模块组成.异步FIFO模块主要解决图像输出数据频率和数据采集的频率不匹配的问题,系统采用的异步FIFO宽度为8bits,深度为2048.复位模块在控制信号的作用下实现对系统的FIFO的复位控制。
系统采用DMA通道0采集图像数据。
其中,DREQ0和DACK0分别为DMA的请求和应答信号。FPGA的空信号EMPTY与DREQ0相连,读请求RDREQ与DACK0相连。FPGA写时钟由图像输出位同步信号提供,读时钟由S3C2440A的时钟输出引脚CLKOUT0提供。CLKOUT0根据S3C2440A内部寄存器的设置可以输出几种不同的时钟频率。FIFO的读操作与ARM的DMA操作配合进行。系统采用单服务命令模式的DMA操作,每次传输一个字节数据位。当DREQ0信号变为低电平时DMA操作开始,每次传输一个字节后产生一个DACK0应答信号,而且只要DREQ0为低电平DMA操作就继续进行,直到DMA控制寄存器中的计数器为0,产生DMA中断。根据上述时序特点,将FIFO的空信号作为DMA的请求信号DREQ0.当图像输出的数据写入FIFO中时,空信号跳变为低电平启动DMA操作,同时以DACK0信号作为FIFO的读请求。每次DMA操作后产生的应答信号DACK0使FIFO内部的读指针前移1位指向下次要读出的数据。F-RESET和H-RESET分别控制FPGA内的帧同步复位和行同步复位,保证系统在每帧信号到来时开始工作,同时每采集完一行信号复位FIFO.FIFO输出数据经过以nGCS4为选通信号的BUFFER后接到ARM的数据总线上。nGCS4是S3C2440A存储空间中BANK4的片选信号,当S3C2440A对地址范围0×20000000~0×28000000的存储空间进行读写操作时为低电平,其余时间为高电平,NGCS4作为缓冲模块的选通信号可以有效地避免数据总线的污染。
fpga相关文章:fpga是什么
评论