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 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作为缓冲模块的选通讯号可以有用地防止数据总线的污染。
2.3 网络传输接口规划
本规划选用的以太网操控器为台湾亚信公司推出的一款Non-PCI千兆以太网操控芯片AX88180.其内置1000Mbps以太网媒体存取操控器(MAC);它可以非常便利地完结与一般16/32位微处理器衔接,而且可以像SRAM相同被拜访;它有40KBytesSRAM网络封包缓存器。它契合IEEE802.3/IEEE802.3u/IEEE802.3ab协议,可广泛运用于各种消费电子和家庭网络商场或要求更高的网络带宽衔接,如数字媒体、家用网关及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的设备驱动程序需求完结如下功用:
①对设备进行初始化和开释。
②供给各类设备服务。
③担任内核和设备之间的数据交换。
④检测和处理设备作业过程中呈现的过错。
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进行数据传