CN104967453B - 基于fpga的多路循环数据压缩器和解压缩器以及方法 - Google Patents
基于fpga的多路循环数据压缩器和解压缩器以及方法 Download PDFInfo
- Publication number
- CN104967453B CN104967453B CN201510353447.1A CN201510353447A CN104967453B CN 104967453 B CN104967453 B CN 104967453B CN 201510353447 A CN201510353447 A CN 201510353447A CN 104967453 B CN104967453 B CN 104967453B
- Authority
- CN
- China
- Prior art keywords
- mrow
- prime
- mfrac
- mmultiscripts
- msup
- 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.)
- Active
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种基于FPGA的多路循环数据压缩器和解压缩器以及方法,采用基于FPGA的ASIC设计技术,满足旋翼应变数据处理系统功耗低、体积小、重量轻、集成度高、单位时间内数据处理量大、可扩展性好等性能要求;将应变量量化等级选为16bit,提高了多旋翼应变采集数据的精度,保证量化精度的同时实现了实时处理;数据还原误差在10‑3~10‑2量级之间,符合精度需求;对异常应变值进行了及时还原。
Description
技术领域
本发明属于数字信号处理领域,涉及一种基于FPGA的多路循环数据压缩器和解压缩器以及方法。
背景技术
直升机旋翼应变数据采集处理系统已经成为直升机机载处理系统中不可或缺的一环,对旋翼进行实时监测和应变数据采集,完成飞行中的实时告警,可提高直升机的飞行安全性,具有重大的实用价值和广泛的应用前景。机载设计平台对数据处理、传输性能有着限制,需要处理的数据量大,但数据传输能力有限,因此必须对旋翼应变数据进行压缩发送、接收解压缩的处理,才能满足实时性。
目前,国外对于旋翼应变数据的实时数据处理技术非常重视,包括美国、俄罗斯、日本等航空技术大国都已投入了大量的财力物力对其进行研究。美国向来都非常重视旋翼应变的实时数据监测技术,其在信号采集,数据处理,故障诊断方面都已进行大量研究。美国先后研制了“飞行中结构监控系统(FSMS)”和“飞行中裂纹探测系统(IFCDS)”;开发了采用超声波传感疲劳损伤的实时无损评估技术(NDE),损坏感应系统被用于直升机旋翼结构监测和新老飞机的机体结构寿命预测;M.Roemer开发了直升机旋翼实时监测与故障诊断系统。基于这些研究及实验,美国的直升机飞行风险降低了50%,飞机的运行预算降低了1/3,而且还可能进一步降低。
相比之下,国内的旋翼应变数据的实时数据处理技术起步较晚,在直升机旋翼应变数据采集处理方面主要做了理论方面的研究,提出了一些监测方法。朱旭程等人通过分析典型故障对旋翼系统特征的影响,建立了故障诊断矩阵,提出了一种基于诊断矩阵的冲突集生成方法。何克磊等人建立了一种系统健康评估模型,并在四旋翼直升机平台上进行了仿真应用。张明生等人采集处理了旋翼应变数据,在国内首次实现了没有导电环情况下的旋翼应变测量。黄珺等人完成了地面试验条件下旋翼桨叶固有频率的测试。但是国内对于旋翼应变数据采集处理的研究主要以地面诊断,建立模型为主,实际的系统开发比较少,少数的旋翼应变测试系统完成了功能需求,但是存在数据量化精度不高、实时性不好等问题。因此,对于旋翼应变数据的实时数据处理技术仍需进一步深入研究。
发明内容
要解决的技术问题
为了避免现有技术的不足之处,本发明提出一种基于FPGA的多路循环数据压缩器和解压缩器以及方法,采用基于FPGA的ASIC设计技术,可以满足旋翼应变数据处理系统功耗低、体积小、重量轻、集成度高、单位时间内数据处理量大、可扩展性好等性能要求。
技术方案
一种基于FPGA的多路循环数据压缩器,其特征在于包括ramp1存储器、rams1存储器、量化器、预测器、减法器和自适应因子计算器;
减法器:输入端为需要编码的数据和ramp1存储器的输出端;将输入值Si与ramp1存储器的输出值相减,其结果输出至与其相连的量化器;
量化器:输入端连接减法器和rams1存储器的输出端,输出端为压缩器的输出端,同时连接自适应因子计算器和预测器的输入端;从rams1存储器读取当前自适应因子indexi,对减法器输出差值di进行量化产生一个有符号的4位二进制编码值Ci;
自适应因子计算器:输出端连接rams1存储器的输入端;编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index;
预测器:输出端连接ramp1存储器的输入端;编码值Ci作为输入,通过预测器求出预测值更新值Sp;
ramp1存储器:输出端连接减法器的输入端;数据宽度16bit,用于多路压缩的预测值参数缓存,输出为减法器提供当前样本的预测值Spi;
rams1存储器:输出端连接量化器的输入端;数据宽度7bit,用于多路压缩的自适应因子参数缓存,输出为量化器提供当前样本数据处理所需要的参数自适应因子indexi。
一种采用所述压缩器进行多路循环压缩编码的方法,其特征在于步骤如下:
步骤1:从存储器ramp1和存储器rams1中读取第n路第i个预测值Spi和自适应因子indexi;
步骤2:将当前第i个输入值Si与第i个预测值Spi相减,得到当前差值di;对di进行量化产生一个有符号的4位二进制编码值Ci,
所述Ci为补码形式,最高位为符号位,表示正负,低三位为量化码,对应0~7;
步骤3:以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
然后由Ci的最高位Ci(3)计算得到预测值更新值Sp:
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤4:将ramp1和rams1的高有效写使能信号wep1和wes1置1,将预测值更新值Sp写入ramp1中的第n个存储单元,将自适应因子更新值Index写入rams1中的第n个存储单元,下一个时钟上升沿到来时,ramp1和rams1中的第n个存储单元数据由第i个更新为第i+1个,为下一个循环的第n路使用;
步骤5:将ramp1和rams1的读写地址加1,同时wep1和wes1置0,使ramp1和rams1处于读状态,多路数据循环压缩模块完成一个压缩过程;
重新返回步骤1,开始对第n+1路第i个数据进行压缩。
一种对所述基于FPGA的多路循环数据压缩器得到的编码进行解码的多路数据循环解压缩器,其特征在于包括ramp2存储器、rams2存储器、逆量化器、自适应因子计算器和加法器;
逆量化器:输入端接收需要解码的编码数据,以及连接ramp2存储器的输出端,逆量化器的输出端连接加法器的输入端;从rams2存储器读取当前自适应因子参数,对编码值Ci的低三位进行差值重构;
自适应因子计算器:输入端接收需要解码的编码数据,输出端连接rams2存储器的输入端;编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index;
rams2存储器:输出端连接逆量化器的输入端;数据宽度7bit,用于多路解压缩的自适应因子参数缓存,输出为逆量化器提供当前样本数据处理所需要的参数自适应因子indexi;
ramp2存储器:输出端与加法器的输入端相连;数据宽度16bit,用于多路解压缩的预测值参数缓存,为加法器提供当前样本的预测值Spi。
一种采用所述多路数据循环解压缩器进行多路循环解压缩编码的方法,其特征在于步骤如下:
步骤1:从ramp2和rams2中读取第n路第i个预测值Spi和自适应因子indexi;
步骤2:首先以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
然后由Ci的最高位Ci(3)计算得到解码输出SRi:
由SP=SRi得到预测值更新值Sp;
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤3:将ramp2和rams2的高有效写使能信号wep2和wes2置1,将预测值更新值Sp写入ramp2中的第n个存储单元,将自适应因子更新值Index写入rams2中的第n个存储单元,下一个时钟上升沿到来时,ramp1和rams1中的第n个存储单元数据由第i个更新为第i+1个,为下一个循环的第n路使用;
步骤4:将ramp2和rams2的读写地址加1,同时wep2和wes2置0,使ramp1和rams1处于读状态,多路数据循环解压缩模块完成一个压缩过程;
重新返回步骤1,开始对第n+1路第i个数据进行解压缩。
有益效果
本发明提出的一种基于FPGA的多路循环数据压缩器和解压缩器以及方法,采用基于FPGA的ASIC设计技术,满足旋翼应变数据处理系统功耗低、体积小、重量轻、集成度高、单位时间内数据处理量大、可扩展性好等性能要求;将应变量量化等级选为16bit,提高了多旋翼应变采集数据的精度,保证量化精度的同时实现了实时处理;数据还原误差在10-3~10-2量级之间,符合精度需求;对异常应变值进行了及时还原。
附图说明
图1是多路数据循环压缩器结构框图;
图2是多路数据循环解压缩器结构框图;
图3是多路数据循环压缩流程图;
图4是多路数据循环解压缩流程图;
图5是单路数据处理的时序仿真结果;
图6是多路数据处理的时序仿真结果。
具体实施方式
现结合实施例、附图对本发明作进一步描述:
用于实施的硬件环境是:XILINX公司Spartan-6系列,型号为XC6SLX150的两块FPGA芯片,示波器,逻辑分析仪,运行的软件环境是:ISE14.5。以四路数据处理为例,我们用ISE14.5软件实现了本发明提出的方法。
多路数据循环压缩器模块
其实施按如附图1所示的设计架构完成,该架构中包括的模块及其结构实现关系为:
ramp1存储器:采用VHDL编写生成,数据宽度16bit,数据深度为4。其输入端与预测器的输出端相连,用于多路压缩的预测值参数缓存,输出端与减法器的输入端相连,为减法器提供当前样本的预测值Spi。
rams1存储器:采用VHDL编写生成,数据宽度7bit,数据深度为4。其输入端与自适应因子计算器的输出端相连,用于多路压缩的自适应因子参数缓存,输出端与量化器的输入端相连,为量化器提供当前样本数据处理所需要的参数自适应因子。
量化器:从rams1读取当前自适应因子参数indexi,对di进行量化产生一个有符号的4位二进制编码值Ci。Ci最高位Ci(3)计算公式为:
低三位Ci(2:0)计算公式为:
其中Q表示量化阶。
预测器:编码值Ci作为输入,通过预测器求出预测值更新值Sp。首先由Ci的低三位Ci(2:0)重构差值diff:
然后由Ci的最高位Ci(3)计算得到预测值更新值Sp:
自适应因子计算器:编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Indexi:
多路数据循环压缩编码方法的实现原理,参考附图3。以对第n路数据进行第i次压缩为例,步骤如下:
步骤1:从ramp1和rams1中读取所需的第n路第i个预测值Spi和自适应因子Indexi。
步骤2:将当前第i个输入值Si与第i个预测值Spi相减,得到当前差值di,量化器对di进行量化产生一个有符号的4位二进制编码值Ci。Ci为补码形式,最高位为符号位,表示正负,低三位才是真正的量化码,一共有23=8个量化级别,对应0~7。首先由di计算得到Ci的最高位:
然后对di取绝对值,得到|di|,由|di|计算得到Ci的低三位Ci(2:0):
步骤3:编码值Ci作为输入,通过预测器求出预测值更新值Sp。首先以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
然后由Ci的最高位Ci(3)计算得到预测值更新值Sp:
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤4:将ramp1和rams1的高有效写使能信号wep1和wes1置1,将预测值更新值Sp写入ramp1中的第n个存储单元,将自适应因子更新值Index写入rams1中的第n个存储单元,下一个时钟上升沿到来时,ram中的第n个存储单元数据由第i个更新为第i+1个,以便下一个循环的第n路使用。
步骤5:将ramp1和rams1的读写地址加1,同时wep1和wes1置0,使ram处于读状态,由此过程,下次操作将读取第n+1路所需的第i个预测值和自适应因子。至此,多路数据循环压缩模块完成一个压缩过程。重新返回步骤1,开始对第n+1路第i个数据进行压缩。
多路数据循环解压缩器模块
其实施按如附图2所示的设计架构完成,该架构中包括的模块及其结构实现关系为:
ramp2存储器:采用VHDL编写生成,数据宽度16bit,数据深度为4。其输入端与加法器的输出端相连,用于多路解压缩的预测值参数缓存,输出端与加法器的输入端相连,为加法器提供当前样本的预测值Spi。
rams2存储器:采用VHDL编写生成,数据宽度7bit,数据深度为4。其输入端与自适应因子计算器的输出端相连,用于多路解压缩的自适应因子参数缓存,输出端与逆量化器的输入端相连,为逆量化器提供当前样本数据处理所需要的参数自适应因子indexi。
逆量化器:从rams2读取当前自适应因子参数indexi,对编码值Ci的低三位Ci(2:0)进行差值重构:
其中diff表示重构的差值,Q表示量化阶。
自适应因子计算器:编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index。
多路数据循环解压缩方法的实现原理,参考附图4。以对第n路数据进行第i次解压缩为例,步骤如下:
步骤1:从ramp2和rams2中读取所需的第n路第i个预测值Spi和自适应因子Indexi。
步骤2:逆量化器对编码值Ci的低三位进行差值重构,得到当前样本的解码输出值SRi。首先以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
然后由Ci的最高位Ci(3)计算得到解码输出SRi:
由SP=SRi得到预测值更新值Sp。
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤3:将ramp2和rams2的高有效写使能信号wep2和wes2置1,将预测值更新值Sp写入ramp2中的第n个存储单元,将自适应因子更新值Index写入rams2中的第n个存储单元,下一个时钟上升沿到来时,ram中的第n个存储单元数据由第i个更新为第i+1个,以便下一个循环的第n路使用。
步骤4:将ramp2和rams2的读写地址加1,同时wep2和wes2置0,使ram处于读状态,由此过程,下次操作将读取第n+1路所需的第i个预测值和自适应因子。至此,多路数据循环解压缩模块完成一个解压缩过程。重新返回步骤1,开始对第n+1路第i个数据进行解压缩。
Claims (4)
1.一种基于FPGA的多路循环数据压缩器,其特征在于包括ramp1存储器、rams1存储器、量化器、预测器、减法器和自适应因子计算器;
减法器:输入端为需要编码的数据和ramp1存储器的输出端;将输入值Si与ramp1存储器的输出值相减,其结果输出至与其相连的量化器;
量化器:输入端连接减法器和rams1存储器的输出端,输出端为压缩器的输出端,同时连接自适应因子计算器和预测器的输入端;从rams1存储器读取当前自适应因子indexi,对减法器输出差值di进行量化产生一个有符号的4位二进制编码值Ci;
自适应因子计算器:输出端连接rams1存储器的输入端;编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index;
预测器:输出端连接ramp1存储器的输入端;编码值Ci作为输入,通过预测器求出预测值更新值Sp;
ramp1存储器:输出端连接减法器的输入端;数据宽度16bit,用于多路压缩的预测值参数缓存,输出为减法器提供当前样本的预测值Spi;
rams1存储器:输出端连接量化器的输入端;数据宽度7bit,用于多路压缩的自适应因子参数缓存,输出为量化器提供当前样本数据处理所需要的参数自适应因子indexi。
2.一种采用权利要求1所述压缩器进行多路循环压缩编码的方法,其特征在于步骤如下:
步骤1:从存储器ramp1和存储器rams1中读取第n路第i个预测值Spi和自适应因子indexi;
步骤2:将当前第i个输入值Si与第i个预测值Spi相减,得到当前差值di;对di进行量化产生一个有符号的4位二进制编码值Ci,
所述Ci为补码形式,最高位为符号位,表示正负,低三位为量化码,对应0~7;
步骤3:以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>00</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>01</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>10</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>11</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>00</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>01</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>10</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>11</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中Q表示量化阶;
然后由Ci的最高位Ci(3)计算得到预测值更新值Sp:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msup>
<mmultiscripts>
<mn>1</mn>
<mo>&prime;</mo>
</mmultiscripts>
<mo>&prime;</mo>
</msup>
<mo>&DoubleRightArrow;</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mo>=</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mi>i</mi>
<mo>-</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msup>
<mmultiscripts>
<mn>0</mn>
<mo>&prime;</mo>
</mmultiscripts>
<mo>&prime;</mo>
</msup>
<mo>&DoubleRightArrow;</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mo>=</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mi>i</mi>
<mo>+</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤4:将ramp1和rams1的高有效写使能信号wep1和wes1置1,将预测值更新值Sp写入ramp1中的第n个存储单元,将自适应因子更新值Index写入rams1中的第n个存储单元,下一个时钟上升沿到来时,ramp1和rams1中的第n个存储单元数据由第i个更新为第i+1个,为下一个循环的第n路使用;
步骤5:将ramp1和rams1的读写地址加1,同时wep1和wes1置0,使ramp1和rams1处于读状态,多路数据循环压缩模块完成一个压缩过程;
重新返回步骤1,开始对第n+1路第i个数据进行压缩。
3.一种对权利要求1所述基于FPGA的多路循环数据压缩器得到的编码进行解码的多路数据循环解压缩器,其特征在于包括ramp2存储器、rams2存储器、逆量化器、自适应因子计算器和加法器;
逆量化器:输入端接收需要解码的编码数据,以及连接ramp2存储器的输出端,逆量化器的输出端连接加法器的输入端;从rams2存储器读取当前自适应因子参数,对编码值Ci的低三位进行差值重构;
自适应因子计算器:输入端接收需要解码的编码数据,输出端连接rams2存储器的输入端;编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index;
rams2存储器:输出端连接逆量化器的输入端;数据宽度7bit,用于多路解压缩的自适应因子参数缓存,输出为逆量化器提供当前样本数据处理所需要的参数自适应因子indexi;
ramp2存储器:输出端与加法器的输入端相连;数据宽度16bit,用于多路解压缩的预测值参数缓存,为加法器提供当前样本的预测值Spi。
4.一种采用权利要求3所述多路数据循环解压缩器进行多路循环解压缩编码的方法,其特征在于步骤如下:
步骤1:从ramp2和rams2中读取第n路第i个预测值Spi和自适应因子indexi;
步骤2:首先以编码值Ci的低三位Ci(2:0)为判定条件重构差值diff:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>00</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>01</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>10</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>0</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>11</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>00</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>01</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>10</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>:</mo>
<mn>0</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mmultiscripts>
<mn>1</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</mmultiscripts>
<msup>
<mn>11</mn>
<mrow>
<mo>&prime;</mo>
<mo>&prime;</mo>
</mrow>
</msup>
<mo>&DoubleRightArrow;</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>8</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>4</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<mi>Q</mi>
<mo>+</mo>
<mi>Q</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中Q表示量化阶;
然后由Ci的最高位Ci(3)计算得到解码输出SRi:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msup>
<mmultiscripts>
<mn>1</mn>
<mo>&prime;</mo>
</mmultiscripts>
<mo>&prime;</mo>
</msup>
<mo>&DoubleRightArrow;</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mo>=</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mi>i</mi>
<mo>-</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msup>
<mmultiscripts>
<mn>0</mn>
<mo>&prime;</mo>
</mmultiscripts>
<mo>&prime;</mo>
</msup>
<mo>&DoubleRightArrow;</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mo>=</mo>
<msub>
<mi>S</mi>
<mi>P</mi>
</msub>
<mi>i</mi>
<mo>+</mo>
<mi>d</mi>
<mi>i</mi>
<mi>f</mi>
<mi>f</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
由SP=SRi得到预测值更新值Sp;
最后编码值Ci作为输入,通过自适应因子计算器求出自适应因子更新值Index:
步骤3:将ramp2和rams2的高有效写使能信号wep2和wes2置1,将预测值更新值Sp写入ramp2中的第n个存储单元,将自适应因子更新值Index写入rams2中的第n个存储单元,下一个时钟上升沿到来时,ramp1和rams1中的第n个存储单元数据由第i个更新为第i+1个,为下一个循环的第n路使用;
步骤4:将ramp2和rams2的读写地址加1,同时wep2和wes2置0,使ramp1和rams1处于读状态,多路数据循环解压缩模块完成一个压缩过程;
重新返回步骤1,开始对第n+1路第i个数据进行解压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353447.1A CN104967453B (zh) | 2015-06-24 | 2015-06-24 | 基于fpga的多路循环数据压缩器和解压缩器以及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353447.1A CN104967453B (zh) | 2015-06-24 | 2015-06-24 | 基于fpga的多路循环数据压缩器和解压缩器以及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104967453A CN104967453A (zh) | 2015-10-07 |
CN104967453B true CN104967453B (zh) | 2018-01-05 |
Family
ID=54221413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510353447.1A Active CN104967453B (zh) | 2015-06-24 | 2015-06-24 | 基于fpga的多路循环数据压缩器和解压缩器以及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104967453B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175185B (zh) * | 2019-04-17 | 2023-04-07 | 上海天数智芯半导体有限公司 | 一种基于时序数据分布特征的自适应无损压缩方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1399472A (zh) * | 2001-07-23 | 2003-02-26 | 三星电子株式会社 | 多信道图像编码装置及其编码方法 |
CN102027746A (zh) * | 2008-09-19 | 2011-04-20 | 株式会社Ntt都科摩 | 动态图像编码装置、动态图像解码装置、动态图像编码方法、动态图像解码方法、动态图像编码程序以及动态图像解码程序 |
CN104519354A (zh) * | 2013-10-02 | 2015-04-15 | 瑞萨电子株式会社 | 视频编码器及其操作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7623682B2 (en) * | 2004-08-13 | 2009-11-24 | Samsung Electronics Co., Ltd. | Method and device for motion estimation and compensation for panorama image |
-
2015
- 2015-06-24 CN CN201510353447.1A patent/CN104967453B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1399472A (zh) * | 2001-07-23 | 2003-02-26 | 三星电子株式会社 | 多信道图像编码装置及其编码方法 |
CN102027746A (zh) * | 2008-09-19 | 2011-04-20 | 株式会社Ntt都科摩 | 动态图像编码装置、动态图像解码装置、动态图像编码方法、动态图像解码方法、动态图像编码程序以及动态图像解码程序 |
CN104519354A (zh) * | 2013-10-02 | 2015-04-15 | 瑞萨电子株式会社 | 视频编码器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104967453A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | Edge computing on IoT for machine signal processing and fault diagnosis: A review | |
Wang et al. | A novel feature enhancement method based on improved constraint model of online dictionary learning | |
O’Connor et al. | Compressed sensing embedded in an operational wireless sensor network to achieve energy efficiency in long-term monitoring applications | |
Yu et al. | A wavelet packet transform-based deep feature transfer learning method for bearing fault diagnosis under different working conditions | |
CN102754078B (zh) | 使用压缩和解压缩的增强型多处理器波形数据交换 | |
CN101669819B (zh) | 基于pt变换与线性预测结合的心电图信号无损压缩方法 | |
CN113177666A (zh) | 一种基于非侵入式注意力预处理过程与BiLSTM模型的预测方法 | |
CN104967453B (zh) | 基于fpga的多路循环数据压缩器和解压缩器以及方法 | |
Chen et al. | Research of Planetary Gear Fault Diagnosis Based on Multi-Scale Fractal Box Dimension of CEEMD and ELM. | |
Pan et al. | A meta network pruning framework for remaining useful life prediction of rocket engine bearings with temporal distribution discrepancy | |
Xiyuan et al. | A Review of FPGA‐Based Custom Computing Architecture for Convolutional Neural Network Inference | |
CN116465623A (zh) | 一种基于稀疏Transformer的齿轮箱寿命预测方法 | |
Ramalingam et al. | [Retracted] Telemetry Data Compression Algorithm Using Balanced Recurrent Neural Network and Deep Learning | |
Li et al. | Deep learning-based guided wave method for semi-grouting sleeve detection | |
CN113094640B (zh) | 一种频域下宽带多轴随机振动寿命预测方法 | |
Wang et al. | A light intelligent diagnosis model based on improved Online Dictionary Learning sample-making and simplified convolutional neural network | |
Tang et al. | Application of compressed sensing in the guided wave structural health monitoring of switch rails | |
Li et al. | Quantitative analysis method for the importance of stress influencing factors of a high arch dam during the operation period using SPA–OSC–PLS | |
CN102802199B (zh) | 基于压缩感知的无线传感器实时监测系统的数据处理方法 | |
Li et al. | Multichannel intelligent fault diagnosis of hoisting system using differential search algorithm‐variational mode decomposition and improved deep convolutional neural network | |
Jiang et al. | A novel fault diagnosis framework of rolling bearings based on adaptive dynamic activation convolutional capsule network | |
Fu et al. | Multi-Vibration Sensors Data Fusion Codec for Mechanical Digital Twin | |
Chuanchao | Two-level fusion big data compression and reconstruction framework combining second-generation wavelet and lossless compression | |
CN111582048B (zh) | 基于字典学习和稀疏表示的欠采样信号高分辨率重构方法 | |
CN103065008B (zh) | 基于2sd/vrc复合ehw的时序逻辑电路逆向设计方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200714 Address after: Room 403, 4 / F, innovation and technology building, northwest Polytechnic University, 127 Youyi West Road, Beilin District, Xi'an City, Shaanxi Province 710072 Patentee after: Xi'an Guangjiao Zhichuang Electronic Technology Co., Ltd Address before: 710072 Xi'an friendship West Road, Shaanxi, No. 127 Patentee before: Northwestern Polytechnical University |
|
TR01 | Transfer of patent right |