编码方法、设备及可读存储介质
技术领域
本发明涉及数据传输领域,特别是涉及一种编码方法、设备及可读存储介质。
背景技术
在串行数据传输中,传输的数据可以被编码成包含有时钟频率分量的码流,使得接收端可以从码流中提取时钟同步信息,时钟同步信息可以保证接收端按照正确的时序从接收到的信号中再生出原始数据。
4B5B是常用的编码,将输入的4位数据转换为5位后输出。一般使用查找设计好的码表来完成编码和译码工作,因此发送端和接收端都需要额外的存储器来存储码表。4B5B编码还可能降低编码质量,即逻辑值相同的连续位数量过多,例如在使用4B5B编码传输8位数据时。低质量的编码不利于接收端提取时钟同步信息,并且带来较大的直流分量,提高误码率。
发明内容
本发明主要解决的技术问题是提供一种编码方法、设备及可读存储介质,能够解决现有技术中的编码可能降低编码质量的问题。
为了解决上述技术问题,本发明提供了一种编码方法,该方法包括:对第一比特流进行质量判断;若第一比特流满足预设的质量标准,则将第一比特流与标识位进行组合以输出第二比特流;若第一比特流不满足预设的质量标准,则对第一比特流进行逻辑运算以输出第三比特流,第三比特流的位数大于第一比特流。
为了解决上述技术问题,本发明提供了一种编码装置,该装置包括处理器,处理器用于执行指令以实现前述的方法。
为了解决上述技术问题,本发明提供了一种可读存储介质,存储有指令,指令被执行时实现前述的方法。
本发明的有益效果是:在编码过程中先判断第一比特流是否满足预设的质量标准,对满足质量标准的第一比特流将其与标识位进行组合以输出第二比特流,对不满足质量标准的第一比特流进行逻辑运算以输出第三比特流,第三比特流的位数大于第一比特流,逻辑运算之后第三比特流相比于第一比特流的编码质量得到了提升,第三比特流的编码质量得到保障。
附图说明
图1是本发明编码方法一实施例的流程示意图;
图2是本发明编码方法又一具体实施例的流程示意图;
图3是本发明编码方法又一具体实施例的流程示意图;
图4是本发明编码设备一实施例的结构示意图;
图5是本发明可读存储介质一实施例的结构示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明。以下各实施例中不冲突的可以相互结合。
如图1所示,本发明编码方法一实施例包括:
S1:对第一比特流进行质量判断。
第一比特流可以为未经编码的数据,其位数可以根据实际传输需求而定,例如8位、16位等。质量判断可以为判断第一比特流的质量是否满足预设的质量标准。该质量标准可以与第一比特流中逻辑值相同的连续位有关。一般来说,满足质量标准的第一比特流中的逻辑值相同的连续位数不超过一阈值,该阈值的大小可以与第一比特流的位数相关,例如第一比特流的位数的一半加上一个正整数。
在本发明一具体实施例中,第一比特流为8位比特流的情况下,若第一比特流满足以下条件a、b、c和d中的至少一个,则判定第一比特流不满足质量标准:
a.第一比特流中的第4位至第7位的逻辑值相同;
b.第一比特流中的第1位至第6位的逻辑值相同;
c.第一比特流中的第0位至第5位的逻辑值相同;
d.第一比特流中的第6位和第7位的逻辑值相同,第0位至第4位的逻辑值相同,且与第6位和第7位的逻辑值相反。
可选的,可以将上述判断方式转换为对以下逻辑表达式计算结果的判断:
NAND(NAND(bm[4~7]),NAND(bm[1~6]),NAND(bm[0~5]),OR(NA ND(bm[6~7]),OR(bm[0~4])),OR(OR(bm[6~7]),NAND(bm[0~4])),OR(bm[4~7]),OR(bm[1~6]),OR(bm[0~5]))(1)
其中,NAND为与非操作,OR为或操作,bm[i~j]为第一比特流的第i位至第j位,i和j均为0至7中的整数且i<j。
在式(1)中,当第一比特流的第4位至第7位均为1时,NAND(bm[4~7])为0。
当第一比特流的第1位至第6位均为1时,NAND(bm[1~6])为0。
当第一比特流的第0位至第5位均为1时,NAND(bm[0~5])为0。
当第一比特流的第6位至第7位均为1且第一比特流的第0位至第4位均为0时,NAND(bm[6~7])为0,OR(bm[0~4])为0,OR(NAND(bm[6~7]),OR(bm[0~4]))为0。
当第一比特流的第6位至第7位均为0且第一比特流的第0位至第4位均为1时,OR(bm[6~7])为0,NAND(bm[0~4])为0,OR(OR(bm[6~7]),NAND(bm[0~4]))为0。
当第一比特流的第4位至第7位均为0时,OR(bm[4~7])为0。
当第一比特流的第1位至第6位均为0时,OR(bm[1~6])为0。
当第一比特流的第0位至第5位均为0时,OR(bm[0~5])为0。
若式(1)的计算结果为1,意味着NAND(bm[4~7]),NAND(bm[1~6]),NAND(bm[0~5]),OR(NAND(bm[6~7]),OR(bm[0~4])),OR(OR(bm[6~7]),NAND(bm[0~4])),OR(bm[4~7]),
OR(bm[1~6]),OR(bm[0~5])中的至少一个为0,结合上面的各个逻辑式为0的条件,可以得到第一比特流满足条件a、b、c和d中的至少一个,则第一比特流不满足质量标准。若式(1)的计算结果为0,则第一比特流满足质量标准。
在本发明另一具体实施例中,第一比特流为8位比特流的情况下,若第一比特流同时满足以下所有条件e、f、g和h,则判定第一比特流满足质量标准:
e.第一比特流中的第4位至第7位中的至少两位的逻辑值不同;
f.第一比特流中的第1位至第6位中的至少两位的逻辑值不同;
g.第一比特流中的第0位至第5位中的至少两位的逻辑值不同;
h.满足以下子条件中的至少一个:
h1.第一比特流中的第6位和第7位的逻辑值不同。
h2.第一比特流中的第0位至第4位的逻辑值不同。
h3.第一比特流中的第6位和第7位的逻辑值相同。第0位至第4位的逻辑值相同,且与第6位和第7位的逻辑值相同。
可选的,可以将上述判断方式转换为对以下逻辑表达式计算结果的判断:
AND(XOR(bm[4~7]),XOR(bm[1~6]),XOR(bm[0~5]),OR(NAND(bm[6~7]),OR(bm[0~4])),OR(OR(bm[6~7]),NAND(bm[0~4])))(2)
其中,AND为与操作,NAND为与非操作,OR为或操作,XOR为异或操作;bm[i-j]为第一比特流的第i位至第j位,i和j均为0至7中的整数且i<j。
在式(2)中,当第一比特流的第4位至第7位的逻辑值不同(即其中至少两位的逻辑值不同)时,XOR(bm[4~7])为1。
当第一比特流的第1位至第6位的逻辑值不同时,XOR(bm[1~6])为1。
当第一比特流的第0位至第5位的逻辑值不同时,XOR(bm[0~5])为1。
bm[6~7]和bm[0~4]可以联合讨论。
当第一比特流的第6位和第7位的逻辑值不同时,NAND(bm[6~7])和OR(bm[6~7])均为1,无论第一比特流的第0位至第4位的逻辑值是否相同,OR(NAND(bm[6~7]),OR(bm[0~4]))和OR(OR(bm[6~7]),NAND(bm[0~4]))均为1。
当第一比特流的第0位至第4位的逻辑值不同时,NAND(bm[0~4])和OR(bm[0~4])均为1,无论第一比特流的第6位和第7位的逻辑值是否相同,OR(NAND(bm[6~7]),OR(bm[0~4]))和OR(OR(bm[6~7]),NAND(bm[0~4]))均为1。
在第一比特流的第6位和第7位的逻辑值相同且第一比特流的第0位至第4位的逻辑值相同的情况下:当第一比特流第6位和第7位均为0时,NAND(bm[6~7])为1,OR(NAND(bm[6~7]),OR(bm[0~4]))为1,同时OR(bm[6~7])为0,要满足OR(OR(bm[6~7]),NAND(bm[0~4]))为1,NAND(bm[0~4])应为1,即第一比特流的第0位至第4位均为0;当第一比特流第6位和第7位均为1时,OR(bm[6~7])为1,OR(OR(bm[6~7]),NAND(bm[0~4]))为1,同时NAND(bm[6~7])为0,要满足OR(NAND(bm[6~7]),OR(bm[0~4]))为1,OR(bm[0~4])应为1,即第一比特流的第0位至第4位均为1。
若式(2)的计算结果为1,意味着XOR(bm[4~7]),XOR(bm[1~6]),XOR(bm[0~5]),OR(NAND(bm[6~7]),OR(b m[0~4])),OR(OR(bm[6~7]),NAND(bm[0~4]))均为1,结合前一段的描述可以得到第一比特流同时满足所有条件e、f、g和h,则第一比特流满足质量标准。若式(2)的计算结果为0,则第一比特流不满足质量标准。
经过质量判断后,若第一比特流满足质量标准,则跳转到S2;若第一比特流不满足质量标准,则跳转到S3。
S2:将第一比特流与标识位进行组合以输出第二比特流。
第一比特流满足预设的质量标准的情况下,不需要提高第一比特流的编码质量,可以与标识位组合之后直接输出。
标识位的位数可以为1,也可以为更多。具体的,可以将标识位直接插入第一比特流前/中/后以形成第二比特流,也可以将第一比特流的至少部分位进行逻辑运算后插入标识位,也可以采用其他组合方式,在此不做限制。一般而言,标识位与第一比特流的组合不应影响编码质量,即第二比特流仍满足预设的质量标准。
S3:对第一比特流进行逻辑运算以输出第三比特流。
第三比特流的位数大于第一比特流。逻辑运算可以提高第一比特流的编码质量。一般而言,逻辑运算之后得到的第三比特流可以满足预设的质量标准。
在本发明一具体实施例中,第三比特流包括标识位,第二比特流的特定位与标识位满足第一逻辑关系,第三比特流的特定位与标识位满足第二逻辑关系。第一逻辑关系不同于第二逻辑关系,以通过标识位和特定位能够区分输出的是第二比特流或第三比特流。具体的,第一逻辑关系可以为相同,第二逻辑关系可以为相反;或者,第一逻辑关系可以为相反,第二逻辑关系可以为相同。
此时第一比特流和标识位的组合过程可以具体包括:利用第一比特流中与特定位对应的位按照第一逻辑关系对第二比特流中的标识位进行赋值,并将第一比特流赋值给第二比特流中除标识位之外的其他位。
通过本实施例的实施,在编码过程中先判断第一比特流是否满足预设的质量标准,对满足质量标准的第一比特流将其与标识位进行组合以输出第二比特流,对不满足质量标准的第一比特流进行逻辑运算以输出第三比特流,第三比特流的位数大于第一比特流,逻辑运算之后第三比特流相比于第一比特流的编码质量得到了提升,第三比特流的编码质量得到保障。
下面结合附图举例说明完整的编码过程。
如图2所示,在本发明又一具体实施例中,编码方法包括:
S101:获取第一比特流bm[0~7]。
S102:判断逻辑表达式(1)的计算结果是否为1。
图中的==表示等于,=表示赋值。
若逻辑表达式(1)的计算结果为1,则跳转到S103;若逻辑表达式(1)的计算结果为0,则跳转到S104。
S103:按照下式进行逻辑运算得到第三比特流。
bn[0]=~bm[1]
bn[1]=~bm[1]
bn[2]=bm[1]
bn[3]=bm[2]
bn[4]=~((bm[3]&~bm[1]&~bm[0])|(~bm[3]&~bm[1]&bm[0])|(bm[3]&bm[1]&bm[0])|(~bm[3]&bm[1]&~bm[0]))
bn[5]=(bm[4]&~bm[1]&~bm[0])|(~bm[4]&~bm[1]&bm[0])|(bm[4]&b m[1]&bm[0])|(~bm[4]&bm[1]&~bm[0]);
bn[6]=~bm[5]
bn[7]=~((bm[6]&~bm[1]&~bm[0])|(~bm[6]&~bm[1]&bm[0])|(bm[6]&bm[1]&bm[0])|(~bm[6]&bm[1]&~bm[0]))
bn[8]=(bm[7]&~bm[1]&~bm[0])|(~bm[7]&~bm[1]&bm[0])|(bm[7]&b m[1]&bm[0])|(~bm[7]&bm[1]&~bm[0])
其中,bm[i]为第一比特流中的第i位,i=0,1,…,7,bn[j]为第三比特流中的第j位,j=0,1,…,8,~表示取反逻辑运算,&表示与逻辑运算,|表示或逻辑运算,且取反逻辑运算的优先级高于与逻辑运算。
S104:将第一比特流赋值给第二比特流的第1~8位,并将第一比特流的第0位的取反结果赋值给第二比特流的第0位(即标识位)。
得到第二比特流bn[0~8]。
如图3所示,在本发明又一具体实施例中,编码方法包括:
S201:获取第一比特流bm[0~7]。
S202:判断逻辑表达式(2)的计算结果是否为1。
图中的==表示等于,=表示赋值。
若逻辑表达式(2)的计算结果为0,则跳转到S203;若逻辑表达式(1)的计算结果为1,则跳转到S204。
S203:按照下式进行逻辑运算得到第三比特流。
bn[0]=bm[1]
bn[1]=~bm[1]
bn[2]=bm[1]
bn[3]=bm[2]
bn[4]=~((bm[3]&~bm[1]&~bm[0])|(~bm[3]&~bm[1]&bm[0])|(bm[3]&bm[1]&bm[0])|(~bm[3]&bm[1]&~bm[0]))
bn[5]=(bm[4]&~bm[1]&~bm[0])|(~bm[4]&~bm[1]&bm[0])|(bm[4]&b m[1]&bm[0])|(~bm[4]&bm[1]&~bm[0]);
bn[6]=~bm[5]
bn[7]=~((bm[6]&~bm[1]&~bm[0])|(~bm[6]&~bm[1]&bm[0])|(bm[6]&bm[1]&bm[0])|(~bm[6]&bm[1]&~bm[0]))
bn[8]=(bm[7]&~bm[1]&~bm[0])|(~bm[7]&~bm[1]&bm[0])|(bm[7]&b m[1]&bm[0])|(~bm[7]&bm[1]&~bm[0])(3)
其中,bm[i]为第一比特流中的第i位,i=0,1,…,7,bn[j]为第三比特流中的第j位,j=0,1,…,8,~表示取反逻辑运算,&表示与逻辑运算,|表示或逻辑运算,且取反逻辑运算的优先级高于与逻辑运算。
S204:将第一比特流赋值给第二比特流的第1~8位,并将第一比特流的第0位赋值给第二比特流的第0位(即标识位)。
得到第二比特流bn[0~8]。
如图4所示,本发明编码设备一实施例包括:处理器110。除此之外,编码设备还可以包括存储器(图中未画出)。
处理器110控制编码设备的操作,处理器110还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号序列的处理能力。处理器110还可以是通用处理器、数字信号序列处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
处理器110用于执行指令以实现本发明编码方法任一实施例及可能的组合所提供的方法。
如图5所示,本发明可读存储介质一实施例包括存储器210,存储器210存储有指令,该指令被执行时实现本发明编码方法任一实施例及可能的组合所提供的方法。
存储器210可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、闪存(Flash Memory)、硬盘、光盘等。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。