CN104008080B - 串行数据解析方法和装置 - Google Patents
串行数据解析方法和装置 Download PDFInfo
- Publication number
- CN104008080B CN104008080B CN201410270486.0A CN201410270486A CN104008080B CN 104008080 B CN104008080 B CN 104008080B CN 201410270486 A CN201410270486 A CN 201410270486A CN 104008080 B CN104008080 B CN 104008080B
- Authority
- CN
- China
- Prior art keywords
- long
- continuous level
- serial data
- clock pulses
- data
- 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
Abstract
公开了一种串行数据解析方法和装置,所述串行数据具有预定的帧长度,所述方法包括:获取串行数据中相邻同步帧头的最长连续电平之间或包结束标识之间的时钟脉冲数量;根据本地时钟频率、所述预定的帧长度和所述时钟脉冲数量获取所述串行数据的数据速率。通过寻找相邻同步帧头或包结束标识之间的时钟脉冲数量,根据所述时钟脉冲数量和本地时钟频率确定串行数据的数据速率。由此,可以提高解析速度,精确度高。
Description
技术领域
本发明涉及数据传输技术,具体涉及一种串行数据解析方法和装置。
背景技术
串行通信(Serial Communication)是指在计算机总线或其他数据通道上,每次传输一个位数据,并连续进行以上单次过程的通信方式。串行数据指基于串行通信协议传输的数据。
串行数据为实现发送端与接收端的时钟同步,通常具有固定的若干数据速率,并在编码时加入时钟信息或同步序列。例如,SONY/PHLIPS数字接口格式(SONY/PHLIPSDigital Interface Format,SPDIF)协议规定了几种常用采样率,如192k/96k/48k、176.4k/88.2k/44.1k,以及其他几种不常用采样率,不同的采样率对应不同的数据速率。
在串行数据传输中,接收端需要对串行数据解析以获得其数据速率和/或采样率。现有的串行数据解析方法通常采用锁相环硬件解析,通过调整锁相环频率遍历串行数据可能的数据速率和/或采样率,锁相环在与数据速率接近时锁定,由此可以解析获得串行数据的数据速率。锁相环的输出信号可以作为接收端接收串行数据的时钟信号。
但是,硬件解析方法复杂度高,成本较贵。而且,在可能的数据速率和采样率较多时,解析速度慢。
发明内容
有鉴于此,提供一种串行数据解析方法和装置,解析速度快,成本低。
第一方面,提供一种串行数据解析方法,所述串行数据具有预定的帧长度,包括:
获取串行数据中相邻同步帧头的最长连续电平之间或包结束标识之间的实际时钟脉冲数量;
根据接收端本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率。
优选地,根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率包括根据如下公式计算所述数据速率:
数据速率=本地时钟频率*预定的帧长度/实际时钟脉冲数量。
优选地,根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的采样率包括根据如下公式计算所述采样率:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)。
优选地,所述串行数据具有有限个可能的数据速率和采样率;
所述根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率包括:
根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量;
根据所述标准脉冲数量查询对应的串行数据数据速率和/或采样率;
所述标准脉冲数量与所述数据速率和/或采样率的对应关系根据所述本地时钟频率、所述预定的帧长度和串行数据的可能的数据速率和/或采样率预先计算获得。
优选地,每个所述标准脉冲数量对应于所有位于所述标准脉冲数量误差区间内的实际时钟脉冲数量。
优选地,获取串行数据相邻同步帧头的最长连续电平之间的实际时钟脉冲数量包括;
获取串行数据中最长连续电平长度;
根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
查找与所述第一最长连续电平相邻的第二最长连续电平;
将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,获取串行数据相邻同步帧头的最长连续电平之间的实际时钟脉冲数量包括:
获取串行数据中最长连续电平长度;
根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
查找与所述第一最长连续电平相邻的第二最长连续电平;
在所述第一最长连续电平与所述第二最长连续电平的时钟脉冲数量大于预定阈值时,将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量;
在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,所述方法还包括:
在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
优选地,所述方法还包括:
根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
第二方面,提供一种串行数据解析装置,所述串行数据具有预定的帧长度,包括:
时钟脉冲数量获取单元,用于获取串行数据中相邻同步帧头的结束位之间或包结束标识之间的实际时钟脉冲数量;
属性获取单元,用于根据接收端本地时钟频率、预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率。
优选地,所述属性获取单元根据如下公式计算所述数据速率:
数据速率=本地时钟频率*帧长度/实际时钟脉冲数量。
优选地,所述属性获取单元根据如下公式计算所述采样率:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)。
优选地,所述串行数据具有有限个可能的数据速率和采样率;
所述属性获取单元包括:
标准脉冲数量获取子单元,用于根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量;
查询子单元,用于根据所述标准脉冲数量查询对应的串行数据数据速率和/或采样率;
其中,所述标准脉冲数量与所述数据速率和/或采样率的对应关系基于本地时钟频率、预定的帧长度和串行数据可能的数据速率和/或采样率预先计算获得。
优选地,每个所述标准脉冲数量对应于所有位于所述标准脉冲数量误差区间内的实际时钟脉冲数量。
优选地,所述时钟脉冲数量获取单元包括:
最长连续电平长度获取子单元,用于获取串行数据中最长连续电平长度;
第一最长连续电平查找子单元,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
第二最长连续电平查找子单元,用于查找与所述第一最长连续电平相邻的第二最长连续电平;
时钟脉冲数量计算子单元,用于将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,所述时钟脉冲数量获取单元包括:
最长连续电平长度获取子单元,用于获取串行数据中最长连续电平长度;
第一最长连续电平查找子单元,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
第二最长连续电平查找子单元,用于查找与所述第一最长连续电平相邻的第二最长连续电平;
第一时钟脉冲数量计算子单元,用于在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量大于预定阈值时,所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量;
第二时钟脉冲数量计算子单元,用于在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,所述装置还包括触发单元,用于在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
优选地,所述装置还包括采样解析单元,用于根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
通过寻找相邻同步帧头的最长连续电平或包结束标识之间的时钟脉冲数量,根据所述时钟脉冲数量和本地时钟频率确定串行数据的数据速率和/或采样率。由此,可以提高解析速度,精确度高。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1为SPDIF数据采用双相符号编码(BMC)的编码数据示意图;
图2为根据本发明第一实施例的串行数据解析方法的流程图;
图3为根据本发明第一实施例一优选方案的流程图;
图4A为根据本发明第一实施例一优选方案的流程图;
图4B为根据本发明的一个示例的SPDIF数据及对应的时钟脉冲;
图5为根据本发明第二实施例的串行数据解析方法的流程图;
图6为根据本发明第三实施例的串行数据解析装置的框图。
具体实施方式
以下将参照附图更详细地描述本发明的各种实施例。在各个附图中,相同的元件采用相同或类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。
为了方便数据同步,串行数据通常会为传输的帧或子帧设置同步帧头,以表示帧或子帧开始的位置,这类串行数据通常均具有预定的帧长度(为了描述方便,在为子帧设置同步帧头的情形中,帧长度指子帧长度)。例如,而在SPDIF协议中,其具有三种不同的同步帧头,其按照如下的表1设置。
表1
同步帧头通常具有串行数据其它部分所不具备的特性,由此便于接收端识别和接收。
例如,SPDIF串行数据采用双相符号编码(BMC),即将原始数据0编码为00或11,将原始数据1编码为01或10(图中原始数据位由虚线分隔)。如图1所示,双相符号编码在每个原始数据开头反相一次,若原始数据为1,则在原始数据中间再反相一次。若前一编码为0,则将原始数据1编码为10,0编码为11;若前一编码为1,则将原始数据1编码为01,将原始数据0编码为00。对于SPDIF串行数据,其子帧的原始数据为32位,其中包含一个24位的音频数据。经过双相符号编码后,每个子帧的编码为64位,以8位同步帧头开始。由于双相符号编码的特点,SPDIF串行数据在同步帧头外的部分不会出现111或000。因此,其同步帧头中连续3位1或连续3位0是数据中的最长连续电平,这可以被接收端识别。
基于串行数据的以上特性,可以通过识别同步帧头来解析串行数据的数据速率。
图2为根据本发明第一实施例的串行数据解析方法的流程图。所述串行数据为基于例如SPDIF协议的具有预定帧长度的数据。所述方法包括:
步骤210、获取串行数据中相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
本步骤中所述的时钟脉冲数量是指相邻同步帧头中的最长连续电平结束位之间的本地时钟脉冲数量。通过识别串行数据的同步帧头,可以获取相邻的同步帧头中的最长连续电平结束位之间的实际时钟脉冲数量,也即,同步帧头中的最长连续电平结束位至下一个同步帧头中的最长连续电平结束位之间的数据覆盖的实际时钟脉冲数量。
优选地,对于例如某些串行数据,其每个同步帧头有且仅有一个最长连续电平出现,因此,可以通过对最长连续电平的识别来捕捉同步帧头。如图3所示,步骤210优选包括如下子步骤:
步骤211、获取串行数据中最长连续电平长度。
可以监测串行数据序列的状态,并对本地时钟脉冲进行计数,在检测到数据变化时锁存计数器值,即前一连续电平的长度,并清零计数器,重新开始计数。经过预定时间后,取锁存的计数器值最大值为最长连续电平长度。
步骤212、根据所述最长连续电平长度在串行数据中查找第一最长连续电平。
步骤213、查找与所述第一最长连续电平相邻的第二最长连续电平。
步骤214、将所述第一最长连续电平结束至所述第二最长连续电平结束的区域中的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,对于例如基于SPDIF协议的串行数据,其每个同步帧头有至少一个最长连续电平出现,因此,可以通过对最长连续电平的识别来捕捉同步帧头,但需要避免同步帧头中出现两个最长连续电平的情况造成误操作。如图4A所示,步骤210优选包括如下子步骤:
步骤211’、获取串行数据中最长连续电平长度。
步骤212’、根据所述最长连续电平长度在串行数据中查找第一最长连续电平。
步骤213’、查找与所述第一最长连续电平相邻的第二最长连续电平。
步骤214’、在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量大于预定阈值时,将所述第一最长连续电平结束至所述第二最长连续电平结束的区域中的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
步骤215’、在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的区域中的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
通过对时钟脉冲数量设定阈值,可以避免同步帧头中出现两个最长连续电平的情况造成误操作。对于SPDIF协议,阈值可优选设置为同步帧头的长度8。
如图4B所示,以SPDIF数据为例进行说明,该SPDIF数据具有192k采样率,本地时钟频率为98.304MHz。在图4B中,首先出现以同步头B(11101000)开头的第一子帧,然后出现以同步帧头W(11100100)开头的第二子帧。两个子帧的数据部分有省略。
同步帧头中出现的111占约12个时钟周期,也即,第一最长连续电平长度为12,此后,查找相邻的长度为12的第二最长连续电平,找的的电平为000,检查发现两者间的间隔小于预定阈值,因此继续查找与第二最长连续电平相邻的第三最长连续电平111,获取其结束位与第一最长连续电平结束位之间的实际时钟脉冲数量
步骤220、根据本地时钟频率、预定的帧长度和所述时钟脉冲数量获取所述串行数据的数据速率。
由于相邻同步帧头的最长连续电平之间的实际时钟脉冲数量为该区间内的时钟脉冲数量,而帧长度近似代表相邻同步帧头之间数据比特数,因此,两者的商为串行数据每比特所占用的时钟脉冲数量。同时,
数据速率为单位时间内串行数据传输的信息量(比特数)。因此数据速率、本地时钟频率、相邻同步帧头的最长连续电平之间的实际时钟脉冲数量以及帧长度之间存在如下关系:
数据速率=本地时钟频率*帧长度/时钟脉冲数量
同时,采样率、本地时钟频率、相邻同步帧头的最长连续电平之间的实际时钟脉冲数量以及帧长度之间存在如下关系:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)
其中,编码数据与原始数据比例为每一位原始数据编码为串行数据后编码数据的位数,例如,对于SPDIF数据,其采用上述的双相符号编码,每一位原始数据对应的编码数据为两位数据,因此,对于SPDIF数据,其编码数据与原始数据比例为2。
在一个优选方案中,基于上述公式可以方便地根据本地时钟频率、帧长度以及时钟脉冲数量计算或估算数据速率。当然,在串行数据速率为多个可能的离散值时,如果计算获得数据速率与可能取值不是完全相等,取最接近的数据速率即可。
例如,在本地时钟频率为98.304MHz时,对于SPDIF串行数据,通过检测获得相邻的同步帧头之间的时钟脉冲数量为256个时钟脉冲,同时,如上所述,SPDIF串行数据一个子帧包含64位,则计算获得数据速率为24.576Mbps,串行数据对应的数据采样率为192k。
由于同步帧头之间的比特数量较多,因此,基于此计算的单位比特时钟脉冲数目精确度高,不会因为计数器多记或少计一个时钟脉冲而影响计算结果,因此,使得本方法具有较高的精确度和容错性。
由于大部分串行数据的数据速率和采样率并非随意连续变化的,而是有限个离散的可能值,而且,根据上述公式,时钟脉冲数量和数据速率之间成反比。因此,可以预先根据本地时钟频率、串行数据的预定的帧长度和串行数据可能的数据速率计算得到不同的数据速率对应的标准脉冲数量,由此得到标准脉冲数量与数据速率之间的对应关系。
在一个优选方案中,通过预先计算该对应关系,获得实际时钟脉冲数量后,进一步获取对应的标准脉冲数量,并根据所述标准脉冲数量查询对应的串行数据的数据速率和/或采样率。
具体地,在本优选方案中,步骤220包括:
步骤221、根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量。
每个标准脉冲数量可以对应于所有位于标准脉冲数量误差区间内的实际时钟脉冲数量。例如,标准脉冲数量可以对应于所有与其误差在±1/32区间内的实际时钟脉冲数量。
步骤222、根据所述标准脉冲数量查询对应的串行数据的数据速率和/或采样率。
其中,所述标准脉冲数量与所述数据速率和/或采样率的对应关系根据所述本地时钟频率、所述预定的帧长度和串行数据的可能的数据速率和/或采样率预先计算获得。
以获取SPDIF的采样率为例,在接收端本地时钟为98.304MHz时,其每个子帧长度为64位,由此,在SPDIF数据的可能采样率为192k、96k和48k时,以±1/32区间作为标准脉冲数量的对应误差范围,可以计算获得采样率与标准脉冲数量以及实际脉冲数量区间的对应关系表,如下:
采样率 | 标准脉冲数量 | 实际时钟脉冲数量 |
192k | 256 | [248,264] |
96k | 512 | [496,528] |
48k | 1024 | [992,1056] |
由此,如果实际时钟脉冲数量在248至264之间,则可以获得其对应的标准脉冲数量为256,进而可以查询获得该SPDIF数据的采样率为192k。
本优选方式可以进一步提高解析速度。
优选地,由于数据速率和采样率在串行数据传输过程中可能发生变动,在数据速率和采样率变化后串行数据解析及后续解码会失败,因此,在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
优选地,在获得数据速率和/或采样率后,所述方法还可以包括利用数据速率和/或采样率进行数据解析的步骤230(图中用虚线表示),即,根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
本实施例通过寻找相邻同步帧头的最长连续电平或包结束标识之间的时钟脉冲数量,根据所述时钟脉冲数量和本地时钟频率确定串行数据的数据速率。由此,可以提高解析速度,精确度高。
图5为根据本发明第二实施例的串行数据解析方法的流程图。对于某些串行数据,除同步帧头外,其每个数据包还包括包结束标识(EOP),该标志标识数据包的结束,两个包结束标识之间的区域为一帧或者数据包的长度,因此基于包结束标识之间的时钟脉冲数量,帧或者数据包长度以及本地时钟频率,也可以获取数据速率。本实施例的方法包括如下步骤:
步骤510、获取串行数据中相邻包结束标识之间的实际时钟脉冲数量。
例如,对于某些串行数据,包结束标识为两条数据线均为低电平。通过相邻两次对两条数据线出现低电平的时间间隔极性时钟计数,即可获得时钟脉冲数量。
步骤520、根据本地时钟频率、预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率。
本步骤与第一实施例类似,在此不再赘述。
本实施例利用相邻包结束标识之间的时钟脉冲数量获取串行数据的数据速率,可以提高解析速度,精确度高。
图6为根据本发明第三实施例的串行数据解析装置的框图。串行数据解析装置60包括:
时钟脉冲数量获取单元61,用于获取串行数据中相邻同步帧头的最长连续电平之间或包结束标识之间的实际时钟脉冲数量。
优选地,对于例如某些串行数据,其每个同步帧头有且仅有一个最长连续电平出现,因此,可以通过对最长连续电平的识别来捕捉同步帧头。时钟脉冲数量获取单元61可以包括:
最长连续电平长度获取子单元61a,用于获取串行数据中最长连续电平长度;
第一最长连续电平查找子单元61b,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平。
第二最长连续电平查找子单元61c,用于查找与所述第一最长连续电平相邻的第二最长连续电平。
时钟脉冲数量计算子单元61d,用于将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
优选地,对于例如基于SPDIF协议的串行数据,其每个同步帧头有至少一个最长连续电平出现,因此,可以通过对最长连续电平的识别来捕捉同步帧头,但需要避免同步帧头中出现两个最长连续电平的情况造成误操作。时钟脉冲数量获取单元61可以包括:
最长连续电平长度获取子单元61a’,用于获取串行数据中最长连续电平长度。
第一最长连续电平查找子单元61b’,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平。
第二最长连续电平查找子单元61c’,用于查找与所述第一最长连续电平相邻的第二最长连续电平。
第一时钟脉冲数量计算子单元61d’,用于在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量大于预定阈值时,所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
第二时钟脉冲数量计算子单元61e’,用于在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
属性获取单元62,用于根据本地时钟频率、预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率。
优选地,属性获取单元62根据如下公式计算数据速率:
数据速率=本地时钟频率*帧长度/时钟脉冲数量。
优选地,属性获取单元62根据如下公式计算所述采样率:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)。
其中,编码数据与原始数据比例为每一位原始数据编码为串行数据后编码数据的位数,例如,对于SPDIF数据,其采用上述的双相符号编码,每一位原始数据对应的编码数据为两位数据,因此,对于SPDIF数据,其编码数据与原始数据比例为2。
优选地,串行数据具有有限个可能的数据速率和采样率。属性获取单元62包括:
标准脉冲数量获取子单元62a,用于根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量。
查询子单元62b,用于根据所述标准脉冲数量查询对应的串行数据数据速率和/或采样率;
其中,所述标准脉冲数量与所述数据速率和/或采样率的对应关系基于本地时钟频率、预定的帧长度和串行数据可能的数据速率和/或采样率预先计算获得。
优选地,由于数据速率和采样率在串行数据传输过程中可能发生变动,在数据速率和采样率变化后串行数据解析及后续解码会失败,因此,所述装置还可以包括触发单元60a(图中用虚线表示),用于在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
优选地,在获得数据速率和/或采样率后,所述装置还可以包括利用数据速率和/或采样率进行数据解析的采样解析单元63(图中用虚线表示),其用于根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
本实施例通过寻找相邻同步帧头的最长连续电平或包结束标识之间的时钟脉冲数量,根据所述时钟脉冲数量和本地时钟频率确定串行数据的数据速率。由此,可以提高解析速度,精确度高。
本领域技术人员可以理解,本发明的一些实施例可以全部或至少部分计算机程序实现。也就是说,本发明的实施例可以在计算机系统或者其他数据处理系统中以例如微处理器的处理器执行包含在存储器中的指令序列实现,所述存储器可以是易失性存储器或者远程存储装置。在多个实施例中,硬连线电路可以与软件指令结合应用,以实现本发明实施例。如此,该技术并不局限于硬件电路和软件的任何特定结合,也不局限于数据处理系统执行的任何特定指令源。另外,在具体实施方式部分,各种功能和操作被描述为由计算机代码执行或者由计算机代码引发以简化该描述。然而,本领域技术人员可以认识到该表达意味着该功能可以由处理器执行代码实现。
依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明的保护范围应当以本发明权利要求所界定的范围为准。
Claims (18)
1.一种串行数据解析方法,所述串行数据具有预定的帧长度,其特征在于,包括:
获取串行数据中相邻同步帧头的最长连续电平之间或包结束标识之间的实际时钟脉冲数量;
根据接收端本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率,
获取串行数据相邻同步帧头的最长连续电平之间的实际时钟脉冲数量包括:
获取串行数据中最长连续电平长度,所述最长连续电平长度用于查找所述串行数据中的所述最长连续电平。
2.根据权利要求1所述的串行数据解析方法,其特征在于,根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率包括根据如下公式计算所述数据速率:
数据速率=本地时钟频率*预定的帧长度/实际时钟脉冲数量。
3.根据权利要求1所述的串行数据解析方法,其特征在于,根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的采样率包括根据如下公式计算所述采样率:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)。
4.根据权利要求1所述的串行数据解析方法,其特征在于,所述串行数据具有有限个可能的数据速率和采样率;
所述根据本地时钟频率、所述预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率包括:
根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量;
根据所述标准脉冲数量查询对应的串行数据数据速率和/或采样率;
所述标准脉冲数量与所述数据速率和/或采样率的对应关系根据所述本地时钟频率、所述预定的帧长度和串行数据的可能的数据速率和/或采样率预先计算获得。
5.根据权利要求4所述的串行数据解析方法,其特征在于,每个所述标准脉冲数量对应于所有位于所述标准脉冲数量误差区间内的实际时钟脉冲数量。
6.根据权利要求1所述的串行数据解析方法,其特征在于,获取串行数据相邻同步帧头的最长连续电平之间的实际时钟脉冲数量还包括:
根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
查找与所述第一最长连续电平相邻的第二最长连续电平;
将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
7.根据权利要求1所述的串行数据解析方法,其特征在于,获取串行数据相邻同步帧头的最长连续电平之间的实际时钟脉冲数量还包括:
根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
查找与所述第一最长连续电平相邻的第二最长连续电平;
在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量大于预定阈值时,将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量;
在所述第一最长连续电平与所述第二最长连续电平的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
8.根据权利要求1所述的串行数据解析方法,其特征在于,还包括:
在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
9.根据权利要求1所述的串行数据解析方法,其特征在于,还包括:
根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
10.一种串行数据解析装置,所述串行数据具有预定的帧长度,其特征在于,包括:
时钟脉冲数量获取单元,用于获取串行数据中相邻同步帧头的结束位之间或包结束标识之间的实际时钟脉冲数量,所述时钟脉冲数量获取单元包括用于获取串行数据中最长连续电平长度的最长连续电平长度获取子单元,所述最长连续电平长度用于查找所述串行数据中的所述最长连续电平;
属性获取单元,用于根据接收端本地时钟频率、预定的帧长度和所述实际时钟脉冲数量获取所述串行数据的数据速率和/或采样率。
11.根据权利要求10所述的串行数据解析装置,其特征在于,所述属性获取单元根据如下公式计算所述数据速率:
数据速率=本地时钟频率*帧长度/实际时钟脉冲数量。
12.根据权利要求10所述的串行数据解析装置,其特征在于,所述属性获取单元根据如下公式计算所述采样率:
采样率=本地时钟频率/(实际时钟脉冲数量*编码数据与原始数据比例)。
13.根据权利要求10所述的串行数据解析装置,其特征在于,所述串行数据具有有限个可能的数据速率和采样率;
所述属性获取单元包括:
标准脉冲数量获取子单元,用于根据所述实际时钟脉冲数量获取对应的标准脉冲数量,每个所述标准脉冲数量对应于多个实际时钟脉冲数量;
查询子单元,用于根据所述标准脉冲数量查询对应的串行数据数据速率和/或采样率;
其中,所述标准脉冲数量与所述数据速率和/或采样率的对应关系基于本地时钟频率、预定的帧长度和串行数据可能的数据速率和/或采样率预先计算获得。
14.根据权利要求13所述的串行数据解析装置,其特征在于,每个所述标准脉冲数量对应于所有位于所述标准脉冲数量误差区间内的实际时钟脉冲数量。
15.根据权利要求10所述的串行数据解析装置,其特征在于,所述时钟脉冲数量获取单元还包括:
第一最长连续电平查找子单元,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
第二最长连续电平查找子单元,用于查找与所述第一最长连续电平相邻的第二最长连续电平;
时钟脉冲数量计算子单元,用于将所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
16.根据权利要求10所述的串行数据解析装置,其特征在于,所述时钟脉冲数量获取单元还包括:
第一最长连续电平查找子单元,用于根据所述最长连续电平长度在串行数据中查找第一最长连续电平;
第二最长连续电平查找子单元,用于查找与所述第一最长连续电平相邻的第二最长连续电平;
第一时钟脉冲数量计算子单元,用于在所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量大于预定阈值时,所述第一最长连续电平结束至所述第二最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量;
第二时钟脉冲数量计算子单元,用于在所述第一最长连续电平与所述第二最长连续电平的时钟脉冲数量小于等于预定阈值时,查找与所述第二最长连续电平相邻的第三最长连续电平,将所述第一最长连续电平结束至所述第三最长连续电平结束的时钟脉冲数量作为所述相邻同步帧头的最长连续电平之间的实际时钟脉冲数量。
17.根据权利要求10所述的串行数据解析装置,其特征在于,还包括触发单元,用于在初次接收到所述串行数据或串行数据解析失败时,触发串行数据解析。
18.根据权利要求10所述的串行数据解析装置,其特征在于,还包括采样解析单元,用于根据所述数据速率和/或采样率以及本地时钟信号对所述串行数据采样,解析获得串行数据的比特位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410270486.0A CN104008080B (zh) | 2014-06-17 | 2014-06-17 | 串行数据解析方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410270486.0A CN104008080B (zh) | 2014-06-17 | 2014-06-17 | 串行数据解析方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008080A CN104008080A (zh) | 2014-08-27 |
CN104008080B true CN104008080B (zh) | 2017-06-27 |
Family
ID=51368740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410270486.0A Active CN104008080B (zh) | 2014-06-17 | 2014-06-17 | 串行数据解析方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008080B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978413B (zh) * | 2016-07-05 | 2018-09-11 | 中车株洲电力机车研究所有限公司 | 一种脉冲序列的串行传输方法、装置和永磁传动系统 |
CN107515836B (zh) * | 2017-09-21 | 2023-12-22 | 四川易冲科技有限公司 | 一种动态双阈值的bmc解码装置及方法 |
CN110489373B (zh) * | 2019-08-21 | 2021-07-20 | 格威半导体(厦门)有限公司 | 一种串行隔离通信方法、装置及系统 |
CN111091697B (zh) * | 2019-11-29 | 2021-08-13 | 湖北航天飞行器研究所 | 遥测数据的处理系统 |
CN114168517B (zh) * | 2020-09-11 | 2024-01-16 | 北京机械设备研究所 | 一种通用异步串行数据解析方法及装置 |
CN112564769B (zh) * | 2020-11-30 | 2022-08-26 | 东方红卫星移动通信有限公司 | 多速率分级调节的低轨卫星高速通信方法、发射端及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101027837A (zh) * | 2003-03-21 | 2007-08-29 | D2音频有限公司 | 使用硬件和软件实施采样速率转换器以使速度和灵活性最大的系统和方法 |
CN103150283A (zh) * | 2011-12-06 | 2013-06-12 | 株式会社日立超Lsi系统 | 电子装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549000B2 (en) * | 2006-01-09 | 2009-06-16 | Realtek Semiconductor Corp. | Apparatus and method for generating bitstream of S/PDIF data in HDMI |
US8724745B2 (en) * | 2010-08-27 | 2014-05-13 | Lsi Corporation | Method and apparatus for decoding coded data streams |
-
2014
- 2014-06-17 CN CN201410270486.0A patent/CN104008080B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101027837A (zh) * | 2003-03-21 | 2007-08-29 | D2音频有限公司 | 使用硬件和软件实施采样速率转换器以使速度和灵活性最大的系统和方法 |
CN103150283A (zh) * | 2011-12-06 | 2013-06-12 | 株式会社日立超Lsi系统 | 电子装置 |
Non-Patent Citations (2)
Title |
---|
"串行通信中的一种波特率自动检测方法";程品晶等;《南华大学学报(理工版)》;20040330;第18卷(第1期);90-93页 * |
"高清多媒体接口发送端芯片HDMI Tx设计方法";杨逸轩;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090215(第02期);第4.2.3节,图4-4、4-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN104008080A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104008080B (zh) | 串行数据解析方法和装置 | |
CN109669899B (zh) | 自适应调节串口通信波特率的方法及串口装置 | |
CN101048669B (zh) | 检测未知相电压相对于基准相电压的相配线的方法和系统 | |
US8929425B2 (en) | Modbus repeater with self-adaptive baud rate and self-adaptive baud rate system and method | |
US8595543B2 (en) | Method and circuit for trimming an internal oscillator of a USB device according to a counting number between a first and second clock count value | |
CN107707446B (zh) | 一种基于fpga的sent总线解码、触发和分析方法 | |
US20110261969A1 (en) | Biphase mark code decoder and method of operation | |
CN107070743B (zh) | 一种can总线负载率检测方法及装置 | |
US8842793B2 (en) | Communication circuit and method of adjusting sampling clock signal | |
US7551702B2 (en) | Method and circuit arrangement for synchronizing a function unit with a predetermined clock frequency | |
WO2023109147A1 (zh) | 一种时间戳脉冲同步方法、装置、电子设备及存储介质 | |
CN104850619A (zh) | 单据编码生成的方法和装置 | |
KR20150128658A (ko) | 직렬 데이터 송신용 디더링 회로 | |
US20120026019A1 (en) | Driving circuit of light emitting diode, decoding circuit and decoding method thereof | |
CN105763205A (zh) | 基于高斯列消元的螺旋形交织器参数盲估计方法 | |
CN110708133B (zh) | 一种基于fpga的系统内时钟同步和时间同步的方法及装置 | |
CN101719858B (zh) | Can控制器的位时序的同步处理方法 | |
KR880702022A (ko) | 데이터통신 시스템용 모뎀 | |
CN107996021B (zh) | 一种数据处理方法及基站设备 | |
WO2023124197A1 (zh) | 一种时间戳同步的误差补偿方法、装置、电子设备以及存储介质 | |
CN103384401A (zh) | 基于先进先出结构的同步捕获装置及其方法 | |
CN112765073A (zh) | 一种数据采样方法、系统、存储介质以及计算机设备 | |
WO2016000324A1 (zh) | 时间同步的实现方法及装置 | |
JP2003134098A (ja) | シリアル受信装置 | |
CN111615187A (zh) | 一种无线信号的同步方法 |
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 |