很多朋友对一种高速图像数据采集板的设计方案是什么,一种高速图像数据采集板的设计方案不是很了解,六月小编刚好整理了这方面的知识,今天
很多朋友对一种高速图像数据采集板的设计方案是什么,一种高速图像数据采集板的设计方案不是很了解,六月小编刚好整理了这方面的知识,今天就来带大家一探究竟。
1.概观
随着图像处理技术的快速发展,图像采集处理系统在提高工业生产自动化程度方面的应用越来越广泛。本文结合实际系统中前端图像处理和图像数据传输的需求,充分利用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总线和哈佛cache架构。这种结构具有独立的16KB指令缓存和16KB数据缓存,每个缓存由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的宽度为8位,深度为2048。复位模块在控制信号的作用下实现对系统FIFO的复位控制。系统使用DMA通道0来收集图像数据。
其中DREQ0和DACK0分别是DMA的请求和响应信号。FPGA的空信号接DREQ0,读请求RDREQ接DACK0。FPGA的写时钟由图像输出位同步信号提供,读时钟由S3C2440A的时钟输出引脚CLKOUT0提供。根据S3C2440A内部寄存器的设置,CLKOUT0可以输出几种不同的时钟频率。FIFO的读操作与ARM的DMA操作相协调。系统采用单服务命令模式下的DMA操作,一次传输一个字节数据位。
当DREQ0信号变为低电平时,DMA操作开始,每次传输一个字节后产生一个DACK0响应信号。只要DREQ0为低电平,DMA操作就会继续,直到DMA控制寄存器中的计数器为0,从而导致DMA中断。根据上述时序特性,FIFO的空信号作为DMA的请求信号DREQ0。当图像输出的数据写入FIFO时,空信号跳转到低电平开始DMA操作,DACK0信号作为FIFO的读请求。
每次DMA操作后产生的响应信号DACK0使FIFO中的读指针前移一位,指向下次要读取的数据。F-RESET和H-RESET分别控制FPGA中的帧同步复位和行同步复位,保证系统在每一帧信号到达时开始工作,同时在每一行信号采集完毕后,FIFO输出数据复位。经过以nGCS4为选通信号的缓冲器后,连接到ARM的数据总线上。
NGCS4是S3C2440A存储空间中BANK4的片选信号。S3C2440A读写地址范围为0 2000000 ~ 0 28000000的存储空间时为低电平,其余时间为高电平。NGCS4作为缓冲模块的选通信号,可以有效避免数据总线的污染。
2.3网络传输接口设计
本设计使用的以太网控制器是亚信公司推出的非PCI千兆以太网控制芯片AX88180,内置1000Mbps以太网媒体访问控制器(MAC)。它可以很容易地与通用16/32位微处理器连接,并可以像SRAM一样访问。它有一个40k字节的网络数据包缓冲区。
它符合IEEE 802.3/IEEE 802.3 u/IEEE 802.3 ab协议,可广泛应用于各种消费电子和家庭网络市场或要求更高网络带宽的连接,如数字媒体、家庭网关和IP电视。
嵌入式芯片S3C2440A、以太网控制器AX88180和物理层芯片88E1111的接口电路图如图3所示。
S3C2440A和AX88180通过总线连接。地址总线A2~A15、,数据总线D0~D31、等。可以直接连接。AX88180中断信号接S3C2440A EINT11。AX88180的40M~100M时钟信号由S3C2440A提供。AX88180和PHY芯片采用简化的千兆媒体RGMII接口,信号对应连接,负责实现数据传输的底层协议[5]。3.Linux驱动程序设计
FPGA作为ARM的外设,需要在Linux下设计自己的驱动程序。驱动程序是操作系统和硬件之间的接口,它为应用程序屏蔽了硬件的细节。硬件系统只有结合高效可靠的驱动程序,才能在操作系统下正常工作。Linux的设备驱动需要完成以下功能:初始化和释放设备。提供各种设备服务。负责内核与设备之间的数据交换。(4)检测和处理设备工作过程中的错误。
Linux下的设备驱动被组织成一组函数来完成不同的任务,这使得Windows设备像文件一样运行。
Linux将设备分为字符设备和块设备两类。我们使用的是字符设备。驱动程序的模块化我们先不做介绍,我们主要介绍Linux下的中断6.Linux将中断处理程序分解成两个半部:上半部和下半部。上半部完成尽可能少的比较紧急的功能,下半部用来完成中断事件的绝大部分任务。因为中断的耗时工作在这里完成,所以将读取数据放在下半部完成。
Linux系统实现下半部采用的机制主要有tasklet、工作队列和软中断。许多设备涉及到中断操作,因此,在这样的设备的驱动程序中需要对硬件产生的中断请求提供中断服务程序。与注册基本入口点一样,驱动程序也要请求内核将特定的中断请求和中断服务程序联系在一起。在Linux中,用request_irq()函数来实现请求:
int request_irq(unsigned intirq,void(*handler)int,unsigned longtype,char*name);
参数irq为要中断请求号,参数handler为指向中断服务程序的指针,参数type用来确定是正常中断还是快速中断(正常中断指中断服务子程序返回后,内核可以执行调度程序来确定将运行哪一个进程;而快速中断是指中断服务子程序返回后,立即执行被中断程序,正常中断type取值为0,快速中断type取值为SA_INTERRUPT),参数name是设备驱动程序的名称。
我们的中断处理函数是:
void fpgalc12_interrupt(int irq,void*dev_id,struct pt_regs*regs)。
Irqflags是中断处理的属性,若设置了SA_INTERRUPT,则表示中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,而慢速处理程序不屏蔽。dev_id在中断共享时会用到,一般设置为这个设备的结构体或NULL.request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。
这两个函数分别要在初始化和释放模块中加载。
要在Linux申请了中断通道后,系统会响应外部中断IRQ_EINT0,从而进入中断处理序。中断处理程序功能就是将有关中断接收的信息反馈给设备,并根据要服务的中断的不同含义相应地对数据进行读写7-8。
所以FPGA中断处理的主要任务是:FIFO在接收到AD转换来的数据后,向ARM发出中断请求信号,让ARM来读取FPGA中FIFO状态寄存器的值,获取需要信息并安排接受数据,然后写状态寄存器清除相关中断位以继续响应中断,保证数据的有效传输。
中断处理程序的第一步是要先清除S3C2440A的中断悬挂寄存器和中断源寄存器相应的位。这是为了能够继续响应FPGA产生的中断。为了能够让FIFO能及时的接收到新数据,把写状态寄存器放到中断的一开始,即第二步就是写状态寄存器相应位,通过置1清除状态使AD中断能够继续产生。最后读取FIFO的数据。使用中断后数据的传输效率大大得到提高,能够满足实际的采集需要。
4.结束语
本方案中的采集板充分利用了ARM的灵活性和FPGA的并行性的特点,实现了适用于高速数据采集板的设计。方案采用S3C2440A作为主控芯片,通过千兆以太网接口实时地将采集的数据传输到上位机PC机,上位机可实时控制目标数据采集。FPGA芯片在控制A/D转换芯片的同时,将数据存储在SRAM中,并通过DMA接口与S3C2440A进行数据传输。
实验表明,本采集板的实时性和高速性能够满足系统的设计要求,可广泛应用于各种数据采集系统中。
以上就是关于一种高速图像数据采集板的设计方案是什么,一种高速图像数据采集板的设计方案的知识,希望能够帮助到大家!
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们