0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ARM和FPGA设计高速图像数据采集传输系统

FPGA设计论坛 来源:未知 2023-09-27 10:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

点击上方蓝字关注我们

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进行数据传输。实验表明,本采集板的实时性和高速性能够满足系统的设计要求,可广泛应用于各种数据采集系统中。



有你想看的精彩



至芯科技FPGA就业培训班——助你步入成功之路、9月23号北京中心开课、欢迎咨询!
FPGA设计技巧,如何能有效降低静态功耗?
基于FPGA的高速串行传输系统设计






扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看




原文标题:基于ARM和FPGA设计高速图像数据采集传输系统

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22290

    浏览量

    630400

原文标题:基于ARM和FPGA设计高速图像数据采集传输系统

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图像采集卡:机器视觉时代的图像数据核心枢纽

    一、图像采集卡的技术本质:从信号到数据的“转换器”与“传输通道”图像采集卡(ImageCaptu
    的头像 发表于 11-12 15:15 305次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:机器视觉时代的<b class='flag-5'>图像</b><b class='flag-5'>数据</b>核心枢纽

    高速分切机PLC数据采集远程监控系统方案

    老旧设备缺乏通信基础,部分设备未预留空闲通信接口,导致数据采集与远程监控过程中面临多重挑战。物通博联依托工业物联网技术,提供一体化PLC数据采集远程监控系统方案,高效解决设备兼容、数据传输
    的头像 发表于 11-06 15:41 211次阅读
    <b class='flag-5'>高速</b>分切机PLC<b class='flag-5'>数据采集</b>远程监控<b class='flag-5'>系统</b>方案

    极细同轴线束在 CoaXPress 高速图像传输系统中的应用与设计要点

    极细同轴线束凭借其精密结构、优异信号完整性与柔性特性,已成为 CoaXPress 高速传输系统中的关键互连方案,它在满足高速数据链路要求的同
    的头像 发表于 10-23 17:08 2246次阅读
    极细同轴线束在 CoaXPress <b class='flag-5'>高速</b><b class='flag-5'>图像</b><b class='flag-5'>传输</b><b class='flag-5'>系统</b>中的应用与设计要点

    友思特方案 | FPGA 加持,友思特图像采集高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键中间环节,通过优化传感器到主机的数据传输处理为后续减负。其算法依托硬件执行,搭载 FPGA 的友思特图像
    的头像 发表于 08-20 09:18 603次阅读
    友思特方案 | <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡<b class='flag-5'>高速</b>预处理助力视觉<b class='flag-5'>系统</b>运行提速增效

    FPGA 加持,友思特图像采集高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键环节,可优化数据传输、减轻主机负担,其算法可在FPGA等硬件上执行。友思特FPGA
    的头像 发表于 08-13 17:41 799次阅读
    <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡<b class='flag-5'>高速</b>预处理助力视觉<b class='flag-5'>系统</b>运行提速增效

    数据采集网关如何与现有工业系统整合?

    物通博联数据采集网关与现有系统的整合可以通过以下步骤和方法实现,确保数据的高效采集传输和处理,同时满足工业生产环境中的实际需求。 一、整合
    的头像 发表于 06-07 09:18 624次阅读

    DCS数据采集系统有什么功能

    DCS(分布式控制系统数据采集系统是一套集数据采集、处理、监控、控制和分析于一体的综合性工业自动化系统。作为介于制造执行
    的头像 发表于 04-01 17:12 893次阅读

    【高清视频案例分享】CameraLink接口的PCIe采集卡 ,基于FPGA开发平台

    采集系统中,PCIe传输技术扮演着重要的角色。图像采集卡通过PCIe接口与计算机主机相连,将从CameraLink摄像头接收到的
    发表于 03-25 15:21

    5G物联网网关在工业数据采集系统的应用

    5G物联网网关在工业数据采集系统中扮演着至关重要的角色,它将工业设备与物联网云平台紧密相连,实现了数据高速传输与低延迟通信,为工业生产的智
    的头像 发表于 03-18 10:43 757次阅读

    CNC数据采集到MES系统方案

    、准确地采集CNC机床在运行过程中的各类数据,并将其传输到MES(制造执行系统)中。MES系统则对这些
    的头像 发表于 03-14 15:13 770次阅读
    CNC<b class='flag-5'>数据采集</b>到MES<b class='flag-5'>系统</b>方案

    数据采集系统的典型应用

    够实时、准确地采集各种类型的数据,包括模拟量和数字量,并将这些数据转换为计算机或其他设备可以处理、传输或显示的形式。 数据采集
    的头像 发表于 02-18 16:19 1460次阅读
    <b class='flag-5'>数据采集</b><b class='flag-5'>系统</b>的典型应用

    电机数据采集网关具有哪些特点?

    电机数据采集网关是一种专门用于电机系统数据采集传输的设备,它在电机监控、优化和维护方面发挥着关键作用。电机数据采集网关的特点主要包括以下几
    的头像 发表于 02-14 16:49 722次阅读
    电机<b class='flag-5'>数据采集</b>网关具有哪些特点?

    请问3通道同时数据采集,每通道200MHZ,计划使用ADS4129,能不采用FPGA方案?直接通过DSP接收数据吗?

    如题。请问需要3通道同时数据采集,每通道200MHZ,计划使用3片ADS4129或者ADS4128。可以不采用FPGA方案,直接通过DSP接收数据吗? 研究了C665X系列DSP,UPP的最
    发表于 01-23 08:35

    工业物联网网关如何高效数据采集传输

    工业物联网网关在高效数据采集传输方面扮演着至关重要的角色。以下是关于如何实现这一目标的详细阐述: 一、前期准备 ‌ 设备调研与评估 ‌ 在开始数据采集之前,需要对工业现场设备进行全面的调研和评估。这
    的头像 发表于 12-13 09:07 1151次阅读