dsp gpu 图像处理_效率远高于cpu、gpu和dsp的嵌入式视觉处理器将问世 - CSDN
精华内容
参与话题
  • 2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)...

    是显示卡的“心脏”,也就相当于在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。使显卡减少了对的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬件T&l、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。

      主要作用

      今天,GPU已经不再局限于3D图形处理了,GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能,如此强悍的“新星”难免会让CPU厂商老大英特尔为未来而紧张,NVIDIA和英特尔也经常为CPU和GPU谁更重要而展开口水战。GPU通用计算方面的标准目前有OPEN CL、CUDA、ATI STREAM.其中,OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器()等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景,AMD-ATI、NVIDIA现在的产品都支持OPEN CL.NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。从此NV显卡的芯就用这个新名字GPU来称呼。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬体T

      工作原理

      简单说GPU就是能够从硬件上支持T&L(Transform and Lighting,多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由CPU处理的(这就也就是所谓的软件T&L),由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使CPU的工作频率超过1GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与CPU的速度无太大关系。

      GPU与区别

      GPU在几个主要方面有别于(Digital Signal Processing,简称DSP(数字信号处理)架构。其所有计算均使用浮点算法,而且目前还没有位或整数运算指令。此外,由于GPU专为图像处理设计,因此存储系统实际上是一个二维的分段存储空间,包括一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。此外,没有任何间接写指令。输出写地址由光栅处理器确定,而且不能由程序改变。这对于自然分布在存储器之中的算法而言是极大的挑战。最后一点,不同碎片的处理过程间不允许通信。实际上,碎片处理器是一个SIMD数据并行执行单元,在所有碎片中独立执行代码。

      尽管有上述约束,但是GPU还是可以有效地执行多种运算,从线性代数和信号处理到数值仿真。虽然概念简单,但新用户在使用GPU计算时还是会感到迷惑,因为GPU需要专有的图形知识。这种情况下,一些软件工具可以提供帮助。两种高级描影语言CG和HLSL能够让用户编写类似C的代码,随后编译成碎片程序汇编语言。Brook是专为GPU计算设计,且不需要图形知识的高级语言。因此对第一次使用GPU进行开发的工作人员而言,它可以算是一个很好的起点。Brook是C语言的延伸,整合了可以直接映射到GPU的简单数据并行编程构造。经GPU存储和操作的数据被形象地比喻成“流”(stream),类似于标准C中的数组。核心(Kernel)是在流上操作的函数。在一系列输入流上调用一个核心函数意味着在流元素上实施了隐含的循环,即对每一个流元素调用核心体。Brook还提供了约简机制,例如对一个流中所有的元素进行和、最大值或乘积计算。Brook还完全隐藏了图形API的所有细节,并把GPU中类似二维存储器系统这样许多用户不熟悉的部分进行了虚拟化处理。用Brook编写的应用程序包括线性代数子程序、快速傅立叶转换、光线追踪和图像处理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速缓存、SSE汇编优化Pentium 4执行条件下,许多此类应用的速度提升高达7倍之多。

      对GPU计算感兴趣的用户努力将算法映射到图形基本元素。类似Brook这样的高级编程语言的问世使编程新手也能够很容易就掌握GPU的性能优势。访问GPU计算功能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎,而是会成为个人电脑的主要计算引擎。

     的区别是什么?

      要解释两者的区别,要先明白两者的相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。

      两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;的核数远超,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(初始时在浮点计算上一直弱于CPU)。从结果上导致CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。GPU由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。在2003-2004年左右,图形学之外的领域专家开始注意到GPU与众不同的计算能力,开始尝试把GPU用于通用计算(即GPGPU)。之后NVIDIA发布了CUDA,AMD和Apple等公司也发布了OpenCL,GPU开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等。

      简而言之,当程序员为CPU编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即Latency.当程序员为GPU编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖Lantency.目前,CPU和GPU的区别正在逐渐缩小,因为GPU也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于GPU比CPU更严重。

      总的来讲,GPU和CPU的区别是个很大的话题。

     

    处理器

    用法

    操作系统

    芯片

    CPU

    桌面系统工业控制机

    WINDOWS/UNIX

    INTEL奔腾系列

    ARM

    向上扩展 向下扩展

    WIN CE/UC/OS

    ARM9/ARM7

    DSP-MCU

    工业控制 实使系统

    不跑操作系统

    51系列 TMS320系列

    from: http://www.eepw.com.cn/article/276092_2.htm


     CPU 、GPU的浮点运算能力比较



    CPU-GPU浮点运算比较


    作者:匿名用户
    链接:http://www.zhihu.com/question/20978963/answer/17194080
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    英伟达的CUDA文档里给了这样一幅图:其中ALU就是“算术逻辑单元(其中ALU就是“算术逻辑单元(Arithmetic logic unit)”。

    CPU和GPU进行计算的部分都是ALU,而如图所示,GPU绝大部分的芯片面积都是ALU,而且是超大阵列排布的ALU。这些ALU都是可以并行运行的,所以浮点计算速度就特别高了。

    相比起来,CPU大多数面积都需要给控制单元和Cache,因为CPU要承担整个计算机的控制工作,没有GPU那么单纯。

    所以GPU的程序控制能力相比CPU来说不强,稍早时候的CUDA程序像是递归都是不能用的(较新的设备上可以了)。

    CPU不能提高浮点计算速度,而是因为没什么特别的必要了。咱们通常的桌面应用根本没有什么特别的浮点计算能力要求。而同时GPU这样的设备已经出现了,那么需要浮点计算的场合利用上就行了。

    作者:冯东
    链接:http://www.zhihu.com/question/20978963/answer/17195552
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    首先,CPU 能不能像 GPU 那样去掉 cache?不行。GPU 能去掉 cache 关键在于两个因素:数据的特殊性(高度对齐,pipeline 处理,不符合局部化假设,很少回写数据)、高速度的总线。对于后一个问题,CPU 受制于落后的数据总线标准,理论上这是可以改观的。对于前一个问题,从理论上就很难解决。因为 CPU 要提供通用性,就不能限制处理数据的种类。这也是 GPGPU 永远无法取代 CPU 的原因。

    其次,CPU 能不能增加很多核?不行。首先 cache 占掉了面积。其次,CPU 为了维护 cache 的一致性,要增加每个核的复杂度。还有,为了更好的利用 cache 和处理非对齐以及需要大量回写的数据,CPU 需要复杂的优化(分支预测、out-of-order 执行、以及部分模拟 GPU 的 vectorization 指令和长流水线)。所以一个 CPU 核的复杂度要比 GPU 高的多,进而成本就更高(并不是说蚀刻的成本高,而是复杂度降低了成片率,所以最终成本会高)。所以 CPU 不能像 GPU 那样增加核。

    至于控制能力,GPU 的现状是差于 CPU,但是并不是本质问题。而像递归这样的控制,并不适合高度对齐和 pipeline 处理的数据,本质上还是数据问题。



    作者:谢天奇
    链接:http://www.zhihu.com/question/20978963/answer/86818933
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    在不考虑 指令集、缓存、优化的情况下,光看主频就知道,CPU单个核心浮点运算能力比GPU强多了。
    GPU核心最高也就1Ghz左右 ,CPU核心却要3-4Ghz。区别是CPU最多也就十几个核心,GPU动辄几百上千个核心。
    更别说CPU核心指令集更全面,GPU核心基本只有SIMD指令(因为GPU主要是用于图形处理,向量运算远比标量运算多。并且对CPU来说,多一套指令运算单元,就是几个核心的成本;对GPU来说就是多几百上千个核心的成本。)
    CPU处理一次标量乘法只要一次标量乘法指令,GPU却把标量先转换成向量 然后用一条SIMD指令。

    CPU每个核心有独立的缓存,GPU基本是所有核心共享一个缓存(GPU主要做图形渲染,所有核心都执行同一份指令,获取同样的数据。CPU主要是执行多个串行任务,每个核心可以处理不同的任务,从不同地方获取不同的数据。),所以CPU单核性能秒GPU单核十条街。

    CPU每个核心都有独立的优化、分支预测、乱序执行之类的。
    GPU乱序执行可以有,因为所有核心都干一样的事情,可以共享一份指令,不需要独立的乱序执行(不过一般不会有,因为这个功能可以直接放到编译器中实现。因为GPU的开发语言少 ,基本只有GLSL和HLSL,编译器是厂商自己开发的。不像CPU那样,开发语言多如牛毛,各种编译器五花八门,指令集大相径庭,所以才迫切需求这种动态的乱序执行优化)。
    GPU分支预测肯定不会有,成本上来说分支预测不能共享 ,每个核心都多一个分支预测的逻辑单元成本太大。关键是根本就不需要。GPU程序一般都很短,本来就可以全部装载到高速缓存中;其次是对于GPU处理的任务而言,分支预测也无意义。

    GPU的强项是并行运算能力比CPU强(多个不同任务的并行运算GPU也无法胜任,GPU只适合处理单个可并行任务的并行运算),而不是浮点运算能力强。(这个谣言也不知道谁传出来的,非要强调浮点运算。非要说浮点运算的话,不如说大多数老式GPU甚至没有整数运算能力,因为根本没有整数指令。GPU最早设计目的是加速图形渲染,基本都是浮点运算。所以GPU核心的SIMD指令 只有浮点指令,没有整数指令;新型GPU因为不光光用于图形渲染,还想推广到通用计算,就是所谓的GPGPU 所以开始加入整数运算的支持。)

    GPU完全是为了并行运算设计的。
    只有可并行 无数据依赖的运算在GPU上才会快。

    举个简单的例子
    CPU的核心就像一个心算高手 并且掌握各种奇技淫巧 一分钟能算100次四则运算
    GPU的核心就是一个普通人 一分钟能算10次四则运算
    但是 你让10个心算高手合作算10000个四则运算 和 1000个普通人合作算10000个四则运算
    你说谁完成的快?
    当然是1000个普通人快
    (10个心算高手每人算1000个要花10秒 1000个普通人每人算10个只要1秒)

    但是如果这10000个四则运算有依赖 就是下一题的条件依赖于上一题的结果
    你说谁算的快?
    当然是心算高手快 因为一旦有这种强依赖 就只能串行 10个人干和1000个人干并不会比1个人干来得快
    (1个心算高手只要花100秒 1个普通人要花1000秒)


    展开全文
  • CPU, DSP, GPU, FPGA对比

    千次阅读 2018-08-17 17:02:10
    1. CPU ...DSP虽然主频不如CPU,但是胜在乘法器多,随随便便带16个乘法器,还是浮点的。再来个4核,8核,还有特定的算法硬件加速,所以虽然主频只有1,2g但是运算能力还是比CPU强。当然现在出现了带专用...

    1. CPU

    一般来说CPU运算能力最弱,CPU虽然主频最高,但是单颗也就8核、16核的样子,一个核3.5g,16核也就56g,再考虑指令周期,每秒最多也就30g次乘法。还是定点的。


    2. DSP

    DSP虽然主频不如CPU,但是胜在乘法器多,随随便便带16个乘法器,还是浮点的。再来个4核,8核,还有特定的算法硬件加速,所以虽然主频只有1,2g但是运算能力还是比CPU强。当然现在出现了带专用乘法器的CPU,DSP也集了ARM核,这两个的界限开始模糊了。
    DSP所有计算均使用浮点算法,而且目前还没有位或整数运算指令


    3. GPU


    GPU专为图像处理设计,主频一般在500mhz左右,但是核多啊,比如titan,有380多个流处理单元,500*400就是200g这个量级,远大与于前面2者了。


    4. FPGA


    FPGA的运算能力的,拿高端的来说。3000多个固定乘法器,拿数字逻辑还能搭3000个,最快能到接近300mhz, 也就是1800g这个量级。

    总结:
    这几个应用场合不同,CPU虽然运算不行,但是擅长管理和调度,比如读取数据,管理文件,人机交互等,例程多,辅助工具也很多。

    DSP相比而言管理弱了,运算加强了。这两者都是靠高主频来解决运算量的问题,适合有大量递归操作以及不便拆分的算法。

    GPU管理更弱,运算更强,但由于是多进程并发,更适合整块数据进行流处理的算法

    FPGA能管理能运算,但是开发周期长,复杂算法开发难度大。适合流处理算法,不管是整块数据进还是一个一个进。还有实时性来说,FPGA是最高的。前3种处理器为了避免将运算能力浪费在数据搬运上,一般要求累计一定量数据后才开始计算,产生群延时,而FPGA所有操作都并行,因此群延时可以很小

     

    CPU和GPU对比:

    上图是CPU与GPU内部结构上的对比,总体上来说二者都是由控制器(Control),寄存器(Cache、DRAM)和逻辑单元(ALU:Arithmetic Logic Unit)构成。但是三者的比例却有很大的不同。在CPU中控制器和寄存器占据了结构中很大一部分,与之相反,在GPU中,逻辑单元的规模则是远远超过其他二者之和。这种不同的构架就决定了CPU在指令的处理/执行,函数的调用上有着很好的发挥,但由于逻辑单元所占比重较小,相对于GPU而言,在数据的处理方面(算术运算或者逻辑运算)的能力就弱了很多。 

    关于 CPU cache的介绍

    https://www.cnblogs.com/snow826520/p/8574824.html 

    展开全文
  • DSP往往因为其具有很强的浮点运算能力和专用乘法器,在图像处理方面也具有很强的应用前景。 而ARM只是一个通用CPU,图像处理并不是其强项,可以用它来实现基本的操作系统,以及与用户之间的界面交互等等。所以往往...
    FPGA在图像处理中主要扮演的是编解码,运动补偿等等复杂算法的实现。
    DSP往往因为其具有很强的浮点运算能力和专用乘法器,在图像处理方面也具有很强的应用前景。
    而ARM只是一个通用CPU,图像处理并不是其强项,可以用它来实现基本的操作系统,以及与用
    户之间的界面交互等等。所以往往ARM之外要另加一个专用图像处理设备。
    如果你想在软件上研究图像处理算法,可以用ARM+DSP。
    如果想在硬件和芯片上实现图像处理算法,就要选择ARM+FPGA的方法了。
    展开全文
  • 目前大多数方案都是采用HPI数据传输方式,将ARM和DSP进行组合完成一些图像处理DSP处理器只是完成图像采集、压缩、编码等简单的处理[1]工作,不能满足实时的智能识别或大数据量运算的视频处理要求。在应用领域方面...
    实时图像处理、高速数据运算处理要求其系统具有对数据处理速度快、数据吞吐率高以及多任务处理功能。目前大多数方案都是采用HPI数据传输方式,将ARMDSP进行组合完成一些图像处理,DSP处理器只是完成图像采集、压缩、编码等简单的处理[1]工作,不能满足实时的智能识别或大数据量运算的视频处理要求。在应用领域方面也会因其处理速度问题受到一定的限制。
        例如,胎儿性别屏蔽项目中,要对实时视频进行性别部位的检测和屏蔽,若采用单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下运行。通过AXI、AHB和APB组成的64/32 bit内部总线与外部模块相连。SROM Controller:6个片选,支持SRAM、ROM和NOR Flash以及支持8/16 bit,每个片选支持128 MB。JPEG Codec:支持JPEG编解码功能,最大尺寸为4 096×4 096。2D GRAPHICS:2D加速,支持画点/线,bitblt功能和Color Expansion。3D GRAPHICS:3D加速。
        S3C6410可支持4个DMA控制器,用于系统总线内部或与外围总线之间的数据交换,每个控制器包含8个通道,支持8/16/32 bit传输。现以外部DMA请求为例简要介绍DMA的工作过程。图3所示为DMA基本工作时序。

        当需要进行DMA操作时,外部DMA请求引脚XnXDREQ置为低电平。此时DMA控制器向CPU发出占用总线的请求,当总线请求成功后,XnXDACK引脚变为低电平,表示CPU已经将总线使用权交给DMA控制器,可以进行数据传输。当数据传输完成后,应答信号XnXDACK置为高电平,通知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输出数据经过以nGCS4为选通信号的缓冲器(Buffer)后接到S3C6410的数据总线上。nGCS4是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信号:writ_clk= AECLKOUT
                   writ_req=! (/CE+/AWE)
        读FIFO信号:read_clk = AECLKOUT
                   read_req = ! (/CE+/ARE)


        另外,写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状态标志信息。
     
        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间的数据传输量),则:
      
        表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,可以满足实时要求。另外,该系统可广泛适用于其他图像处理、电子对抗、雷达信号处理等各个领域。
    参考文献
    [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 to external FIFO interface.1999.
    [7] 周委,陈思平,赵文龙,等. 基于DSP EMIF口、FPGA设计并实现的多DSP 嵌入式系统[J]. 电子技术应用, 2008,34(12):6-8.

    展开全文
  • CPU、GPU、FPGA、DSP、ASIC的比较

    千次阅读 2019-10-18 23:15:18
    中央处理器作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,,CPU 是对计算机的所有硬件资源(如存储器、输入输出单元) 进行控制调配、执行通用运算的核心硬件单元。 优点:CPU有大量的缓存....
  • 多核结构处理、GPU处理及FPGA很快在实时性图像处理领域得到了迅速的发展。本章将重点介绍基于FPGA的实时性图像处理。 FPGA通过为每个功能建立单独的硬件来实现整个应用程序所需要的逻辑功能,这使其很适合图像...
  • 这两年arm芯片的发展真是快的惊人,a53 a72 双核 四核 八核。。。gpu也做来越强大。。 感觉dsp系列芯片(不包括... 以前有很多arm干不了的事儿,比如音视频编解码,信号处理,很多得靠dsp。。现在虽然还是有,但是感
  • GPUDSP薄见

    2014-06-04 18:18:20
    GPUDSP薄见 2010-09-18 11:14 分享到:  开题报告是基于并行计算(多处理器并行)的视频处理。选的是TI公司的高性能DSP TMS320C6455,为的是SRIO。  希望加点创新点,于是把GPU和CUDA...
  • 当然,有数据处理功能的芯片还有应用于信号处理领域的DSP,应用于特殊芯片设计的FPGA以及图像处理并行运算的GPU等,以上这些都可以统称为微处理器件。当然,与微处理器件相关的概念还有架构、内核、指令集等等,本篇...
  • GPU是显示卡的“心脏”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。 2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”...
  • 深度学习最近取得的成功势不可挡:从图像分类和语音识别到图片标注、理解视觉场景、视频概述、语言翻译、绘画,甚至是生成图像、语音、声音和音乐! 随着我们的家变得越来越智能,你会发现许多设备都会需要连续地...
  • 看了一篇不错的文章,对多媒体解码进行了科普,见下文: 第一我认为解码视频有三个层次:硬解,部分硬件加速(暂时把前两者都视为硬解),软解。针对我说的,先举个例子(当然只 是示例说明下大概的量级,并不太准确...
  • 目前实时图像处理的硬件主要是 FPGA、GPUDSP 三类。从笔者的开发经验来看,FPGA 以其实时性和灵活性占据主流;GPU 虽然不及DSP应用广泛,但是随着开发技术逐步升级和性能逐步提升,以及 DSP 技术自身的没落...
  • FPGA与图像处理

    千次阅读 2018-06-07 20:07:55
    用FPGA做图像处理最关键的一点优势就是:FPGA能进行实时流水线运算,能达到最高的实时性。因此在一些对实时性要求非常高的应用领域,做图像处理基本就只能用FPGA。例如在一些分选设备中图像处理基本上用的都是FPGA,...
  • FPGA图像处理入门(一)

    千次阅读 多人点赞 2018-10-19 13:48:28
    本人有过多年用FPGA做图像处理的经验,在此也谈一下自己的看法。用FPGA做图像处理最关键的一点优势就是:FPGA能进行实时流水线运算,能达到最高的实时性。因此在一些对实时性要求非常高的应用领域,做图像处理基本就...
  • 本文转自2010年4月份的一篇文章,在平台选择上可能已有更高性能和更稳定的平台替代。...其中‘多’是指多样性,我们知道无论是DSP、ARM、X86还是FPGA、GPU,每个平台都有各自的优点和缺陷,因此在设计产品时就可以根据
  • CPU, DSP, GPU, FPGA

    2018-09-14 14:53:40
    DSP虽然主频不如CPU,但是胜在乘法器多,随随便便带16个乘法器,还是浮点的。再来个4核,8核,还有特定的算法硬件加速,所以虽然主频只有1,2g但是运算能力还是比CPU强。当然现在出现了带专用乘...
  • ➢ SOM-XM5728是信迈科技基于 TI AM5728 处理器的工业级核心板,采用沉金无铅、十层板、工业级设计,可应用于运动控制系统、机器视觉处理系统、图像识别系统、音频分析系统、视频分析系统,高端测量仪器等行业应用。...
1 2 3 4 5 ... 20
收藏数 2,121
精华内容 848
关键字:

dsp gpu 图像处理