CN102447898B - 用fpga实现klt变换的方法 - Google Patents
用fpga实现klt变换的方法 Download PDFInfo
- Publication number
- CN102447898B CN102447898B CN 201110249279 CN201110249279A CN102447898B CN 102447898 B CN102447898 B CN 102447898B CN 201110249279 CN201110249279 CN 201110249279 CN 201110249279 A CN201110249279 A CN 201110249279A CN 102447898 B CN102447898 B CN 102447898B
- Authority
- CN
- China
- Prior art keywords
- matrix
- coefficient
- ram
- row
- clock cycle
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开一种用FPGA实现KLT变换的方法。包括一维KLT变换和二维KLT变换,一维KLT变换的步骤是:将变换矩阵存储在双端口RAM组中;利用“DSP48E单元”完成KLT变换矩阵的系数与残差矩阵的系数的乘加运算并输出结果。二维KLT变换的步骤是:(1)将行变换矩阵R与列变换矩阵C存储在双端口RAM中;(2)利用“DSP48E单元”完成残差矩阵X的系数与行变换矩阵R的系数的乘加运算,得到中间矩阵M;(3)利用“DSP48E单元”完成中间矩阵M的系数与列变换矩阵C的系数的乘累加运算并输出结果。本发明减少了其它资源的使用,提升了系统的速度和数据吞吐率,可应用于图像压缩编码技术中。
Description
技术领域
本发明属于数字信号处理技术领域,涉及图像压缩编码的实现方法,可应用于通过硬件实现图像压缩编码的变换部分。
背景技术
图像压缩编码的主要步骤是:首先将图像划分成多个宏块,然后以宏块为单位进行模式预测、变换、量化以及熵编码。模式预测是根据当前宏块上方和左方的宏块的重构像素值来计算预测像素值的。实际像素值与预测值的差称作残差,残差数据仍然存在着可以开发的相关性。
KLT作为一种依赖于数据特性的最优变换,与其它变换方法相比,它根据图像残差特性离线训练出的变换矩阵,能够更充分发掘残差数据中存在的规律性和相关性,从而提高压缩性能,所以目前在数字信号处理及通信中得到了越来越广泛的应用。但是KLT变换要进行复杂的矩阵乘法运算且变换系数大,在要求实时处理及延时较小的高性能图像压缩变换硬件系统中,KLT变换成为瓶颈。
采用传统的执行方法在FPGA上进行KLT变换,会导致运算效率低,占用资源大以及数据吞吐率小,因此有必要从FPGA硬件实现的角度出发,发明一种快速高效的实现KLT变换的方法。
发明内容
本发明的目的在于克服上述已有技术的不足,提出一种用FPGA实现KLT变换的方法,从而满足图像压缩编码实时性和高性能的要求。
为实现上述目的,本发明提出如下两种技术方案:
技术方案1.用FPGA实现一维KLT变换的方法,包括如下步骤:
(1.1)将大小为4×4的图像残差矩阵按行展成一维列向量,离线训练后得到大小为16×16的KLT矩阵,将它们存储在FPGA中的8个双端口RAM中;
(1.2)控制8个双端口RAM的端口,在每个时钟周期内将每个RAM的地址同时加1,并令两个输出端同时输出,使每个时钟周期内读出变换矩阵的一个行向量;
(1.3)将残差列向量的系数和读出的变换矩阵行向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,即可得到变换结果向量中的一个系数;
(1.4)重复步骤(1.2)和(1.3),即从RAM中读出变换矩阵下一行的系数与残差列向量的系数进行乘加运算,直到变换结果向量的16个数据计算完毕。
技术方案2.用FPGA实现二维KLT变换的方法,包括如下步骤:
(2.1)对大小为16×16的图像残差矩阵X进行离线训练,得到大小为16×16的KLT行变换矩阵R和大小为16×16的KLT列变换矩阵C,将行变换矩阵R存储在第一组的8个双端口RAM中,记为RAM1,将列变换矩阵C存储在第二组的8个双端口RAM中,记为RAM2;
(2.2)控制存储行变换矩阵R的RAM1的地址端,并令RAM1的输出端同时输出数据,使每个时钟周期内读出行变换矩阵R的一个列向量;
(2.3)将残差矩阵X行向量的系数与读出的行变换矩阵R列向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,得到的结果为中间矩阵M的系数,该中间矩阵M的系数以行的顺序串行输出;
(2.4)开辟一个新的双端口RAM,记为RAMM,将输出的中间矩阵M的系数从RAMM的A端口写入,当256个系数全部写入完毕,产生一个脉冲指示信号;
(2.5)在步骤(2.4)产生的脉冲信号指示下,控制存储中间矩阵M的RAMM的B端口地址端,使该中间矩阵M的系数按列的顺序串行读出;
(2.6)在步骤(2.4)产生的脉冲信号指示下,控制存储列变换矩阵C的RAM2的地址端,并令RAM2的输出端同时输出数据,使每个时钟周期内读出列变换矩阵C的一个列向量;
(2.7)将由步骤(2.5)产生的中间矩阵M的系数和由步骤(2.6)产生的列变换矩阵C列向量的系数同时送入FPGA中的“DSP48E单元”进行乘累加运算,得到最终的变换结果矩阵,该矩阵在每17个时钟周期内输出一个列向量。
本发明与现有技术相比具有以下优点:
第一,本发明将数据量庞大的KLT变换矩阵通过初始化存储在双端口RAM组中,有效减少了查找表的使用,提高了读取变换矩阵系数的速度。
第二,本发明对一维KLT变换采用直接乘加的方式,对二维KLT变换采用先乘加、再乘累加的方式,将运算部分用FPGA中的“DSP48E单元”处理,提高了运算速率,且在“DSP48E”单元内对电路进行流水化处理,减少了FPGA中其它资源使用,提升了系统的工作频率。
附图说明
图1为本发明实现一维KLT变换的步骤示意图;
图2为本发明实现二维KLT变换的步骤示意图;
图3为本发明的一维KLT变换与二维KLT变换的乘加运算原理示意图;
图4为本发明的二维KLT变换的乘累加运算原理示意图。
具体实施方式
以下参照附图对本发明做进一步详细描述:
实施例1:
参照图1,本发明对大小为4×4的图像残差块采用一维KLT变换,包括如下步骤:
步骤A,将大小为4×4的图像残差矩阵按行展成一维列向量,离线训练后得到大小为16×16的KLT矩阵,将它们存储在FPGA中的8个双端口RAM中。
步骤B,控制8个双端口RAM的端口,在每个时钟周期内将每个RAM的地址同时加1,并令两个输出端同时输出,使每个时钟周期内读出变换矩阵的一个行向量。
步骤C,将残差列向量的系数和读出的变换矩阵行向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算。
参照图3,本步骤的具体实现如下:
(Ca)将变换矩阵行向量的系数a0~a15与残差列向量的系数b0~b15同时送入“DSP48E单元”内部的输入寄存器组REGin中保存;
(Cb)从输入寄存器组REGin中取出a0~a15与b0~b15,并将它们对应相乘,得到16个乘积p0~p15保存至寄存器组REGmul中;
(Cc)从寄存器组REGmul中取出p0~p15分成4组,对每组的4个数求和,得到4个和值s0~s4,保存至寄存器组REGadd中;
(Cd)从寄存器组REGadd中取出s0~s4,将它们再次相加,得到和值sum,将sum经过一级输出寄存器REGout后输出,sum即为最终变换结果向量的一个系数。
步骤D,重复步骤B和步骤C,即从RAM中读出变换矩阵下一行的系数与残差列向量的系数进行乘加运算,直到变换结果向量的16个数据计算完毕。
实施例2:
参照图2,本发明对大小为16×16的图像残差块采用二维KLT变换,包括如下步骤:
步骤1,对大小为16×16的图像残差矩阵X进行离线训练,得到大小为16×16的KLT行变换矩阵R和大小为16×16的KLT列变换矩阵C,将行变换矩阵R存储在第一组的8个双端口RAM中,记为RAM1,将列变换矩阵C存储在第二组的8个双端口RAM中,记为RAM2。
步骤2,控制存储行变换矩阵R的RAM1的地址端,并令RAM1的输出端同时输出数据,使每个时钟周期内读出行变换矩阵R的一个列向量,其中控制RAM1地址端的步骤是:在每个时钟周期内对RAM1的地址加1,重复进行16个时钟周期;在下一个时钟周期内保持RAM1的地址不变;依此重复进行16次。
步骤3,将残差矩阵X行向量的系数与读出的行变换矩阵R列向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,得到的结果为中间矩阵M的系数,该中间矩阵M的系数以行的顺序串行输出。
参照图3,本步骤的具体实现如下:
(3a)将残差块X第1行的系数与行变换矩阵R第1列的系数同时送入“DSP48E单元”内部的输入寄存器组REGin中保存;
(3b)从输入寄存器组REGin中取出残差矩阵X行向量的系数与行变换矩阵R列向量的系数,并将它们对应相乘,得到16个乘积p0~p15,保存至寄存器组REGmul中;
(3c)从寄存器组REGmul中取出p0~p15,分成4组,对每组4个数求和,得到4个和值s0~s4,保存至寄存器组REGadd中;
(3d)从寄存器组REGadd中取出s0~s4并将它们再次相加,得到和值sum,将该sum经过一级输出寄存器REGout后输出,sum即为中间矩阵M的一个系数;
(3e)保持残差矩阵X第1行的系数在输入寄存器组REGin中不变,并将行变换矩阵R第2列的系数送入输入寄存器组REGin中保存,重复步骤(3b)~步骤(3d)直至行变换矩阵R第16列的系数被送入至输入寄存器组REGin中;
(3f)将残差矩阵X第2行的系数与行变换矩阵R第1列的系数同时送入输入寄存器组REGin中保存,重复步骤(3b)~步骤(3e)直至残差块X第16行的系数与行变换矩阵R第16列的系数被同时送入输入寄存器组REGin中。
步骤4,开辟一个新的双端口RAM,记为RAMM,将输出的中间矩阵M的系数从RAMM的A端口写入,当256个系数全部写入完毕,产生一个脉冲指示信号。
步骤5,在步骤4产生的脉冲信号指示下,控制存储中间矩阵M的RAMM的B端口地址端,使该中间矩阵M的系数按列的顺序串行读出:
本步骤中控制RAMM的B端口地址端的方法是:
(5a)设定RAMM的B端口的地址初始值为0;
(5b)在每个时钟周期内对地址加17,重复进行16个时钟周期;
(5c)在下一个时钟周期内保持地址不变;
(5d)在下一个时钟周期内将地址减254,即跳转到保存下一列第一个数据的地址;
(5e)将步骤(5b)~步骤(5d)重复16次。
步骤6,在步骤4产生的脉冲信号指示下,控制存储列变换矩阵C的RAM2的地址端,并令RAM2的输出端同时输出数据,使每个时钟周期内读出列变换矩阵C的一个列向量,其中控制RAM2地址端的步骤是:在每个时钟周期内对RAM2的地址加1,重复进行16个时钟周期;在下一个时钟周期内保持RAM2的地址不变;依此重复进行16次。
步骤7,将由步骤5产生的中间矩阵M的系数和由步骤6产生的列变换矩阵C的系数同时送入FPGA中的“DSP48E单元”进行乘累加运算,得到最终的变换结果矩阵,该矩阵在每17个时钟周期内输出一个列向量。
参照图4,本步骤的具体实现如下:
(7a)将按列串行输出的中间矩阵M的系数mk,k=0,1,...255且k%16=0,分别与列变换矩阵C第1列的系数c0,0~c15,0相乘,结果记为CM0,0~CM15,0;
(7b)在下一个时钟周期内将中间矩阵M的系数mk+1分别与列变换矩阵C第2列的系数c0,1~c15,1相乘,并将该16个乘积与CM0,1~CM15,1对应相加,所得结果记为CM0,1~CM15,1;
(7c)重复步骤(7b)直到中间矩阵M的系数mk+15分别与列变换矩阵C第16列的系数c0,15~c15,5相乘,所得的16个乘积与CM0,14~CM15,14对应相加完毕为止,得到的CM0,15~CM15,15即为最终变换结果矩阵的一个列向量。
以上仅为本发明的一个具体实例,不构成对本发明的任何限制,显然在本发明的思想下,可做出不同修改与变更,但这些均在本发明的保护之列。
Claims (8)
1.一种用FPGA实现一维KLT变换的方法,包括如下步骤:
(1.1)将大小为4×4的图像残差矩阵按行展成一维列向量,离线训练后得到大小为16×16的KLT矩阵,将它们存储在FPGA中的8个双端口RAM中;
(1.2)控制8个双端口RAM的端口,在每个时钟周期内将每个RAM的地址同时加1,并令两个输出端同时输出,使每个时钟周期内读出变换矩阵的一个行向量;
(1.3)将残差列向量的系数和读出的变换矩阵行向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,即可得到变换结果向量中的一个系数;
(1.4)重复步骤(1.2)和(1.3),即从RAM中读出变换矩阵下一行的系数与残差列向量的系数进行乘加运算,直到变换结果向量的16个数据计算完毕。
2.根据权利要求1所述的用FPGA实现一维KLT变换的方法,其中步骤(1.3)所述的将残差列向量的系数和读出的变换矩阵行向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,按照如下步骤进行:
(1.3a)将变换矩阵行向量的系数与残差列向量的系数同时送入“DSP48E单元”内部的输入寄存器组REGin中保存;
(1.3b)从输入寄存器组REGin中取出变换矩阵行向量的系数与残差列向量的系数,并将它们对应相乘,得到16个乘积,保存至寄存器组REGmul中;
(1.3c)从寄存器组REGmul中取出16个乘积,分成4组,对每组的4个数求和,得到4个和值,保存至寄存器组REGadd中;
(1.3d)从寄存器组REGadd中取出被保存的4个和值再次相加,得到1个和值,并将该和值经过一级输出寄存器REGout后输出。
3.一种用FPGA实现二维KLT变换的方法,包括如下步骤:
(2.1)对大小为16×16的图像残差矩阵X进行离线训练,得到大小为16×16的KLT行变换矩阵R和大小为16×16的KLT列变换矩阵C,将行变换矩阵R存储在第一组的8个双端口RAM中,记为RAM1,将列变换矩阵C存储在第二组的8个双端口RAM中,记为RAM2;
(2.2)控制存储行变换矩阵R的RAM1的地址端,并令RAM1的输出端同时输出数据,使每个时钟周期内读出行变换矩阵R的一个列向量;
(2.3)将残差矩阵X行向量的系数与读出的行变换矩阵R列向量的系数同时送入FPGA中的“DSP48E单元”进行乘加运算,得到的结果为中间矩阵M的系数,该中间矩阵M的系数以行的顺序串行输出;
(2.4)开辟一个新的双端口RAM,记为RAMM,将输出的中间矩阵M的系数从RAMM的A端口写入,当256个系数全部写入完毕,产生一个脉冲指示信号;
(2.5)在步骤(2.4)产生的脉冲信号指示下,控制存储中间矩阵M的RAMM的B端口地址端,使该中间矩阵M的系数按列的顺序串行读出;
(2.6)在步骤(2.4)产生的脉冲信号指示下,控制存储列变换矩阵C的RAM2的地址端,并令RAM2的输出端同时输出数据,使每个时钟周期内读出列变换矩阵C的一个列向量;
(2.7)将由步骤(2.5)产生的中间矩阵M的系数和由步骤(2.6)产生的列变换矩阵C列向量的系数同时送入FPGA中的“DSP48E单元”进行乘累加运算,得到最终的变换结果矩阵,该矩阵在每17个时钟周期内输出一个列向量。
4.根据权利要求3所述的用FPGA实现二维KLT变换的方法,其中步骤(2.2)所述的控制存储行变换矩阵R的RAM1的地址端,按照如下步骤进行:
(2.2a)在每个时钟周期内对RAM1的地址加1,重复进行16个时钟周期;
(2.2b)在下一个时钟周期内保持RAM1的地址不变;
(2.2c)重复步骤(2.2a)~步骤(2.2b)16次。
5.根据权利要求3所述的用FPGA实现二维KLT变换的方法,其中步骤(2.3)所涉及的乘加运算,按照如下步骤进行:
(2.3a)将残差矩阵X第1行系数与行变换矩阵R第1列的系数同时送入“DSP48E单元”内部的输入寄存器组REGin中保存;
(2.3b)从输入寄存器组REGin中取出残差矩阵X行向量的系数与行变换矩阵R列向量的系数,并将它们对应相乘,得到16个乘积,保存至寄存器组REGmul中;
(2.3c)从寄存器组REGmul中取出16个乘积,分成4组,对每组4个数求和,得到4个和值,保存至寄存器组REGadd中;
(2.3d)从寄存器组REGadd中取出被保存的4个和值再次相加,得到1个和值,并将该和值经过一级输出寄存器REGout后输出;
(2.3e)保持残差矩阵X第1行的系数在输入寄存器组REGin中不变,并将行变换矩阵R第2列的系数送入输入寄存器组REGin中保存,重复步骤(2.3b)~步骤(2.3d)直至行变换矩阵R第16列的系数被送入至输入寄存器组REGin中;
(2.3f)将残差矩阵X第2行的系数与行变换矩阵R第1列的系数同时送入输入寄存器组REGin中保存,重复步骤(2.3b)~步骤(2.3e)直至残差块X第16行的系数与行变换矩阵R第16列的系数被同时送入输入寄存器组REGin中。
6.根据权利要求3所述的用FPGA实现二维KLT变换的方法,其中步骤(2.5)所述的控制存储中间矩阵M的RAMM的B端口地址端,按照如下步骤进行:
(2.5a)设定RAMM的B端口的地址初始值为0;
(2.5b)在每个时钟周期内对地址加17,重复进行16个时钟周期;
(2.5c)在下一个时钟周期内保持地址不变;
(2.5d)在下一个时钟周期内将地址减254,即跳转到保存下一列第一个数据的地址;
(2.5e)重复步骤(2.5b)~步骤(2.5d)16次。
7.根据权利要求3所述的用FPGA实现二维KLT变换的方法,其中步骤(2.6)所述的控制存储列变换矩阵C的RAM2的地址端,按照如下步骤进行:
(2.6a)在每个时钟周期内对RAM2的地址加1,重复进行16个时钟周期;
(2.6b)在下一个时钟周期内保持RAM2的地址不变;
(2.6c)重复步骤(2.6a)~步骤(2.6b)16次。
8.根据权利要求3所述的用FPGA实现二维KLT变换的方法,其中步骤(2.7)所涉及的乘累加运算,按照如下步骤进行:
(2.7a)将按列串行输出的中间矩阵M的系数mk,k=0,1,...255且k%16=0,分别与列变换矩阵C第1列的系数c0,0~c15,0相乘,结果记为CM0,0~CM15,0;
(2.7b)在下一个时钟周期内将中间矩阵M的系数mk+1分别与列变换矩阵C第2列的系数c0,1~c15,1相乘,并将该16个乘积与CM0,1~CM15,1对应相加,所得结果记为CM0,1~CM15,1;
(2.7c)重复步骤(2.7b)直到中间矩阵M的系数mk+15分别与列变换矩阵C第16列的系数c0,15~c15,15相乘,所得的16个乘积与CM0,14~CM15,14对应相加完毕为止,得到的CM0,15~CM15,15即为最终变换结果矩阵的一个列向量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110249279 CN102447898B (zh) | 2011-08-26 | 2011-08-26 | 用fpga实现klt变换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110249279 CN102447898B (zh) | 2011-08-26 | 2011-08-26 | 用fpga实现klt变换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102447898A CN102447898A (zh) | 2012-05-09 |
CN102447898B true CN102447898B (zh) | 2013-09-25 |
Family
ID=46009929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110249279 Expired - Fee Related CN102447898B (zh) | 2011-08-26 | 2011-08-26 | 用fpga实现klt变换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102447898B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715470B (zh) * | 2013-12-13 | 2017-09-22 | 南京理工大学 | 一种klt角点检测装置及方法 |
CN113542770B (zh) * | 2021-06-15 | 2023-11-03 | 杭州未名信科科技有限公司 | 一种dct变换方法及dct变换电路系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828617A (zh) * | 2006-03-31 | 2006-09-06 | 电子科技大学 | 一种软硬件协同仿真/验证系统及矢量模式仿真/验证方法 |
CN1889687A (zh) * | 2006-06-02 | 2007-01-03 | 清华大学 | 一种无预测循环的抗误码视频编码方法 |
CN101743751A (zh) * | 2007-06-15 | 2010-06-16 | 高通股份有限公司 | 视帧内预测模式而定的残差块的自适应变换 |
-
2011
- 2011-08-26 CN CN 201110249279 patent/CN102447898B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828617A (zh) * | 2006-03-31 | 2006-09-06 | 电子科技大学 | 一种软硬件协同仿真/验证系统及矢量模式仿真/验证方法 |
CN1889687A (zh) * | 2006-06-02 | 2007-01-03 | 清华大学 | 一种无预测循环的抗误码视频编码方法 |
CN101743751A (zh) * | 2007-06-15 | 2010-06-16 | 高通股份有限公司 | 视帧内预测模式而定的残差块的自适应变换 |
Also Published As
Publication number | Publication date |
---|---|
CN102447898A (zh) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
TWI680409B (zh) | 適用於人工神經網路之矩陣及向量相乘的方法 | |
WO2020057161A1 (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
CN103369326B (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
TW201913460A (zh) | 芯片裝置及相關産品 | |
CN102065309B (zh) | 一种dct实现方法及dct实现电路 | |
CN112286864B (zh) | 加速可重构处理器运行的稀疏化数据处理方法及系统 | |
CN109901814A (zh) | 自定义浮点数及其计算方法和硬件结构 | |
CN112596701B (zh) | 基于单边雅克比奇异值分解的fpga加速实现方法 | |
CN101625634A (zh) | 一种可重构的乘法器 | |
CN111767994A (zh) | 一种神经元计算模块 | |
CN110851779A (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN101426134A (zh) | 用于视频编解码的硬件装置及方法 | |
CN102447898B (zh) | 用fpga实现klt变换的方法 | |
CN114399036A (zh) | 一种基于一维Winograd算法的高效卷积计算单元 | |
CN1268231A (zh) | 数据块规模可变的2维逆向离散余弦变换机 | |
CN108259919B (zh) | 一种快速实现8x8DCT变换的硬件系统 | |
CN104320668B (zh) | Hevc/h.265的dct变换和反变换的simd优化方法 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN102300092A (zh) | 一种基于提升格式的9/7小波逆变换的图像解压缩方法 | |
CN103092559A (zh) | 用于hevc标准下dct/idct电路的乘法器结构 | |
CN103327332B (zh) | 一种hevc标准中8×8idct变换的实现方法 | |
CN103179398A (zh) | 一种提升小波变换fpga实现的方法 | |
CN104700370B (zh) | 基于半确定性传感矩阵的图像压缩感知方法 | |
CN101977318A (zh) | Dct量化的并行装置及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130925 Termination date: 20190826 |
|
CF01 | Termination of patent right due to non-payment of annual fee |