快速滤波的制作方法

文档序号:17290136发布日期:2019-04-03 03:53阅读:352来源:国知局
快速滤波的制作方法

本公开一般涉及使用诸如现场可编程门阵列(fpga)的集成电路来滤波。更具体来说,本公开涉及被实现用于集成电路(例如,fpga)的基于winograd的滤波操作。

本部分旨在向读者介绍技术的各种方面,其可涉及下面描述的和/或要求保护的本公开的各种方面。相信此讨论有助于给读者提供用于促进对本公开的各种方面的更佳理解的背景信息。因此,应理解,这些陈述要就此而论并且不作为对现有技术的供认来阅读。

集成电路(ic)采取各种形式。例如,现场可编程门阵列(fpga)是旨在作为相对地通用装置的集成电路。fpga可包括可在制造之后被编程(例如,被配置)成提供fpga被设计成支持的任何期望的功能性的逻辑。因此,fpga包含可编程逻辑或逻辑块,其可根据设计者的设计,被配置成在fpga上执行各种功能。例如,fpga可被用于对数据滤波。然而,传统的滤波针对每个计算的输出,利用与输入的数量乘滤波器的数量相等的乘法操作。例如,利用三个滤波器元素对四个输入进行滤波导致针对两个输出的六个乘法。此类乘法操作极大地导致增大的处理时间,从而降低滤波过程的效率。



技术实现要素:

下面阐述本文公开的某些实施例的概括。应理解,呈现这些方面仅用于给读者提供这些某些实施例的简要概括并且这些方面不旨在限制本公开的范围。实际上,本公开可涵盖可能在下面没有阐述的各种方面。

本实施例涉及用于使用滤波电路增强机器实现的程序的性能的系统、方法和装置。滤波电路可实现快速滤波方法,其利用预处理来降低在运行时间执行的乘法操作的数量以增大滤波效率。

对上面提到的特征的各种细化(refinement)可关于本公开的各种方面而存在。也可在这些各种方面中也结合另外的特征。这些细化和额外特征可单独或以任何组合存在。例如,下面讨论的关于所图示的实施例中的一个或多个实施例的各种特征可独自或以任何组合被结合到本发明的任何以上描述的方面中。上面呈现的简要概括仅旨在使读者熟悉本公开的实施例的某些方面和上下文,而不对所要求保护的主题进行限制。

附图说明

在阅读以下详细描述时以及在参考附图时,可更好地理解本公开的各种方面,在附图中:

图1是根据实施例的利用快速滤波电路的系统的框图;

图2是根据实施例的可包括有助于实现图1的快速滤波电路的逻辑的可编程逻辑装置的框图;

图3是根据实施例的使用原始滤波的滤波器的框图;

图4是根据实施例的用于使用中间滤波器元素进行快速滤波的过程的流程图;

图5是图示根据实施例的可实现图4的过程的滤波器的框图;

图6是图示根据实施例的可实现包括处理块的图4的过程的滤波器电路的示意图;

图7是根据实施例的从滤波器元素导出滤波器中间元素的处理块的框图;

图8是根据实施例的使用转换函数从输入值生成中间输入值的处理块的框图;

图9是根据实施例的使用输出转换函数从中间值生成输出的处理块的框图;以及

图10图示根据实施例的使旁路处理块能够实现简单叉积的旁路电路。

具体实施方式

下面将描述一个或多个特定的实施例。在努力提供这些实施例的简明描述时,说明书中没有描述实际实现的全部特征。应理解,在任何这样的实际实现的开发中,如在任何工程或设计规划中,必须进行众多实现特定的决定以实现开发者的特定目标,诸如服从与系统相关的和与商业相关的约束,这可从一个实现到另一个实现而变化。此外,应理解,这样的开发努力可能是复杂和耗时的,但对于具有本公开的益处的本领域技术人员,仍然将是设计、制作和制造的例行任务。

如下面进一步详细讨论的,本公开的实施例一般涉及用于使用滤波技术来实现快速滤波的电路,所述滤波技术使用转换函数来降低乘法操作的数量。例如,快速滤波可采用winograd转换来使用预处理生成中间滤波结果,其然后使用比在滤波器元素与输入元素的直截了当、原始点积中使用乘法操作的更少的乘法操作被相乘在一起。

快速滤波是现场可编程门阵列卷积神经网络中的核心操作。电路使用转换函数将滤波器和输入数据转换成中间滤波器和输入数据结果。转换函数可至少部分基于多个滤波器元素和输出元素来确定中间滤波器结果。例如,转换函数可包括winograd转换。使用点积(元素智能乘法(element-wisemultiplication))将这些中间滤波器和输入数据结果相乘在一起。这些过程的一部分可在芯片上执行以保持带宽消耗较低。

在一些实施例中,电路可被动态地配置。例如,基于中间值的滤波技术可被旁路来支持基础的点积操作。此外,可用不同的转换函数但使用相同的一般电路来支持不同的滤波器大小和尺寸。

虽然主要在诸如具有现场可编程门阵列(fpga)构造的可编程逻辑装置的可重配置装置的上下文中描述本公开的技术,但这意在说明而非限制。实际上,可在其它集成电路中实现本公开的滤波电路。例如,诸如专用集成电路(asic)、微处理器、存储器装置、收发器之类的其它类型的集成电路也可使用本公开的快速滤波电路。

考虑到前文,图1图示包括用于滤波操作的电路的系统10的框图。如上面讨论的,设计者可在诸如可重配置集成电路12(诸如现场可编程门阵列(fpga))的集成电路上实现功能性。设计者可使用诸如由alteratm所作的某版本的quatus的设计软件14来实现要被编程到ic12上的电路设计。设计软件14可使用编译器16来生成对集成电路12编程的低级电路设计内核程序18,其有时也称作程序对象文件或比特流。也就是说,编译器16可给ic12提供表示电路设计的机器可读指令。例如,ic12可接收一个或多个内核程序18,其描述应被存储在ic中的硬件实现。在一些实施例中,可使用有限脉冲响应(fir)滤波器、无限脉冲响应(iir)滤波器、线性滤波器、非线性滤波器、时变滤波器、时不变滤波器和/或其它适当的滤波电路来在集成电路12上实现滤波操作20。如下面将更详细描述的,滤波器的直接应用可比预处理滤波包括在运行时间的更多乘法操作,从而增大滤波时延。

现在转向ic12的更具体的讨论,图2图示ic装置12,其可以是诸如现场可编程门阵列(fpga)40的可编程逻辑装置。出于此示例的目的,fpga40称作fpga,然而应理解,装置可以是任何类型的可编程逻辑装置(例如,专用集成电路和/或专用标准产品)。如示出的,fpga40可具有输入/输出电路42,其用于驱使信号离开fpga40并且用于经由输入/输出引脚44从其它装置接收信号。诸如全局和局部垂直和水平的导线和总线的互连资源46可被用于在fpga40上路由信号。另外,互连资源46可包括固定互连(导线)和可编程互连(即,相应的固定互连之间的可编程连接)。可编程逻辑48可包括组合和顺序逻辑电路。例如,可编程逻辑48可包括查找表、寄存器和多路复用器。在各种实施例中,可编程逻辑48可被配置成执行定制的逻辑功能。与互连资源关联的可编程互连可被认为是可编程逻辑48的一部分。如下面进一步详细讨论的,fpga40可包括能够实现fpga40的部分重配置的可适配逻辑,使得可在fpga40的运行时间期间添加、移除和/或交换内核。

诸如fpga40的可编程逻辑装置可在可编程逻辑48内包含可编程元件50。例如,如以上讨论的,设计者(例如,客户)可对可编程逻辑48编程(例如,配置)以执行一个或多个期望的功能(例如,滤波操作)。举例来说,一些可编程逻辑装置可通过使用掩模编程布置来配置它们的可编程元件50被编程,这在半导体制造期间被执行。其它可编程逻辑装置在已完成半导体制作操作之后被配置,诸如通过使用电气编程或激光编程来对它们的可编程元件50编程。一般来说,可编程元件50可基于任何适当的可编程技术,诸如熔丝、反熔丝、电气可编程只读存储器技术、随机存取存储器单元、掩模编程的元件等等。

很多可编程逻辑装置被电气编程。通过电气编程布置,可编程元件50可包括一个或多个逻辑元件(线、门、寄存器等)。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到存储器52中。在一个实施例中,存储器52可被实现成随机存取存储器(ram)单元。本文描述的基于ram技术的存储器52的使用旨在仅作为一个示例。此外,可遍及fpga40来分布存储器52(例如,作为ram单元)。此外,因为这些ram单元在编程期间加载有配置数据,它们有时称作配置ram单元(cram)。存储器52可提供对应的静态控制输出信号,其控制可编程逻辑48中的关联逻辑组件的状态。例如,在一些实施例中,输出信号可被施加到可编程逻辑48内的金属氧化物半导体(mos)晶体管的门。在一些实施例中,可编程元件50可包括dsp块,其实现常见的操作,诸如使用dsp块实现的滤波操作和/或浮点加法器操作。

可使用任何适当的架构来组织fpga40的电路。作为示例,fpga40的逻辑可被组织更大可编程逻辑区的一系列的行和列中,更大可编程逻辑区的一系列的行和列中的每个可包含多个更小逻辑区。可由诸如关联的垂直和水平导体的互连资源46来互连fpga40的逻辑资源。例如,在一些实施例中,这些导体可包括实质跨过全部的fpga40的全局导线、诸如跨过部分的fpga40的二分线或四分线的部分线、具体长度(例如,足以互连若干逻辑区域)的交错线、更小的局部线或任何其它适当的互连资源布置。此外,在另外的实施例中,可在其中多个大区被互连以形成又更大部分的逻辑的更多级或层中布置fpga40的逻辑。此外,一些装置布置可使用除行和列之外的方式来布置的逻辑。

如以上讨论的,fpga40可允许设计者创建能够运行和执行定制功能性的定制设计。每个设计可具有要在fpga40上被实现的其本身的硬件实现。这些硬件实现可包括使用dsp块可编程元件50的浮点操作和/或其它操作。

图3图示典型的滤波电路100的示意图。滤波电路100是使用三个滤波器元素102的1x3滤波器。滤波器元素102被用于对输入数据元素104滤波。特定地,使用乘法器106将每个滤波器元素102与对应的输入数据元素104相乘,其中每个输出108的结果使用换算电路110相加。此外,每个输出元素108是滤波器元素102和输入104的数量的函数。例如,当输出元素108包括两个元素时,可使用下面的等式来确定输出:

(等式1)

(等式2),

其中,yn是索引的输出元素108,in是索引的输入元素104以及fn是索引的滤波器元素102。如先前提到的,乘法操作显著导致滤波时延从而降低滤波效率。滤波电路100的方法利用某一数量的乘法操作得到结果,其中乘法操作的数量可使用下面的等式来计算:

(等式3)

其中,nmult是乘法操作的数量,nf_ele是滤波器元素的数量,并且noutputs是输出元素的数量。

代替将滤波器元素与输入元素原始相乘,预处理和/或后处理可被用于降低乘法操作的数量从而增加滤波器效率。图4图示用于对数据滤波的过程120,其包括在集成电路接收滤波器数据(框122)。接收滤波数据可包括接收滤波器元素和/或接收滤波器元素的数量的指示。集成电路也接收输入数据(框124)。接收输入数据可包括接收输入元素和/或接收输入元素的数量的指示。基于滤波器数据元素的数量、输入数据元素的数量和/或输出元素的数量来确定转换函数的集合(框126)。转换函数指示要如何组合输入和滤波数据来形成输出数据。转换函数可被存储在查找表(lut)中,查找表(lut)存储根据输入数据元素的数量、滤波器数据元素的数量和/或输出数据元素的数量的转换函数的集合。例如,可针对输入数据元素的数量、滤波器数据元素的数量和/或输出数据元素的数量,将winograd快速滤波转换等式存储在lut中。另外或备选地,可在接收输入数据元素的数量、滤波器数据元素的数量和/或输出数据元素的数量之后使用此类数量来计算转换函数。例如,可基于输入数据元素的数量、滤波器数据元素的数量和/或输出数据元素的数量来计算winograd转换。

使用所确定的转换等式,可确定中间滤波器元素(框128)。特定地,从在所确定的中间传递函数中使用的滤波器元素的值来确定中间滤波器元素。使用中间滤波器元素中的一个或多个,可计算滤波器输出元素(框130)。如果存在额外的输出(框132),则针对要计算的每个输出,可计算滤波器输出元素。一旦已计算了全部的输出,则输出滤波器元素是作为已被转换的向量化的滤波器结果的输出(框134)。在一些实施例中,向量可以是1x1、1x2、1x3、1x4或更长长度的向量。

在一些实施例中,过程120的至少一部分可从集成电路芯片被卸载到执行过程120的至少一部分的片下处理器(例如,主机计算机的cpu)。例如,lut中存储的转换函数可以是之前由主机计算机计算的函数。此外,转换函数可至少部分被传递到集成电路芯片。例如,中间滤波器元素可离开芯片被预处理。

图5图示与包括预处理元件142的滤波电路100相似的滤波电路140的示意图。可使用软件、硬件或其某组合来实现预处理元件142。预处理元件142包括滤波器元素预处理144和输入元素预处理146。滤波器元素预处理144和输入元素预处理146基于设置的或确定的转换函数来计算或存储中间元素。例如,当存在三个滤波器元素102和两个输出元素108时,可使用下面的等式来计算两个输出元素108:

(等式4)

(等式5),

其中,每个xn是可基于输入元素104和滤波器元素102来计算的中间值。例如,可从下面相应的等式来计算x0-x3:

(等式6)

(等式7)

(等式8)

(等式9)

等式的滤波器部分可被加载(例如,预加载)到滤波器元素预处理144,并且等式的输入部分可被加载到输入元素预处理146。然后可由乘法器106将这些存储的元素相乘在一起来创建相应的中间元素,其然后使用换算电路110相加或相减(例如,取反并且相加)在一起来形成输出108。在一些实施例中,中间元素的至少一些可被存储在存储器(例如,寄存器)中以便再利用。例如,在所图示的实施例中,x1和x2可被存储在存储器中以便在计算两个输出时再利用。

注意,使用中间元素的滤波过程中使用的乘法的数量包括四个乘法而不是先前讨论的原始滤波方法中使用的六个乘法,这在乘法操作缩减中提供33%的增益。虽然部署了一些预处理和后处理,但对乘法操作的节约是显著的,同时,可通过由于较少的乘法操作而增加的滤波时延效率的量来补偿预处理和后处理。此外,利用中间元素的滤波过程可被扩展成更大滤波器和/或多维(例如,2d)滤波器来进一步降低乘法操作的数量。在一些实现中,诸如寄存器、多路复用器或时钟路径的额外的电路可被用于管理所描述的计算中的值的保留和/或值的定时。

此外,可在芯片上有效率地实现预处理元件142。另外或备选地,预处理元件142可至少部分脱离芯片被实现以节约资源。然而,被传递到具有滤波电路140的集成电路的更多数据消耗更多带宽。

另外,包括乘法器106和换算电路110的处理电路148可被配置成在运行时间进行简单点积来增加灵活性而不降低通过电路进行的简单点积操作的效率。例如,如下面讨论的多路复用器可被用于将预处理元件142旁路来产生仅简单的叉积而不滤波。

图6图示滤波电路160的实施例,其使用六个滤波器元素164对输入六个输入元素162滤波来产生输出166。输出166是向量化的输出。输入元素162被提交到输入元素预处理电路168来产生中间输入元素。类似地,滤波器元素164被提交到滤波器元素预处理电路170来产生中间滤波器元素。使用乘法器172将中间输入元素各自与相应的中间滤波器元素相乘来产生中间元素。在后处理174中后处理中间元素来实现向量化的输出。

图7图示可被用于从滤波器元素184导出滤波器中间元素182的转换电路180的实施例。所图示的实施例包括对应于具有四个输出的1x3滤波器(例如,f(4,3)滤波器)的转换。然而,这样的转换电路180可被应用于任何数量的滤波器元素和输出。实际上,也可在具有不同的转换函数的多维滤波器上进行这样的转换。在一些实施例中,对于集成电路12,可在管芯上实现转换电路180。另外或备选地,可脱离管芯预计算转换的至少一部分。例如,可使用主机计算机在转换电路180中设置由转换电路180使用的转换算法。在一些实施例中,可在可编程逻辑中实现转换电路180。图8图示与转换电路180类似的转换电路190的实施例,转换电路190可被用于从输入元素194导出输入中间元素192。图9图示与转换电路180类似的后处理电路200的实施例,后处理电路200可被用于从中间输出元素204导出输出元素202。中间输出元素204可各自从相应的中间滤波器元素182与相应的中间输入元素192的乘法被计算。

如先前讨论的,当不使用滤波时,可将转换电路180、190和/或200旁路。图10图示具有旁路多路复用器212a的滤波系统210的实施例,旁路多路复用器212a能够实现转换电路214的旁路,使得输出值218(例如,中间滤波器值)与某输入值216(例如,滤波器值)相同。所图示的实施例适合于滤波器值,但是类似的技术可被应用于输入元素和输出元素。这些旁路允许简单的叉积和/或不采用中间滤波器技术(例如,winograd转换)的滤波的使用。

虽然本公开中阐述的实施例可易受各种修改和备选形式的影响,但已通过示例在附图中示出并且已在本文中详细描述了特定实施例。然而,应理解,本公开不旨在限于所公开的具体形式。本公开要覆盖落入如由随附的权利要求定义的本公开的精神和范围内的所有修改、等价和备选。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1