一种传输协议解码方法、装置及传输协议解码芯片转让专利

申请号 : CN201310513788.1

文献号 : CN103561008B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡富斌李照华石磊符传汇杨亚吉戴文芳

申请人 : 深圳市明微电子股份有限公司

摘要 :

本发明适用于通信领域,提供了一种传输协议解码方法、装置及传输协议解码芯片,所述方法包括下述步骤:生成振荡信号;检测帧起始信号,并在检测到帧起始信号时,输出采样控制信号;接收到采样控制信号后,在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,输出商和余数;根据商和余数确定采样周期,以生成采样脉冲,并根据采样脉冲对数据字节进行解码。本发明在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数进行解码,没有积累误差产生,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。

权利要求 :

1.一种传输协议解码方法,其特征在于,所述方法包括下述步骤:

生成振荡信号;

检测帧起始信号,并在检测到所述帧起始信号时,输出采样控制信号;

接收到所述采样控制信号后,在帧起始字节低电平位数的时间周期内对所述振荡信号的振荡周期进行计数,并对所述计数值进行除法运算,输出商和余数N·K+M=Nkbits,其中N为商,M为余数,NKbits为计数值,K为帧起始字节低电平的对应的位数;

根据商和余数确定采样周期,所述采样周期包括两种采样脉冲间隔(N+1)T或者NT,其中(N+1)T的个数为M,NT的个数为(K-M),根据这两种采样脉冲间隔对每一帧中的数据字节采样,进行解码,以生成采样脉冲,并根据所述采样脉冲对传输数据中的数据字节进行解码。

2.如权利要求1所述的方法,其特征在于,所述根据商和余数确定采样周期,以生成采样脉冲,并根据所述采样脉冲对传输数据中的数据字节进行解码的步骤具体为:根据所述商生成第一采样周期和第二采样周期;

将数据字节位数写入第一递减器,将所述余数写入第二递减器;

根据所述第一递减器和所述第二递减器的递减结果,将所述第一采样周期或所述第二采样周期写入第三递减器;

根据所述第三递减器的递减结果生成采样脉冲;

根据所述采样脉冲对传输数据中的每一帧中的数据字节采样,进行解码。

3.一种传输协议解码装置,所述装置与驱动单元连接,包括:

振荡器,用于生成振荡信号;

控制器,用于检测帧起始信号,并在检测到所述帧起始信号时,输出采样控制信号,所述控制器的输入端接收传输数据;

除法运算单元,用于在接收到所述采样控制信号后,在帧起始字节低电平位数的时间周期内对所述振荡信号的振荡周期进行计数,并对所述计数值进行除法运算,输出商和余数N·K+M=Nkbits,其中N为商,M为余数,NKbits为计数值,K为帧起始字节低电平的对应的位数,所述除法运算单元的控制端与所述控制器的输出端连接,所述除法运算单元的输入端与所述振荡器的输出端连接;

解码单元,用于根据所述商和余数确定采样周期,所述采样周期包括两种采样脉冲间隔(N+1)T或者NT,其中(N+1)T的个数为M,NT的个数为(K-M),根据这两种采样脉冲间隔对每一帧中的数据字节采样,进行解码,以生成采样脉冲,并根据所述采样脉冲对传输数据中的数据字节进行解码,所述解码单元的第一输入端与所述除法运算单元的第一输出端连接,所述解码单元的第二输入端与所述除法运算单元的第二输出端连接,所述解码单元的第三输入端与所述控制器的输入端连接以接收传输数据,所述解码单元的时钟端与所述振荡器的输出端连接,所述解码单元的输出端与所述驱动单元连接。

4.如权利要求3所述的装置,其特征在于,所述控制器为状态机或时间检测装置。

5.如权利要求3所述的装置,其特征在于,所述除法运算单元包括:

第一D触发器、第二D触发器、第三D触发器、第四D触发器、第一或非门、第二或非门、二进制计数器以及逻辑运算模块;

所述第一D触发器的复位端、所述第二D触发器的复位端、所述第三D触发器的复位端、所述第四D触发器的复位端同时为所述除法运算单元的控制端,所述第一D触发器的时钟输入端、所述第二D触发器的时钟输入端为所述除法运算单元的输入端,所述第二D触发器的触发端与所述第一D触发器的正向输出端连接,所述第一或非门的第一输入端与所述第一D触发器的正向输出端连接,所述第一或非门的第二输入端与所述第二D触发器的正向输出端连接,所述第一或非门的输出端同时与所述第一D触发器的触发端、所述第三D触发器的时钟输入端、所述第四D触发器的时钟输入端连接,所述第四D触发器的触发端与所述第三D触发器的正向输出端连接,所述第二或非门的第一输入端与所述第三D触发器的正向输出端连接,所述第二或非门的第二输入端与所述第四D触发器的正向输出端连接,所述第二或非门的输出端同时与所述第三D触发器的触发端和所述二进制计数器的时钟输入端连接,所述二进制计数器的输出端为所述除法运算单元的第一输出端,所述第一D触发器的正向输出端、所述第二D触发器的正向输出端、所述第三D触发器的正向输出端、所述第四D触发器的正向输出端依次于所述逻辑运算模块的第一输入端、第二输入端、第三输入端、第四输入端连接,所述逻辑运算模块的输出端为所述除法运算单元的第二输出端。

6.如权利要求3所述的装置,其特征在于,所述解码单元包括:

第一递减器、第二递减器、第三递减器、控制模块、状态机以及解码器;

所述控制模块的第一输入端为所述解码单元的第一输入端,所述控制模块的第二输入端为所述解码单元的第二输入端,所述控制模块的第一输出端与所述第一递减器的输入端连接,所述控制模块的第二输出端与所述第二递减器的输入端连接,所述控制模块的所述第三输出端与所述第三递减器的输入端连接,所述状态机的输出端与所述控制模块的第三输入端连接,所述控制模块的时钟端为所述解码单元的时钟端,所述控制模块的输出端与所述解码器的第一输入端连接,所述解码器的第二输入端为所述解码单元的第三输入端,所述解码器的输出端为所述解码单元的输出端。

7.一种传输协议解码芯片,其特征在于,所述芯片包括如权利要求3至6任一项所述的传输协议解码装置。

说明书 :

一种传输协议解码方法、装置及传输协议解码芯片

技术领域

[0001] 本发明属于通信领域,尤其涉及一种传输协议解码方法、装置及传输协议解码芯片。

背景技术

[0002] 随着数字技术及计算机技术的应用和普及,出现了电脑调光台,并先后出现了D54、AVAB、CMX、PMX、EMX等模拟及数字通信协议。由于以上协议标准是各生产厂家各自的协议标准,因而它们之间的兼容性不好,设备之间的相互通用存在问题。后来,为了解决各个厂家设备通用性的问题,美国剧场技术协会(United State Institute for Theatre Technology,USITT)于20世纪80年代初制定了DMX512协议。DMX512协议是一种数字多路复用(Digital Multiplex,DMX)协议。协议制定后,经过修改,USITT于1990年将DMX512协议更规范,形成了DMX512-1990。目前几乎所有的灯光及舞台设备生产厂商都支持此控制协议,作为广泛采用的数字灯光数据协议,DMX512-1990也成为灯光控制的国际标准。
[0003] DMX512协议的统一使得各厂家的设备可相互连接,兼容性大大提高。同时,由于DMX512协议采用串行方式传送数字信号,控台与设备之间只要一根信号线即可,大大简化了控制台与设备之间的连接线。
[0004] DMX512协议可通过在总线上发送数据包来实现对灯光设备的亮度调节。协议对数据包的每一部分的时序都做了极为严格的规定。每字节有11位数据,1位低电平起始位,8位数据位和2位高电平停止位。一帧数据包含1个地址的亮度数据,第1帧是第1个地址的数据,第2帧是第2个地址的数据,以此类推,512帧可以传送512个地址的数据。DMX512时序图如图1所示。
[0005] 说明如下表:
[0006]
[0007] 标准的DMX512协议中,每个bits的数据宽度是固定的,为4us,也就是数据传输速率为250Kbps(每秒钟传输250Kbits数据)。
[0008] 现有的协议解码方式为:
[0009] 通过监测每帧数据的起始字节时间宽度,来确定后续每个字节的时间宽度。以标准的DMX512协议为例,起始字节的组成为:1个起始标志位(“0”)+8个字节数据位(8个“0”)+2个结束标志位(2个“1”)。按照标准DMX512协议,该起始字节的宽度为44us。由于在起始字节中的9个bits“0”是介于帧起始标志位(“1”)和2个字节结束标志位(2个“1”)之间的,那么这9个bits“0”的时间宽度比较好监测。
[0010] 现有做法其一是根据采样数据,来选择采样周期的方式,例如,通过内部振荡器,产生几种采样周期T1,T2,T3,通过对起始字节的采样,来选取最适合的一种采样周期。该方法简单,但是针对多种采样数据下选择相同的预设采样周期,使得解码误差很大,特别是不能够做到对频率提升后的采样全覆盖。也就是说,在某些频段内可采样,某些频段内不能采样,例如在200~300Kbps,400~500Kbps内能采样,但是在300~400Kbps内不能采样。
[0011] 另外一种做法是从机内包含一个内置振荡器(周期为T),通过对起始字节的9个bits“0”时间计数,例如,时间为T9bits,除以9,得到每个bit的时间宽度Tbit。当然,也可以在采样过程中进行除法运算。而由于采样通常采用数字处理方式,该时间宽度Tbit应为振荡器周期的整数倍N*T以避免误差产生,而实际情况中N一般为T9bits/9得到,难以控制为整除数,假设T9bits/9=8.6。
[0012] 目前通常采用保留整数位的做法,那么上述数据,选取N=8,在进行每个字节数据解码时,会有积累误差。如图1所示,一般会在数据字节的中心位置采样,采样点位置为N(1/2+1)T,这样,在解码每个字节的起始位时,会有[(8.6-8)/2]T=0.3T的误差;在解码每个字节的第1个数据位时,会有[(8.6-8)×1.5]T=0.9T的误差;以此类推,在解码每个字节的第
8个数据位时,积累误差为:[(8.6-8)×8.5]T=4.1T的误差;特别的,在极端情况下当T9bits/
9=8.99,在解码每个字节的第8个数据位时,积累误差约为8.5T,这样会产生解码错误。因此一般选取采样位置为(N/2)T>8.5T。以保证在解码每个字节的第8个数据位时,不会采样到第7个数据位上。
[0013] 然而,为了更精确地对起始字节时间宽度采样,不断提高从机振荡器的频率越高越好。因为频率越高,采用保留整数法所得到的最大积累误差,相对于采样周期而言会越小。在上述例子中,在标准DMX512协议中,每个bit的时间宽度为4us,如果N=16,那么内部振荡器的周期为4us/16=0.25us,频率为4MHz。
[0014] 在实际应用中,在保证刷新率情况下,需要连接更多的从机。也就是说,需要将数据传输速率提升。如果在上述内部振荡频率基础上解更高频率的码,譬如解码率达到500Kbps,那么最大的积累误差仍然为8.5T,而如果N=8,就会解码错误。那么只有通过提升芯片内部振荡器频率的做法。振荡器频率从4MHz提升到8MHz,这样N=16。以此类推,如果需要解码率达到1Mbps,那么需要内部振荡器的频率至少是16MHz。但是在现有集成电路基础上,达到上兆赫兹的频率,频率越大,芯片在不同时期生产的稳定性越难保证。
[0015] 因此,现有传输协议解码方法由于采样周期的积累误差导致难以保证解码的准确率,并且通过提升芯片内部振荡器频率的做法来提升数据传输率以降低解码误差成本高,实现复杂,稳定性差。

发明内容

[0016] 本发明实施例的目的在于提供一种传输协议解码方法,旨在解决目前解码方法存在采样周期积累误差导致解码不精确,实现复杂、成本高、稳定性差的问题。
[0017] 本发明实施例是这样实现的,一种传输协议解码方法,所述方法包括下述步骤:
[0018] 生成振荡信号;
[0019] 检测帧起始信号,并在检测到所述帧起始信号时,输出采样控制信号;
[0020] 接收到所述采样控制信号后,在帧起始字节低电平位数的时间周期内对所述振荡信号的振荡周期进行计数,并对所述计数值进行除法运算,输出商和余数;
[0021] 根据商和余数确定采样周期,以生成采样脉冲,并根据所述采样脉冲对传输数据中的数据字节进行解码。
[0022] 本发明实施例的另一目的在于提供一种传输协议解码装置,所述装置与驱动单元连接,包括:
[0023] 振荡器,用于生成振荡信号;
[0024] 控制器,用于检测帧起始信号,并在检测到所述帧起始信号时,输出采样控制信号,所述控制器的输入端接收传输数据;
[0025] 除法运算单元,用于在接收到所述采样控制信号后,在帧起始字节低电平位数的时间周期内对所述振荡信号的振荡周期进行计数,并对所述计数值进行除法运算,输出商和余数,所述除法运算单元的控制端与所述控制器的输出端连接,所述除法运算单元的输入端与所述振荡器的输出端连接;
[0026] 解码单元,用于根据所述商和余数确定采样周期,以生成采样脉冲,并根据所述采样脉冲对传输数据中的数据字节进行解码,所述解码单元的第一输入端与所述除法运算单元的第一输出端连接,所述解码单元的第二输入端与所述除法运算单元的第二输出端连接,所述解码单元的第三输入端与所述控制器的输入端连接以接收传输数据,所述解码单元的时钟端与所述振荡器的输出端连接,所述解码单元的输出端与所述驱动单元连接。
[0027] 本发明实施例的另一目的在于提供一种采用上述传输协议解码装置的传输协议解码芯片。
[0028] 本发明实施例通过在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数进行解码,没有积累误差产生,无需通过提升数据传输率降低解码误差,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。

附图说明

[0029] 图1为DMX512协议时序解码示意图;
[0030] 图2为本发明一实施例提供的传输协议解码方法的流程图;
[0031] 图3为本发明另一实施例提供的传输协议解码方法的流程图;
[0032] 图4为本发明实施例提供的传输协议解码装置的结构图;
[0033] 图5为本发明实施例提供的传输协议解码装置中除法运算单元的一实现示例电路图;
[0034] 图6示出了本发明实施例提供的传输协议解码装置中解码单元的一实现示例结构图;
[0035] 图7为本发明实施例提供的由状态机实现传输协议解码方法的流程图。

具体实施方式

[0036] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0037] 本发明实施例在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,根据商和余数进行解码,没有积累误差产生,大大提高了解码的准确率。
[0038] 图2示出了本发明一实施例提供的传输协议解码方法的流程,为了便于说明,仅示出了与本发明相关的部分。
[0039] 在步骤S101中,振荡器生成振荡信号OSC;
[0040] 在步骤S102中,控制器检测帧起始信号,并在检测到帧起始信号时,输出采样控制信号;
[0041] 在本发明实施例中,该帧起始信号为传输数据中每一帧的第一个低电平,参见图1中的编号1,控制器检测传输数据的每一帧中的帧起始信号的低电平时间宽度,当低电平时间大于预设时间宽度时,控制器确认检测到帧起始信号,并输出采样控制信号,例如,在标准DMX512协议中,该帧起始信号低电平时间宽度大于88us,而对于类DMX512协议,控制器也可以根据该协议的帧起始信号低电平时间宽度设定检测预设时间宽度。
[0042] 在步骤S103中,除法运算单元接收到采样控制信号后,在帧起始字节低电平位数的时间周期内对振荡信号OSC的振荡周期T进行计数,并对计数值NKbits进行除法运算,输出商和余数;
[0043] 在本发明实施例中,帧起始字节为传输数据每一帧的帧起始信号后第一个字节(包括1位低电平起始位、8位数据位和2位高电平停止位),参见图1 中第一个编号3所标示的部分,除法运算单元当接收到采样控制信号后,以振荡周期为单位,以帧起始字节的下降沿作为计数开始,以帧起始字节的上升沿作为计数结束,在帧起始字节低电平位数的采样时间周期内对振荡周期T进行计数,得到与帧起始字节低电平位数的采样时间周期相对应的时钟个数(计数值NKbits),那么起始字节的时间宽度为Nkbits·T,其中T是振荡器周期。
[0044] 进而,除法运算单元对该计数值NKbits做除法运算,得到商N和余数M,即N·K+M=Nkbits。其中,K为帧起始字节低电平的对应的位数。
[0045] 以标准DMX512协议为例,由于该协议帧起始字节低电平位为9位(参考图1和表1),除法运算单元在接收到采样控制信号和振荡周期T后,以帧起始字节的下降沿作为计数开始,以振荡器输出的振荡周期T为单位,以起始字节的上升沿作为计数结束,检测到帧起始字节的时间宽度N9bits·T,对N9bits做除9运算,得到商N和余数M,其中9·N+M=N9bits。
[0046] 当然,类DMX512协议中,可以任意设定帧起始字节低电平的时间宽度Nkbits·T及低电平对应的位数K,也可以任意设定传输数据字节位数j。相应的,除法运算为Nkbits÷K,它由两部分组成,其中N为商,M为余数,并且N·K+M=Nkbits,其中M为0至(k-1)内的任意整数。由于通常在数据字节的中心位置采样,因此后续起始位的采样周期为(N/2)T,数据字节(有j个位)中的采样周期为Tsamp=T·N或Tsamp=T·(N+1),其中有(j-X)个Tsamp=T·N和X个Tsamp=T·(N+1),其中,X=M·(j÷K)。
[0047] 在步骤S104中,解码单元根据商和余数确定采样周期,以生成采样脉冲,并根据该采样脉冲对传输数据中的数据字节进行解码。
[0048] 在本发明实施例中,解码单元根据商N和余数M,确定采样周期,该采样周期包括两种采样脉冲间隔,进而根据这两种采样脉冲间隔对每一帧中的数据字节采样,进行解码,上述数据字节是指在每一帧首字节后面的多个字节,以标准DMX512协议为例,帧起始字节的位数为9,每个数据字节的位数也为9 (其中第1位为1’b0)。每个数据字节对应9个采样脉冲,每个脉冲间的时间宽度,通过N和M控制。其中,为了采样准确,一般在每个bit的中心位置采样,即起始位的采样点距离该数据字节起始位下降沿宽度为(N/2)T,后续的8个数据位采样脉冲间隔为(N+1)T或者NT,其中(N+1)T的个数为M,NT的个数为(9-M),并且可以通过插值法设置采样脉冲间隔为(N+1)T或者NT。
[0049] 作为本发明一实施例,解码单元可以采用多个解码器、递减器、状态机以及控制模块实现,例如,采用第一递减器递减数据字节位数j,第二递减器递减余数M,第三递减器递减采样周期。
[0050] 该状态机的状态转换图可以为:
[0051] 0000→0001→0010→0011→0100→0101→0110→0111→1000→0000……。
[0052] 例如,采样到起始字节的时间宽度为176T,那么经过除9处理后,得到N=19,M=5,用二进制表示为N=5’b10011,M=4’b0101。
[0053] 采样起始位时,将采样点设定为5’b01001。其后的数据位采样周期分别为5次5’b10100,3次5’b10011。并且,在分布时,尽量采用插入分布的方式,譬如从起始位到第8数据位的采样周期如图7所示。
[0054] 具体采样过程为:以每个数据字节的下降沿作为采样数据开始,起始位的采样点为(N/2)T,若M=3,通过状态机设置插值,例如,设置第2个采样脉冲与第1个采样脉冲的间隔为(N+1)T,第3个采样脉冲与第2个采样脉冲的间隔为(N+1)T,第4个采样脉冲与第3个采样脉冲的间隔为(N+1)T,第5个采样脉冲与第4个采样脉冲的间隔为NT,第6个采样脉冲与第5个采样脉冲的间隔为NT,第7个采样脉冲与第6个采样脉冲的间隔为NT,第8个采样脉冲与第7个采样脉冲的间隔为NT,第9个采样脉冲与第8个采样脉冲的间隔为NT。可以理解地,上述每个采样脉冲间隔的选择可以通过改变状态机的状态转换值的设置而变化设置,例如将第3个采样脉冲与第2个采样脉冲的间隔设置为NT,第8个采样脉冲与第7个采样脉冲的间隔设置为(N+1)T,而每发出一次采样脉冲,第一递减器、第二递减器和第三递减器应相应地递减数据字节位数j、余数M以及采样周期。
[0055] 本发明实施例通过在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数确定采样周期(采样脉冲间隔),进而根据该采样周期对每一帧中的数据字节采样,进行解码,没有积累误差产生,无需通过提升数据传输率降低解码误差,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。
[0056] 图3示出了本发明另一实施例提供的传输协议解码方法的流程,为了便于说明,仅示出了与本发明相关的部分。
[0057] 在步骤S201中,振荡器生成振荡信号OSC;
[0058] 在步骤S202中,控制器检测帧起始信号,并在检测到帧起始信号时,输出采样控制信号;
[0059] 在步骤S203中,除法运算单元接收到采样控制信号后,在帧起始字节低电平位数的时间周期内对振荡信号OSC的振荡周期T进行计数,并对计数值NKbits进行除法运算,输出商和余数;
[0060] 在步骤S204中,根据商N生成第一采样周期和第二采样周期;
[0061] 在步骤S205中,将数据字节位数j写入第一递减器,将余数M写入第二递减器;
[0062] 在步骤S206中,根据第一递减器和第二递减器的递减结果,将第一采样周期或第二采样周期写入第三递减器;
[0063] 在步骤S207中,根据第三递减器的递减结果生成采样脉冲;
[0064] 在步骤S208中,根据采样脉冲对传输数据中的每一帧中的数据字节采样,进行解码。
[0065] 在本发明实施例中,根据商N和振荡信号OSC的周期生成初始采样周期(N/2)T,将数据字节位数j(此例中为9)写入第一递减器,并将该初始采样周期(N/2)T写入第三递减器,第一递减器根据振荡信号OSC的周期开始减1 操作,此时第三递减器也在振荡信号OSC的周期控制下进入递减程序,并在递减为0时输出第一个采样脉冲,同时,根据商N生成第一采样周期(N+1)T和第二采样周期NT,并将余数M写入第二递减器,在状态机的控制下将第一采样周期(N+1)T或第二采样周期NT写入第三递减器,当状态机控制第一采样周期(N+1)T写入第三递减器时,第二递减器均递减1,而第三递减器在被写入第一采样周期(N+1)T或第二采样周期NT后进行递减,直到递减为0时输出第二个采样脉冲,同时再次将第一采样周期(N+1)T或第二采样周期NT写入第三递减器中,直到第一递减器递减为零,而每一次在第一采样周期(N+1)T被写入第三递减器中时,第二递减器均减1,直到第二递减器递减为零,如此循环将依次输出j个采样脉冲,完成整个数据字节的采样操作。
[0066] 若不采用状态机,也可以先对第三递减器写入第一采样周期(N+1)T,并判断第二递减器是否为零,若第二递减器不为零,则继续向第三递减器写入第一采样周期(N+1)T,直到第二递减器递减为零,再将第二采样周期NT写入第三递减器,直到第一递减器递减为零。当第一递减器递减为零时,则表示该数据字节采样完成。
[0067] 本发明实施例通过在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数确定采样周期(采样脉冲间隔),进而根据该采样周期对每一帧中的数据字节采样,进行解码,没有积累误差产生,无需通过提升数据传输率降低解码误差,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。
[0068] 图4示出了本发明实施例提供的传输协议解码装置的结构,为了便于说明,仅示出了与本发明相关的部分。
[0069] 作为本发明一实施例,该传输协议解码装置与驱动单元202连接,包括:
[0070] 振荡器102,用于生成振荡信号OSC;
[0071] 在本发明实施例中,可以在芯片内集成内置振荡器102,用来提供预设振荡周期T的振荡信号OSC,也可以从外部接收具有预设振荡周期T的振荡信号。
[0072] 控制器101,用于检测帧起始信号,并在检测到帧起始信号时,输出采样控制信号,控制器101的输入端接收传输数据;
[0073] 在本发明实施例中,该帧起始信号为传输数据中每一帧的第一个低电平,参见图1中的编号1,控制器检测传输数据的每一帧中的帧起始信号的低电平时间宽度,当低电平时间大于预设时间宽度时,控制器101确认检测到帧起始信号,并输出采样控制信号。
[0074] 作为本发明一实施例,控制器101可以采用状态机或时间检测装置实现。
[0075] 除法运算单元103,用于在接收到采样控制信号后,在帧起始字节低电平位数的时间周期内对振荡信号OSC的振荡周期T(脉冲)进行计数,并对计数值NKbits进行除法运算,输出商和余数,除法运算单元103的控制端与控制器101的输出端连接,除法运算单元103的输入端与振荡器102的输出端连接;
[0076] 在本发明实施例中,帧起始字节为传输数据每一帧的帧起始信号后第一个字节,除法运算单元103当接收到采样控制信号后,以振荡周期为单位,以帧起始字节的下降沿作为计数开始,以帧起始字节的上升沿作为计数结束,在帧起始字节低电平位数的采样时间周期内对振荡周期T进行计数,得到与帧起始字节低电平位数的采样时间周期相对应的时钟个数(计数值NKbits),并对该计数值NKbits做除法运算,得到商N和余数M,即N·K+M=Nkbits。其中,K为帧起始字节低电平的对应的位数。那么起始字节的时间宽度为Nkbits·T,其中T是振荡器102周期。
[0077] 作为本发明一实施例,除法运算单元103可以通过除法器和计数器实现。
[0078] 解码单元104,用于根据商和余数确定采样周期,以生成采样脉冲,并根据该采样脉冲对传输数据中的数据字节进行解码,解码单元104的控制端与控制器101的输出端连接,解码单元104的第一输入端与除法运算单元103的第一输出端连接,解码单元104的第二输入端与除法运算单元103的第二输出端连接,解码单元104的第三输入端与控制器101的输入端连接以接收传输数据,解码单元104的时钟端与振荡器102的输出端连接,解码单元104的输出端与驱动单元202连接。
[0079] 在本发明实施例中,解码单元104根据商N和余数M,确定采样周期,该采样周期包括两种采样脉冲间隔,进而根据这两种采样脉冲间隔对每一帧中的数据字节采样,进行解码,上述数据字节是指在每一帧首字节后面的多个字节,以标准DMX512协议为例,帧起始字节的位数为9,每个数据字节的位数也为9(其中第1位为1’b0)。每个数据字节对应9个采样脉冲,每个脉冲间的时间宽度,通过N和M控制。其中,为了采样准确,一般在每个bit的中心位置采样,即起始位的采样点距离该数据字节起始位下降沿宽度为(N/2)T,后续的8个数据位采样脉冲间隔为(N+1)T或者NT,其中(N+1)T的个数为M,NT的个数为(9-M),并且可以通过插值法设置采样脉冲间隔为(N+1)T或者NT。
[0080] 本发明实施例通过在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数进行解码,没有积累误差产生,无需通过提升数据传输率降低解码误差,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。
[0081] 图5示出了本发明实施例提供的传输协议解码中除法运算单元的一实现示例电路,为了便于说明,仅示出了与本发明相关的部分。
[0082] 作为本发明一实施例,该除法运算单元103采用除法器和计数器实现,可以通过触发器实现除法电路,也可以采用其他逻辑器件实现,以标准DMX512协议为例,可以采用四个D触发器实现的除九电路,其中D触发器DFF1和D触发器DFF2组成了除3电路,该电路的状态转换为:00→01→10→00……
[0083] D触发器DFF3和D触发器DFF4也组成除3电路,进而组成了除9电路。
[0084] 该除法运算单元103包括:
[0085] 第一D触发器DFF1、第二D触发器DFF2、第三D触发器DFF3、第四D触发器DFF4、第一或非门OR1、第二或非门OR2、二进制计数器131以及逻辑运算模块132;
[0086] 第一D触发器DFF1的复位端RD1、第二D触发器DFF2的复位端RD2、第三D触发器DFF3的复位端RD3、第四D触发器DFF4的复位端RD4同时为除法运算单元13的控制端,第一D触发器DFF1的时钟输入端CK1、第二D触发器DFF2的时钟输入端CK2为除法运算单元13的输入端,第二D触发器DFF2的触发端D2与第一D触发器DFF1的正向输出端Q0连接,第一或非门OR1的第一输入端与第一D触发器DFF1的正向输出端Q0连接,第一或非门OR1的第二输入端与第二D触发器DFF2的正向输出端Q1连接,第一或非门OR1的输出端同时与第一D触发器DFF1的触发端D1、第三D触发器DFF3的时钟输入端CK3、第四D触发器DFF4的时钟输入端CK4连接,第四D触发器DFF4的触发端D4与第三D触发器DFF3的正向输出端Q2连接,第二或非门OR2的第一输入端与第三D触发器DFF3的正向输出端Q2连接,第二或非门OR2的第二输入端与第四D触发器DFF4的正向输出端Q3连接,第二或非门OR2的输出端同时与第三D触发器DFF3的触发端D3和二进制计数器131的时钟输入端CK连接,二进制计数器131的输出端为除法运算单元13的第一输出端,第一D触发器DFF1的正向输出端Q0、第二D触发器DFF2的正向输出端Q1、第三D触发器DFF3的正向输出端Q2、第四D触发器DFF4的正向输出端Q3依次于逻辑运算模块132的第一输入端、第二输入端、第三输入端、第四输入端连接,逻辑运算模块132的输出端为除法运算单元13的第二输出端。
[0087] 在本发明实施例中,振荡器102输出的振荡信号OSC通过四个D触发器DFF1-DFF4进行计数并除九运算后,通过二进制计数器131得到商N,而余数M需要经过逻辑运算模块132的逻辑转换后得到,M用二进制数表示为M3M2M1M0,其逻辑转换式为:
[0088]
[0089]
[0090]
[0091]
[0092] 其中,Q0-Q3分别为D触发器DFF1-DFF4正向输出端输出的逻辑状态,并由该逻辑转换式得到如下对应表格:
[0093]
[0094] 在本发明实施例中,逻辑运算模块132可由多个逻辑门根据余数M的逻辑表达式连接而成,此处不再赘述。
[0095] 图6示出了本发明实施例提供的传输协议解码中解码单元的一实现示例结构,为了便于说明,仅示出了与本发明相关的部分。
[0096] 作为本发明一实施例,解码单元104包括:
[0097] 第一递减器141、第二递减器142、第三递减器143、控制模块144、状态机145以及解码器146;
[0098] 控制模块144的第一输入端为解码单元104的第一输入端,控制模块144的第二输入端为解码单元104的第二输入端,控制模块144的第一输出端与第一递减器141的输入端连接,控制模块144的第二输出端与第二递减器142的输入端连接,控制模块144的第三输出端与第三递减器143的输入端连接,状态机145的输出端与控制模块144的第三输入端连接,控制模块144的时钟端为解码单元的时钟端,控制模块144的输出端与解码器146的第一输入端连接,解码器146的第二输入端为解码单元104的第三输入端,解码器146的输出端为解码单元104的输出端。
[0099] 在本发明实施例中,控制模块144根据商N生成第一采样周期和第二采样周期,并将数据字节位数j写入第一递减器141,将接收的余数M写入第二递减器142,控制模块144根据第一递减器141和第二递减器142的递减结果,将第一采样周期(N+1)T或第二采样周期NT写入第三递减器143,并根据第三递减器143的递减结果生成采样脉冲,根据该采样脉冲解码器146对传输数据中的每一帧中的数据字节采样,进行解码。
[0100] 作为本发明一实施例,可以通过状态机145设置第一采样周期(N+1)T或第二采样周期NT的插值,该状态机145的状态转换图可以为:
[0101] 0000→0001→0010→0011→0100→0101→0110→0111→1000→0000……。
[0102] 例如,采样到起始字节的时间宽度为176T,那么经过除9处理后,得到N=19,M=5,用二进制表示为N=5’b10011,M=4’b0101。
[0103] 采样起始位时,将采样点设定为5’b01001。其后的数据位采样周期分别为5次5’b10100,3次5’b10011。并且,在分布时,尽量采用插入分布的方式,譬如从起始位到第8数据位的采样周期如图7所示。
[0104] 具体采样过程为:以每个数据字节的下降沿作为采样数据开始,起始位的采样点为(N/2)T,若M=3,通过状态机设置插值,例如,设置第2个采样脉冲与第1个采样脉冲的间隔为(N+1)T,第3个采样脉冲与第2个采样脉冲的间隔为(N+1)T,第4个采样脉冲与第3个采样脉冲的间隔为(N+1)T,第5个采样脉冲与第4个采样脉冲的间隔为NT,第6个采样脉冲与第5个采样脉冲的间隔为NT,第7个采样脉冲与第6个采样脉冲的间隔为NT,第8个采样脉冲与第7个采样脉冲的间隔为NT,第9个采样脉冲与第8个采样脉冲的间隔为NT。可以理解地,上述每个采样脉冲间隔的选择可以通过改变状态机的状态转换值的设置而变化设置,例如将第3个采样脉冲与第2个采样脉冲的间隔设置为NT,第8个采样脉冲与第7个采样脉冲的间隔设置为(N+1)T,而每发出一次采样脉冲,第一递减器、第二递减器和第三递减器应相应地递减数据字节位数j、余数M以及采样周期。
[0105] 具体递减过程为:
[0106] 控制模块根据商N和振荡信号OSC的周期生成初始采样周期(N/2)T,将数据字节位数j(此例中为9)写入第一递减器141,并将该初始采样周期(N/2)T写入第三递减器143,第一递减器141根据振荡信号OSC的周期开始减1操作,此时第三递减器143也在振荡信号OSC的周期控制下进入递减程序,并在递减为0时输出第一个采样脉冲,同时,控制模块144根据商N生成第一采样周期(N+1)T和第二采样周期NT,并将余数M写入第二递减器142,在状态机145的控制下控制模块144将第一采样周期(N+1)T或第二采样周期NT写入第三递减器143,当状态机145控制第一采样周期(N+1)T写入第三递减器143时,第二递减器142均递减1,而第三递减器143在被写入第一采样周期(N+1)T或第二采样周期NT后进行递减,直到递减为0时输出第二个采样脉冲,同时再次由控制模块144将第一采样周期(N+1)T或第二采样周期NT写入第三递减器143中,直到第一递减器141递减为零,而每一次在第一采样周期(N+1)T被写入第三递减器143中时,第二递减器142均减1,直到第二递减器142递减为零,如此循环将依次输出j个采样脉冲,完成整个数据字节的采样操作。
[0107] 若不采用状态机145,也可以先对第三递减器143写入第一采样周期(N+1)T,并判断第二递减器142是否为零,若第二递减器142不为零,则继续向第三递减器143写入第一采样周期(N+1)T,直到第二递减器142递减为零,再将第二采样周期NT写入第三递减器143,直到第一递减器141递减为零。
[0108] 当第一递减器141递减为零时,则表示该数据字节采样完成。
[0109] 需要说明的是,如果N的二进制最后1位为1,而M≠0,那么可以将M减1,而起始位的采样点为[N/2]+1。其中[N/2]是指其整数部分。
[0110] 本发明实施例通过在帧起始字节低电平位数的时间周期内对振荡信号的振荡周期进行计数,并对计数值进行除法运算,得到商和余数,根据商和余数进行解码,没有积累误差产生,无需通过提升数据传输率降低解码误差,大大提高了解码的准确率,并且实现简单,成本低,稳定性好。
[0111] 以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。