嵌入式图像处理系统(精选12篇)
嵌入式图像处理系统 篇1
嵌入式系统是一种先进的图像处理系统, 因具有低功耗、集成度高、成本低等优点而被广泛应用在多个领域。随着近几年嵌入式系统技术的发展, 其已经在网络通信设备、工业控制、医疗仪器等领域进行大范围的传播, 并有效提升了上述设备的运行能力。目前, 我国很多地区已开始了新型嵌入式系统的研发, 并取得了一定成绩。本文以AT91RM9200 32位RAM920T嵌入式处理器作为核心板, 建立嵌入式图像处理系统, 现分析如下。
1 嵌入式图像处理系统硬件开发设计
1.1 电源设计
核心板电源包括+1.8V与+3.3V, 其中+1.8V负责处理器内核供电。上述两个电源由底板两个LT1084稳压芯片对+5输入变化得到, 并通过插座实现与核心板的连接。在核心板上, 存在两个指示灯, 表示两个电源是否正常运行。
1.2 晶体振荡电路设计
核心板采用外接无源晶振、内部锁相环电路生成系统时钟的方法。
首先, 外接无源晶振频率为18.432MHz, 可通过特定的软件设置系统时钟频率, 最高时频率可达到180MHz。系统连接电源后, 工作频率一般不会达到180MHz, 且在AT91RM9200处理器中, 存在以实时时钟模块, 因此还应外接一个频率为32.768KHZ无源晶振。若该系统的服务对象不需要实时信息, 可选择其他频率, 并设置符合服务要求的定时器, 但其频率最高不能超过33K。
1.3 复位电路设计
在本系统中, 复位电路的主要功能是为系统的上电复位、电源电压监控、系统运行时的用户按键复位等功能提供服务。复位电路由RC电路构成, 本文在充分考虑成本的前提下, 采用IMP811。
IMP811是通过微控制器、数字系统、低功耗微处理器监视电源工作, 具备去抖动的手动复位输入功能。工作为温度范围为-40℃~105℃。当电源电压降至预制的复位门限以下时, 复位电路就会发送复位信号, 并在电源升高到此复位门限之后, 最少持续保持这一信号140ms。本次研究中复位电路的基本构造如图1所示。
1.4 FLASH存储器接口设计
FLASH存储器是可在系统进行电擦写, 掉电之后信息依然保存的信息存储器, 与传统的信息存储器相比, FLASH存储器的功耗低、容量大、擦写速度快等优点, 并支持在分扇区 (或整片) 进行系统编程, 并依靠内部嵌入算法对芯片进行操作。目前, 常见的FLASH储存器主要为8或16位的数据宽度, 编程电压为3.3V。本文所研究的嵌入式图像处理系统中的FLASH储存器主要为两种类型, 一种为ATMEL串行DATA FLASH, 存储容量8M字节;另一种为ATMEL16位并行F;ASH, 存储容量2M字节。
2 M单片储存器工作电压为2.65V~3.6V, 标准电压为 (3.0±0.2) V, 采用48脚TSOP封装, 数据宽度为16位, 支持8位字节模式、16位字模式的工作方式。一般情况下, 3V电压可满足系统编程与擦除, 操作人员可通过内部命令寄存器输入标准的命令序列, 并进行FLASH编程、整片擦拭等操作。本文所构建的FLASH存储系统, 主要用于存储程序代码, 系统在获取指令后开始执行。因此, 在系统设计中要注意将存有程序代码的FLASH模块快速配置到ROM模块中。
2 嵌入式图像处理系统软件设计
2.1 图像编码模块设计
2.1.1 离散余弦变换
在JPEG图像压缩算法中, 离散余弦转换是一种标准的有损压缩算法。DCT变化通过傅立叶变换性质, 采用图像边界褶翻, 以函数形式表达图像, 再对图像进行二维傅立叶变换。
在实际操作中可发现, 由于图像各部位细节的丰富程度存在一定差异, 因此在图像的整体处理上, 需要将图像划分为若干个模块, 以获得更好的图像处理效果。本文将图像编码模块划分为8*8、16*16两种模式, 再对图像进行二维DCT转换。操作者通过量化的DCT系数, 对特定范围内的余弦进行解码, 并对每个图像模块进行反转换。操作结束之后, 将所有数据连接在一起并构建成单一图像。对于一般图像, DCT系数无限接近0, 因此去掉这些系数之后不会对重建图像的质量产生明显影响。
2.1.2 DCT图像压缩编码的实现
DCT图像压缩编码的实现步骤为: (1) 从硬件设备采集图像, 并将数据输入到主控制芯片, 分块处理图像数据; (2) 将图像转换为8*8 (或16*16) 像素模块, 对每一像素模块进行DCT转换; (3) 获取每个像素模块的DC数据, 并对其变化系数进行量化处理; (4) 使用游程编码获取压缩后的数据。其基本操作流程见图2。
2.2 畸变校正模块的设计
目前, 嵌入式图像处理系统所应用领域的图像采集设备主要为网络摄像头, 即使采用了理想的摄像头, 所采集到的成像结果仍为直线, 再加之镜头成像存在一定的畸变, 最终导致成像结果发生变化, 畸变校正模块的主要作用就是校正畸变的图像。
2.2.1 基于最小二乘法的畸变校正算法
畸变校正算法主要分为两个步骤, 首先是标定摄像头景象畸变模型, 计算畸变系数;再重新确定畸变校正之后的各标点灰度值。
一般情况下, 标靶原始图像的具体参数为:线条间距为1cm, 镜头与标靶之间的距离为45cm, 镜头分辨率320*240像素。从标准情况下的原始图像中发现, 系统所获取的畸变系数的图像特征不明显。因此, 为获取有用的图像信息, 需要预处理原始图像 (见图3) , 包括图像灰度值控制、中值滤波消除噪声干扰等。
结合径向畸变数学模型, 可发现实际像素坐标与校正后的像素坐标之间存在非线性关系。选择N个样点, 其计算方程组为:
再通过最小二乘法, 即可得到径向畸变系数K1、K2的具体数值。
2.2.2 图像校正算法的实现
根据上述方程组, 计算出需要求解的方程组坐标, 再结合摄像机出厂时所确定的镜头参数, 对每一个图像采集设备进行统一标定, 计算出畸变参数与对应的校正参数, 并将校正参数以表格的形式罗列, 方便在后期制作中快速校正图像。
3 结语
本文分析了嵌入式图像处理系统的设计方法, 从嵌入式系统的硬件开发、软件开发两方面对其设计内容进行讨论。总体而言, 随着图像处理技术的不断成熟, 再加之图像数据自身的信息特点, 使得图像的处理算法对硬件、软件的要求不断提高。因此, 在未来的嵌入式图像处理系统的研发过程中, 必须要考虑多级任务处理的功能, 并在动态图像、视频图像的处理中进行研究, 以进一步提升嵌入式系统的工作能力。
参考文献
[1]郑鑫.面向异步视频的嵌入式图像处理系统设计[J].现代电子技术, 2012, 35 (22) :14-17.
[2]张婷曼, 王庆.基于云计算平台嵌入式传感器图像处理系统设计[J].计算机测量与控制:算法、设计与应用, 2014, 22 (7) :2216-2218.
[3]程琼, 广长林.基于ARM图像的采集与3G无线传输研究与设计[J].湖北工业大学学报, 2013, 28 (1) :43-45.
[4]孙德忠.基于嵌入式系统的图像处理装置的设计尖现[D].石家庄:河北科技大学, 2011 (12) :14-28.
[5]孙秉现, 吴开军.Huffinan算法的改进及其在图像缩中的应用[J].微计算机信息, 2011, 27 (1) :264-273.
嵌入式图像处理系统 篇2
引 言
伴随着图像处理技术的快速发展,图像处理系统的性能需求也在不断提高,特别是在实时性上的要求。基于PC或者工作站的图像处理系统,常常不是一个可行的选择,原因如下:应用对处理时间要求苛刻;CCD摄像机数据量太大。另外,这类系统的资源有效利用率较低,体积大而笨重,功耗高,不适合便携式应用场合。
DSP是一种基于指令和代码的流水线处理器,具有强大的数据处理能力和较高的运行速度,采用C/C++或者线性汇编语言编程,可以支持复杂的算法处理,而FPGA则属于真正的并行架构,不同的处理操作无需竞争相同的资源,每个处理任务都可以不受其他逻辑块的影响自主运行,因此FPGA具有强大的并行处理能力,其现场可编程的属性也带来了更大的灵活性,但是,FPGA不擅长复杂的算法处理和逻辑控制。本文基于DSP+FPGA架构构建了一个嵌入式图像处理系统,使得DSP和FPGA可以发挥各自的特长,协同处理,与单独采用DSP或FPGA的系统相比,本系统具有更强大的数据处理能力,且更灵活、更通用。
1.系统架构
本系统采用DSP+FPGA架构,原理方框图如图1所示,其中DSP芯片采用TI公司单核最高性能的TMS320C6455(简称C6455)芯片作为核心处理器,负责完成视频图像的复杂算法处理,FPGA芯片采用Altera公司的Cyclone Ⅲ系列芯片EP3C55,FPGA作为DSP的协处理器,负责完成图像的采集、显示和传输等辅助功能,使得DSP可以专注于算法处理。
DSP和FPGA之间通过32位EMIF接口实现了高速同步无缝互联, 由图1可知,本系统的动态存储器均采用DDR2 SDRAM,其中C6455所带2片DDR2存储器用来存储图像和算法数据,为C6455处理大数据量、复杂算法提供了保证。FPGA所带2片DDR2存储器用来存储捕捉的Camera图像数据,以便VGA显示和DSP读取。FPGA采集的图像数据可通过EMIF和EDMA从FPGA所带的DDR2存储器搬运到DSP所带的DDR2存储器。
图1 系统方框图
2.FPGA设计
本文FPGA的主要功能围绕着DDR2存储器的.读写,如图2所示。
图2 FPGA的主要功能模块图
相机负责向缓冲区写数据,VGA显示和DSP负责从缓冲区读数据。本文中的DDR2控制器工作于Full?rate模式下,需要向DDR2 driver提供2倍数据宽度,即64 b数据。本文对每个读写数据通道,使用独立的FIFO进行不同时钟域之间的数据传输。从CameraLink相机的LVDS接收器解码得到8 b图像数据,在向Write FIFO写之前,需要按8 B进行打包处理,合并为64 b数据;而发向VGA显示的数据在从Read FIFO中读出后,需要先经过拆包处理,得到8 b图像数据后才能送给VGA Controller;从Capture FIFO读出的数据发送给DSP之前也要经过拆包处理,将64 b数据拆为2个32 b数据后,才能发送给EMIFA,进行传输。为方便可视化验证算法处理结果,DSP算法处理结果可以通过McBSP发送给FPGA,FPGA接收到数据,将其转换为可视的屏幕位置送给VGA Controller,在屏幕上进行叠加显示。
本系统应用于近红外图像处理领域,采用的CameraLink相机输出分辨率为1 024×768,帧率为30 f/s,而一般的液晶显示器刷新频率为60 Hz,为了将捕捉到的相机数据显示出来,需要将30帧图像插帧为60帧,但是显示时钟与相机时钟并不是同源时钟,其帧率并不是严格的两倍关系,这种相机和显示之间的异步时序关系如图3所示,所以不能简单地将一帧图像显示2次;同时,本系统的近红外图像算法处理时间根据图像的不同而具有不确定性,并非每帧图像都能在一个帧周期内处理完成。基于这两个因素,本系统没有采用常规的乒乓缓冲处理方式,而是采用了三重缓冲解决了这两个问题。
图3 相机和显示的异步时序关系
所谓三重缓冲,也即在DDR2存储器内开辟了三个缓冲:BufferA,BufferB和BufferC。其中,读写操作各占一个缓冲区,第三个存储区作为中转,先不考虑DSP从缓冲区读数据。
三重缓冲的示意图如图4所示,假设当前缓冲区BufferA正在进行写操作,缓冲区BufferB正在进行读操作,缓冲区BufferC则有2种可能:已写满(FULL)和已读完(EMPTY)两个状态。此时,如果需要进行读写翻页操作,即读复位信号或写复位
信号有效时,DDR2驱动程序可按不同情况给出不同的操作,如表1所示。
例如,当读复位信号有效,写复位信号无效时,说明缓冲区BufferA尚未写满,而缓冲区BufferB已经读完,此时,需要查询缓冲区BufferC的状态,如果缓冲区BufferC处于“FULL”状态,则读缓冲区将由当前的缓冲区BufferB改为缓冲区BufferC,并将缓冲区BufferB设置为“EMPTY”状态;如果缓冲区BufferC处于“EMPTY”状态,则将重新读取缓冲区BufferB。
图4 三重缓冲的示意图
表1 三重缓冲的决策表
再考虑DSP从缓冲区读数据的情况,为保证DSP任意时刻开始读数据,总能读到最新的数据,本文使用图像的场信号FVAL下降沿作为触发,定位DSP读数据的缓冲区地址,如果在下一个FVAL下降沿之前DSP始终未开始读数据,则在新的FVAL下降沿时刻重新定位缓冲区地址,反之,如果DSP开始读数据了,即使在FVAL下降沿未能读完,也会继续读,直到DSP读完数据,再重新定位缓冲区地址,按本文设计的方案,DSP会在很短的时间内完成读数据任务,而如果在两个FVAL内,DSP一直未完成读任务,则认为发生了错误,读控制器会进行复位矫正。
DDR2驱动的读写控制以显示的行信号HD为周期,周期性查询是否需要进行读写操作。其状态转移示意图如图5所示。
图5 DDR2读写控制的状态机
SignalTap Ⅱ Logic Analyzer是Quartus Ⅱ自带的嵌入式逻辑分析仪,与ModelSim软件仿真有所不同,是在线式仿真,可以实时捕捉和显示信号变化。图6所示是本文用SignalTap Ⅱ捕捉到的数据波形。
图6 SignalTap Ⅱ波形图
3.C6455软件设计
本文C6455的软件基于TI提供的抢占式多线程实时内核DSP/BIOS进行开发,网络部分使用了NDK开发套件,为了实现通过网络发送图像数据给计算机和接收来自计算机的图像数据,使用了面向无连接的UDP协议,相比TCP协议,UDP速度更快,更适合应用。C6455软件主要包含三个部分:实时性最高的硬件中断线程(HWI);采集线程和两个任务线程(TSK);处理线程和通信线程,流程图如图7所示。
图7 C6455程序流程图
4.实验结果
嵌入式开发需要的不仅仅是处理器 篇3
摘要:嵌入式系统工程师们在花大量时间试图找到最适合应用的完美器件。然而令他们失望的是,现有器件总是缺少其他器件所具备的一项或多项重要功能,因而在设计时总是要权衡利弊而无法实现完美。绝大多数情况下,完美器件只是一个梦想。
关键词:嵌入式开发;处理器;MCU;编译器
对于处理器和单片机,选择标准变得更加抽象和复杂。由于单片机可编程,正常的电气参数选择标准必须要考虑器件执行某项具体任务时的速度和效率。从表面上看,单片机性能取决于处理器内核,但事实上并非完全如此。处理器性能的确与处理器内核息息相关,但同时它还取决于其他因素,包括集成度、支持处理器内核的外设、采用的开发工具、要执行的任务、工程师发挥特定单片机性能的技巧以及系统成本,等等。图1中的几个示例显示了在不改变处理器内核的前提下,采用编译器技术所带来的不同效果。
因此对于单片机而言,工程师心目中理想的器件不仅需要具有正确的电气特性和集成外设,还要有一个处理器能在规定时间内执行应用程序中最复杂的计算。工程师熟悉的单一最佳开发工具平台必须能支持这个器件,这样工程师既能够更快地熟悉器件,又能够更快地学习如何充分利用开发工具。最后,这个器件应该符合工程师负责的所有应用的成本目标。遗憾的是,这种理想的器件是不切实际的。
持续变化的需求
一个典型项目会因多种因素变得复杂化,比如开发进度表、可用资源以及开发前项目的确定程度等。所有工程师都熟知“需求漂移”这个术语,也非常明白营销部门其实并不清楚需求变化对剩余的设计工作会产生什么影响。
需要进行大量的工作来避免在项目开始后出现过多变化。问题通常都会归咎于缺乏预见和规划,因此会花更多时间制定更完善、更详细的规范,来描述硬件和软件需求。这就产生了全面的项目计划,需要在项目进展过程中进行跟踪。
计划和追踪对于项目的按时完成极为重要,但是在这个不断变化的世界里、不太可能预测到所有实际可能出现的变化:竞争对手以更低的价格推出功能优异的竞争产品:上年度产品遇到生产问题需要立即处理,从当前项目中撤走工程资源:经济危机席卷全球、优先级已经从“若有更好”的功能转变为成本优先。诸如此类的例子数不胜数,惟一不变的事实是需求在不断变化。
适应变化
与其减少变化,不如来适应不断发生的变化。这样就形成了开发平台向能支持更加灵活的可编程器件转变的趋势。硬件变化必须更新印刷电路板(PCB)或更换元器件,与之相反,软件变化一般能够更快、更容易地实现。而且,软件在产品发布后还能进行功能升级或修正,并能通过事后对应用程序进行定制实现产品的多样化。
但是,要获得灵活性就必然要付出代价。可编程解决方案通常比等效的功能固定硬件解决方案更加昂贵。为了更快地上市、解决生产过程中发现的问题以及系统现场升级,通常值得付出额外的物料清单(BOM)成本。然而,与日俱增的开发环境复杂性常常被忽视了、或者至少是被低估了。例如,TechInsights最近一项研究表明,当前开发趋势不仅要在单个设计中采用多个处理器,而且要在同一设计中采用多个不同的处理器。
这加重了嵌入式系统工程师的负担,他们必须熟悉可编程器件的开发流程,还要精通多种单片机和处理器及其相关开发环境。
既能执行所有任务又能得到单一开发环境支持的低成本单器件理想解决方案并不现实。更实际的做法是,至少标准化一些能够满足设计人员大多数需求的器件。由于通常关注的焦点都是单片机的处理器内核,因此对单个处理器内核进行标准化就成了最接近单器件理想的选择。使用标准内核可使应用在不同供应商的器件之间轻松转换,这种想法进一步增强了内核标准化的说服力。遗憾的是,选择单片机所涉及的因素远不止一个处理器内核这么简单,必须要对整个开发生态环境有更全面的认识。
完整的开发平台
根据有限的需求来标准化特定处理器内核是一种不错的策略,但几乎所有单片机供应商或处理器内核开发商都提供一系列的处理器架构。事实证明,没有一个独立架构能满足所有要求,特别是在考虑成本的情况下。事实上,根据对工程师的调查,开发工具在选择标准中排名最高。芯片性能在选择标准中排名第二。尽管处理器内核是一个重要因素,但却不是惟一的因素,有时甚至不是主要因素。成本因素在重要性上排位第三,它与器件性能不可兼顾,引发了传统的成本与性能取舍之争,这是任何单一器件或处理器内核都无法调和的矛盾。
除软件环境、性能及成本这些显而易见的选择标准外,外设、操作系统支持、可用代码资源、硬件工具及功耗等其他一些标准紧随其次,重要性不分先后。
问题的关键不是选择某种单一器件或特定处理器内核,而是在仅熟悉一个或少数几个开发环境的条件限制下进行选择,从而缩短学习周期。拥有能够发挥某种器件优势的工程技巧和能力是获得优化设计的主导因素、因此在某个特定开发生态系统中成为专家,将会获得更佳的结果。
因此,标准化的重点应关注完整的生态系统,而不仅是处理器架构。进一步来说,开发人员应考虑这个生态系统内所支持的产品范围,以及能否在不影响整个生态系统的情况下更换元器件,比如编译器、器件或处理器内核、外设、软件库等等。
无论是为应用中的主流32位单片机编写软件,还是为执行系统基本电源管理的小型8位外设单片机编写软件,开发环境都应保持相同。如果当前16位单片机需要升级为性能更高的32位单片机,器件外设的差异不能太大。
选择器件需要考虑的另一个因素是,出现新产品后能否重复使用现有代码。约有90%的工程师会重复使用以前的代码,其中大部分代码均为内部开发。大多数工程师使用c或C++,进行嵌入式开发,这使固件从8位升为32位或者从32位降至16位单片机的过程总是异常困难,如果最初开发代码时并未考虑器件间的转换,问题就更加突出。因此、包括库、硬件工具和器件系列在内的开发生态系统应该尽量实现这种无缝转换。
其他选择标准包括是否提供与整个器件系列保持大体一致的优质文档。是否提供单人解决同一系列所有器件问题的支持,并始终通过此人向设计团队传递客户需求的变化,也是一个需要考虑的因素。
总结
变化是永恒的。应对变化的最好策略是迎接变化并做好规划。标准化有助于降低和适应需求变化带来的影响。不过,单片机平台上的标准化不应该只限于处理器内核。换句话说,标准化的不应该只是处理器内核,而是整个开发生态系统。选择标准还应包括以下因素:
·软件开发环境;
·开发生态环境中兼容器件的范围,包括性能和成本构成;
·不同产品外设之间的兼容性;
·在生态系统中支持器件的硬件开发工具;
·文档一致性;
·所提供的支持以及与支持联络人建立良好的关系;
嵌入式图像处理系统 篇4
1.1数字信号处理芯片DM642
TMS320DM642是TI公司C6000系列DSP中最新的定点DSP, 其核心是C6416型高性能数字信号处理器, 具有极强的处理性能, 高度的灵活性和可编程性, 其采用第二代高性能、先进的超长指令字veloci T1.2结构的DSP核及增强的并行机制, 当工作在720M赫兹的时钟频率下, 其处理性能最高可达5760MI/s, 同时外围集成了非常完整的音频、视频和网络通信等设备及接口, 特别适用于机器视觉、医学成像、网络视频监控、数字广播以及基于数字视频/图像处理的消费类电子产品等高速DSP应用领域。
1.2硬件总体设计
数据采集处理系统接口电路硬件框图如图1所示, 整个系统在框架结构上可以大体分为3个相对独立的部分:图像采集部分、图像压缩处理部分、USB传输部分。
图像采集部分采用130万象素的CMOS摄象头0V9640作为图像传感器来输出YUV图像数字信号以及视频同步信号。这部分主要的设计任务是在分析该摄像芯片时序特征的基础上设计硬件电路, 保证主芯片获得的图象数字与视频同步信号的匹配。同时, 还需要通过设置该摄像芯片中相关的寄存器, 使得该摄像芯片工作在系统要求的图像采集工作状态;该设置任务由主芯片通过I2C方式来实现。 图像压缩处理部分是整个系统的核心部分, 采用TI的TMS320DM642芯片作为主芯片工作。DSP要做的工作主要有两个部分:其主要工作是将OV9640输出的图像数据进行快速压缩, 然后根据图像传感器芯片提供的视频同步信号对在图像压缩数据中插入帧标记。其次, DSP芯片还要处理一些系统的数据传输控制方面工作, 在获得图像数据过程中使用EDMA将采集到的数据直接存入SDRAM, 并采用乒乓模式设置存储地址, 使CPU能够在接收图像数据同时进行图像压缩;同时, DSP还通过EMIF接口 (CE2) 将数据送出给USB芯片的FIFO并通过I2C总线接收PC传输下来的压缩参数, 对图像压缩算法进行调整。另外, 系统框图的中FLASH芯片用于装载DSP的运行程序, 在系统上电后实现BootLoader。
USB传输部分采用Cpyress公司的EZ-USB-FX2为USB传输控制芯片。该部分主要任务是作为DSP与PC的通信纽带, 将DSP压缩后的图像数据传入PC机;同时USB控制芯片还接收PC下传的控制命令, 然后通过I2C总线控制图像传感器采集的图像质量以及控制DSP芯片的图像压缩的压缩比例等。
1.3系统工作流程图
本图像采集与处理系统工作流程如图2所示, 由以下几个步骤组成:①系统独立电源上电, 对DSP部分电路 (包括FLASH、SDRAM) 上电复。DSP芯片根据相关引脚电平进行BootLoader, 即从FLASH存储芯片中获取DSP的运行程序, 之后根据获取到的程序运行对SDRAM存储芯片、针对与USB通信接口的EMIF (CE2) 进行初始化设置等;②USB接口芯片与图像传感器部分电路通过USB总线从PC机取电复位。对于采用USB接口设计的硬件系统, 操作系统会把它当成计算机外设进行添加。USB设备在连接到PC上时, 操作系统首先会对USB设备进行枚举。枚举成功, 根据EZ-USB芯片的软特性, 可以通过USB接口从主机下载8051程序与数据存储在内部RAM中。在代码描述表从主机下载到EZ-USB的RAM后, 8051脱离复位状态, 开始执行设备程序。此时, EZ-USB再次进行枚举, 即重枚举;③重枚举结束后, EZ-USB根据下载所得程序运行对自身初始化, 设置芯片状态, 端点类型以及FIFO接口参数;同时, EZ-USB芯片还通过I2C总线初始化图像传感器芯片0V9640。至此, 系统初始化过程结束, 系统处于等待状态;④等待PC机应用程序发出系统指令并通过USB总线下发后, 系统UZ-USB部分开始运行。首先判断是否调整OV9640图像参数, 如果是则进行相应调整工作。然后转入等待下一系统指令;⑤判断是否要求DSP接收PC下传指令。当明确要求上传图像指令后, DSP开始循环接收图像传感器图像数据并进行压缩处理, 然后通过USB接口传输给PC主机。每次循环都要判断系统是否停止图像需求。系统调整参数的时候都需要先暂停图像需求;⑥DSP也可能接收到PC要求调整图像压缩参数命令, 则根据相应的命令进行处理。然后转入等待下一系统指令。
2图像采集与处理系统驱动程序设计
USB2.0接口图像采集与处理系统的微型驱动程序的流程部分框图如图3所示, 框图中没有包含USB驱动程序所都包含的即插即用例程DispatchPnp、系统报告历程DispatchWmi、电源管理历程DispatchPower等 (整个驱动可以根据CPRESS提供的驱动例程改编, 故只介绍改动比较大的) 。当PNP检测器检测到插入USB设备的动作后, 就装载根据驱动引导文件 (INF文件) 找到的相应微型驱动程序, 执行DriverEntry ( ) 入口函数, 注册设备运行需要的驱动程序对象。接着PnP管理器为每个设备实例调用AddDevice函数, 在该函数中创建设备对象并做一些相应的初始化设备工作, 如创建设备扩展对象dx来存取指向FDO的指针;当驱动程序接收到应用程序DeviceIoControl函数发出的相应IOCTL命令, 创建相应IRP并对其进行检测。如果要求图像数据则进入获取设备图像数据过程, 创建一个URB作为IRP的一个参数发给USB总线驱动程序接口USBDI (USB Driver Interface) 。获取数据结束则将数据放入指定缓冲区, 启动下一次数据传输。当缓冲区标记表示一帧图像数据传输完毕, 则把数据整理成完整的一帧图像数据。并在ReadData函数中对压缩数据进行解码, 将图像数据处理成BMP的格式, 交给应用程序显示处理。
3结束语
本文从工程应用的角度出发, 阐述了基于嵌入式系统的高分辨率动态图像采集处理系统的实际开发过程。本系统有两个主要特点:①图像数据处理迅速, DM642芯片强大的数据处理能力保证的图像数据压缩的高效性;②传输速率高, USB2.0的高速传输方式保证了动态数据实时传输的要求。且该系统经过实际测试效果良好, 实现了预期设计要求。
参考文献
[1]李方慧, 王飞, 何佩琨.TMS320C6000系列DSPs原理与应用 (第2版) [M].北京:电子工业出版社, 2003.
[2]任丽芳, 马淑芬, 李方慧.TMS320C6000系列DSPs的原理与应用 (第1版) [M].北京:电子工业出版社, 2000.
[3]李兴友, 游志胜.基于DM642的大容量FLASH引导加载方法研究与实现[J].计算机应用, 2005 (8) .
[4]聂鑫.采用DSP的USB2.0通信接口设计[J].电子技术, 2004 (10) .
嵌入式处理学习心得总结 篇5
现在的嵌入式工作是越来越盛行,而这方面的人员却是越来越少,所以学习嵌入式是解决找工作难的一个比较有效的途径。因为我开始踏上学习嵌入式的道路。听别人说嵌入式ARM相比于其他的嵌入式FPGA,DSP等都要难点,而且学习的内容量也是比较多。因此在学习嵌入式ARM的初级阶段是随处碰壁,每天都在遭受打击,例如在移植bootloader时,虽然按照网上的一些方法移植成功了,但只知道复制和粘贴要修改的代码,却不知道为何要这么做。我觉得这样的学习态度是不对的,学习不是只求结果,而是要注重解决问题的过程!为了学习嵌入式Linux我也在网上查阅了很多的书籍,还下载了很多的视频,但都不是很让人如意。它们大多是讲的很浅显,都是泛泛之谈,没有讲到最核心的东西。到了最后是浪费了我们学习者的时间和精力。之后看见师兄有一本韦东山老师编辑的《嵌入式Linux应用开发完全手册》,我就借了几天看了看,发现韦老师对嵌入式Linux的极其深度的分析,让我一下子找到了能带我入门的一本书!并且还有配套的视频教学更是讲解地非常到位,将教材和视频相互配合的学习,更加大大的提供了学习效率,尤其是视频上讲解的内容,都是韦东山老师自己亲自授教,完全没有按照教材上的内容一一读出来,而是根据内核代码分析的教我如何编写自己的代码,尤其是在Linux内核中占比例最重的一部分—内核驱动时,更是让我知道用户是如何通过应用程序来访问底层硬件的,解决了我长久以来都无法攻克的难题!!例如在编写LCD驱动时,我对于书上LCD硬件工作原理不是理解的很透彻,通过观看韦东山老师的第二期视频中的“LCD驱动程序”,老师就像是站在我面前,在屏幕上用电子笔细细给我讲解,写出更加形象的LCD的硬件驱动,重要的是在整个视频中老师都没有按着教材念,而是一个教学经验丰富的老师在给同学们授课一样。编写代码也是亲自编写,没有完全复制别人的代码,编写的同时不断的说明每条语句的作用、编程思想和设计程序的经验,还有阅读大量代码的技巧!在视频中老师教会了许多其他书本中没有提及到的重要知识。
嵌入式图像处理系统 篇6
关键词:ARM;嵌入式;WEB服务器
中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 06-0000-01
Design and Implementation of Embedded WEB Server on ARM Processor
Yang Jichao,Su Zikang
(China University of Mining&Technology,School of Information and Electrical Engineering,Xuzhou221008,China)
Abstract:This paper studies the software and hardware of the WEB server which based on embedded system,and its core research is samsung’s S3C2410X microprocessors.In addition,this paper also make a detailed analysis on embedded system WEB server’s every module and work process.
KeyWords:ARM;Embedded;WEB server
一、引言
随着计算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。以ARM系列的微处理器为例,它具有低功耗、高性能和低成本的特点。此外,随着网络技术的发展,B/S架构的产品明显体现着更为方便的特性,所以客户端/服务器的通讯方式变得越来越重要,而它的使用基础中最重要的是服务端要有一个WEB服务器,对于一般的信息管理系统或者小型系统而言,使用通用的WEB服务器无疑是一种资源的浪费。这时就可以使用功能比较简单的嵌入式的WEB服务器来进行工作以解决问题。
二、硬件平台的设计
本系统的硬件结构图如上所示,系统的核心是三星公司的S3C2410X微处理器,它集成了包括16KB数据Cache、16KB指令Cache、MMU、LCD控制器、外部存储控制器等多个部件在内,具有高集成度和低功耗的特点。同时采用大容量的FLASH存储器用以存储文件系统、linux内核以及用户的程序文件。此外,由于RS-232所定义的高、低电平信号与S3C2410X系统的TTL电路所定义的高、低电平信号完全不同,因此要使用Sipex公司出产的SP3232E芯片作为串行接口电平转换电路。
三、WEB服务器的工作流程
客户端要使用浏览器与Web服务器进行通信。WEB服务器中使用的是HTTP协议,HTTP(超文本传输协议)为标准的网络传输协议,使用可靠的TCP协议进行连接,通常采用的是端口80。HTTP是一个简单的网络协议,每次连接只能完成客户的一个请求。客户机与WEB服务器在进行交换数据之前,首先要用TCP/IP协议来建立连接,服务器端的程序建立TCP类型SOCKET并在80端口进行,服务器在接收到客户端的请求后,解析用户请求的HTTP协议头文件以及分析客户的请求,根据客户的请求来返回相应的有用数据。这些数据可以来自静态主页,也可以根据客户请求动态产生。由此可见,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是WEB服务器所完成的主要任务。
四、嵌入式WEB服务器的实现
在服务器工作时多个TCP连接或多个应用程序的进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接许多计算机操作,系统为应用程序与TCP/IP协议交互提供了称为套接字的接口。因此,WEB服务器的工作方式都是以套接字的机制为基础的。在WEB服务器端,首先要创建一个套接字,并将这个套接字与服务器的公认地址进行绑定。接着就要将所创建的套接字转换成相应的倾听套接字用来接受用户请求。然后创建接收客户的连接,服务器和客户机之间就可以进行通信了。本文中的嵌入式WEB服务器主要由初始化模块、侦听模块、脚本引擎模块、请求解析模块、输出模块以及命令执行模块,各模块关系如下图所示。
初始化模块是用来定义变量、创建初始套接字、设置信号量、将初始套接字与本地地址以及端口进行绑定,并且设置套接字侦听处理状态。侦听模块在接收到一个客户的连接请求后,要读取客户的请求,然后进行相应的处理,再交给解析模块来进行解析。请求解析模块是整个服务器的核心设计所在,根据客户的请求,来进行一定的处理。若客户提交的请求为静态文档时,文档要直接提交给输出模块进行输出。若请求为动态文档时,请求解析模块会调动脚本引擎模块工作,将请求的脚本更改为现场数据,再提交输出模块进行输出。若请求是带参数的执行命令时,请求解析器就要调用命令执行模块来分析命令并控制监控前端。
五、结束语
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落,越来越多的信息化产品会需要接入Internet并通过WEB服务器供客户进行浏览。本文中的设计可以提供基本的WEB服务,对客户的静态和动态请求都能够进行相应且运行良好。但不足的是,本文中的系统在稳定性和安全性方面没有开展研究,系统在短时间内运行应该没有问题,但如果进行长时间的工作还需要进一步的研究。
参考文献:
[1]赵会娟.基于ARM9的嵌入式Linux开发平台构建与Boa的实现[D].成都:西南交通大学,2008
[2]宋江贵.基于ARM9的嵌入式WebServer研究应用与通信实现[D].北京:北京邮电大学,2008
[3]吴军霞.基于ARM的嵌入式Web服务器的研究[D].湖北:武汉理工大学,2007
[4]石道生,吴军霞,罗慧谦.基于ARM9的嵌入式Web服务器的研究[J].中国水运(学术版),2006,6(8)
嵌入式图像处理系统 篇7
1、系统总体设计
系统构成如图1所示, 包括图像传感器、数字信号处理器、外部存储单元、图像编码器和以太网通信及键盘控制单元等部分组成。数字信号处理器DSP用于图像处理和采集、显示等设备的控制, 图像传感器用于图像视频信号转换为DSP可以处理的数字信号, SDRAM作为DSP的外部存储器, FLASH存储源程序, 在上电时下载到DSP中, 图像编码器用于图像视频的编码显示, 以太网实现DSP与上位机的通信, 键盘作为控制信号的输入。
系统的核心处理器选择TI公司的TMS320DM642。DM642是基于TMS320C6000系列中的最高性能的定点DSP C64xCPU, 具有极强的处理能力和高度的灵活性及可编程性。DM642具有如下特点:
1) DM642具有增强型直接存储器存取控制器 (EDMA) , 可以通过64个独立的通道提供超过2G byte/sec的I/O带宽;
2) DM642有两级片内Cache (高速缓冲存储器) , 第一级包括一个直接寻址的16Kbyte的程序Cache, 一个16Kbyte的数据Cache;第二级为一个256Kbyte程序与数据共用的存储空间, 可分配为寻址存储空间或者Cache;
3) DM642包括一个64位外部存储器接口 (EMIF) , 可以与同步或异步存储器和外设无缝地接口, 总共外部寻址空间可达1024M byte;
4) DM642内部包括64个32位字长的通用寄存器以及8个独立的运算单元, 具有两个专用硬件乘法器, 在每个时钟周期内可执行2个16位×16位的乘法或4个8位×8位的乘法, 另外还包括6个算术逻辑单元, 在每个时钟周期内都可执行2个16位或4个8位的加减、比较、移位等运算。
5) DM642还具有3个可配置为输入或输出模式的数字视频端口 (VP0、VP1、VP2) , 这3个视频端口支持多种视频标准, 可以与常见的视频A/D、D/A芯片进行无缝连接, 方便了系统对图像数据实时处理的要求;
6) DM642包括10M/100M b/s以太网接入控制器, 计算机PCI控制器, 多通道串行音频接口, 管理数据输入输出模块等;
与其它DSP芯片相比, DM642的最大不同之处在于它具有三个可配置为输入或输出模式并且支持多种视频标准的视频端口, 因此可以方便的应用于数字图像处理、基于IP的音频传输、数字视频记录、机器视觉、医学成像、安全监视、数字相机等领域[2]。
2、系统硬件设计
2.1 图像采集模块设计
固体图像传感器现在主要有两类。一类是电荷耦合器件 (CCD, Charge Coupled Device) 图像传感器;另一类是互补金属氧化物 (CMOS, Complementary Metal Oxide Semiconductor) 图像传感器。虽然CMOS图像传感器的暗电流、灵敏度等方面不如CCD, 但在集成度、速度及成本等方面CMOS有明显的优势, 因此选择CMOS图像传感器作为图像采集模块。
经过对比不同公司, 不同型号的CMOS图像传感器, 最终确定使用Micron公司的MT9T001型CMOS图像传感器。它是一款300万像素 (2048×1536) CMOS彩色图像传感器, 该传感器将摄像镜头、行列扫描模块, 快照模块集成在一个芯片上, 提供了每一个像素10位的色彩分解力, 能捕获连续视频和按顺序的单帧图像信息, 可工作在彩色、黑白两种模式, 采用Digital Clarity Image Sensor Technology技术, 使得它有43dB的信噪比, 具有简单的接口, 功能寄存器多, 控制功能丰富的特点:窗口大小 (水平和垂直) 可随意变动、图像坐标原点任意定义、帧速率可调、隔行或列输出, 并可以通过I2C对其进行控制。
在本系统中, 选择TI公司的DM642型DSP作为系统的主处理器, 它在原始采集模式下, 有多种与图像传感器相连的方式。其中, 图像传感器可以与DM642通过视频端口的直接相连, 连接方式如图2所示。
在原始采集工作模式下, DM642的视频端口支持8、10、16、和20位数据。16、20位原始采集工作模式用于接收数据高分辨率数字图像数据。在本系统中, CMOS图像传感器MT9T001与DM642之间采用的是8位数据方式[3]。
MT9T001提供两线串行总线 (I2C) 接口, 通过这个接口改变传感器内部寄存器的设定值可以对传感器电子增益、像素积分时间、传感器曝光时间、输出图像大小、输出图像位置和图像输出帧率分别进行控制。
I2C总线接口由SDA (串行数据线) 和SCL (串行同步时钟线) 两条信号线组成。它通过SDA及SCL两根线在连到总线上的器件之间传送信息, SDA和SCL均为双向I/O线, 在实际应用中通过上拉电阻接正电源。I2C总线在传送数据过程中共有三类信号, 分别是:开始信号、结束信号和应答信号。这款图像传感器可以在默认方式下工作, 也可以通过配置寄存器对图像大小、曝光时间、增益调整和其他的一些参数进行设置。
2.2 图像处理模块设计
数字信号处理部分的SDRAM采用MT48LC4M32B (1Meg32 4banks) 。其内部的流水线结构和外部同步高速接口允许存储高速数据。MT48LC4M32B的单芯片存储容量可以达到128Mbit, 工作频率可以达到166MHZ, 它采用并行列地址复用的技术访问芯片内部单元[4]。
SDRAM用来补充DSP片内有限的存储资源, 提供高速大容量的外部数据存储空间。SDRAM采用MT48LC4M32B。该芯片内部有4个Bank, 每个Bank包含4096个行和256个列。寻址单元是32-bit, 所以MT48LC4M32B提供了16M字节的数据空间。图3是EMIF模块和SDRAM的电路方案。
DSP支持64-bit宽度的数据总线, 为了能够充分使用EMIF的传输效率, 系统使用两块SDRAM接入EMIF模块, 联合提供64-bit宽度的数据。因此外部数据存储区实际大小为32M字节, 地址空间配置在0x8000 0000~0x8200 0000。
2.3 图像显示模块设计
在本系统中, 使用的是Philips公司的SAA7105型视频编码器。该芯片有12路输入数字信号接口, 为了与CMOS图像传感器和输出的8位数字信号相匹配, 故将视频编码器的PD8~PD11信号接口悬空, 只使用其中的8位作为输入数字信号的接口。此款视频编码器的驱动时钟为27MHz, 采用3.3V供电, 通过I2C总线控制, 输入输出的像素时钟由DM642视频端口2的CLK1和CLK0提供。
在本系统中, 选择TI公司的DM642型DSP作为系统的主处理器, 它具有专用的视频端口用于视频输出, 内部集成FIFO, 能够与视频编码器无缝连接, 不需要额外设计FIFO和逻辑时序控制电路。因此, 视频编码器可以与DM642通过视频端口很容易的直接相连, 连接方式如图4所示。
在本系统中, 应用DM642视频端口2 (VPORT2) 来为视频编码器SAA7105提供数据信号, HSVGC、VSVGC、FSVGC相应的与VPORT2的VP2CTL0、VP2CTLl、VP2CTL2连接。
3、系统软件设计
3.1 图像采集与传输过程
1.系统上电后, 程序从Flash自举, 从而完成程序的导入及初始化工作。DSP通过I2C总线发出信号, 对CMOS图像传感器等设备进行初始配置;
2.当CMOS图像传感器开始工作后, 将采集到的图像信息转化为数字信号, 送入处理器DM642, 图像数据首先存入DM642输入视频端口的FIFO;
3.当FIFO半满, 即到达设定的阈值时, DSP发出信号产生EDMA中断, 启动EDMA通道, 对FIFO中的图像数据进行搬运, 将其存入SDRAM中, 等待图像处理。
4. 当图像数据信息被DM642处理后, 被送入另一个缓存区
内, 当有图像采集要求时, 便触发EDMA中断, 启动EDMA通道;
5. EDMA通道将经过DSP处理后的图像数据信息从缓存区搬运至DM642的显示FIFO内;
6. 当有显示要求时, 经FIFO输出的数字图像信息通过视频编码器进行图像编码并送入显示器进行显示。
本系统的整体流程图如图5所示。
3.2图像算法的设计
目前的图像传感器都是单色的, 即只有灰度的变化。为了得到彩色的图像, 普遍采用的方法是在传感器的表面覆盖一层7彩色滤色器。滤色器的格式有多种, 目前最常用的是Bayer矩阵模式的排列方式, 即每个像素点对应一种色光, 其中, R感应红光, G感应绿光, B感应蓝光, G的采样率是B、R的两倍, 原因是人眼对绿色信息要比蓝色、红色敏感。
采集的图像信息在每个像素的位置上只有一种颜色分量可以获得, 如果需要复原另外两种缺少的颜色分量, 就必须通过相邻的像素进行估算, 这个过程就叫CFA插值。在本系统中所使用的MT9T001型CMOS图像传感器就是通过彩色滤波阵列 (CFA) 获得图像的彩色信息。本系统中采用信号相关插值法对采集的图像进行色彩恢复, 利用R、G、B三个分量高度相关的特性。也就是说, 在计算缺少的G分量的时候可以利用R、B的分量信息, 即在相邻的小区域内设DR=G-R, DB=G-B, 可以认为DR和DB为常数, 这样就可以对G分量进行插值计算完成后, 用得到的G分量再来得出R、B分量。其计算公式为:
其具体操作如下:
(1) 利用公式 (1) 计算R2周围G1、G2、G3、G4处的区域常数因子KR1、KR2、KR3、KR4的值;
(2) 按公式 (5) 计算R2处的G分量G2;
(3) 由公式 (6) , 利用插值后的G分量G2'得到R2位置的B分量;
(4) 在R位置的G、B分量插值方法与B位置的G、R插值方法相同。
经过实验分析, 与常见的边缘检测法等色彩恢复算法相比, 信号相关插值法的峰值信噪比 (PSNR) 值最大, 即使用信号相关插值法将原始Bayer格式图像进行色彩恢复后得到的图像峰值信噪比最好, 因此, 在实际使用中选用此种方法。
总结
本文提出了一种基于DSP的图像采集与显示系统。在DSP的控制下, 以CMOS图像传感器采集图像数据, 由视频编码器对图像进行编码并送入显示器进行显示。该系统能同时实现图像的高速采集和实时显示, 能够应用于安防监控、精密测量和图像检测等诸多领域。
参考文献
[1].〔日〕米本和也.CCD/CMOS图像传感器基础与应用[M].北京:科学出版社, 2006.
[2].赵建伟, 尹岗.基于DM642的数字图像采集小系统[J].测控技术, 2006, 25 (5) :74-77.
[3].余国华, 冯启明, 基于CMOS图像传感器的视频采集系统设计[J], 武汉理工大学学报, 2004, 28 (1) :145~147.
嵌入式图像处理系统 篇8
1 嵌入式系统概述
1.1 嵌入式系统的概念
嵌入式系统是建立在计算机技术基础上的应用型专用计算机系统, 其软件和硬件都可以剪裁, 系统对成本、功耗、功能都提出了更高的要求, 具有可靠性强、体积小等优点, 可以实现对其他设备的监视、控制和管理。随着嵌入式系统的不断发展, 嵌入式系统已经渗透到人们的生活中, 无论是在工业、服务业还是消费电子等领域都得到了广泛的应用。
1.2 嵌入式系统的特点
与普通的计算机系统相比, 嵌入式系统的专用性更强, 一般是面向特定运用的, 嵌入式处理器一般应用在用户设计的特定系统中, 集成性高、体积小、功耗低, 不仅具有方便携带的优点, 操作系统更是实时操作的, 可以满足实时性较强的场合要求。将嵌入式系统运用到应用程序中, 在芯片上直接运行而不需要操作系统, 未来可以充分利用更多的系统资源, 用户需要选择RTOS开发平台, 保障软件的质量。嵌入式系统主要包括硬件系统和软件系统, 其中硬件系统是基础, 软件系统是灵魂, 复杂程度非常高。
2 系统软件设计
基于RF5软件系统总体设计:
嵌入式图像处理系统和传统处理系统一样, 主要包括硬件和软件两个方面, 硬件包括系统的硬件平台, 软件包括嵌入式操作系统和图像处理算法两个方面。其中硬件平台又包括图像储存模块、通信模块和显示模块等, 主要是为系统的软件系统提供支持。在图像处理过程中, 硬件系统可以为其提供计算、显示、存储等条件[1]。RF5是以DSP和XDAIS为基础的代码参考框架, 在DSP软件的设计和开发中具有重要的作用, 参考框架在整个程序中具有非常重要的作用, 是整个运用应用程序的蓝本。RF5的数据处理元素包括通道、单元、任务和XDAIS算法, 这4个元素之间具有紧密的联系, 独立又联系, 他们之间的关系如下图1。嵌入式操作系统是整个系统的核心系统, 提供了包括图形处理任务管理在内的各项管理, 经过硬件的初始化、图像信息存储、图像信息显示等过程实现图像处理和存储。
3 软件模块化程序实现
3.1 初始化模块
软件系统的初始化模块主要包括处理器、RF5模块化初始化、图像处理算法、视频捕获、视频显示通道等。处理器和系统板初始化是指设备重启之后, 通过软件配置的方式对外围设备进行配置和选择。系统在进行工作的时候, 初始化模块是其执行的第一个任务, 执行完初始化模块之后, 程序的控制权将会转变到调度程序中, 由调度程序来调度接下来的任务。
3.2 视频捕获和显示模块
3.2.1 视频捕获的实现
视频捕获主要负责将外部的视频解码器解码生成的数字视频信号采集收集起来, 并且这个采集的过程非常方便, 可以实现实时采集, 最终形成的图形处理也是可以实时处理的, 可以随时随地对大数据的图像进行处理, 这也是其最大的优点和特点。采集到的数字视频信号进入到系统外扩的存储器中, 从而实现视频的捕获。视频采集可以自动采集, 当单元进入自动采集状态, 完成了图像的采集之后, 视频端口都会向系统自动发出中断请求, 中断服务程序便开始发挥自身的功能, 对图像的存储区进行连续更新, 图像存储区一旦更新之后, 图像采集系统就会采集下一个图像数据, 最终进入一个循环。当视频端口的FIFO装满了采集的数据之后, 会发生中断信息, 进入EDMA ISR中断服务程序将视频数据送入到SDRAM中[2]。
3.2.2 视频显示的实现
视频显示的实现是通过视频图像显示模块来实现的, 视频图像处理模块处理后的图像经过显示模块处理, 处理之后将图像编码成数字视频流, 标准数字视频流经过系统编码转化为虚拟视频信号, 经过解码器之后视频流就变成了标准的模拟视频信号, 分别经过EDMA控制器和EDMA ISR之后最终进入到视频端口的缓冲区中, 经过缓冲器之后, 信号会使EDMA中断, 送入新的图像信号, 并在显示器上显示出来, 视频显示的流程如下图2。输出作用在外部编辑器中。
3.3 图像处理模块
图像处理模块比较灵活, 是指在嵌入式的环境下实现对图像的处理。在图像处理系统中, 又包括系统功能模块和图像增强模块。系统功能中包含图像增强功能, 除了图像功能之外, 还包括图像的几何变换、形态运输和图像分析。在图像增强模块中又包括图像的预处理和边缘检测、直方图修正、中值滤波、灰度变换调整, 而图像预处理又包括图像平滑和图像锐化。图像平滑就是消除噪声对图像造成的影响, 图像平滑的处理是通过高斯低通滤波法来实现, 这样做虽然可以消除图像受到噪声的影响, 但同时也存在着一定的弊端, 图像经过处理之后会变得模糊。图像锐化的目的就是让模糊的图像重新变得清晰。图像模糊是由于图像受到平均或积分运算而造成的, 图像锐化就是对其进行逆运算, 重新使图像变得清晰[3]。
4 结论
嵌入式图像处理系统的软件系统主要包括初始化模块、视频捕获模块、视频显示模块和图像处理模块, 在确定了整个软件系统的程序流程之后, 就可以分别设计纷纷模块的程序, 最终完成整个软件系统的设计。
参考文献
[1]吴锡强.探析嵌入式图像处理系统的设计与实现[J].计算机光盘与软件, 2015, 12 (3) :307-309.
[2]蒋立丰.嵌入式图像处理系统的设计与研究[D].东华大学, 2013, 22 (21) :11-13.
嵌入式图像处理系统 篇9
1 嵌入式系统的相关介绍
关于嵌入式系统, 其应用于不同行业中有不同的概念, 但在实质上都以软件与硬件为主。从嵌入式系统的基本构成看, 多体现在应用软件、操作系统以及硬件平台等方面。以其中的硬件平台为典型, 可具体细化到处理器、硬件设备等构件。从嵌入式系统特征看, 其主要表现在:①专业性。区别于计算机系统, 嵌入式系统无法进行跨领域应用, 如医疗领域中的系统难以用于工业控制方面;②资源受限特性。由于嵌入式系统多用于特定领域中, 许多PC机中的硬件资源无法为嵌入式系统应用, 在系统存储能力以及处理能力方面都不具备优势;③实时性特征。嵌入式系统应用下, 为保证及时响应外部事件, 需依托于相应的系统软件, 利用其配合硬件处理器, 以此达到应用的目标。除此之外, 嵌入式系统应用中, 其应用的重点体现在图像采集与处理方面, 整个实现过程集中在数字化与离散图像信号方面, 由计算机存储器存储所有数字信号[1]。
2 系统硬件平台的搭建
嵌入式系统中, 图像的采集与处理功能的实现首先需做好硬件平台搭建工作。具体体现在微处理器、平台总体设计以及硬件功能模块等方面。其中在微处理器上, 可选用ARM处理器, 其本身具有适用范围广、功耗小以及性能高等特征。为满足平台应用要求, 处理器选择以ARM920T为基础的S3C2410微处理器, 原因在于该处理器内部集成资源较多, 而且在LCD控制器以及计数器等各方面都具有较强的性能。而在平台总体设计方面, 主要考虑以S3C2410处理器为核心, 将VGA模块、SDRAM、JTAG、图像输入模块、电源管理模块以及触摸屏模块等融入设计中, 以此满足平台应用要求。
各模块设计过程中需以平台总体设计为指导, 其中在图像输入模块方面, 可在摄像头方面进行选择, 可以OV511为基础选择640×480像素的V2000摄像头的, 原因在于该类型的摄像头能够满足图像输入设备要求。而在串行接口模块方面, 主要需将UART集成于处理器中, 利用电平转换器使串口能够形成RS-232电平得, 其中串口包括两种, 分别用于对云台转动进行控制以及软件开发调试。同时, 平台设计中还需对以太网接口模块进行设计, 由于其对集成度要求较高, 所以可将CS8900芯片引入, 其对以太网控制器以及电压操作都可支持。另外, 对LED显示与触摸屏模块方面, 也是系统设计的主要内容。其中, LED显示模块在以液晶为主的基础上还需利用跳线短接器使不同电压供电下的液晶能够兼容。而触屏模块可在驱动芯片上进行选择, 如ADS7843, 其操作较为容易且具有较高的精度[2]。
3 图像处理与采集的关键技术
嵌入式图像系统中, 在采集方面涉及的技术主要表现在CMOS、CCD图像传感器的应用。现行用于采集图像的方案包含极多, 如CPLD、SRAM与CMOS配合使用、由CPU、SDRAM与USB摄像头配合应用或SDRAM、CPU、CCD与视频AD相结合的方式等。每种方案都有相应的缺点与不足, 现行受青睐的方案主要以最后一种为主, 其具有较大的存储容量以及较高像素的图像。但由于SDRAM控制器需设置于FPGA中, 整体操作较为困难。另外, 在图像处理方面, 涉及的技术将集中在图像的旋转、缩放、分割、增强以及灰度变换等方面。处理过程中需通过相应的计算, 确保处理中依托于精确的数据, 这样才可保证图像的处理更为准确。
4 嵌入式系统的具体设计
在硬件平台与相关处理技术引入的基础上, 便需考虑到嵌入式系统的设计。根据大多实践研究, 现行被广泛应用的操作系统主要以嵌入式Linux系统为主, 其区别于一般Linux系统, 无需考虑以往存储资源受限问题, 仅需做好代码剔除工作, 并将无用动态链接库删除, 便可提升系统的实时性。具体设计中首先需明确嵌入式Linux系统的基本的特性, 如其在内核上, 设计过程中需考虑的内容主要表现在进程调度、设备驱动、文件系统以及内存管理等方面, 在此基础上进行开发环境的搭建, 包括交叉编译环境、配置NFS服务器以及minicom与fip服务设置等。其次, 应做好系统移植工作, 其实质在于修改平台中的操作系统, 使系统运行能够与硬件平台要求相吻合, 具体移植操作中, 除保证做好基本文件系统移植工作外, 还需移植系统内核与Bootloader, 以此达到达到移植目标。最后, 做好图像采集与显示设计工作。针对Linux系统, 其在图像收集与显示功能方面应以Video4Linux为主的, 使其能够符合图像采集与处理要求。另外, 对于处理后的图像数据还需进行存储, 仅需保证图像的格式如BMP等合理, 便可进行存储[3]。
5 结语
嵌入式系统的设计是提升其应用性能的关键所在。从现代各行业领域对嵌入式系统应用现状看, 更倾向于其图像采集与处理功能方面, 要求在设计过程中做好硬件平台设计, 明确图像采集与处理相关技术, 在此基础上进行系统开发, 使嵌入式系统功能得到最大程度的发挥。
摘要:信息时代背景下, 嵌入式的技术开始以其自身的优势被广泛用于各行业领域中, 尤其其中的图像采集与处理更得到社会群众的青睐, 如交通监控领域、国防建设、医学领域以及工业自动化生产等。然而, 如何保证嵌入式系统在具备其稳定性、适应性以及可靠性的同时, 能够达到系统成本降低的目的, 成为现行设计人员需考虑的重要内容。本文主要对嵌入式系统的相关介绍、硬件平台的搭建、采集与处理技术以及嵌入式系统的具体开发路径进行探析。
关键词:嵌入式系统,图像处理,图像采集,实现技术
参考文献
[1]龚爱平.基于嵌入式机器视觉的信息采集与处理技术研究[D].浙江大学, 2013.
[2]赵智雅.基于嵌入式Linux的图像采集系统的设计[D].西南交通大学, 2010.
嵌入式图像处理系统 篇10
SDRAM作为大容量、高速度、低价格、低功耗的存储器件, 在嵌入式实时图像处理系统中具有很高的应用价值, 但其控制机制复杂, 因此需要设计控制器, 以简化系统对SDRAM的访问。虽然目前许多微处理器及DSP都提供了与SDRAM的直接接口, 但这种通用控制器的执行效率很低, 难以满足实时系统对速度的要求[1,2]。鉴于此, 介绍一种基于FPGA设计而实现高效SDRAM控制器的方案。结合实际系统, 该方案将SDRAM配置为全页突发模式, 并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。分析表明, 全页突发操作模式能够很好地发挥SDRAM高速读写的性能;同时, 设计成乒乓操作结构的异步FIFO, 在保证数据连续性的同时, 更能降低低速前端对高速SDRAM访问的影响。
1 SDRAM简介
1.1 SDRAM的特点
相对于其他存储器件, SDRAM具备以下特性[3]。
(1) 上电后必须通过一个初始化进程配置模式寄存器的值, 以决定SDRAM的工作模式;
(2) 基于三极管和电容的存储结构SDRAM决定了必须对其定时执行刷新操作, 以免数据丢失;
(3) 访问SDRAM时, 先由Active命令激活要读写的Bank及行并锁存行址, 然后在Read/Write命令有效时锁存列址。当访问当前Bank的其他行时, 须先使用Pre-charge命令关闭当前行;
(4) SDRAM的内部操作由命令控制, CSN, RASN, CASN和WEN在时钟上升沿的状态决定了具体的操作, Bank及行列地址线在部分操作中作为辅助参数输入。
1.2 全页 (Full-page) 模式突发操作
进行大量数据读写时, 全页突发模式是充分利用SDRAM性能, 提高读写速度的良好选择[4]。
激活Bank的某一行后即可对该行进行读写操作。写入数据在发出写命令的当前时钟周期即可有效, 因此写操作可以在单周期内完成;而读出数据将在发出读命令之后CL (CAS Latency) 时钟周期才能输出到总线, 即随机读取单个数据至少需要1+CL时钟周期。可见, 随机读操作会大大降低系统效率。若采用全页突发方式, 对于列宽度为n的SDRAM存储器, 整页输出所需的总周期数为2n+CL, 平均单个数据输出所需周期为 (2n+CL) /2n⧋1, 由此读操作延迟对系统效率的影响可降至最低。
2 SDRAM控制器设计
实际的实时红外热成像系统采用了ISSI公司生产的型号为IS42S16160B的SDRAM作为数据缓存, 其存储单元组织结构为4 Bank×8 192行×512列×16位[5]。
SDRAM控制器主要由时钟锁相环模块、初始化模块、刷新计数模块、数据通路模块、输入/输出FIFO模块、FIFO接口模块和主控制器模块组成, 如图1所示。
在该SDRAM控制器中, 片上时钟锁相环模块的作用是将输入时钟倍频为所需要的时钟, 并根据电路板布局进行移相, 以保证在时钟上升沿准确采样命令及数据。初始化模块负责产生规定了时间、顺序和个数的控制命令对SDRAM进行配置, 并在进程结束后发出iniend信号, 以启动主控制器。刷新控制模块的作用是每隔最长7.812 5 μs发出刷新请求信号refreq, 并接收主控制器发出的refack信号重置刷新计数器。数据通路模块用于控制数据的有效输入/输出。
由于系统对控制器中读写操作的数据连续性要求很高, 且读写速度比较低, 而控制器对SDRAM中读写操作的数据连续性并无要求, 且读写速度很高, 因此需要使用异步FIFO作为输入/输出缓存[6]。输入/输出FIFO的数据宽度为16 b, 深度可视系统需要而定, 但应大于一次读写的数据长度LENGTH。另外, 为配合SDRAM的全页突发模式, 并充分发挥SDRAM高速读写的特点, FIFO采用了乒乓操作的流水线结构。现以输入FIFO为例, 当某个输入FIFO写满LENGTH数据时, 主控制器从该输入FIFO读出数据写入SDRAM, 同时系统向另一个输入FIFO写入数据。
FIFO接口模块的主要信号如图2所示。其作用是将FIFO的状态信号转换为主控制器的读写请求信号, 并控制切换输入/输出的两个FIFO。以向SDRAM写入数据为例, 若某个输入FIFO的写入数据个数标志信号inwrused与LENGTH相等, 则向主控制器发出写SDRAM请求, 并将该输入FIFO中的LENGTH数据一次写入SDRAM, 同时控制系统向另一个输入FIFO写入数据。
SDRAM支持多种工作模式, 将其全部包含在主控制器状态机中会大大增加设计难度, 并降低运行速度。考虑到一些模式在实时图像处理系统中并不需要, 所以对SDRAM主控制器的状态进行了简化[7,8,9], 如图3所示。
对该主控制器有以下两点需要说明:
(1) 器件仅在上电后进行一次初始化配置, 进入正常工作状态后就不再改变工作模式。初始化时序仿真结果, 如图4所示。
(2) 当SDRAM工作在全页突发模式时, 读写操作所访问的地址将在页内循环, 直至收到Burst-Terminate命令或Pre-charge命令。由于在Burst-Terminate命令后还需发出Pre-charge命令, 才能保证芯片正常工作, 因此设计采用了Pre-charge命令终止页模式。为保证LENGTH数据中正确读出或写入SDRAM, 发出Pre-charge命令时必须满足一定的时序要求。对于读操作, Pre-charge应在最后一个有效输出数据之前CL-1时钟发出;对于写操作, Pre-charge应在最后一个有效输入数据之后tDPL时间发出。图5和图6给出SDRAM控制器的读写操作时序仿真结果, 其中, OUTVALID及INVALID信号分别表明输出及输入数据有效。
3 结 语
针对实时图像处理系统的特点, 定制SDRAM控制器。在Altera公司的主流芯片Cyclone II (EP2C70F896C6) 上成功地使用了Verilog HDL编程语言[10], 其占用355个逻辑单元 (不到FPGA总逻辑资源的1%) ;4个M4K块和1个PLL锁相环。在320×240的实时红外热成像系统中, 该SDRAM控制器的工作状态良好, 并可通过改变LENGTH参数而方便地用于任意分辨率的实时图像处理系统中, 可移植性强。
摘要:介绍一种用于嵌入式实时图像处理系统的SDRAM控制器的实现方案。根据实时系统对数据传输速率及连续性的要求, 将SDRAM配置为全页突发操作模式, 并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。为配合SDRAM的全页操作模式, 并充分利用其高速读写性能, 将FIFO设计为基于乒乓操作的流水线结构, 实现了数据的无缝缓存。将该方案用于实时红外热成像系统, 经实验结果表明, 该SDRAM控制器执行效率高, 占用资源少, 可移植性强。
关键词:SDRAM,控制器,嵌入式,实时系统
参考文献
[1]Altera Inc.SDR SDRAMController White Paper[Z].2003.
[2]段然, 樊晓桠, 张盛兵, 等.基于状态机的SDRAM控制器的设计与实现[J].计算机工程与应用, 2005 (17) :110-112.
[3]曹华, 邓彬.使用Verilog实现基于FPGA的SDRAM控制器[J].今日电子, 2005, 10 (1) :11-14.
[4]林志煌, 解梅.一种简易SDRAM控制器的设计方法[J].现代电子技术, 2008, 31 (16) :18-20.
[5]IS42S16160B SDRAMDatasheet[EB/OL].http://www.is-si.com.
[6]王骞, 丁铁夫.高速图像存储系统中SDRAM控制器的实现[J].液晶与显示, 2006, 21 (1) :48-51.
[7]张林, 何春.高速SDRAM控制器设计的FPGA实现[J].电子科技大学学报, 2008, 37 (1) :109-112.
[8]刘云清, 佟首峰, 姜会林.利用FPGA实现SDRAM控制器的设计[J].长春理工大学学报, 2005, 28 (4) :47-50.
[9]牛戴楠.基于FPGA的红外图像预处理系统的研究与设计[D].武汉:武汉理工大学, 2008.
ARM嵌入式系统分析 篇11
关键词:ARM嵌入式系统;体系结构,RISC;运行模式
中图分类号:TP368.1文献标识码:A文章编号:1007-9599 (2011) 16-0000-01
ARM Embedded Systems Analysis
Jiang Rongping
(Henan Zhoukou Normal University,Zhoukou466000,China)
Abstract:The embedded system is the core of embedded processors,ARM processors is widely recognized as the industry's leading 32-bit embedded RISC microprocessor.ARM core-based chips with low power consumption,high performance,widely used in embedded products.Starting from the ARM architecture,this paper,by contrast detailed structural features of the system of the RISC and ARM processor operation mode,thereby ARM embedded system into an in-depth analysis.
Keywords:ARM embedded system;Architecture;RISC;Operation mode
一、嵌入式系统定义
嵌入式系统是相对于通用计算机系统而言的,它简称为嵌入式计算机系统。目前在国内学术界,专家普遍接受的定义是:“嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁减,满足应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。”它属于计算机系统的一个重要分支,它是将先进的计算机技术、半导体技术和电子技术与各行业的具体应用相结合的产物。它可以实现对其他设备的控制,监视或者管理等功能。
二、ARM体系结构
ARM(Advanced RISC Machines)体系结构目前被公认为是业界领先的32位嵌入式RISC微处理器结构。作为典型的32位RISC架构处理器,ARM微处理器被广泛用于工控设备、智能仪表、网络设备、信息家电、通信设备以及均是电子等领域。
嵌入式系统中CPU往往都是RISC(reduced instruction set computer)结构的。所谓RISC是指“精简指令集计算机”,也称“简约指令集”,与之相对应的CPU系统结构就是CISC,即传统的“复杂指令集”相对应的概念与系统结构。
在CISC计算机中,各种指令的使用率相当悬殊:总指令的20%的简单指令却在程序调用中指令数占到了80%,而占总指令数80%的复杂的指令却只有20%的机会被使用到。而复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间成本还容易造成设计失误。尽管VLSI技术现在已经到达很高的水平,但是也很难把CISC的全部硬件做在一个芯片上,这增加了微处理器集成电路的成本。此外,为了提高运行的速度,在微处理器中采用了“预取指令”等“流水线操作”技术。但是为了照顾这些不是很经常要使用的复杂指令只好降低了简单指令的运行速度。因而针对这些缺点,精简指令集计算机,即RISC的概念与技术便应运而生。
RISC体系结构的基本思路是抓住了CISC指令系统指令繁多,指令格式不规范、寻址方式复杂的缺点,通过了减少指令种类,规范指令格式和简化寻址方式,以方便处理内部的并行处理,提高VLSI器件的使用效率,从而大幅度的提高处理器的性能。RISC设计的基本目的在于使计算机结构更加简单、更加合理、更加有效。正是因为如此,RISC的提出引起了计算机体系架构的一次影響深远的革命。
三、RISC系统结构特点
(一)RISC系统结构中的指令系统都比较小、即不同指令的数量比较小,并且只提供简单的指令。这些指令的执行都能在四、五个时钟周期中完成。所谓“简约指令集”,一方面指的是指令集比较小,另一方面是说每条指令复杂程度,两个条件缺一不可。
(二)当指令要访问主存储器的信息的时候,机器的执行速度将会降低。RISC的Load/Store指令只有在访问内存的时候才使用,所有的其他的指令都是在寄存器内对数据进行运算。
(三)不光指令的执行长度和寻址方式整齐划一,连指令的格式也很整齐划一,一般在32位的RSIC系统中,每条指令的长度都是32位。这有力于简化指令系统,简化了寻址方式,缩短了译码时间,确保了单周期执行指令,也有利于流水线操作的执行。
(四)RISC微处理器由于指令的操作数都必须事先存在寄存器中,计算的中间过程不需要访问内存,而是存在寄存器中。所以RISC系统结构一般都拥有比较多的寄存器,通常是32个寄存器。
四、ARM处理器简述
ARM处理器核当前主要产品系列:ARM7、ARM9、ARM9E、ARM10E、SecurCore以及ARMll系列,另外还有公司的XScale微体系结构和StrongARM产品。其中ARM7是低功耗的32位核,最适合应用于对价位和功耗敏感的产品,它又分为应用于实时环境的ARM7TDMI、ARM7TDMI-S,以及适用于开发平台的ARM72OT和适用于DSP运算及支持Java的ARM7EJ等。
ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的模式称之为非用户模式,或特权模式(Privi1eged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Excption Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。
在系统异常时,通常进入数据访问中止模式或者未定义指令中止模式。系统异常通常是程序错误的访问了非法地址,这时系统就会进入数据访问中止模式。当系统因为某些异常原因跑飞,飞到了非代码区取指并执行,此时系统取到的并不是合法的ARM指令,ARM检查到该类错误后就会进入未定义指令中止模式。
参考文献:
[1]刘岚.嵌入式软件开发环境中远程调试技术的研究与应用.西北工业大学,2002:20-31
[2]张静.嵌入式软件任务级调试技术研究与工具实现.电子科技大学,2003:41-45
[3]张群忠.ARM嵌入式系统调试技术研究与实现.华东师范大学.2006:32-46
嵌入式图像处理系统 篇12
例如,胎儿性别屏蔽项目中,要对实时视频进行性别部位的检测和屏蔽,若采用单DSP则会出现漏帧或视频不流畅;应用于高速运动物体跟踪时,单DSP无法实现实时运动物体跟踪,例如汉王科技的运动检测和海康威视运动检测,都不能实时检测,即使检测也会出现漏检现象和视频不流畅。当处理4CIF或者更大图像时,单DSP的处理能力又会下降,虽然可以将图像缩小进行处理,但是缩小图像则会丢失一些重要的图像信息,使得智能识别准确率下降。
针对上述情况,设计一种能够实现进行快速信号处理和数据交换的实时图像处理系统很有必要。
1 系统结构
1.1 结构
系统功能:利用S3C6410进行数据整合、任务调度、人机交互;利用TMS320C6416进行算法运算;每个DSP与FPGA都是无缝连接。设计中利用FPGA实现的FIFO进行与DSP之间的高速数据传输以及ARM对多个DSP的任务调度处理等。
系统结构如图1所示。系统由1个ARM11处理器S3C6410(主处理器)与4个TMS320C6416(720 Hz)(从DSP)通过FPGA(EP2C70~7)实现互联的ARM+多DSP的嵌入式图像处理系统。所有的DSP都通过外部存储器接口(EMIF)与FPGA无缝相连,每个DSP之间的数据传输是通过FPGA内部互联FIFO网络实现。
图2所示是一种互联的FIFO网络结构和高速数据传输网络结构。主处理器通过DMA数据访问模式与FPGA的双口FIFO连接,从而实现与FPGA通过FIFO连接的所有从DSP进行通信,所有FIFO都是双向的,FIFO及其读写控制逻辑都在FPGA内部实现。
FPGA中的FIFO读写状态控制、各从DSP之间通信的同步握手信号、S3C6410处理器数据请求等逻辑信号,都是由每个DSP的一部分GPIO口与EP2C70的I/O口连接实现。
1.2 特点
系统结构具有可重构特性,在硬件平台不变情况下,只需通过改变FPGA程序代码就可以完全改变系统结构,以适应不同的算法结构。如图2中屏蔽DSP1~DSP4之间的互相通信,即可组成主从并行的流水线结构;若需要串行的流水线结构,只需将DSP1~DSP4的其中一个与S3C6410通信即可;若需要设计更复杂的串并混合性结构,也只需改变FPGA的代码就能够很容易地实现。
2 S3C6410的DMA与FPGA的软FIFO接口实现
2.1 S3C6410简介
S3C6410是三星公司的产品采用ARM1176JZF-S核,包含16 KB的指令数据Cache和16 KB的指令数TCM;ARM Core电压为1.1 V时,可以在553 MHz下运行。在1.2 V时,可以在667 MHz下运行。通过AHB和APB组成的64/32 bit内部总线与外块相连。SROM Controller:6个片选,支持、ROM和NOR Flash以及支持8/16 bit,每个片选支持128 MB。JPEG Codec:支持JPEG编解码功能,最大尺寸为4 096×4 096。2D GRAPHICS:2D加速,支持画点/线,bitblt功能和Color Expansion。3DGRAPHICS:3D加速。
S3C6410可支持4个DMA控制器,用于系统总线内部或与外围总线之间的数据交换,每个控制器包含8个通道,支持8/16/32 bit传输。现以外部DMA请求为例简要介绍DMA的工作过程。图3所示为DMA基本工作时序。
当需要进行DMA操作时,外部DMA请求引脚Xn XDREQ置为低电平。此时DMA控制器向CPU发出占用总线的请求,当总线请求成功后,Xn XDACK引脚变为低电平,表示CPU已经将总线使用权交给DMA控制器,可以进行数据传输。当数据传输完成后,应答信号Xn XDACK置为高电平,通知CPU完成一次DMA操作。
S3C6410提供了三种不同的DMA操作模式:单服务命令模式、单服务握手模式和全服务握手模式。在利用DMA进行数据传输前必须对其相关寄存器进行设置,包括源地址寄存器、目的地址寄存器和各自的控制寄存器以及配置DMA模式的控制寄存器等。
2.2 FPGA及其实现FIFO[2]
采用FPGA实现多时钟电路系统时,需要处理不同的时钟域之间速率匹配问题,可利用FPGA内部生成的异步FIFO来处理。异步FIFO主要由双端口RAM、写地址产生模块、读地址产生模块、满空标志产生模块组成。双端口RAM由FPGA的Block RAM块构成,FPGA采用Atera公司的EP2C70-896C7,其Block RAM读写时钟频率可以达到216.73 MHz,因此选用Block RAM作为存储体,不仅速度快,而且设计简单。设计时,一个端口配置成写端口,另一端口配置成读端口,然后把Block RAM的管脚与相对应的控制信号相接即可。读写地址通过FPGA芯片内部的二进制进位逻辑产生,以对应Read_En/Write_En作为使能信号在读/写时钟的控制下进行计数。空或满标志可以由读或写地址的相对位置来获得。本系统采用2个FIFO组成一路数据传输通道,双向FIFO的设计图如图4所示。
2.3 S3C6410的DMA与软FIFO接口实现
根据DMA接口原理,设计S3C6410与FPGA之间的接口简图如图5所示。
读时钟由ARM的时钟输出引脚CLKOUT0提供。CLKOUT0根据S3C6410内部寄存器的设置可以输出不同的时钟频率。FIFO输出数据经过以n GCS4为选通信号的缓冲器(Buffer)后接到S3C6410的数据总线上。n GCS4是S3C6410存储空间中BNAK4的片选信号,当S3C6410对该信号对应存储空间进行读写操作时,BANK4为低电平,其余时间均为高电平。
FIFO的写请求信号由S3C6410与FIFO的满状态共同控制。当S3C6410发出START信号并且FIFO未满时,写请求信号为高电平,FIFO在写时钟的控制下写入数据;当START信号撤销或者FIFO满时,写请求信号变为低电平,停止写操作。
FIFO的读操作与S3C6410的DMA操作配合进行。系统采用单服务命令模式的DMA操作,每次传输一个字节的数据。当DREQ0信号变为低电平时,DMA操作开始,每次传输一个字节后产生一个DACK0应答信号,而且只要DREQ0为低电平DMA操作就继续进行,直到DMA控制寄存器中的计数器为0,产生DMA中断。根据上述时序特点,将FIFO的空信号作为DMA的请求信号DREQ0。当CCD输出的数据写入FIFO中时,空信号跳变为低电平启动DMA操作,同时以DACK0信号作为FIFO的读请求。每次DMA传输完成后应答信号使FIFO的读指针移动一位,以实现数据的快速准确采集。
3 图像采集模块
用可编程视频输入处理器SAA7113H进行视频信号处理。SAA7113H内部集成了强大图像色度、亮度处理功能以及多种输出模式[3];有32个工作寄存器,在系统复位时,必须通过I2C总线对其进行初始化。本系统使用灰度图像,没有使用色度信号,所以数据线为8 bit。SAA7113H与FPGA的接口如图6所示。
在本系统中,FPGA内部需要设计一逻辑时序完成图像数据的采集,数据的传输采用异步FIFO完成。采用此方案可以解决CCD输出数据频率与从DSP和ARM不匹配的问题。
4 DSP的EMIFA与FPGA实现的软FIFO接口
4.1 DSP的EMIFA接口[4,5]
DSP(TMS320DM6416T)之间的通信都是通过外部存储器接口(EMIFA)访问片外存储器进行的。EMIFA由64 bit数据线D[63:0]、20 bit地址线A[22:03]、8 bit字节使能线BE[7:0]、4 bit地址区域片选线/CE3~/CE0和各类存储器的读/写控制信号组成。TMS320DM6416T的每个/CEx空间都有256 MB寻址空间,并且可配置为与SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各类存储器接口。EMIFA读/写各类存储器的时钟可由软件配置为EMIF的AECLKIN、CPU/4或CPU/6。本设计配置为EMIF的AECLKIN,且为133 MHz。
4.2 EMIF与软FIFO接口实现
DSP之间通过EMIF口与FPGA实现的异步FIFO进行通信。EMIF异步接口的每个读/写周期分为三个阶段:建立时间(SETUP)、触发时间(STROBE)、保持时间(HOLD),且每个阶段时间可编程设置,以适应不同的读写速度。DSP读写异步FIFO的时序图分别如图7、图8所示[6]。DSP读写FIFO控制信号由FPGA产生,其逻辑关系如下:
另外,写FIFO的DSP要相应为满状态标志,读FIFO的DSP则相应为半满状态标志。
5 DSP之间数据通信[7]
为了设计一款通用性比较强的图像处理平台,各处理器间的数据传输必需达到通用性,这样可以针对不同系统的应用,只须修改图像处理算法代码,而不须要修改各处理器之间的通信。具体设计分为如下两部分:
(1)数据通信协议说明(x=0,1,2,3)
Se/Re(Send/Receive)[0]:ARM通过FPGA请求DSPx接收(该数据位为1)或发送。
ARM[1:3]:该段数据为DSPx向FPGA发出请求数的DSP编号。
DSPx[4:6]:ARM处理器向FPGA提出要求响应的DSP的编号。
Da_Le(Data_Leng)[7:18]:ARM请求DSPx接收或发送的数据长度。
Da_Un(Data_Unit)[19]:该标志位表示是否按照Data_leng*K(1K=1 024 bit)的数据长度传输数据,若为1,表示接收或发送数据长度为Data_leng*K(1K=1024 bit);若为0,表示接收或发送数据长度为Data_leng。
Da_Bl(Data_Block)[20:27]:该数据表示ARM请求DSPx接收或发送Data_Block个Data_leng K或Data_leng数据块。
Da_Ch(Data_Result)[7:18]:ARM请求DSPx接收或发送的算法代码中间运行结果或最终结果,此数据段与Data_Leng共用。
In_Pr(Interrupt_Priority)[27:30]:设置DSP的中断优先权。
Ot_Use(DSP_State)[31:34]:DSP状态标志信息。
Pa_Ch(Parity_Check)[35]:奇偶校验位。设SUM,若为奇数,则Parity_Check=1;否则为0。
Ot_Use(Other_Use)[36:47]:用户自定义数据段。
(2)数据通信主要流程
首先,FPGA接收到ARM[1:3]处理器的请求信号,然后根据Data[0:34]计算出校验数据SUM与Parity_Check[35]比较,若不等,则FPGA向ARM处理器重新发请求信号;若相等、且DSPx为空闲状态时,则FPGA由Send/Receive向DSPx发送接收或发送数据请求,并将采集到的图像数据传输给DSPx,同时使能对应的FIFO数据通道;DSPx根据收到的数据信息,同样计算出校验数据,若与Parity_Check相等,则根据Send/Receive标志位,采用EDMA方式向EMIF口接收或发送Data_Block*Data_leng(或Data_Block*Data_leng K)数据。如果FPGA同时接收到2个或2个以上的DSPx数据传输请求信号,则FPGA根据Interrupt_Priority端口数据判其执行的先后顺序。
6 系统的性能分析[7]
影响系统性能的主要因素有:ARM处理器协调工作的响应速度、DSP处理数据的速度、数据在多处理器之间的传输速度。前两个因素主要由处理的主频和处理能力决定,因此不做测试。数据在处理器之间的传输速度则是本设计的主要部分之一,而数据传输带宽和数据传输延迟是衡量数据传输速度的重要指标。
若系统中DSP读写FIFO的带宽为B(单位时间内DSP间的数据传输量),则:
其中,f=133 MHz是FPGA内部软FIFO的读写时钟;w=32 bit是软FIFO数据总线宽度。本设计配置Nsetup=Nstrobe=1,Nhold=0,因此B的理论值为266 Mb/s。但DSP间数据传输的实际带宽主要受握手时间τhandshake、写FIFO到半满时间τfifo_hf、响应中断启动读写操作时间τgpio_interr、接收数据时间τdata_receive四个延迟时间影响。其中,τhandshake、τgpio_interr由系统时钟决定,因此本文假设该值为固定的,而τfifo_hf是由于使用FIFO缓存数据引入的额外时间。FIFO的深度越长,τfifo_hf越大,则实际带宽Bf就越小;反之则越大。为了保证DSP间正确地数据通信,则要求DSPx开始从FIFO读取数据时,ARM还没有写满FIFO,即Df表示FIFO深度,可得
表1是ARM处理器分别与DSP1~DSP4传输不同大小数据时测得的平均延迟时间,图9是根据测试数据绘出的实际带宽Bf曲线。可以看出,随着传输的数据增大,Bf逐渐逼近B的266 MB/s的理论值。
本文基于ARM、FPGA、多DSP设计的实时图像信号处理系统,使用FPGA芯片设计的一种高速数据传输网络互联结构,使得该系统的数据通信能力和DSP的运算能力能很好地匹配;通过数据传输控制总线,使得数据传输十分灵活;利用S3C6410对图像数据传输的调度,图像数据处理任务的分配,图像保存、显示、网络传输;利用4个TMS320C6416T对图像做算法处理。经测试,算法代码在单DSP(TMS320C6416T 1 GHz)平台下其处理时间小于0.2 s,而在本文平台下其处理时间小于40 ms,可以满足实时要求。另外,该系统可广泛适用于其他图像处理、电子对抗、雷达信号处理等各个领域。
摘要:介绍了一款通用的嵌入式图像处理系统的设计方法。系统采用FPGA设计FIFO实现ARM与多DSP的高速数据传输方法。实验结果表明,所设计的多DSP协同工作的实时嵌入式图像处理系统,其工作性能稳定、数据处理能力强,适用于高端的雷达信号处理、电子对抗、超声图像处理等场合。
关键词:ARM11,TMS320C6416T,FIFO,FPGA,多DSP嵌入式系统
参考文献
[1]曹理发.尹勇.刘恒辉,等.基于ARM和DSP的视频监控系统设计与实现[J].电子器件,2009,32(1).
[2]Cyclonce Inc.Cyclone II device handbook.2005.
[3]龙再川,赵凯生,洪明坚,等.ARM系统中DMA方式在数据采集中的应用[J].国外电子元器件,2007(2).
[4]Texas Instruments Incorporated.TMS320C6414,TMS320C6415,TMS320C6416FIXED-Point digital signal processor,2007.
[5]李方慧,王飞,何佩琨.TMS320C6000系列DSPs原理与应用(第二版)[M].北京:电子工业出版社,2005.
[6]Texas Instruments Incorporated.TMS320C6000 EMIF toexternal FIFO interface.1999.