13、嵌入式视觉系统接口技术全面解析

嵌入式视觉系统接口技术解析

嵌入式视觉系统接口技术全面解析

在嵌入式视觉系统中,接口技术至关重要,它涉及到与各种外设的连接和数据交互。以下将详细介绍相机输入、显示输出、串行通信以及内存接口等方面的内容。

1. 相机输入

在嵌入式视觉系统里,通常需要连接相机或其他视频输入设备。不同的相机有不同的格式和通信协议,对应的接口要求也各不相同。
- 相机接口标准
- 模拟视频 :黑白模拟相机将视频信号编码为与场景中某点光强度成正比的模拟电压电平,输出采用隔行光栅扫描,水平位置通过时间编码。常见的彩色信息表示技术有分量视频(红、绿、蓝三个独立信号)、S - 视频(亮度和色度两个信号)和复合视频(亮度和色度组合为一个信号)。不同的视频标准,如NTSC(525扫描线,480条有实际视频数据,帧率60Hz)、PAL和SECAM(625条扫描线,576条有效,帧率50Hz)。将复合视频信号转换为数字信号的过程较为复杂,建议使用模拟视频解码器芯片,它能自动检测信号标准并进行相应处理。与编解码器的通信通常有两种形式:数字视频流、像素时钟、水平和垂直同步信号可并行连接到FPGA;编解码器配置和状态查询常通过I2C等低速串行通信协议进行。
- 直接接口 :数字视频相机逐渐取代模拟相机,在嵌入式设备中,直接连接数字传感器芯片是较好的选择。数字像素从传感器流式传输,传感器配置通过一组寄存器控制,常使用低速串行通信协议。CMOS传感器有多种操作模式,如开窗(可选择感兴趣的矩形区域,提高帧率)、跳跃(跳过整行或整列以减少像素读取数量)和合并(相邻像素合并,减少边缘混叠,提高低光条件下的灵敏度,但帧率可能较低)。不过,直接连接传感器要求信号路径短,以保证时序和信号完整性,否则可选择使用标准接口的现成相机。
- Firewire和USB :许多消费级相机采用USB或Firewire接口,直接连接到FPGA较为困难。USB依赖主机处理器管理底层协议,Firewire是点对点通信链路,数据传输无需主机处理器。连接这两种接口时,建议使用外部PHY芯片管理物理信号。连接USB相机时,最简单的方法是使用嵌入式处理器和相应的软件驱动;若要直接连接,可获取管理USB协议细节的IP块。连接Firewire相机相对容易,使用PHY芯片和LLC芯片可简化接口,部分制造商提供集成的PHY和LLC,可直接连接到FPGA。Firewire总线活动分为125ms周期,有同步传输(用于传输大块数据)和异步传输(点对点,可进行错误恢复)两种数据传输类型。工业或机器视觉相机常用DCAM规范传输原始视频数据,消费设备常用AV/C协议。
- Camera Link :在工业视觉系统中连接数字帧采集器时,Camera Link接口更为常见。它基于National Semiconductor的Channel Link技术,单个Channel Link连接通过五个LVDS对单向传输28个数据信号和一个相关时钟。基础配置中,28位分配为24位像素数据和4位有效信号,像素时钟最大速率为85MHz。此外,还有用于相机控制的LVDS对和异步串行通信的LVDS对。对于更高带宽,有中等配置和完整配置可供选择。现代FPGA支持LVDS信号,对于高速像素数据,可使用Channel Link接收器芯片进行反序列化,也可直接连接到FPGA的高速输入并使用内置SERDES块进行反序列化和解复用。
- GigE Vision :高性能设备倾向于使用千兆以太网进行数据通信,GigE Vision是一种相机接口标准,利用千兆以太网传输视频数据和发送控制信息。该标准包括控制协议、流协议、设备发现机制和XML描述文件。设计基于GigE Vision的系统较为复杂,建议在相机内构建FPGA系统并进行处理后再将结果发送到主机系统。实时操作可通过专用设备驱动实现,绕过标准TCP/IP协议栈,使用DMA传输数据。

相机接口标准 特点 适用场景
模拟视频 编码为模拟电压电平,有多种彩色表示技术和视频标准,处理复杂 传统视频系统
直接接口 数字信号,有多种操作模式,信号路径要求高 嵌入式设备
Firewire和USB 消费级相机常用,连接复杂,需外部芯片辅助 消费级应用
Camera Link 工业视觉系统常用,高速数据传输 工业视觉
GigE Vision 高性能设备适用,基于千兆以太网,标准复杂 高速或大面积图像传感器应用
  • 去隔行处理 :大多数模拟相机采用隔行扫描,将帧分为两个场。在相机或场景中的物体运动时,两个场之间会出现位移,从而产生隔行伪像和扫描速率转换问题。将隔行扫描转换为逐行扫描时,需要对缺失的行数据进行插值估计。常见的方法有简单的三点中值滤波法和更复杂的运动补偿插值法。在进行帧率转换时,可使用全时间插值法;若能容忍一定的帧间抖动,也可应用三点中值法。为避免撕裂伪像,需处理完整的场,必要时进行数据缓冲。
  • 全局和滚动快门校正 :CMOS传感器的曝光时间从像素复位释放到像素值读出。全局快门下,先读出的像素曝光时间短,可能导致图像顶部曝光不足,底部曝光过度。可通过使用外部机械快门或电子滚动快门解决该问题,但滚动快门在场景中有物体运动时会导致图像失真。补偿滚动快门失真需要对图像采集过程和物体与相机的相对运动进行建模,目前对于复杂运动的补偿算法仍在研究中。
  • 拜耳模式处理 :大多数单芯片相机使用拜耳模式滤光片获取彩色图像,为形成完整的彩色图像,需要对每个分量图像中的缺失值进行插值。最简单的滤波方法是最近邻插值,但会使图像显得块状,尤其是在边缘处。线性插值可改善这一问题,但可能导致边缘和细节模糊以及颜色伪像。为减少这些问题,需要检测图像中特征的方向,并沿边缘方向进行插值。一些复杂的算法,如通过迭代调整颜色分量比例、使用小波变换分解图像等,但这些算法计算复杂。Hsia(2004)提出的算法通过边缘导向加权和局部对比度增益,在计算量适度增加的情况下,能显著提高插值效果。
graph LR
    A[原始拜耳模式图像] --> B[最近邻插值]
    A --> C[线性插值]
    A --> D[Hsia算法]
    B --> E[块状图像]
    C --> F[边缘模糊图像]
    D --> G[高质量彩色图像]
2. 显示输出

嵌入式图像处理系统不仅需要图像采集功能,还需要能够显示图像,这包括显示驱动和显示内容生成两个方面。
- 显示驱动
- 基本原理 :图像以光栅扫描格式发送到显示器,每行有效视频数据结束后有消隐期,期间同步脉冲指示显示器开始下一行。视频电子标准协会定义了协调视频定时(CVT)标准,包括传统CRT显示器和现代平板显示器的不同时序。常见的屏幕分辨率和刷新率的时序参数可参考相关表格。通过两个计数器(水平和垂直)可轻松生成时序信号,通过比较计数器值与关键事件时间来生成相应的时序信号。
- 不同输出类型
- VGA输出 :VGA输出连接器为每个红、绿、蓝分量提供模拟信号视频信号,需要高速D/A转换器。对于简单显示,可使用电阻分压器链;对于图像显示,建议使用视频数模转换芯片。除像素数据外,还需发送水平和垂直同步信号,其极性根据分辨率和显示模式而定。VGA连接器还提供I2C通道,用于主机与显示器之间的通信。
- DVI输出 :VGA信号为模拟信号,在高分辨率下易受噪声影响,DVI标准通过数字方式传输信号解决了这一问题。红、绿、蓝像素值采用TDMS方案串行传输,编码后的信号通过单端差分对传输,位时钟是像素时钟的10倍。DVI连接器有多种配置,单链路数字连接器最大像素时钟频率为165MHz,超过该频率可使用双链路。FPGA可通过查找表进行8/10位编码,但每个通道需要SERDES块;也可使用DVI发射芯片减轻FPGA的逻辑负担。
- 电视输出 :模拟电视信号将红、绿、蓝信号组合,生成亮度和色度分量,建议使用外部复合视频信号编解码器进行处理。数字电视连接中,HDMI标准接口的RGB模式与DVI兼容,只需合适的适配器。
- 显示内容
- 传统方法 :基于软件的系统通常将显示内容表示为内存中的数据数组(帧缓冲区),然后按需流式传输到显示器。为减少更新内容时的闪烁效应,常使用双缓冲方案,但这种方法会花费大量时间进行内存读写,还需要仲裁逻辑避免访问冲突。
- FPGA的替代方法 :在FPGA中使用流处理是一种替代方案,通过将图像处理与显示驱动同步,可在显示数据的同时进行大部分处理。要求处理具有固定延迟,必要时可引入FIFO缓冲区来保证数据可用性。在这种处理方式下,显示具有较高的灵活性,如可对显示进行分段,在不同部分显示不同图像或处理阶段。
- 窗口、按钮和字符生成
- 窗口 :可将每个图像显示在单独的窗口中,动态窗口可调整内容大小和位置。若处理延迟小,可实现窗口内容的即时显示。当两个窗口重叠时,需要在窗口边界内进行上下文切换,并可能需要额外的缓存来保留两个窗口的上下文。
- 按钮和其他小部件 :在窗口环境中,小部件用于控制进程。每个小部件包含在窗口内,同一类型的小部件可通过内存寻址进行高效复用。用户与小部件的交互在即时处理方式下变得简单,可直接将小部件索引和相对光标位置传递给软件进程进行更复杂的交互。
- 字符生成 :将文本直接表示为ASCII码并即时解释生成需要显示的位图是更高效的方法。字符生成过程包括显示驱动提供当前像素位置,窗口处理器选择相关注释数据,注释处理器检测字符前沿并输出ASCII码和字符行,字符生成器生成像素行并与其他字符组合,窗口处理器在窗口边界处裁剪字符。
- 仲裁问题 :多个进程为显示产生输出时,需要使用优先级堆栈来确定哪个进程为显示器提供像素。窗口处理确定当前位置显示的窗口和相关组件,若无窗口则显示背景。窗口内,背景或图像、文本注释、小部件和鼠标光标层按优先级依次排列,高优先级层的对象会遮挡或修改低优先级层的对象。

graph LR
    A[显示驱动] --> B[同步信号]
    B --> C[图像数据处理]
    C --> D[窗口生成]
    C --> E[小部件生成]
    C --> F[字符生成]
    D --> G[显示内容仲裁]
    E --> G
    F --> G
    G --> H[最终显示]
3. 串行通信

许多外设使用串行通信进行数据交互,下面介绍几种常见的串行通信接口及其在FPGA中的实现问题。
- PS2接口
- 基本原理 :PS2是一种低速串行连接,主要用于计算机与键盘或鼠标的通信。PS2连接器提供5V电源、数据和时钟信号,采用开集电极接口。时钟和数据信号仅在传输数据时驱动,空闲状态下均为高电平。时钟信号由PS2设备生成,FPGA若要发送命令,需发送请求发送(RTS)模式。每个数据包包含11个时钟周期,包括起始位、8个数据位、奇偶校验位、停止位和确认位(仅在FPGA向设备传输数据时由设备发送)。
- 鼠标和键盘应用
- 鼠标 :FPGA需先确认PS2端口连接的是鼠标,可发送一系列命令并检查响应。鼠标可工作在多种模式,最常用的是流式传输模式,在此模式下,鼠标移动或按钮状态改变时会流式传输三字节数据包(滚动轮模式下为四字节)。
- 键盘 :通过向PS2端口发送复位命令检测键盘,收到自检响应后,发送读取设备类型命令,若返回0xAB、0x83,则表示连接的是键盘。按键时,键盘会发送相应的扫描码,按键释放时发送键起扫描码。键盘不考虑Ctrl、Shift或Alt键状态,主机需在解释扫描码时处理这些信息。可通过发送特定命令设置键盘上的指示灯。
| 设备 | 检测方法 | 工作模式 | 数据传输 |
| — | — | — | — |
| 鼠标 | 发送命令并检查响应 | 流式传输模式等 | 三字节或四字节数据包 |
| 键盘 | 发送复位和读取设备类型命令 | - | 扫描码和键起扫描码 |
- I2C
- 总线特点 :I2C是一种两线串行总线,包括数据线(SDA)和时钟线(SCL),多个设备可连接在同一总线上,每个设备可单独寻址。总线支持多种数据速率,速度受总线上最慢设备限制。在FPGA连接外设时,通常假设只有一个总线主设备(FPGA),并按最慢外设的速度运行。
- 数据传输 :总线线路通常使用被动上拉,时钟信号由主设备生成。数据传输由主设备发起,通过发送起始条件开始,第一个字节包含从设备地址和读写位。写入时,FPGA依次发送从设备地址、寄存器地址和数据;读取时,需先发送写入命令和寄存器地址,再发送重复起始条件和读取命令,从设备返回寄存器内容。若出现无从设备响应、从设备未准备好等情况,会产生负确认信号,指示传输应中止。
- FPGA实现 :FPGA作为总线主设备,时钟信号可通过主时钟域分频产生。可使用有限状态机控制驱动,将驱动与数据解释分离可使驱动保持简单。
- SPI
- 接口结构 :串行外设接口(SPI)常用于传感器和串行存储器接口,结构简单且速度快。主设备选择从设备后,数据与时钟同步传输。访问多个从设备时,每个从设备需有独立的从设备选择(SS)引脚,时钟和数据线可共享。数据传输为全双工,主设备输出/从设备输入(MoSi)和从设备输出/主设备输入(SoMi)两条线可能不同时传输有意义的数据。
- 应用场景 :在基于FPGA的系统中,SPI接口可用于为FPGA提供配置数据,应用程序若能重新编程配置内存,则可能需要访问SPI总线。此外,它还可提供非易失性数据存储。
- RS - 232
- 通信原理 :RS - 232常用于异步串行通信,数据传输前,数据线处于空闲状态(逻辑1),传输通过发送起始位(逻辑0)开始,随后是5 - 8个数据位、可选的奇偶校验位和1 - 2个停止位。发送方和接收方需事先约定时钟频率、数据位数、奇偶校验方式和停止位数等参数。半双工连接使用单条数据线,需要硬件握手控制数据传输方向;全双工使用独立的数据线进行收发。
- 实现方式 :实现异步通信时,若参数预定义,可在现有电路基础上扩展;若要在运行时更改参数,系统会变得复杂。
- USB
- 接口复杂性 :USB接口复杂,对于简单串行通信,可连接集成USB芯片,该芯片内置微控制器管理USB协议细节。另一种方法是使用FPGA上的软核处理器管理通信和协议,直接将硬件连接到USB接口通常不值得。
- 以太网
- 协议层次 :以太网通信需要PHY管理物理信号,MAC核心封装数据并控制传输和接收。以太网用于点对点通信相对简单,但编写驱动程序较复杂,不过有逻辑核心可完成大部分工作。互联网通信基于TCP/IP协议栈,包括传输控制协议(TCP)、用户数据报协议(UDP)、互联网控制消息协议(ICMP)和地址解析协议(ARP)等核心协议,以及应用层协议。
- 实现建议 :虽然这些协议可在硬件中实现,但复杂的分层架构会使实现变得困难,因此最好使用基于软件的协议栈,以太网MAC在FPGA逻辑中实现。配备完整TCP/IP栈的嵌入式系统可实现远程通信、远程控制和参数设置,还可远程更新FPGA配置。
- PCI Express
- 标准优势 :PCI Express是高速计算机系统中连接外设的最新标准,解决了传统PCI总线高速运行时的串扰和数据线路偏差问题。它采用串行连接,每个差分对以2.525 GBit/s运行,多个通道可并行运行以提高带宽。
- 数据传输和控制 :链路层引入CRC错误检测和数据包确认机制,事务层创建虚拟链接,流控制采用基于信用的方案。PCI Express常用于FPGA板与主机计算机系统之间的接口,可实现高性能计算应用中的快速数据传输,现代FPGA内置PCI Express端口,并提供逻辑核心用于接口。

graph LR
    A[PS2接口] --> B[鼠标通信]
    A --> C[键盘通信]
    D[I2C] --> E[数据传输]
    F[SPI] --> G[传感器接口]
    F --> H[串行存储器接口]
    I[RS - 232] --> J[异步通信]
    K[USB] --> L[集成芯片连接]
    M[以太网] --> N[TCP/IP协议栈]
    O[PCI Express] --> P[FPGA与主机连接]
4. 内存

在许多应用中,需要使用FPGA外部的内存用于帧缓冲和其他大内存块,同时运行嵌入式处理器和操作系统时也需要外部内存。主要有静态和动态两种类型的内存,下面分别介绍它们的接口问题。
- 静态RAM
- 存储原理 :静态内存使用锁存器存储每个位,每个存储位至少需要四个晶体管和两个用于读写访问的晶体管,制造成本较高,但速度快,常用于中等大小的内存(低兆字节范围),如高端计算机系统的缓存内存。
- 读写特性 :大多数高速同步内存是流水线式的,读取时,数据在提供地址后的几个时钟周期可用,内存吞吐量为每个时钟周期一次内存访问。写入时,地址和数据需同时提供,因此从读取切换到写入时存在死区时间。零总线周转(ZBT)内存解决了这个问题,可在不同时钟周期之间切换读写操作,数据写入可在地址之后提供,必要时可在FPGA内使用流水线延迟写入数据。
- 动态RAM
- 存储原理 :动态内存使用单个晶体管和电容存储数据,由于电容电荷会泄漏,需要每64ms至少刷新一次以防止数据丢失。动态内存采用分页结构,先选择行,再对该行内的列进行读写操作。
- 操作流程
1. 激活行 :通过激活命令选择内存行,地址线指定行号,激活操作将行数据读入列感测放大器,同时刷新该行电容电荷,通常需要几个时钟周期。
2. 读写操作 :激活后可对该行进行读写命令,地址线指定列号,读写操作有几个时钟周期的延迟,但为流水线式,每个时钟周期可进行一次访问。写入时,数据需与地址同时提供,从读取切换到写入存在总线周转延迟。DDR内存可在时钟的每个边沿进行读写操作,实现每个时钟周期两次读写。
3. 预充电 :选择另一个内存行之前,需要使用预充电命令关闭当前行,使感测放大器回到空闲状态。
4. 刷新 :刷新命令用于刷新一行内存,内部计数器按顺序刷新行,简化了内存控制器的操作。
- 使用建议 :动态内存用于帧缓冲时,流式模式效果最佳,因为可对同一行进行多次顺序访问。列流式访问由于行切换延迟大,通常不实用。为提高顺序访问次数,可在逻辑内存和物理内存之间创建映射,但会增加系统设计复杂度。随机访问处理时,可能需要同时使用静态内存作为帧缓冲。一些新的FPGA集成了专用硬件内存控制器,否则需要在FPGA逻辑中构建内存控制器。
- 闪存
- 存储原理 :闪存是非易失性内存,通过在浮栅晶体管上存储电荷改变晶体管阈值电压来识别不同状态。编程是向浮栅注入电荷,擦除是去除电荷。主要有NOR闪存和NAND闪存两种类型。
- 类型特点
- NOR闪存 :类似于常规内存,具有地址和数据线,可使用随机访问模式读写单个晶体管。读取速度较快,但写入和擦除速度较慢,擦除按块进行,擦除后所有位变为1,写入只能将1变为0,将0变为1需要擦除整个块。
- NAND闪存 :晶体管排列方式不同,具有更高的存储密度和更低的成本。采用页或扇区结构,更适合顺序访问,编程和擦除块的速度比NOR闪存快。读取时,将整个块从非易失性存储复制到缓冲寄存器,然后流式输出数据;写入时,先将数据流式输入缓冲寄存器,再一次性编程整个块。NAND闪存需要错误检查和纠正,每个块通常有备用字节用于存储纠错码,控制器需实现相应功能,并检查编程或擦除操作的状态。

内存类型 存储原理 读写速度 适用场景
静态RAM 锁存器存储 读取快,写入有死区时间 中等大小内存,如缓存
动态RAM 晶体管和电容存储 读写有延迟,需刷新 大容量内存,如帧缓冲
NOR闪存 浮栅晶体管存储 读取较快,写入和擦除慢 随机访问场景
NAND闪存 浮栅晶体管存储 顺序访问快,编程和擦除块快 顺序访问场景

综上所述,嵌入式视觉系统的接口技术涵盖了相机输入、显示输出、串行通信和内存等多个方面。在实际应用中,需要根据具体需求选择合适的接口标准和内存类型,并合理设计系统以确保数据的高效传输和处理。同时,对于复杂的接口协议和内存操作,可借助现有的逻辑核心和软件协议栈来简化实现过程。

内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)与多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习与启发因子优化,实现路径的动态调整与多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算与参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练与融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法与神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑与实时避障等多目标协同优化;③为智能无人系统的自主决策与环境适应能力提供算法支持; 阅读建议:此资源结合理论模型与MATLAB实践,建议读者在理解ACO与MLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值