可动态配置的流水线预处理器的制造方法
【专利摘要】一种流水线视频预处理器包括多个可配置图像处理模块。可利用直接处理器控制、DMA访问、或两者配置模块。可经由DMA访问的块控制列表有利于按照与直接处理器控制类似的方式进行模块的配置。可逐帧地更新模块中的参数。
【专利说明】可动态配置的流水线预处理器
[0001]相关申请的交叉引用
[0002]本申请要求2011年10月14日提交的美国临时专利申请N0.61/547,442的优先权,其整体公开在此通过引用并入本文。
【背景技术】
[0003]诸如摄像机产生的或从存储器读取的视频帧流之类的视频帧流一般都要求进行处理以改进视频质量或提取视频特征。这种处理通常由后置处理操作中的软件来完成。后置处理操作可能由于下述原因而变化:(i)需要修改算法处理模块的参数/系数;(ii)需要执行给定算法的精细变化;和/或(iii)需要改变视频所需执行的操作。然而,软件方案虽然是多样化的,但是就处理功率来说是很慢的而且昂贵的。基于硬件的算法通常较快而且更效率,但是硬件就其本质而言很难快速且容易地重新配置,尤其是在其保持与实时流视频同步时。因此,现有的基于硬件的图像处理系统会产生非最佳结果,这是因为它们在灵活性方面的限制。所以,需要一种快速、有效、可重新配置的基于硬件的图像处理系统。
【发明内容】
[0004]在本发明的一个实施例中,流水线视频预处理器("PVP")由几个算法变化图像处理模块组成,这些图像处理模块可按照各种不同的可定制的配置彼此连接。这些模块中的每个具有控制给定算法实施方式的有限变化的多个参数寄存器。在没有数据损失的情况下逐帧地重新配置模块的参数,而且可以最少的数据损失或没有数据损失而改变模块的配置。可经由连接的处理器、经由DMA访问或两者同时改变参数。不同控制方案被设计成彼此兼容,从而确保它们之间的无缝转换。
[0005]在一个方面中,流水线视频预处理器包括布置在流水线中的多个图像处理模块。输入端口接收用于多个模块的配置参数,而且图像管控制器解码配置参数。影像寄存器将配置参数应用至多个模块,从而改变模块的图像处理特征。
[0006]流水线可以是用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。可包括一个或多个附加流水线(例如,存储器流水线或相机流水线)。配置参数可以是从处理器或直接存储器访问("DMA")引擎接收的。配置参数可被布置在块控制结构中的存储器中并且经由DMA通道而被访问;块控制结构可包括块控制报头和一个或多个块控制字。块控制结构中的块控制字的偏移对应于存储器映射寄存器("MMR")空间中的地址。配置参数可被应用至视频数据的第一帧,而且更新后的配置参数被应用至视频数据的第二帧。模块中的不同流水线级可根据数据边界在不同时间点接收更新后的配置参数。
[0007]在另一方面中,一种处理流水线视频预处理器中的图像帧的方法包括接收用于流水线视频预处理器中的多个图像处理模块的配置参数。配置参数可被存储在影像寄存器中并被提供给多个图像处理模块,从而改变模块的图像处理特性。
[0008]可从处理器或DMA引擎接收配置参数;模块可被布置在一个或多个流水线中。一个或多个流水线可包括用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。配置参数可被布置在块控制结构中的存储器中并且经由DMA通道而被访问。块控制结构可包括块控制报头和一个或多个块控制字。块控制结构中的块控制字的偏移可对应于存储器映射寄存器("MMR")空间中的地址。配置参数可被应用至视频数据的第一帧,更新后的配置参数可被应用至视频数据的第二帧。模块中的不同流水线级可根据数据边界在不同时间点接收更新后的配置参数。
[0009]在另一方面中,数字信号处理器中的流水线视频预处理器包括布置在流水线中的多个图像处理模块以及用于接收针对多个模块的配置参数的输入端口。图像管控制器解码配置参数,而且影像寄存器将配置参数应用至多个模块,从而改变模块的图像处理特性。流水线可以是用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。
[0010]在另一方面中,一种用于配置流水线预处理器中的模块的系统包括用于从处理器接收第一控制信号的第一输入端口以及用于从存储器接收第二控制信号的第二输入端口。仲裁单元解决第一和第二控制信号之间的冲突。控制器解码第一和第二控制信号并且将从中导出的配置参数应用至模块。
[0011]接口(例如,增强外围总线("APB")接口)可被用于解码第一控制输入。第一控制信号可以是存储器映射寄存器("MMR")输入,而且第二控制信号可以是从一个或多个直接存储器访问("DMA")通道接收的。第一控制信号可控制第一模块子组,而且同时第二控制输入可控制第二模块子组。一个模块可由第一和第二控制信号两者控制。影像寄存器可接收解码的第一和第二控制信号中的一个。影像寄存器可对至少一个模块中的应用寄存器进行写入从而将配置参数应用至该模块。仲裁单元可在冲突事件中暂缓第二控制信号。
[0012]在另一方面中,一种用于配置流水线预处理器中的模块的方法包括接收来自处理器的第一控制信号以及来自存储器的第二控制信号。解决第一和第二控制信号之间的冲突。解码第一和第二控制信号,并且将从中导出的配置参数应用至所述模块。
[0013]可利用从第一或第二控制信号中的一个导出的信息填充影像寄存器。可根据影像寄存器的内容配置模块。可在模块的配置期间忽略第一控制信号。可在冲突事件中暂缓第二控制信号。第二控制信号可以是从一个或多个DMA通道接收的。第一控制信号可控制第一模块子组,而且同时第二控制输入可控制第二模块子组。一个模块可由第一和第二控制信号两者控制。
[0014]在另一方面中,具有数字信号处理器中的可配置模块的流水线视频预处理器包括用于从数字信号处理器接收第一控制信号的第一输入端口以及用于从存储器接收第二控制信号的第二输入端口。仲裁单元解决第一和第二控制信号之间的冲突。控制器解码第一和第二控制信号,并且将从中导出的配置参数应用至所述模块。第一控制信号可以是MMR输入,而且第二控制信号可以是DMA输入。
[0015]在另一方面中,一种用于编程流水线视频预处理器中的可重新配置的模块的系统包括用于经由直接存储器访问("DMA")通道从存储器接收块控制结构的输入端口。图像管控制器解码块控制结构中的块控制报头并且根据解码后的块控制报头选择块控制结构中的块控制字。影像寄存器接收块控制字,并将块控制字中的参数应用至可重新配置的模块中的应用寄存器,从而调节模块的参数。
[0016]块控制报头可包括唯一地识别模块的块地址。输入端口可进一步接收包括多个块控制结构的块控制列表。块控制报头可包括字计数,字计数包括块控制结构的数量。块控制结构的顺序可对应于流水线中模块的顺序。块控制报头可包括指示哪个应用寄存器接收块控制字的偏移。偏移可等效于模块中的应用寄存器的存储器映射寄存器("MMR")地址和模块的MMR基地址之间的差异。块控制报头可包括多路复用器选择信息,用于指定模块如何连接第二模块。
[0017]用于应用寄存器的块控制字的偏移可对应于相同应用寄存器在存储器映射寄存器("MMR")空间中的地址。块控制字的偏移可以是通过使地址偏移而获得的。
[0018]在另一方面中,一种用于编程流水线视频预处理器中的可重新配置的模块的方法包括经由直接存储器访问("DMA")通道从存储器接收块控制结构,以及解码块控制结构中的块控制报头。根据解码后的块控制报头选择块控制结构中的块控制字。将块控制字中的参数应用至可重新配置的模块中的应用寄存器,从而调节模块的参数。
[0019]解码块控制报头可包括解码唯一地识别模块的块地址。可接收包括多个块控制结构的块控制列表。解码块控制报头可包括解码字计数,字计数包括块控制结构的数量。将每个块控制结构中的块控制字应用至多个模块的每一个。块控制结构的顺序可对应于管中模块的顺序。将块控制字中的参数可应用至多路复用器选择,从而配置两个模块之间的连接。可根据块控制报头中的状态计数从模块读取状态寄存器。
[0020]在另一方面中,一种具有数字信号处理器中的多个可重新配置的模块的流水线视频预处理器包括用于经由直接存储器访问("DMA")通道从存储器接收块控制结构的输入端口。图像管控制器解码块控制结构中的块控制报头,并且根据解码后的块控制报头选择块控制结构中的块控制字。影像寄存器接收块控制字并将块控制字中的参数应用至可重新配置的模块中的应用寄存器,从而调节模块的参数。用于应用寄存器的块控制字的偏移可对应于相同应用寄存器在存储器映射寄存器("MMR")空间中的地址。
[0021]在另一方面中,一种用于编程流水线视频预处理器中的可重新配置的模块的系统包括用于处理图像数据的可重新配置的硬件模块。影像寄存器存储更新的模块参数组。图像管控制器将更新的参数组应用至模块。模块内的应用寄存器接收更新的参数组。模块中的不同流水线级根据数据边界通过流水线的传播在不同时间接收更新的参数组。
[0022]更新的模块参数组可以是从处理器或直接存储器访问("DMA")通道中的一个接收的。图像数据可包括图像帧,数据边界是帧边界。更新的模块参数组可被应用至连续序列的图像帧或固定数量的图像帧之一。利用更新的模块参数组处理的图像数据可被相应地标记;可利用DMA通道或处理器输出来输出标记信息。可利用泄漏命令冲刷流水线。可以在冲刷流水线时改变所述模块和第二模块之间的连接。模块可在更新的参数组已经被应用至其流水线的每级时申明控制信号。下游模块可以开始将更新的参数组应用至控制信号的申明。
[0023]在另一方面中,一种用于编程流水线视频预处理器中的可重新配置的模块的方法包括在影像寄存器中接收用于处理图像数据的针对模块的更新的参数组。发送更新的参数组至模块。根据数据边界通过流水线的传播在不同时间点将更新的参数组应用至模块中的不同流水线级。
[0024]图像数据可包括图像帧,数据边界可以是帧边界。可以将更新的模块参数组应用至连续序列的图像帧或固定数量的图像帧之一。可以标记利用更新的模块参数组处理的图像数据,而且利用DMA通道或处理器输出来输出标记的图像数据。可根据泄漏命令冲刷流水线;可以在冲刷流水线时改变所述模块和第二模块之间的连接。
[0025]在另一方面中,具有数字信号处理器中的多个可重新配置的模块的流水线视频预处理器系统包括用于处理图像数据的可重新配置的硬件模块。影像寄存器存储更新的模块参数组。图像管控制器将更新的参数组应用至模块。模块内的应用寄存器接收更新的参数组。模块中的不同流水线级根据数据边界通过流水线的传播在不同时间接收更新的参数组。更新的模块参数组可以是从数字信号处理器或直接存储器访问("DMA")通道中的一个接收的。图像数据可包括图像帧,数据边界可以是帧边界。
[0026]通过参考后续说明、附图和权利要求,此处描述的本发明的这些及其它目标以及优势和特征将变得更加明显。而且,应该理解的是,此处描述的各种实施例的特征并不是相互排斥的,而是可以存在于各种组合和交换中。
【专利附图】
【附图说明】
[0027]在附图中,类似的标号符号总体上指示不同视图中的相同部分。在后续的说明中,参考附图描述了本发明的各种实施例,其中:
[0028]图1是根据本发明的实施例的PVP的框图;
[0029]图2是根据本发明的实施例的模块配置的框图;
[0030]图3A和3B是根据本发明的实施例的仲裁方案的实施方式;
[0031]图4是根据本发明的实施例的块控制列表的示意图;
[0032]图5是根据本发明的实施例的块控制报头的示意图;
[0033]图6是根据本发明的实施例的逐帧参数更新方案的框图;
[0034]图7是根据本发明的实施例的逐帧更新的时序图;
[0035]图8是根据本发明的实施例的用于传递时钟并产生块重置的逻辑电路800 ;
[0036]图9是根据本发明的实施例的示例性PVP ;以及
[0037]图10是根据本发明的实施例的并入有PVP的系统的框图。
【具体实施方式】
[0038]图1图示出流水线视频预处理器(〃PVP〃)100的实施例。PVP可对任意输入数据进行操作;在一个实施例中,数据是从相机传感器捕获的视频图像数据和/或从存储器提取的视频图像数据。PVP可被布置在单独的硅芯片上;在另一实施例中,PVP与诸如数字信号处理之类的处理器一起布置在芯片上。第一输入数据格式化器102可被用于格式化来自相机源的输入的相机数据104,而且第二输入数据格式化器106可被用于格式化来自相机源的存储器数据108。来自一个或多个源的数据可被同时处理。本发明并不限于任意特定数量或类型的输入源,而且输入数据源可包括一个或多个相机源104和/或一个或多个存储器源108。每个源104,108可由其自己的输入数据格式化器102,106接收或者与其它源102,104共享输入数据格式化器102,106。
[0039]输入数据格式化器102,106输出格式化的输入数据至一个或多个可重新配置的流水线110,112,114,116。每个流水线110,112,114,116包含一个或多个处理模块118。如下文所详细描述的那样,处理模块118执行大量不同图像处理功能和任务,并且可根据期望的图像处理结果进行选择和配置。每个流水线的模块118的数量、流水线内模块118的顺序、以及流水线内模块118的配置可根据需要重新配置,而且给定的模块118可被选择用于不同流水线110,112,114,116。图1图示出第一流水线110 (两个模块118被配置成并行操作)中的四个模块118,第二流水线112中的两个模块118,第三流水线114中的一个模块118,以及第四流水线116中的两个模块118。然而,模块的这一配置仅仅作为PVP100的一个可能的配置,本领域技术人员将理解的是许多其它配置也是可行的。
[0040]流水线110,112,114,116的输出被输出数据格式化器120,122,124,126接收,输出数据格式化器120,122,124,126准备输出数据(例如,通过压缩或封装输出数据)并经由输出端口 128将其发送至芯片外。在一个实施例中,输出数据格式化器120,122,124,126经由对等连接而连接至用于与总线协议(例如,AXI总线)连接的动态数据交换("DDE")模块。在一个实施例中,每个流水线110,112,114,116具有其自己的输出数据格式化器120,122,124,126 ;在另一实施例中,一个或多个流水线110,112,114,116可共享单个输出数据格式化器(例如,通过使用多路复用器来在流水线之间进行选择)。
[0041]每个模块118可具有被外部源控制的内部配置参数。每个模块118可具有其自己的本地参数寄存器组,其决定给定算法的界限内的模块所提供的处理的本质;附加参数寄存器可能对一些或所有模块118共用。参数寄存器可包括应用寄存器130和/或状态寄存器132 ;出于示例的目的仅仅示出了这些寄存器中的仅仅一组,但是每个模块118可包含其自己的一组应用寄存器130和状态寄存器132。如下文所详细描述的那样,包括连接的处理器在内的各种源可(经由接口 134,例如增强外围总线(即"APB")接口),或通过使用输入及输出模块136经由直接存储器访问("DMA"),对参数寄存器进行读取和写入。在一个实施例中,通过使用影像寄存器138输入及输出控制和状态信息;影像寄存器138根据当前通过流水线110,112,114,116移动的图像数据的时序来读取及写入应用寄存器130和/或状态寄存器132,例如,以使得第一组参数被应用至流水线中的第一帧,以及第二组参数被应用至流水线中的第二帧。影像管控制器140可被用于协调模块118的控制,如下文所详细描述的那样。
[0042]在各种实施例中,模块118可包括卷积/缩小引擎("CNV");像素幅值及角度计算单元("PMA");阈值、直方图和压缩引擎("THC");算法计算单元("ACU");像素角分类器("PEC");集成图像计算(〃ΠΜ〃);和/或缩放器("UDS")。本领域技术人员将理解的是,可包含其它模块,而且本发明并不仅仅限于这些模块。模块118可利用本领域任意已知方法(例如,可编程交叉开关)来选择性地彼此连接以创建一个或多个不同流水线。在一个实施例中,如图2所示,可利用布置在其间的多路复用器配置模块118。在图2所示的系统200中,具有三个输出端口的第一模块202以及具有一个输出端口的第二模块204经由多路复用器206的系统连接至具有两个输入端口(和三个输出端口)的第三模块208。通过控制多路复用器206的选择线210,第三模块208可接收第一模块202和第二 204模块的任意输出,作为其两个输入212之一。可经由处理器或DMA控制按照与其它模块参数的配置类似的方式来配置选择线210。本领域技术人员将理解的是,多路复用器206的其它配置也处于本发明的范围内。
[0043]任意给定模块可在作为管重新配置的一部分的摄像管和/或存储器管间移动。摄像管可对像素时钟作用,而且存储器管可对系统时钟作用;两个时钟可以是彼此异步的。PVP构架可确保时钟域的适当同步以便模块可在管间切换。
[0044]1.来自多个源的模块的控制
[0045]在一个实施例中,可经由例如可被APB接口(例如图1所示的接口 134)访问的存储器映射寄存器("MMR")通过链接的处理器来访问PVP中的图像处理模块。例如,可申明硬件中断,而且处理器可向PVP及其模块读取及写入状态和控制信息。一旦处理模块被适当配置,图像数据流可由处理器或DMA引擎之一支配。
[0046]在另一实施例中,图像处理模块可由APB接口(B卩,经由处理器)和一个或多个DMA接口之一或两者配置。在一个实施例中,所有处理模块在第一时间点被直接处理器控制所控制,在第二时间点被DMA控制所控制。在另一实施例中,第一模块子组可由直接处理器控制配置,同时,第二子组可由DMA控制配置。例如,在PVP中,第一模块子组可以是处理存储器(即,存储器管)中存储的数据的模块,第二子组可以是处理来自相机传感器(即,摄像管)的数据的模块。在另一实施例中,可能存在多个(例如,两个或更多)分开的DMA控制通道。第一 DMA控制通道可控制第一模块子组,第二 DMA控制通道可控制第二模块子组。例如,第一 DMA控制通道控制摄像管,第二 DMA控制通道控制存储器管。本领域技术人员将理解的是,读写控制的其它组合是可行的,而且本发明并不限于直接或DMA控制的任意特定划分。
[0047]在一个实施例中,可通过首先读取或写入一组暂存寄存器来完成寄存器的直接或DMA控制;一旦这些暂存寄存器被完全写入,例如,则它们的内容随后被应用至实际应用寄存器。类似地,控制寄存器的读取可首先填充一个或多个暂存寄存器,随后经由DMA控制读取暂存寄存器。暂存寄存器可以是图1所示的影像寄存器130,132。在一个实施例中,在影像寄存器的加载或卸载期间(即,在影像寄存器的内容被应用至应用寄存器的时间期间或在状态寄存器正填充影像寄存器的时间期间)不允许APB接口进行直接处理器控制。
[0048]由于模块的控制可能来自不同的源,可能在多个同时的请求之间出现冲突。在一个实施例中,仲裁可被用于解决不同控制机制之间的冲突。图3A图示出根据本发明实施例的示例的仲裁方案300。在该实施例中,第一 DMA通道302被用于配置相机流水线中的模块;可利用第二 DMA通道304或用于处理器的直接控制的APB链接306来配置存储器流水线中的模块。仲裁单元308被用于解决第二 DMA通道304和APB链接306之间的冲突。仲裁单元308可包括暂缓或熄灭机制以便在一些或所有其加载阶段和/或误差发信号期间延迟对DMA引擎的访问,从而确保APB链接306进行的任意同步访问的有效性。在一个实施例中,仲裁模块308与DMA引擎304和APB链接306接口,并且控制控制数据如何被编程/仲裁至图像处理模块。在一个实施例中,仲裁模块308被并入图像管控制器(〃IPC〃)140,如图1所示,而且分别经由P2P和APB总线与DMA引擎和处理器通信。图像处理模块可使用内部总线,例如AHB总线。图3B示出了仲裁逻辑的实施方式的一个实施例。
[0049]控制图像处理模块中的一些或全部的时钟可处于与DMA和处理器接口的时钟域不同的不同域。在这种情况下,可以在不同域上同步时钟。在一个实施例中,图像处理模块的子组被布置在多个不同长度的管中,而且数据可在其完成更长管中的处理之前在更短的管中完成处理(而且,例如,申明加载完成信号以表示完成)。同步模块310可延迟早期数据的同步,直到例如通过在已经接收到一些或所有加载完成信号时从每个流水线接收加载完成信号并发送同步信号至仲裁单元308,使得后期数据可用。
[0050]参数寄存器的位可通过轮询或中断而被处理器设置或清除。在一个实施例中,DMA状态通道可被用于扫描出参数寄存器中的一个或多个值。例如,可在DMA状态通道从THC模块扫描出直方图状态。DMA状态通道的触发可基于给定模块处的垂直同步输出。如果在相同通道上请求两个状态,则识别字段(例如,数字或字母)可包含在每个模块的状态的状态报头中,而且这两个状态可在记录事件之后一个接一个地排序。
[0051]2.通过DMA编程
[0052]为了有助于经由DMA的控制,特殊的控制字格式(称为块控制结构列表("BCL"))可被定义在系统存储器中。BCL是用于PVP中的图像处理模块中的应用寄存器的控制信息的阵列;该控制信息被模块组成组,而且每个组包含报头信息(例如,块控制报头或"BCH"),指示PVP在哪以及如何应用控制信息。经由DMA读入BCL,报头信息被图像管控制器解码,从而控制信息被提供至模块。BCL的结构可允许容易地添加新模块,例如通过在BCL中附接或插入新模块的BCH。
[0053]图4图示出BCL400的一个实施例。示出了大量BCH402,每个都具有块控制字404的相关列表。图5图示出BCH500的放大图。第一字段BL0CK502表示分配给PVP中的每个图像处理模块的唯一地址,由此指示图像管控制器将参数应用至哪个模块。第二字段WCNT504表示该块中包含的控制字的数量,由此表示下一个BCH的位置。WCNT字段的使用可消除对例如块结尾处的块结束指示字段的需要。另一字段W0FF506表示将被应用至控制字的偏移;例如,如果给定模块具有一组的256个寄存器,指定大小为10的偏移,表明在第十寄存器的开始应用控制字。如果WCNT为12 (例如),寄存器10至22被编程。
[0054]BCH中的其它字段表示模块如何连接至上游及下游模块,例如,利用图2所示的多路复用器控制。例如,IPORT字段508可被用于选择多路复用器的第一级,IB LOCK字段510可被用于选择多路复用器的第二级。然而,本领域技术人员将理解的是,利用选择位来指定多路复用器编程的任意其它方法都处于本发明的范围内。可替换地,整个IBLOCK(Sf)和IPORT(Sf)可从BCH中去除,而且可以定义单独的交叉条控制报头格式(即,交叉条控制结构或"CCS"包)。其它字段包括指示模块是否应该启动或禁用的START位512、以及表不模块属于哪个管(即,相机或存储器管)的管字段514。另一字段STAT WCNT516表不在读取操作中读取模块中的多少个状态寄存器。
[0055]在一个实施例中,针对给定管的BCL从输入数据格式模块的配置开始,包括一个或多个图像处理模块的配置,并且以输出数据格式模块的配置结束。每个图像处理模块的配置信息的顺序可对应于管中模块的位置。用于模块的BCH可在BCL中重复(例如,两次或更多次)以允许针对管内的给定模块的寄存器的两个单独的组的编程。例如,第一 BCH可被用于编程模块的寄存器10-22,而第二 BCH可被用于编程相同模块的寄存器100-110。
[0056]针对给定模块的BCH的配置可经由存储器映射寄存器关联至模块的直接处理器控制。例如,给定模块可具有用于经由处理器的访问的固定基地址;可从该基地址导出模块的BL0CK502识别号(用于DMA控制)。在一个实施例中,可以通过使得基地址右移五位来找到BL0CK502识别。类似地,实际MMR地址和基地址之差可直接关联至BCH中的WOFF偏移字段。因此,BCL中的每个控制字以与它们出现在MMR地址空间中顺序相同的顺序进行布置,由此简化BCH的设计以及利用任意控制方案在模块中配置寄存器的任意软件的设计。例如,如果给定寄存器是从MMR地址空间中的基地址去除的36个地址单元,该相同寄存器是相对于DMA控制方案中的BL0CK502识别号的36个单位偏移。利用该配置,编程器和/或软件用途可无缝地在两个控制方案之间转移,而无需使用例如解码器/映射功能来在方案之间进行翻译。
[0057]以经由DMA的写控制信息类似的方式执行经由DMA的状态读取。在一个实施例中,模块状态值根据给定模块的输出能力(即,根据模块的时钟速率)而被转移至一个或多个影像寄存器中。随后,根据配置寄存器经由DMA周期性地发送状态信息(例如,在每个帧边界或在每个具体数量的帧时)。可在单个DMA通道上或同时在多个DMA通道上发送状态信息。如上所述,BCH中的STATWCNT字段516表示模块中将被读取及发送的状态寄存器的数量。
[0058]3.针对不同帧重新编程模块
[0059]对于给定管配置,本发明的实施例实现了针对由任意给定管组成的模块的参数寄存器的无缝重编程,由此可以利用每个模块提供的算法的不同系数或变化来处理连排式帧。给定模块可具有多于一个时钟周期的延迟;例如,模块结尾处的流水线级可处理第一帧,同时模块开始处的流水线级可处理第二帧。影响模块行为的应用寄存器由此可以针对模块的每个流水线在不同时间进行更新,以确保根据其预期的参数来处理每个帧。在一个实施例中,随着帧边界通过模块中的流水线传播时,每个流水线中的应用寄存器被更新。如上所述,影像寄存器可被用于在适当时候更新应用寄存器;直接处理器MMR机制或DMA控制机制之一仅仅更新了影像寄存器,而且应用寄存器的更新被及时变动。
[0060]引擎可控制应用给定参数组或给定配置的粒度:持续地针对每个帧或针对固定的帧组。通常,摄像管持续地从相机传感器得到帧,同时存储器管接收固定的帧组;然而,任一模式可用于任一管。处理器可从持续模式转换至固定模式(反之亦然),而不禁用整个PVP引擎。为了将参数应用至每帧,可设置标记(例如,帧计数或"FCNT"值可被编程为零)。如果新的控制值组被编程,新值被应用至下一帧边界并被应用至紧随其后的后续帧。该架构还可在分开的状态DMA通道上提供TAG机制,以易于识别出已经利用新控制参数处理过的帧;处理器可使用该TAG机制来确定哪个帧利用特定参数组接收到处理。TAG数据可在状态DMA通道上进行发送而且还可对处理器读取可用。
[0061]为了将参数应用至一个固定的帧组,FCNT值可被编程为非零值并随后被监控。一旦已经处理了预定数量的帧,流水线暂停(而且最后一个帧卡在流水线中)。一旦下一组帧被识别并且列队等待以处理,再次设置FCNT值,而且下一组开始处理(可能利用不同模块参数组)。下一组帧的处理将卡在流水线中的帧前一组的最后一帧推出流水线。
[0062]如果设置了另一参数(例如,DRAIN位),则可冲刷流水线。例如,如果在完成最后一帧时有限帧组被识别用于处理而且DRAIN位被设置,利用虚设像素冲刷流水线以使得该组中的最后一帧被流水线输出。随着最后一帧通过流水线,流水线中的模块被禁用。在一个实施例中,如果流水线处于持续帧模式而且设置了 DRAIN位,则即刻冲刷并禁用流水线。在任一情况下,下一组控制字可被设置来唤醒流水线(例如,使用帧的BCH中的START位)。
[0063]图6图示出第一模块602、第二模块604、连接它们的数据控制和交叉条单元606、以及图像管控制器608的示例性实施例600。当一组新的应用寄存器值被DMA或直接处理器控制载入影像寄存器时,"daisychainload"信号与巾贞同步信号一起被驱动至第一模块602。随着输入数据中的第一像素通过模块602,第一模块602根据其内部流水线延迟更新其应用寄存器(即,如果第一模块包括5个流水线级,则随着像素数据被处理过,其将应用寄存器值反过来应用至5个级的每一个)。当第一模块602完成第一像素的处理,其在其输出处申明daisychainload信号,从而指示第二模块604也开始应用新应用寄存器值(根据其自己的流水线配置)。daisychainload信号和巾贞同步信号的时序图700在图7中示出,图8图示出逻辑电路800,用于基于draini,_done和起始位传递时钟并产生块重置。
[0064]除了重新配置用于现有流水线的模块的参数,流水线本身还可以通过添加或删除模块而进行重新配置。对于实时管(例如,摄像管、或处理实时数据的其它管),引擎可包括允许以仅仅一个帧数据的损失来对包括摄像管的模块进行无缝的动态重新配置的机制。对于非实时管(例如,存储器管),引擎可包括允许以有限的暂缓及无帧损失进行动态重新配置的机制。
[0065]可利用寄存器中俄DRAIN位以及自动禁用各个模块中的START位来实施该机制。在有限帧组之后,假定DRAIN=I,管中的模块被禁用(例如,通过将START位设置为O)。构成管的新配置的一组新模块可具有在下一编程结构中设置的START位。
[0066]4.示例
[0067]图9图示出PVP架构的示例性实施例900。相同包括相机输入902和存储器输入904。相机输入902馈给三个相机流水线906,908,910,而且存储器输入904馈给两个存储器流水线912,914。第一相机流水线906包括两个卷积/缩小模块、像素幅值和角度计算模块、和像素边缘分类器模块;第二相机流水线908包括卷积/缩小模块以及整体图像计算模块;第三相机流水线910包含阈值、直方图和压缩模块;第一存储器流水线912包括卷积/缩小模块和算术计算单元;而且第二存储器流水线包括缩放器。
[0068]图10图示出相同的1000,包括PVP1002及其支持和接口电路。处理器1004可经由MMR接口直接控制PVP1002。VSS交叉条电路1006提供数据给相机流水线;交叉条1006可在各种输入源(例如,PPI和PIXC输入)之间选择,从而提供多个相机输入。DDE仲裁单元1008与内部总线(例如,AXI总线)进行接口以允许DMA控制;DDE单元1010从PVP1002内的输出数据格式模块卸载输出数据,提供输入及输出控制和状态数据,而且提供输入给存储器流水线。
【权利要求】
1.一种流水线视频预处理器,包括: 布置在流水线中的多个图像处理模块; 输入端口,用于接收针对多个模块的配置参数; 图像管控制器,用于解码配置参数;以及 影像寄存器,用于将配置参数应用至多个模块,从而改变模块的图像处理特性。
2.根据权利要求1所述的流水线视频预处理器,其中流水线是用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。
3.根据权利要求1所述的流水线视频预处理器,进一步包括一个或多个附加流水线,所述一个或多个附加流水线是存储器流水线或相机流水线。
4.根据权利要求1所述的流水线视频预处理器,其中从处理器或直接存储器访问("DMA")引擎接收配置参数。
5.根据权利要求1所述的流水线视频预处理器,其中配置参数被布置在块控制结构中的存储器中并且经由DMA通道而被访问。
6.根据权利要求1所述的流水线视频预处理器,其中块控制结构包括块控制报头和一个或多个块控制字。
7.根据权利要求 1所述的流水线视频预处理器,其中块控制结构中的块控制字的偏移对应于存储器映射寄存器("MMR")空间中的地址。
8.根据权利要求1所述的流水线视频预处理器,其中配置参数被应用至视频数据的第一帧,而且更新后的配置参数被应用至视频数据的第二帧。
9.根据权利要求1所述的流水线视频预处理器,其中模块中的不同流水线级根据数据边界在不同时间点接收更新后的配置参数。
10.一种处理流水线视频预处理器中的图像帧的方法,所述方法包括: 接收用于流水线视频预处理器中的多个图像处理模块的配置参数; 在影像寄存器中存储配置参数; 将配置参数应用至多个图像处理模块,从而改变模块的图像处理特性。
11.根据权利要求1所述的方法,其中从处理器或DMA引擎接收配置参数。
12.根据权利要求1所述的方法,进一步包括在一个或多个流水线中布置模块。
13.根据权利要求1所述的方法,其中一个或多个流水线包括用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。
14.根据权利要求1所述的方法,其中配置参数被布置在块控制结构中的存储器中并且经由DMA通道而被访问。
15.根据权利要求1所述的方法,其中块控制结构包括块控制报头和一个或多个块控制字。
16.根据权利要求1所述的方法,其中块控制结构中的块控制字的偏移对应于存储器映射寄存器("MMR")空间中的地址。
17.根据权利要求1所述的方法,进一步包括将配置参数应用至视频数据的第一帧,以及将更新后的配置参数应用至视频数据的第二帧。
18.根据权利要求1所述的方法,其中模块中的不同流水线级根据数据边界在不同时间点接收更新后的配置参数。
19.一种数字信号处理器,包括流水线视频预处理器,流水线视频预处理器包括: 布置在流水线中的多个图像处理模块; 输入端口,用于接收针对多个模块的配置参数; 图像管控制器,用于解码配置参数;以及 影像寄存器,用于将配置参数应用至多个模块,从而改变模块的图像处理特性。
20.根据权利要求1所述的数字信号处理器,其中流水线是用于处理来自存储器的图像数据的存储器流水线或用于处理来自数码相机的图像数据的相机流水线。
21.一种用于配置流水线预处理器中的模块的系统,所述系统包括: 第一输入端口,用于从处理器接收第一控制信号; 第二输入端口,用于从存储器接收第二控制信号; 仲裁单元,用于解决第一和第二控制信号之间的冲突;以及 控制器,用于解码第一和第二控制信号并且将从中导出的配置参数应用至模块。
22.根据权利要求1所述的系统,进一步包括接口,用于解码第一控制输入。
23.根据权利要求1所述的系统,其中所述接口是增强外围总线("APB")接口。
24.根据权利要求1所述的系统,其中第一控制信号是存储器映射寄存器("MMR")输入。
25.根据权利要求1所述的系统,其中第二控制信号是从一个或多个直接存储器访问("DMA")通道接收的。
26.根据权利要求1所述的系统,其中第一控制信号控制第一模块子组,同时第二控制输入控制第二模块子组。
27.根据权利要求1所述的系统,其中一个模块由第一和第二控制信号两者控制。
28.根据权利要求1所述的系统,进一步包括影像寄存器,用于接收解码的第一和第二控制信号中的一个。
29.根据权利要求1所述的系统,其中影像寄存器对至少一个模块中的应用寄存器进行写入从而将配置参数应用至该模块。
30.根据权利要求1所述的系统,其中仲裁单元在冲突事件中暂缓第二控制信号。
31.一种用于配置流水线预处理器中的模块的方法,所述方法包括: 从处理器接收第一控制信号; 从存储器接收第二控制信号; 解决第一和第二控制信号之间的冲突;以及 解码第一和第二控制信号,并且将从中导出的配置参数应用至所述模块。
32.根据权利要求1所述的方法,进一步包括利用从第一或第二控制信号中的一个导出的信息填充影像寄存器。
33.根据权利要求1所述的方法,进一步包括根据影像寄存器的内容配置模块。
34.根据权利要求1所述的方法,进一步包括在模块的配置期间忽略第一控制信号。
35.根据权利要求1所述的方法,进一步包括在冲突事件中暂缓第二控制信号。
36.根据权利要求1所述的方法,其中第二控制信号是从一个或多个DMA通道接收的。
37.根据权利要求1所述的方法,其中第一控制信号控制第一模块子组,同时第二控制输入控制第二模块子组。
38.根据权利要求1所述的方法,其中一个模块由第一和第二控制信号两者控制。
39.一种数字信号处理器,包括具有可配置模块的流水线视频预处理器,所述流水线视频预处理器包括: 第一输入端口,用于从数字信号处理器接收第一控制信号; 第二输入端口,用于从存储器接收第二控制信号; 仲裁单元,用于解决第一和第二控制信号之间的冲突;以及 控制器,用于解码第一和第二控制信号,并且将从中导出的配置参数应用至所述模块。
40.根据权利要求1所述的数字信号处理器,其中第一控制信号是MMR输入,第二控制信号是DMA输入。
41.一种用于编程流水线视频预处理器中的可重新配置的模块的系统,所述系统包括: 输入端口,用于经由直接存储器访问("DMA")通道从存储器接收块控制结构; 图像管控制器,用于(i)解码块控制结构中的块控制报头以及用于(ii)根据解码后的块控制报头选择块控制结构中的块控制字;以及 影像寄存器,用于接收块控制字并将块控制字中的参数应用至可重新配置的模块中的应用寄存器,从而调节模块的参数。
42.根据权利要求1所述的系统,其中块控制报头包括唯一地识别模块的块地址。
43.根据权利要求1所述的系统,其中输入端口进一步接收包括多个块控制结构的块控制列表。
44.根据权利要求1所述的系统,其中块控制报头包括字计数,字计数包括块控制结构的数量。
45.根据权利要求1所述的系统,其中块控制结构的顺序对应于流水线中模块的顺序。
46.根据权利要求1所述的系统,其中块控制报头包括指示哪个应用寄存器接收块控制字的偏移。
47.根据权利要求1所述的系统,其中偏移等效于模块中的应用寄存器的存储器映射寄存器("MMR")地址和模块的MMR基地址之间的差异。
48.根据权利要求1所述的系统,其中块控制报头包括多路复用器选择信息,用于指定模块如何连接第二模块。
49.根据权利要求1所述的系统,其中用于应用寄存器的块控制字的偏移对应于相同应用寄存器在存储器映射寄存器("MMR")空间中的地址。
50.根据权利要求1所述的系统,其中块控制字的偏移是通过使地址偏移而获得的。
51.一种用于编程流水线视频预处理器中的可重新配置的模块的方法,所述方法包括: 经由直接存储器访问("DMA")通道从存储器接收块控制结构; 解码块控制结构中的块控制报头; 根据解码后的块控制报头选择块控制结构中的块控制字;以及 将块控制字中的参数应用至可重新配置的模块中的应用寄存器,从而调节模块的参数。
52.根据权利要求1所述的方法,其中解码块控制报头包括解码唯一地识别模块的块地址。
53.根据权利要求1所述的方法,进一步包括接收包括多个块控制结构的块控制列表。
54.根据权利要求1所述的方法,其中解码块控制报头包括解码字计数,字计数包括块控制结构的数量。
55.根据权利要求1所述的方法,进一步包括将每个块控制结构中的块控制字应用至多个模块的每一个。
56.根据权利要求1所述的方法,其中块控制结构的顺序对应于管模块的顺序。
57.根据权利要求1所述的方法,进一步包括将块控制字中的参数用至多路复用器选择,从而配置两个模块之间的连接。
58.根据权利要求1所述的方法,进一步包括根据块控制报头中的态计数从模块读取状态寄存器。
59.一种数字信号处理器,包括具有多个可重新配置的模块的流水视频预处理器,所述流水线视频预处理器包括: 输入端口,用于经由直接存储器访问("DMA")通道从存储器接收块制结构; 图像管控制器,用于(i)解码块控制结构中的块控制报头以及用于(根据解码后的块控制报头选择块控制结构中的块控制字;以及 影像寄存器,用于接收块控制字并将块控制字中的参数应用至可重配置的模块中的应用寄存器,从而调节模块的参数。
60.根据权利要求1所述的数字信号处理器,其中用于应用寄存器块控制字的偏移对应于相同应用寄存器在存储器映射寄存器("MMR")空中的地址。
61.一种用于编程流水线视频预处理器中的可重新配置的模块的统,所述系统包括: 用于处理图像数据的可重新配置的硬件模块; 用于存储更新的模块参数组的影像寄存器; 图像管控制器,用于将更新的参数组应用至模块;以及 模块内的应用寄存器,用于接收更新的参数组,其中模块中的不同流水线级根据数据边界通过流水线的传播在不同时间接收更新的参数组。
62.根据权利要求1所述的系统,其中更新的模块参数组是从处理器或直接存储器访问("DMA")通道中的一个接收的。
63.根据权利要求1所述的系统,其中图像数据包括图像帧,数据边界包括帧边界。
64.根据权利要求1所述的系统,其中更新的模块参数组被应用至连续序列的图像帧或固定数量的图像帧之一。
65.根据权利要求1所述的系统,其中利用更新的模块参数组处理的图像数据被相应地标记。
66.根据权利要求1所述的系统,其中利用DMA通道或处理器输出来输出标记信息。
67.根据权利要求1所述的系统,其中利用泄漏命令冲刷流水线。
68.根据权利要求1所述的系统,其中在冲刷流水线时改变所述模块和第二模块之间的连接。
69.根据权利要求1所述的系统,其中模块在更新的参数组已经被应用至其流水线的每级时申明控制信号。
70.根据权利要求1所述的系统,其中下游模块开始将更新的参数组应用至控制信号的申明。
71.一种用于编程流水线视频预处理器中的可重新配置的模块的方法,所述方法包括: 在影像寄存器中接收用于处理图像数据的针对模块的更新的参数组; 发送更新的参数组至模块;以及 根据数据边界通过流水线的传播在不同时间点将更新的参数组应用至模块中的不同流水线级。
72.根据权利要求1所述的方法,其中图像数据包括图像帧,数据边界是帧边界。
73.根据权利要求1所述的方法,进一步包括将更新的模块参数组应用至连续序列的图像帧或固定数量的图像帧之一。
74.根据权利要求1所述的方法,进一步包括标记利用更新的模块参数组处理的图像数据。
75.根据权利要求1所述的方法,进一步包括利用DMA通道或处理器输出来输出标记的图像数据。
76.根据权利要 求1所述的系统,进一步包括根据泄漏命令冲刷流水线。
77.根据权利要求1所述的系统,进一步包括在冲刷流水线时改变所述模块和第二模块之间的连接。
78.一种数字信号处理器,包括具有多个可重新配置的模块的流水线视频预处理器系统,流水线视频预处理器包括: 用于处理图像数据的可重新配置的硬件模块; 用于存储更新的模块参数组的影像寄存器; 图像管控制器,用于将更新的参数组应用至模块;以及 模块内的应用寄存器,用于接收更新的参数组,其中模块中的不同流水线级根据数据边界通过流水线的传播在不同时间接收更新的参数组。
79.根据权利要求1所述的数字信号处理器,其中更新的模块参数组是从数字信号处理器或直接存储器访问("DMA")通道中的一个接收的。
80.根据权利要求1所述的数字信号处理器,其中图像数据包括图像帧,数据边界包括帧边界。
【文档编号】G06T1/20GK104054108SQ201280050534
【公开日】2014年9月17日 申请日期:2012年10月14日 优先权日:2011年10月14日
【发明者】S·G·拉奥, M·迈耶-庞德萨克, B·库斯塔特斯彻, S·卡泽哈伊利, G·穆特乌萨米, R·布希, G·卡拉纳姆, P·桑杰弗, B·勒纳 申请人:美国亚德诺半导体公司