CN105931278A - 用于二维块比特流压缩和解压的方法和装置 - Google Patents
用于二维块比特流压缩和解压的方法和装置 Download PDFInfo
- Publication number
- CN105931278A CN105931278A CN201610109226.4A CN201610109226A CN105931278A CN 105931278 A CN105931278 A CN 105931278A CN 201610109226 A CN201610109226 A CN 201610109226A CN 105931278 A CN105931278 A CN 105931278A
- Authority
- CN
- China
- Prior art keywords
- block
- data stream
- fingerprint
- bit
- piece
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17758—Structural details of configuration resources for speeding up configuration or reconfiguration
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一个实施例涉及用于压缩配置数据的数据流的方法,配置数据用于电配置电可编程半导体器件,电可编程半导体器件具有用于核资源的阵列的二维(2D)块结构。块间和块内变换可应用于数据流以获得可短于原始数据和/或比原始数据更可压缩的2D变换数据流。随后,可应用考虑配置数据作为比特的序列(并且不考虑2D块结构)的一维(1D)压缩以得到最终的压缩数据序列,其流动到电可编程半导体器件。另一实施例涉及用于解压由半导体器件接收的配置数据的压缩数据流的方法。还公开了其他实施例、方面和特征。
Description
技术领域
本发明涉及集成电路的电子结构。
背景技术
可编程逻辑器件(“PLD”)是数字、用户可配置的集成电路,其用于实施定制逻辑功能。PLD由于其针对用户的低先期投入成本和多功能性的综合优点而具有十分广泛的应用。为了本文的描述,术语PLD包括由终端用户配置的任何数字逻辑电路,并且包括可编程逻辑阵列(“PLA”)、现场可编程门阵列(“FPGA”)以及可擦除且复杂的PLD。
PLD的基本构件块是能够对多种输入变量执行逻辑功能的逻辑元件。PLD的逻辑元件可以以例如8组来配置,以形成较大的逻辑阵列块(“LAB”)。多个LAB(和其他功能块,诸如存储块、数字信号处理块等)通常被配置在PLD核内。块可以通过水平和垂直互连通道分开。LAB的输入和输出可以可编程地连接至水平和垂直互连通道。
现场可编程门阵列器件是逻辑或混合信号器件,其可以被配置为提供用户定义的功能。FPGA通常通过从配置流供应设备接收数据来进行配置。该数据可以称为配置比特流或编程对象文件。该比特流打开和关闭形成在FPGA上的开关,从而进行期望的电连接。
发明内容
一个实施例涉及用于压缩配置数据的数据流的方法,配置数据用于电配置电可编程半导体器件,电可编程半导体器件具有用于核资源的阵列的二维(2D)块结构。块间和块内变换可应用于数据流以获得2D变换数据流。随后,可应用考虑配置数据作为比特的序列(并且不考虑2D块结构)的一维(1D)压缩以得到最终的压缩数据序列,其流动到电可编程半导体器件。
另一实施例涉及用于解压压缩数据流以再生配置数据的原始数据流的方法,其中配置数据用于电配置电可编程半导体器件。该方法可以由半导体器件中的解压和逆变换模块来执行。1D解压被应用于最终的压缩数据流以获得1D解压数据流。然后,将2D逆变换(即,2D解压)应用于1D解压数据流以再创建原始数据流。
另一实施例涉及用于压缩配置数据的数据流的系统,其中配置数据用于电配置电可编程半导体器件。该系统包括:变换和压缩模块,应用2D压缩(2D变换)和1D压缩;以及配置流供应设备,将变换和压缩数据流传输至电可编程半导体器件。
另一实施例涉及包括核资源的阵列的半导体器件,其具有二维块结构以及解压和逆变换模块。解压和逆变换模块至少通过以下步骤再生配置数据的原始数据流:接收来自配置流供应设备的压缩数据流;向压缩数据流应用1D解压以获得1D解压数据流;以及向1D解压数据流应用2D逆变换(2D解压)以得到对应于原始数据流的最终解压数据流。
还公开了其他实施例、方面和特征。
附图说明
图1是根据本发明的实施例的可以电配置的示例性电可编程半导体的简化部分框图。
图2是根据本发明的实施例的用于电配置可编程逻辑器件的系统的部件的框图。
图3是根据本发明实施例的变换和压缩用于电配置可编程逻辑器件的数据流的示例性方法的流程图。
图4示出了根据本发明实施例的用于核资源的配置数据的示例性块结构。
图5示出了根据本发明实施例的基于图4中的块结构的示例性块指纹库。
图6示出了根据本发明实施例的用于图4中的块结构的配置数据的示例性块比特图表示。
图7示出了根据本发明实施例的应用块内变换(intra-blocktransformation)的核配置数据和应用块内变换的核配置数据的块。
图8A和图8B分别示出了根据本发明实施例的块内变换之前和之后的配置数据的示例性块。
图9是根据本发明实施例的通过电可编程半导体设备解压和逆变换数据流的示例性方法的流程图。
具体实施方式
复杂的FPGA设备使用充分量的配置数据来将所有用户期望的功能编程为具体的硅器件。该数据集(由于历史原因通常被称为比特流)实际上用于在门层级处配置和编程FPGA硬件的多个资源。由于该数据集的规模大小随着每一代新的可编程器件而保持增长,所以其成为对FPGA器件施加可用性限制的因素,不仅因为存储该数据所要求的非易失性存储器的增加需求,而且还因为在FPGA器件上读取配置数据所要求的附加时间,导致更多的配置时间。
配置数据的特征在于呈现零的长序列,通常对应于器件内不使用的硬件资源。先前的方法利用这种类型的冗余。例如,加利福利亚圣何塞的Altera公司使用压缩方法,其中在先前的控制字中用“0”代替每个空值的半字节(等于0000);同时没有空值的半字节由“1”表示,跟随实际的半字节值。该方法的压缩率被限制于四倍的理论最大值。根据本公开,这种压缩方法是一维(1D)压缩方法的示例,因为其不要求关于集成电路中的电路的二维块结构的信息。
本公开提供了创新的方法来压缩和解压配置数据。目前公开的方法利用FPGA核的比特定向的二维块结构来实现用于真实FPGA设计的压缩率的增加。目前公开的方法还可应用于其他类似构造的电可编程半导体器件。
示例性电可编程半导体器件
图1是根据本发明实施例的可电配置的示例性电可编程半导体的简化部分框图。在这种情况下,示例性可编程器件是现场可编程门阵列(FPGA)1。应该理解,本发明的实施例可用于各种类型的集成电路,诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、复杂可编程逻辑器件(CPLD)、可编程逻辑阵列(PLA)和其他电可编程半导体器件。
FPGA 1在其“核”内包括可编程逻辑阵列块(或LAB)2的二维阵列,它们由可变长度和速度的列和行互连导体的网络来互连。LAB 2包括多个(例如,10)逻辑元件(或LE)。
LE是用于有效实施用户限定的逻辑功能的可编程逻辑块。FPGA具有可被配置为实施各种组合和序列功能的多个逻辑元件。逻辑元件访问可编程互连结构。可编程互连结构可被编程为以几乎任何期望的结构来互连逻辑元件。
FPGA 1还可以包括分布式存储结构,其在整个阵列中被提供为包括各种尺寸的随机存取存储器(RAM)块。例如,RAM块包括块4和块6。这些存储块还可以包括移位寄存器和FIFO缓冲器。
FPGA 1可进一步包括数字信号处理(DSP)块,其例如可以实施具有加法或减法特征的乘法器。输入/输出元件(IOE)12在本示例中位于芯片的外围周围,支持多种单端和差分输入/输出标准。每个IOE 12都耦合至FPGA 10的外部端子(例如,管脚)。
用于半导体器件的电配置的系统
图2是根据本发明实施例的电可编程半导体器件的电配置的系统的部件的框图。如图所示,系统200可包括电可编程半导体器件230、配置流供应设备220和计算机系统210。
计算机系统210可以包括用于配置半导体器件230的原始配置数据212。此外,计算机系统210可以包括变换和压缩模块214。变换和压缩模块214可以通过计算机系统210的处理器来执行以变换和压缩原始配置数据212。如本公开所描述的,变换和压缩可以包括2D变换(本文也称为2D压缩),随后为1D压缩。
最终压缩的配置数据222可以如数据流的序列形式从计算机系统210发送至配置流供应设备220。因此,在本公开中,配置数据序列经常被称为配置数据流。
配置流供应设备220例如可以是微控制器,其使用嵌入式程序来配置半导体器件230或者可用于自动地在上电时配置半导体器件230的开机PROM。在开发环境中,配置流供应设备220可以是计算机系统210(即,可以不需要分离的配置流供应设备220)。
最终压缩的配置数据222可以从配置流供应设备220流动到电可编程半导体器件230。例如,电可编程半导体器件230可以是FPGA或类似器件。有利地,最终压缩的配置数据222的尺寸可以基本小于原始配置数据212。
在电可编程半导体器件230内,解压和逆变换模块232可用于解压和逆变换最终压缩的配置数据222,来得到原始配置数据212。解压和逆变换可以包括1D解压和2D逆变换(本文也称为2D解压)。然后,原始配置数据212可用于电配置半导体器件230。
配置数据流的变换和压缩
图3是根据本发明实施例的变换和压缩用于电配置可编程逻辑器件的数据流的示例性方法300的流程图。方法300例如可以通过图2的变换和压缩模块214来执行。
根据块302,可以得到用于配置电可编程半导体器件的配置数据。例如,配置数据可以是图2的原始配置数据212。
作为这些器件的复杂度的结果,现代FPGA中的配置数据包括多个数据部分。典型的配置数据文件包括与外围资源(例如,输入-输出电路、高速收发器等)相关联的部分和描述核资源的二维(2D)阵列的配置的部分。
根据步骤304,可以得到与核资源的2D阵列相关联的配置数据的部分。如下所述,方法300在应用1D压缩之前变换这些核部分。
根据步骤306,确定用于核资源的2D阵列的2D块结构。这些2D块结构在本文可称为“块描述符”或“BD”。
在图4中示出了用于核资源的示例性2D块结构。如图4所示,块可以是多种类型,诸如块类型A(包括块A0、A1、A2、A4和A5)、块类型B(包括块B0、B1、B2、B3、B4和B5)以及块类型C(包括块C0、C1、C2、C3、C4和C5)。
注意,可以选择块定义,使得不同的块类型可具有不同的宽度(如图4所示),或者使得不同的块类型共享相同的宽度(未示出)。在后一种情况下,2D块结构的列可以是均匀的宽度。在任一种情况下,块定义(BD)以发送给解压和逆变换模块232的或者已经被解压和逆变换模块232知道的压缩形式来描述。
可以针对BD中的每种块类型执行包括步骤308至312的步骤序列。根据步骤308,可以选择块类型。例如,块类型A可以首先被选择,然后稍后可以选择块类型B和C。
根据步骤309,所选类型的块的“指纹”(比特图)被比较,并且具有相同(或近似相同)指纹的块被成组到一起(即,指定为“相同”块)。块指纹的可重复出现的一个明确示例是表示FPGA IP资源块类型的默认未使用状态的块。
在一个实施例中,只有具有相同指纹(比特图)的块被认为是“相同”块或者成组到一起。例如,在图4中,三个块A0可具有相同的比特图。
在另一实施例中,具有非常类似但稍微不同指纹的块(即,“同级”块)也可以由于具有“相同”指纹而成组到一起。例如,在图4中,三个块A0可以是同级而不是严格相同。在这种情况下,同级(变化数据)之间的小差异也可以被确定并存储。例如,如果两个块之间只有一比特或少量比特(或字节)不同,则用于第二(同级)块的变化数据可以包括与第一块相比不同的这些比特(或字节)的位置。
根据步骤310,可以针对所选块类型的块的集合内的每个块指纹(包括同级,如果可应用的话)确定出现计数。例如,在图4中,对于块类型A,用于块A0的出现计数为3,对于块A1来说为2,对于块A2来说为1,对于块A4来说为1,以及对于块A5来说为1。
根据步骤312,以出现计数的降序来排列块指纹,以最频繁出现的排列在第一比特。例如,在图4中,对于块类型A,排序应该是第一(排列=1)块A0、第二(排列=2)块A1、第三(排列=3)块A2、第四(排列=4)块A4和第五(排列=5)块A5。注意,块A2、A4和A5均具有1的出现计数,使得它们之间的排序可以确定为预定顺序(例如,通过出现的顺序)。
根据步骤314,可以确定是否将处理BD中的更多块类型。如果将处理更多的块类型,则方法300可以循环回到步骤308,选择下一个块类型。
如果所有块类型已经被处理,则方法300可以移动到后续步骤,包括块间和块内变换。如下所述,块间变换(步骤316和318)可用于创建块指纹库(BFL)和2D块比特图(BBM),以移动每个块类型的(M-1)个最通用的块比特图的数据(步骤320)。此外,可以在没有被块间变换移动的剩余块的比特图内应用块内变换(步骤322)。
块间变换
根据步骤316,可以创建块指纹库(BFL)。BFL包括每种块类型的(M-1)个最通用的块比特图的指纹。在示例性实施方式中,数量M可以是2的幂,诸如4、8、16等。如果同级被成组到一起,则用于这(M-1)个最通用的块比特图的变化数据还可以包括在BFL中。
例如,考虑M=4,使得BFL包括每种块类型的三个(4-1=3)个最通用的块比特图的指纹(比特图)。这些BFL的内容由图5中的表格示出。如图5所示,对于块类型A来说,三个最常用的块指纹为A0、A1和A2,对于块类型B来说为B0、B1和B2,以及对于块类型C来说为C0、C1和C2。
根据步骤318,可以创建2D块比特图(BBM)。在一个实施方式中,BBM将具有log2M比特的识别数字号码与每个块相关联。例如,通过M=4,2比特数字号码可以经由BBM与每个块相关联。
在图6中提供了这种BBM的示例。如图所示,图6的BBM中的列和行分别对应于图4的2D块结构中的列和行。比较图4和图6示出了图4中的块A0、B0和C0由于它们第一的排序而在图6中具有与其相关联的识别数字号码1(二进制01),图4中的块A1、B1和C1由于它们第二的排序而在图6中具有与其相关联的识别数字号码2(二进制10),以及图4中的块A2、B2和C2由于它们第三的排序而在图6中具有与其相关联的识别数字号码3(二进制11)。图4中的剩余块在图6中具有与其相关联的识别数字号码0(二进制00)以表示在与其相关联的BFL中没有指纹。
根据步骤320,用于BFL中表示的块的数据然后可以从配置数据序列中移除。块内变换可以应用于配置数据序列中的剩余块。图7示出了根据本发明实施例的应用块内变换的核配置数据的块。在上述示例中,块间变换被应用于阴影块(A0、A1、A2、B0、B1、B2、C0、C1和C2)并且不应用于剩余(非阴影)块(A4、A5、B3、B4、B5、C3、C4和C5)。
块内变换
根据步骤322,块内变换可应用于块本身的比特图内,以捕获没有利用块间变换捕获的冗余的类型。在一个实施方式中,块内变换被应用于在BFL内没有表示的块。根据本发明的实施例,块内变换可基于相同块内侧的相邻比特利用配置数据的按比特预测。
复杂的硅器件(诸如FPGA)通常使用规则和可重复的设计子块结构以生成复杂的设计块。这些结构的尺寸根据块类型的不同而改变,对于每种块类型在每个x-y坐标中创建单一的图案距离(对于块内的比特)。本文描述的压缩算法创建预测函数Fk,其中k是块类型的总数,这对每个块类型0、1、2、…、k-1提供按比特预测。换句话说,Fk=Pred(Block_Type,x,y)用于基于块类型和值的特定比特(x,y)的坐标预测该位置中的实际比特。为了进行预测,函数Fk被允许使用关于范围(x-R,x,y-R,y)中的相邻比特的信息,其中R是被预测器存储的从特定块开始以及从相邻块开始的行数。因此,函数Fk返回关于位置(x,y)中的实际比特的预测。
根据本发明的实施例,2D块内变换利用反映以下两种情况中的一种情况的比特结果来代替块内的实际配置比特:i)如果实际配置比特与用于该配置位置进行的预测相匹配,则0比特被传送至输入;以及ii)如果实际的配置比特不与针对该配置位置进行的预测相匹配,则1比特被传送至输出。该功能可以通过使用以下示例性比特操作来实现:bx,y=cx,yXOR Fk(x,y),其中bx,y是扇区内变换比特,cx,y是来自位置(x,y)的原始配置比特,Fk(x,y)是应用于坐标(x,y)的(块类型0、1、2、…、k-1的)预测函数,以及XOR是按比特的异或操作。
图8A示出了根据本发明实施例的块内变换之前的配置数据的示例性块。具有值1的比特被示为“1”,以及具有值0的比特被示为空白。在这种情况下,使用预测函数Fk,其中图案距离为4行,使得预测图案的每个示例在4行内进行操作。
在该具体示例中,图案的第一距离被应用于行0-3,以及图案的第二距离被应用于行4-7。在第一距离内,行0被用于预测行3,以及行1被用于预测行2(即,R0→R3和R1→R2)。类似地,在第二距离内,行4用于预测行7,以及行5用于预测行6(即,R4→R7和R5→R6)。注意,上面讨论的图案是可使用的预测图案的相对简单的示例。其他实施例可使用不同的预测图案。
在图8B中示出了块内变换之后所得到的比特图。图8B中的行0、1、4和5中的比特(块内变换比特图)与图8A中的对应行相同(块内变换之前的比特图),因为这些行用于预测其他行(分别为行3、2、7和6)中的比特而不被另一行预测。
图8B的行3仅包括0值比特,因为图8A的行3中的每个比特值与图8A中的行0中的对应比特值相同。图8B的行2包括前六列中的0值比特和最后两列中的1值比特,因为只有图8A的行2和3中的最后两列互不相同。
图8B的行7包括前七列中的0值比特和最后一列中的1值比特,因为图8A的行4和7中的最后一列互不相同。图8B中的行6仅在第四列中包括1值比特,因为只有图8A的行5和6中的第四列具有相互不同的比特值。
根据本发明的实施例,可以针对每种块类型选择图案距离,使得可以进行统计良好的预测,从而产生更好的压缩率。注意,为了存储原始配置比特,解压器使用针对每种块类型选择的图案距离进行相同的按比特预测并且在其自身的预测和即将到来的比特之间应用XOR操作。注意,此外,上述过程可以按比特或按字执行来用于有效实施。
在步骤322中,块内变换可应用于数据流中的所有剩余块(在步骤320中没有移除的这些块)。所得到的数据流可以称为2D变换(变换后)数据流。2D变换数据流包括在步骤316中创建的BFL、步骤318中创建的BBM、用于同级块的变化数据(如果有的话)、用于预测函数Fk的要求信息(例如,所选图案距离)以及根据步骤322的块内变换比特图。此外,2D变换数据流包括配置电可编程半导体器件所需要的其他配置数据(诸如用于外围(非核)电路的配置数据)。
一维压缩
根据步骤324,在通过2D变换的两种类型过滤配置数据的块之后,所得到的2D变换数据流可以进一步使用1D压缩过程来压缩,以得到最终的压缩数据流。在示例性实施方式中,可以有利地使用1D压缩过程的Lempel-Ziv(LZ)类型。在一个实施方式中,1D压缩不被应用于BFL和BBM,尽管1D压缩在可选实施方式中还可以应用于BFL和BBM。
总之,上述压缩技术应用于块间2D压缩和块内2D压缩以提供减少数据源的净尺寸的组合效果以及提供变换数据中增加的冗余量。此后,有利地应用1D压缩以生成最终的压缩数据流,其充分小于单独使用1D的压缩数据流。
最后,根据步骤326,最终的压缩数据流被发送给电可编程半导体器件230。在一个实施例中,在被传输之前,1D压缩后信息数据流222可以被发送至配置流供应设备220并存储在配置流供应设备220中,诸如如图2所示。然后,配置流供应设备220可以将最终的压缩数据流发送给电可编程半导体器件230。如以下进一步描述的,电可编程半导体器件230中的解压和逆变换模块232解压和逆变换数据流,使得原始的数据流可用于电配置半导体器件230内的电路。
逆变换和解压
图9是根据本发明实施例的通过电可编程半导体器件解压和逆变换数据流的示例性方法900的流程图。例如,可以通过图2的解压和逆变换和压缩模块232执行方法900。
根据步骤902,通过半导体器件接收最终的压缩后变换数据流。在一个实施例中,通过半导体器件230从配置流供应设备220接收最终的压缩后变换数据流。
根据步骤904,1D压缩被应用于最终压缩数据流的被变换和压缩模块214进行1D压缩的部分。因此,得到或再生1D解压数据流。1D解压数据流对应于上述关于变换和压缩过程300的2D变换数据流。如上所述,1D解压数据流包括BFL、BBM、用于同级块的变化数据(如果有的话)、用于预测函数Fk的要求信息(例如,所选图案距离)以及块内变换比特图。此外,1D解压数据流包括需要配置电可编程半导体器件的其他配置数据,诸如用于外围(非核)电路的配置数据。
接下来,2D逆变换(2D解压)可以应用于1D解压数据流。2D逆变换包括块间和块内逆变换。注意,本文描述的算法不严格要求块间和块内逆变换的顺序解压。这种排序由于全匹配块的优先级而对于由压缩器执行的变换来说是有效的,但是对于由解压器执行的逆变换来说不是有效的。实际上,在解压期间,块内逆变换(步骤906)和扇区间逆变换(步骤908)可以并行执行。
根据步骤906,预测函数Fk被用于逆向由变换和压缩模块214进行的块的块内变换,以得到原始块。注意,在一个实施方式中,由于压缩器进行的块内变换和解压器进行的逆块内变换不被应用于BFL内表示的块;它们仅应用于不在BFL内表示的块。在上面参照图8A和图8B描述的示例性块内变换中,可以通过向块内变换和预测比特应用XOR操作来再生原始配置比特。换句话说,cx,y=bx,yXORFk(x,y)。
根据步骤908(其可以与步骤906并行执行),BBM、BFL和用于同级的变化数据(如果可应用的话)被提取并用于逆向块内变换。BBM被用作引导来确定哪些块将从BFL复制到由BBM指示的数据流中的位置,并且应用变化数据以进行调整来重新创建同级块(如果可应用的话)。
作为步骤906和908的结果,再生用于核资源的2D阵列的配置数据的原始部分。这导致根据步骤910再创建原始数据流。然后,根据步骤912,原始数据流可用于电配置半导体器件230。
可选实施例
实施例1.一种用于解压数据流以再生配置数据的原始数据流的方法,配置数据用于电配置电可编程半导体器件,电可编程半导体器件包括用于电可编程半导体器件的核资源的阵列的二维块结构,其中二维块结构包括多种块类型,并且其中属于相同块类型的块以比特为单位具有相同的宽度和相同的长度,该方法由电可编程半导体器件中的解压和逆变换模块来执行并包括:
从配置流供应设备接收数据流;
从数据流中提取块指纹库和块比特图;以及
在由所述块比特图指示的位置处,将由块比特图识别的块指纹库中的块的副本插入到数据流中。
实施例2.根据实施例1的方法,其中块指纹库包括针对多种块类型中的每种块类型的多个最通用的块指纹。
实施例3.根据实施例2的方法,其中所述块比特图将多个比特与二维块结构的每个块相关联,多个比特指示多个最通用的块指纹中的与所述块相关联的块指纹(如果存在)。
实施例4.根据实施例1的方法,还包括:
使用逆预测函数,逆向数据流中不在块指纹库中的剩余块的块内变换。
实施例5.根据实施例4的方法,其中逆预测函数取决于与多种块类型相对应的多个图案距离。
实施例6.根据实施例4的方法,还包括:
向剩余块应用一维解压,其中一维解压不要求二维块结构的信息。
实施例7.一种半导体器件,包括:
具有二维块结构的核资源的阵列;
解压和逆变换模块,通过执行以下步骤再生配置数据的原始数据流:
接收来自配置流供应设备的数据流;
对数据流的一部分执行一维解压,其中一维解压不要求二维块结构的信息;以及
对数据流的所述步骤执行逆块内变换。
实施例8.根据实施例7的半导体器件,其中由解压和逆变换模块执行的步骤还包括:通过从数据流中提取块指纹库和块比特图来执行逆块内变换,并且在由块比特图指示的位置处,将来自由块比特图识别的块指纹库的块的副本插入到数据流中。
实施例9.根据实施例8的半导体器件,其中并行地执行逆块内变换和逆块间变换。
总结
在上面的描述中,给出多个具体细节以提供对本发明实施例的完整理解。然而,上面本发明的所示实施例的描述不是排他性的或者将本发明限于所公开的具体形式。本领域技术人员应该意识到,在不背离一个或多个具体细节的情况下或者利用其他方法、部件等可以实践本发明。
在其他情况下,没有示出或具体描述已知的结构或操作以避免模糊本发明的各个方面。虽然为了说明的目的在本文描述了本发明的具体实施例或示例,但本领域技术人员应该意识到,在本发明的范围内可以进行各种等效修改。可以根据上面的详细描述对本发明进行这些修改。
Claims (12)
1.一种用于压缩配置数据的数据流的方法,所述配置数据用于电配置电可编程半导体器件,所述方法由变换和压缩模块执行并包括:
确定所述电可编程半导体器件的核资源的阵列的二维块结构,其中所述二维块结构包括多种块类型,并且其中属于相同块类型的块以比特为单位具有相同的宽度和相同的长度,并且其中每个块均具有对应于块的内容的块指纹;
针对所述多种块类型的每种块类型确定多个最通用的块指纹;以及
创建块指纹库,所述块指纹库包括针对每种块类型的所述多个最通用的块指纹。
2.根据权利要求1所述的方法,还包括:
从所述数据流中移除由针对所述多种块类型的所述多个最通用的块指纹中的任意一个表示的块;以及
将所述块指纹库插入到所述数据流中的在被移除的块之前的位置处。
3.根据权利要求2所述的方法,还包括:
创建使多个比特与所述二维块结构的每个块相关联的块比特图,其中如果存在,所述多个比特指示所述多个最通用的块指纹中的与所述块相关联的块指纹;以及
将块描述符和所述块比特图插入到所述数据流中的在被移除的块之前的位置处。
4.根据权利要求3所述的方法,还包括:
使用预测函数向所述数据流中剩余的块应用块内变换。
5.根据权利要求4所述的方法,其中所述预测函数取决于与所述多种块类型相对应的多个图案距离。
6.根据权利要求4所述的方法,还包括:
在应用所述块内变换之后,向所述数据流应用一维压缩,其中所述一维压缩不要求所述二维块结构的信息。
7.一种用于压缩配置数据的数据流的系统,所述配置数据用于电配置电可编程半导体器件,所述系统包括:
变换和压缩模块,通过执行以下步骤来生成变换和压缩数据流:
确定所述半导体器件的核资源的二维阵列的二维块结构,其中所述二维块结构包括多种块类型,并且其中属于相同块类型的块以比特为单位具有相同的宽度和相同的长度,并且其中每个块均具有对应于块的内容的块指纹;
针对每种块类型确定多个最通用的块指纹;以及
创建块指纹库,所述块指纹库包括针对每种块类型的所述多个最通用的块指纹;
配置流供应设备,将所述变换和压缩数据流传输至所述电可编程半导体器件。
8.根据权利要求7所述的系统,其中由所述变换和压缩模块执行的步骤还包括:
从所述数据流中移除由针对所述多种块类型的所述多个最通用的块指纹中的任意一个表示的块;以及
将所述块指纹库插入到所述数据流中的在被移除的块之前的位置处。
9.根据权利要求8所述的系统,其中由所述变换和压缩模块执行的步骤还包括:
创建使多个比特与所述二维块结构的每个块相关联的块比特图,其中如果存在,所述多个比特指示所述多个最通用的块指纹中的与所述块相关联的块指纹;以及
将块描述符和所述块比特图插入到所述数据流中的在被移除的块之前的位置处。
10.根据权利要求9所述的系统,其中由所述变换和压缩模块执行的步骤还包括:
使用预测函数向所述数据流中剩余的块应用块内变换。
11.根据权利要求10所述的系统,其中所述预测函数取决于与所述多种块类型相对应的多个图案距离。
12.根据权利要求10所述的系统,其中由所述变换和压缩模块执行的步骤还包括:
在应用所述块内变换之后,向所述数据流应用一维压缩,其中所述一维压缩不要求所述二维块结构的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/634,757 US20160253096A1 (en) | 2015-02-28 | 2015-02-28 | Methods and apparatus for two-dimensional block bit-stream compression and decompression |
US14/634,757 | 2015-02-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105931278A true CN105931278A (zh) | 2016-09-07 |
CN105931278B CN105931278B (zh) | 2020-02-28 |
Family
ID=55456597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610109226.4A Active CN105931278B (zh) | 2015-02-28 | 2016-02-26 | 用于二维块比特流压缩和解压的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160253096A1 (zh) |
EP (1) | EP3065300B1 (zh) |
CN (1) | CN105931278B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10320390B1 (en) | 2016-11-17 | 2019-06-11 | X Development Llc | Field programmable gate array including coupled lookup tables |
US10972569B2 (en) * | 2017-04-24 | 2021-04-06 | International Business Machines Corporation | Apparatus, method, and computer program product for heterogenous compression of data streams |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205574B1 (en) * | 1998-07-28 | 2001-03-20 | Xilinx, Inc. | Method and system for generating a programming bitstream including identification bits |
US6327634B1 (en) * | 1998-08-25 | 2001-12-04 | Xilinx, Inc. | System and method for compressing and decompressing configuration data for an FPGA |
US6341178B1 (en) * | 1995-12-04 | 2002-01-22 | Xerox Corporation | Method and apparatus for lossless precompression of binary images |
US6525678B1 (en) * | 2000-10-06 | 2003-02-25 | Altera Corporation | Configuring a programmable logic device |
CN101882439A (zh) * | 2010-06-10 | 2010-11-10 | 复旦大学 | 一种基于Zernike矩的压缩域音频指纹方法 |
US7902865B1 (en) * | 2007-11-15 | 2011-03-08 | Lattice Semiconductor Corporation | Compression and decompression of configuration data using repeated data frames |
CN102722583A (zh) * | 2012-06-07 | 2012-10-10 | 无锡众志和达存储技术有限公司 | 重复数据删除硬件加速装置和方法 |
CN102831222A (zh) * | 2012-08-24 | 2012-12-19 | 华中科技大学 | 一种基于重复数据删除的差量压缩方法 |
CN102833546A (zh) * | 2012-08-21 | 2012-12-19 | 中国科学院光电技术研究所 | 基于小波子带交织最优量化的高速图像压缩方法及装置 |
CN103177111A (zh) * | 2013-03-29 | 2013-06-26 | 西安理工大学 | 重复数据删除系统及其删除方法 |
CN103220226A (zh) * | 2013-05-02 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 数据中心间透明实时流量压缩方法和系统 |
CN103870514A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 重复数据删除方法和装置 |
-
2015
- 2015-02-28 US US14/634,757 patent/US20160253096A1/en not_active Abandoned
-
2016
- 2016-02-23 EP EP16156956.1A patent/EP3065300B1/en active Active
- 2016-02-26 CN CN201610109226.4A patent/CN105931278B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341178B1 (en) * | 1995-12-04 | 2002-01-22 | Xerox Corporation | Method and apparatus for lossless precompression of binary images |
US6205574B1 (en) * | 1998-07-28 | 2001-03-20 | Xilinx, Inc. | Method and system for generating a programming bitstream including identification bits |
US6327634B1 (en) * | 1998-08-25 | 2001-12-04 | Xilinx, Inc. | System and method for compressing and decompressing configuration data for an FPGA |
US6525678B1 (en) * | 2000-10-06 | 2003-02-25 | Altera Corporation | Configuring a programmable logic device |
US7902865B1 (en) * | 2007-11-15 | 2011-03-08 | Lattice Semiconductor Corporation | Compression and decompression of configuration data using repeated data frames |
CN101882439A (zh) * | 2010-06-10 | 2010-11-10 | 复旦大学 | 一种基于Zernike矩的压缩域音频指纹方法 |
CN102722583A (zh) * | 2012-06-07 | 2012-10-10 | 无锡众志和达存储技术有限公司 | 重复数据删除硬件加速装置和方法 |
CN102833546A (zh) * | 2012-08-21 | 2012-12-19 | 中国科学院光电技术研究所 | 基于小波子带交织最优量化的高速图像压缩方法及装置 |
CN102831222A (zh) * | 2012-08-24 | 2012-12-19 | 华中科技大学 | 一种基于重复数据删除的差量压缩方法 |
CN103870514A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 重复数据删除方法和装置 |
CN103177111A (zh) * | 2013-03-29 | 2013-06-26 | 西安理工大学 | 重复数据删除系统及其删除方法 |
CN103220226A (zh) * | 2013-05-02 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 数据中心间透明实时流量压缩方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3065300B1 (en) | 2018-01-24 |
EP3065300A1 (en) | 2016-09-07 |
US20160253096A1 (en) | 2016-09-01 |
CN105931278B (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240104020A1 (en) | Methods and systems for handling data received by a state machine engine | |
KR101960104B1 (ko) | 상태 정보를 제공하는 프로그래밍가능한 디바이스, 계층적 병렬 기계, 방법 | |
TWI497418B (zh) | 狀態機引擎、用於處置一狀態機引擎中之狀態向量資料之方法及用於組態一狀態機引擎之一狀態機晶格之方法 | |
CN112166442B (zh) | 运算方法 | |
Ledwon et al. | High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis | |
Mohajer et al. | Routing magic: Performing computations using routing networks and voting logic on unary encoded data | |
CN106849956A (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
CN108255778A (zh) | 有效的集成电路配置数据管理 | |
Kubica et al. | SMTBDD: new form of BDD for logic synthesis | |
CN109325590A (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
US20130232305A1 (en) | Command encoded data compression | |
US8347159B2 (en) | Compression based on deterministic vector clustering of incompatible test cubes | |
Li | Configuration management techniques for reconfigurable computing | |
CN105931278A (zh) | 用于二维块比特流压缩和解压的方法和装置 | |
Arming et al. | Data compression in hardware—the burrows-wheeler approach | |
CN106452451B (zh) | 数据处理方法及装置 | |
Mohajer et al. | Parallel unary computing based on function derivatives | |
KR20070097051A (ko) | 동적으로 재구성 가능한 프로세서 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
US7103685B1 (en) | Bitstream compression with don't care values | |
Zhao et al. | An optimization method of WebP images lossy compression algorithm for FPGAs | |
CN104199352A (zh) | 基于fpga的区间编码硬件实现系统 | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding | |
Mamun et al. | Hardware Approach of Lempel-Ziv-Welch Algorithm for Binary Data Compression | |
Amarú et al. | Data compression via logic synthesis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |