用于实施循环冗余校验的系统和方法

文档序号:7865156阅读:397来源:国知局
专利名称:用于实施循环冗余校验的系统和方法
用于实施循环冗余校验的系统和方法
分案串请的相关信息
本申请为发明名称为“用于实施循环冗余校验的系统和方法”的原中国发明专利申请的分案申请。原申请的申请号为200580046872. O ;原申请的申请日为2005年11月23曰。技术领域
本发明大体上涉及数据通信。更明确地说,本发明涉及使用循环冗余校验的数字传输链路。
背景技术
过去几年中,计算机、移动电话、移动电话相机和视频捕获装置、个人数据助理、电子游戏相关产品和各种视频技术(例如,DVD和高清晰度VCR)已显著进步以提供对分辨率日益变高的静态、视频、视频点播和图形图像的捕获和演示。将这些可视图像与高质量视频数据(例如,CD型声音再现、DVD和具有相关联的音频信号输出的其它装置)组合,从而为最终用户产生更逼真、内容丰富或真实的多媒体体验。另外,已开发出高度可移动的、高质量的声音系统和音乐传送机构(例如,MP3播放器)以便为用户仅提供音频演示。
高质量数据演示的发展迫使需要建立可以高数据速率传递数据的专用接口, 使得数据质量不会降级或削弱。一个此类接口是移动显示数字接口(Mobile Display Digitallnterface, MDDI),其用于(例如)在具有相机的蜂窝式电话的下翻盖(lower clamshell)与上翻盖(upper clamshell)之间交换高速数据。MDDI是具有成本效益的、 低功率消耗的传递机制,其实现主机与客户端之间经由短程通信链路的甚高速数据传递。 MDDI最少只需要四根引线加上用于利用本发明技术可递送最大带宽达每秒3. 2吉比特的双向数据传递的功率。
虽然可使用MDDI和其它数据接口来有效地提供接口上的高速数据速率,但越来越多地需要优化性能并更有效地使用数字传输链路(例如,MDDI链路)。发明内容
本发明提供用于实施循环冗余校验(CRC)以改进链路初始化处理并交换系统误差信息,使得可更有效地使用数字传输链路的系统和方法。在本发明的一个方面,提供CRC 校验器,其包含唯一模式检测器、CRC产生器、CRC初始化器和CRC验证器。所述CRC校验器预填充所述CRC产生器以获得唯一模式。因为预填充了所述CRC产生器,所以当在经由数字传输链路所接收的数据流内接收到所述唯一模式时,所述CRC校验器可继续校验CRC而无需对数据进行排队和存储。
在本发明的另一方面,提供CRC产生器系统,其有意破坏CRC值以传输系统误差信息或相关系统误差信息。所述CRC产生器系统包含CRC产生器、CRC破坏器、误差检测器和误差值产生器。所述CRC产生器基于待包含在将经由数字传输链路传输的数据包中的数据来产生CRC值。所述CRC破坏器破坏由所述CRC产生器产生的所述CRC值以传达主机状态信息或相关系统状态信息。所述误差检测器检测主机或相关系统内的误差状况,并为所述 CRC破坏器提供用于有意破坏CRC值的指令。
在本发明的又一方面,CRC产生器系统可提供关于所包含的误差类型的特定信息。 在此情况下,除了以上元件外,CRC产生器系统还包含误差值产生器,其指令CRC破坏器用特定CRC误差值来代替CRC产生器产生的CRC值,所述特定CRC误差值指示系统误差或状态状况的类型。
在一个实例中,所述数字传输链路是MDDI链路。本发明不限于MDDI链路,且可与使用CRC的任何类型的数字传输链路一起使用。
下文参看附图详细描述本发明的其它实施例、特征和优点,以及本发明各种实施例的结构和操作。


参看附图描述本发明。图中,相似参考标号表示相同或功能类似的元件。元件第一次出现的图由相应参考标号中最左数位表示。
图I是耦合到数字装置和外围装置的数字数据装置接口的图。
图2是具有上翻盖部分和下翻盖部分的蜂窝式电话的方框图,所述蜂窝式电话使用MDDI接口来提供高速数据通信。
图3是具有相机的蜂窝式电话的上翻盖的图。
图4A是MDDI主机的图。
图4B是包从MDDI包构造器向MDDI链路流动的图。
图4C是由MDDI包构造器从MDDI链路接收的包的流动的图。
图4D是CRC校验器的图。
图4E是展示CRC的产生的时序图。
图4F是展示CRC的接收的时序图。
图5是子帧标头包格式的图。
图6是视频流包格式的图。
图7是CRC校验器的图。
图8是用于初始化链路的方法的流程图,所述方法涉及预填充CRC产生器。
图9是提供用于有意破坏CRC值的机制的CRC产生器系统的图。
图10是可解译被有意破坏的CRC值的CRC校验器的图。
图11是用于通过有意破坏CRC值而经由数字传输链路传输系统误差信息的方法的流程图。
图12 是 CRC 覆写机构(overwriting mechanism)的图。
图13是CRC覆写方法的流程图。
图14是接收已覆写的CRC值的方法的流程图。
具体实施方式
本说明书揭示并入有本发明的特征的一个或一个以上实施例。所揭示的实施例仅例示本发明。本发明的范围不限于所揭示的实施例。本发明由所附权利要求书界定。
所描述的实施例和说明书中对于“一个实施例”、“实施例”、“示范性实施例”等的参考表示所描述的实施例可包含特定部件、结构或特性,但可能并不一定每个实施例均包含所述特定部件、结构或特性。此外,这些短语不一定是指同一实施例。此外,当结合实施例描述特定部件、结构或特性时,应了解,结合明确或未明确描述的其它实施例来实行此特定部件、结构或特性应在所属领域的技术人员的知识范围内进行。
本发明的实施例可实施在硬件、固件、软件,或其任何组合中。本发明的实施例也可实施为存储在机器可读媒体上的指令,所述指令可由一个或一个以上处理器读取和执行。机器可读媒体可包含用于以可由机器(例如,计算装置)读取的形式存储或传输信息的任何机构。举例来说,机器可读媒体可包含只读存储器(ROM);随机存取存储器(RAM); 磁盘存储媒体;光学存储媒体;快闪存储器装置;电、光学、声音或其它形式的传播信号(例如,载波、红外信号、数字信号等)等等。此外,本文中可将固件、软件、例行程序、指令描述为执行某些动作。然而,应了解,这些描述仅出于方便的目的,且这些动作实际上来自计算装置、处理器、控制器或执行所述固件、软件、例行程序、指令等的其它装置。
图I是耦合到数字装置150和外围装置180的数字数据装置接口 100的图。 数字装置150可包含(但不限于)蜂窝式电话、个人数据助理、智能电话或个人计算机。大体上说,数字装置150可包含充当针对数字指令和处理数字演示数据(digital presentationdata)的处理单兀的任何类型的数字装置。数字装置150包含系统控制器160 和链路控制器170。
外围装置180可包含(但不限于)相机、条形码读出器、图像扫描仪、音频装置和传感器。大体上说,外围装置180可包含任何类型的音频、视频或图像捕获和显示装置,其中在外围装置与处理单元之间交换数字演示数据。外围装置180包含控制区块190。例如, 当外围装置180是相机时,控制区块190可包含(但不限于)镜头控制、闪光或白色LED控制及快门控制。
数字演示数据可包含表示音频、图像和多媒体数据的数字数据。
数字数据接口装置100经由通信链路105以高速率传递数字演示数据。在一个实例中,可使用MDDI通信链路,其支持最大带宽为每秒3. 2吉比特的双向数据传递。视通信链路而定,可支持数据传递的高于或低于此示范性速率的其它高速率。数字数据接口装置 100包含消息解译器模块110、内容模块120、控制模块130和链路控制器140。
位于数字数据接口 100内的链路控制器140和位于数字装置150内的链路控制器 170建立通信链路105。链路控制器140和链路控制器170可以是MDDI链路控制器。
视频电子标准协会(“VESA”)MDDI标准(其全文以引用的方式并入本文中)描述允许便携式装置将来自小型便携式装置的数字图像传送到较大的外部显示器的高速数字包接口的要求。MDDI应用微型连接器系统和对于将便携式计算、通信和娱乐装置链接到例如可佩带的微显示器的新兴产品来说比较理想的细挠性电缆。其还包含关于如何简化主机处理器与显示装置之间的连接的信息,以便减少成本并增加这些连接的可靠性。链路控制器140和170基于VESA MDDI标准来建立通信路径105。
2004 年 7 月 6 日颁予 Zou 等人的题为 “Generating and Implementing a CommunicationProtocol and Interface for High Data Rate Signal Transfer,,的第56,760,772号美国专利(’772专利)描述一种数据接口,其使用包结构经由通信路径在主机与客户端之间传递数字数据,其中所述包结构链接在一起以形成针对演示数据的通信协议。’ 772专利中教示的本发明的实施例针对MDDI接口。链路控制器(例如,链路控制器 140和170)使用信号协议,所述链路控制器经配置以产生、传输并接收形成通信协议的包, 并将数字数据形成为一种或一种以上类型的数据包,其中至少一种类型的数据包驻存在主机装置中并经由通信路径(例如,通信路径105)耦合到客户端。
所述接口提供经由短程“串行”型数据链路的具有成本效益的、低功率、双向、高速数据传递机制,其适合于与微型连接器和细挠性电缆一起实施。链路控制器140和170的实施例基于’ 772专利的教示建立通信路径105。’ 772专利全文以引用的方式并入本文中。
在其它实施例中,链路控制器140和170两者均可以是USB链路控制器,或其两者均可包含控制器的组合,例如,举例来说MDDI链路控制器与另一类型的链路控制器(例如,举例来说USB链路控制器)。或者,链路控制器140和170可包含控制器的组合,例如, MDDI链路控制器与用于在数字数据接口装置100与数字装置150之间交换确认消息的单一链路。链路控制器140和170另外可支持其它类型的接口,例如以太网或RS-232串行端口接口。相关领域的技术人员基于本文的教示将了解可支持额外接口。
在数字数据接口装置100内,消息解译器模块110接收来自系统控制器160的命令,并经由通信链路105向系统控制器160产生响应消息,解译命令消息,且将命令的信息内容路由到数字数据接口装置100内的适当模块。
内容模块120接收来自外围装置180的数据,存储所述数据并将数据经由通信链路105传递到系统控制器160。
控制模块130接收来自消息解译器130的信息,并将信息路由到外围装置180的控制区块190。控制模块130还可接收来自控制区块190的信息,并将信息路由到消息解译器模块110。
图2是具有上翻盖部分和下翻盖部分的蜂窝式电话200的方框图,所述蜂窝式电话200使用MDDI接口来提供位于上翻盖和下翻盖中的组件之间的高速数据通信。以下关于蜂窝式电话200的论述内容提供说明性实例,其进一步展示数字数据接口装置100的实用性并提供关于其实施方案和用途的额外细节。基于本文的论述内容,数字数据接口装置 100与其它装置(例如,个人数字助理和其它类型的移动电话)一起使用将是显而易见的且在本发明的精神和范围内。
参看图2,蜂窝式电话200的下翻盖部分202包含移动台调制解调器(MSM)基带芯片204。MSM 204是数字基带控制器。蜂窝式电话200的上翻盖部分214包含液晶显示器 (IXD)模块216和相机模块218。下翻盖部分202和上翻盖部分214两者均封闭在塑料中, 与通常用于蜂窝式电话的情况一样。铰链250和252以机械方式将下翻盖202连接到上翻盖214。挠性耦合254提供下翻盖202与上翻盖214之间的电耦合。
MDDI链路210将相机模块218连接到MSM 204。通常,为相机模块218和MSM 204 的每一者提供MDDI链路控制器。例如,在蜂窝式电话200内,MDDI主机222集成到耦合到相机模块212的接口系统230,而MDDI客户端206驻存在MDDI链路210的MSM侧。通常, MDDI主机是MDDI链路的主控制器。
在蜂窝式电话200中,来自相机模块218的像素数据在传输到MDDI链路210上之前,由接口系统230使用MDDI主机222接收并格式化为MDDI包。MDDI客户端206接收 MDDI包并将其再转换为与由相机模块218产生的像素数据相同格式的像素数据。接着将像素数据发送到MSM 204中的适当区块以进行处理。
类似地,MDDI链路212将LCD模块216连接到MSM 204。MDDI链路212将集成到 MSM 204中的MDDI主机208与集成到耦合到IXD模块216的接口系统232中的MDDI客户端220互连。由MSM 204的图形控制器产生的显示数据在传输到MDDI链路212上之前,由 MDDI主机208接收并格式化为MDDI包。MDDI客户端220接收MDDI包并将其再转换为显示数据,并通过接口系统232处理所述显示数据以供IXD模块216使用。
接口系统230和232表示数字数据装置接口 100的不同实施例。在接口系统230 的情况下,将实施数字数据装置接口 100元件以支持相机图像的数据传递和相机的相机控制功能。在接口系统232的情况下,将实施数字数据装置接口 100元件以支持到达IXD的数据显示和对LCD的控制功能。进一步解释接口系统230以说明当用于具有相机的蜂窝式电话(例如,具有相机模块218的蜂窝式电话200)中时数字数据装置接口 100的实施例。
图I中的装置与蜂窝式电话200之间的关系如下。数字数据装置接口 100由接口系统230表示。链路控制器140由MDDI主机222表示。外围装置180由相机模块218表示。系统控制器160由MSM 204表示,且链路控制器170由MDDI客户端206表示。
图3是上翻盖214的图且提供关于接口系统230的更多细节以突出如在具有相机的蜂窝式电话内使用的数字数据装置接口 100的示范性实施例。接口系统230包含MDDI 主机222、相机消息解译器302、相机视频接口 304、I2C主控器303、马达控制308和闪光/ 白色LED定时器310。I2C总线是通常使用的控制总线,其提供电路之间的通信链路。I2C 总线由Philips Electronics N. V.在20世纪80年代开发。
回想一下,接口系统230对应于数字数据装置接口 100。接口系统230的组件以以下方式对应于数字数据装置接口 100的组件。相机消息解译器302对应于消息解译器模块 100。相机视频接口 304对应于内容模块120。I2C主控器303、马达控制308和闪光/白色 LED定时器310共同对应于控制模块130。
相机消息解译器302经由MDDI主机222接收命令,并向MSM 204产生响应消息。 相机消息解译器302解译消息,且将信息内容路由到接口系统230内的适当区块(其可称为MDDI相机接口装置)。相机视频接口 304接收来自相机320的图像数据,存储所述图像数据并将图像数据传递到MDDI主机222。I2C主控器306、马达控制308和闪光/白色LED 定时器310共同形成相机控制区块。在此情况下,I2C主控器306提供对相机320的管理的控制,马达控制308提供对镜头322的管理的控制(例如,镜头变焦功能),且闪光/白色 LED定时器310提供对闪光/白色LED 324的管理的控制(例如,闪光亮度和持续时间)。
图4A是MDDI主机222的图。MDDI主机222包含微处理器接口 410、命令处理器 420、寄存器430、直接存储器存取(DMA)接口 440、MDDI包构造器450、数据握手模块460和数据垫(data pad) 470。微处理器接口 410与到达控制MDDI主机222的主机处理器的总线介接。主机处理器使用微处理器接口 410来设置寄存器,对寄存器进行读取,并向MDDI主机222发布命令。微处理器接口 410查看地址值并将数据传出到MDDI主机222内适当的模块,包含传递对命令处理器420的写入和对寄存器430内寄存器值的读取和写入。
命令处理器420处理从主机处理器接收到的命令。所述命令包含对MDDI链路210断电,对MDDI链路210加电,重置MDDI主机222,和产生某些类型的数据包。
寄存器430存储针对MDDI链路210上数据的传输的寄存器。寄存器430内的寄存器控制MDDI链路210的行为以及MDDI主机222的配置。
DMA接口 440向外部存储器提供脉冲请求以从接口系统230接收信息,从而对 MDDI包构造器450的数据进行缓冲。DMA接口 440分析链路列表节点标头的数据并调节指针以读取实际的包数据。DMA接口 440提供关于下一数据包的信息以发出到MDDI包构造器 450。
MDDI包构造器450做出关于接下来发送什么包以及构造将需要通过MDDI链路 222的物理包的决策。从内部寄存器、计数器和由DMA接口 440检索到的数据构造包。当将经由MDDI链路222输出数据时,可从若干来源产生输出的数据。包的第一来源是在MDDI 包构造器450内部产生的控制型包。示范性包包含子帧标头包,填充包和链路关闭包。包的另一来源是经由DMA接口 440。这些包包含经由链接的列表传递的包。在其它实施例中, 视频数据(当外围装置包含视频相机时)可直接传递到MDDI包构造器450。不论包的来源如何,所有包均经由驻存在MDDI包构造器450内的CRC产生器系统处理。
数据握手模块460管理物理MDDI链路210。这是利用负责握手过程、数据输出、往返延迟测量和反向数据的状态机实现的。数据握手模块460接收来自MDDI包构造器450 的数据并将数据传出到数据垫470,数据垫470将数据移出到MDDI链路222上。
图4B说明待提供给MDDI链路210的包的流动。如上文所指示,可在内部产生包, 从DMA接口 440接收包,或者包可以是直接接收的视频包。内部产生的包由控制包产生器 452产生。所有类型的包均经由CRC产生器系统454传递到数据握手模块460。数据握手模块460进而将包提供到数据垫470,数据垫470将数据放置在MDDI链路210上。
图4C说明由MDDI包构造器450经由MDDI链路210接收的包的流动。在此情况下,包由数据垫470从MDDI链路210接收,接着传递到数据握手模块460。数据握手模块 460将数据传递到MDDI包构造器450内的CRC校验器456。一旦CRC校验器456已验证传入的包的CRC,就将包提供到DMA接口 440以便放置在处理器总线上,供在数字数据接口装置100内进行分配。
参看图5和6描述示范性包类型。这些示范性包用于说明本发明,但不希望将本发明仅限于这些类型的包。如下文所述的使用唯一模式的其它包类型和CRC字段可用于本发明。
图5是根据VESA MDDI接口标准的子帧标头包格式500的图。子帧标头包格式 500包含包长度字段510、包类型长度字段520、唯一字字段(unique word field) 530、子帧标头参数字段540和CRC字段550。包长度字段510包含16位(2个字节)值,其规定包中除包长度字段510以外的字节的总数。包类型字段520包含16位无符号整数,其规定包中所含的信息的类型。唯一字字段530包含唯一的16位字。唯一字字段和包类型字段520 两者经辨认以形成32位唯一模式来调整数据。也就是说,当接收包时,MDDI包构造器450 可基于所述唯一模式确定MDDI包构造器450正处理数据包的什么部分或字段。子帧标头参数字段540包含用于管理MDDI链路222的控制参数。CRC字段包含16位CRC值。
图6是视频流包格式600的图。视频流包携带视频数据以更新显示器的矩形部分。视频流包格式600包含包长度字段610、包类型字段615、客户端ID字段620、视频格式字段625、像素数据属性字段630、X左边缘字段635、Y顶部边缘字段640、X右边缘字段 645、y底部边缘字段650、X开始字段655、Y开始字段660、像素计数字段665、参数CRC字段670、像素数据字段675,和像素数据CRC字段680。
包长度字段610包含16位(2个字节)值,其规定包中除包长度字段610以外的字节的总数。包类型字段620包含2字节无符号整数,其规定包中所含的信息的类型。
字段620到665各自为2字节字段,其含有关于应如何格式化视频显示的参数数据。这些字段的特定定义可查阅VESA MDDI接口标准。参数CRC字段670是两字节字段, 其含有通过处理字段610到665中的参数数据而产生的CRC值。
像素数据字段675包含至多为包和像素计数字段的大小所允许的数量的任何数量的像素数据。像素CRC字段680是两字节字段,其含有通过处理像素数据字段675内的像素数据而产生的CRC值。
经由MDDI链路210发送的每个包将包含至少一个CRC字段,例如子帧标头包格式 500内的CRC字段550。在一些较长的包中,包将包含两个CRC字段,例如视频流包格式600 内的参数CRC字段670和像素CRC字段680。
CRC从较大数据区块(例如,网络通信量包或计算机文件区块)中产生较小数目的位,以便检测传输或存储过程中的误差。将CRC计算为待发送的数据的函数,并在传输或存储之前进行附加(例如,与CRC字段550),并随后进行验证以确认未发生变化。
通过将包数据推送经过CRC产生器(例如,CRC产生器系统454)以产生与所述包数据相关联的唯一 CRC值来计算CRC。CRC校验器(例如,CRC校验器456)基于所接收的数据产生接收的数据CRC值。接着将接收的数据CRC值与发送的CRC值进行比较。如果两者匹配,那么认为数据是有效数据,否则就是产生了 CRC误差。
CRC较普遍,因为其易于实施在二进制硬件中,易于以算术方式进行分析,且尤其擅长检测由传输信道中的噪声引起的一般误差。相关领域的技术人员将了解CRC产生器的特定实施方案。
如图5和6所说明,CRC字段出现在包的末尾(例如,CRC字段512和像素数据CRC 字段680)且有时在包中某些较关键的参数之后,所述参数可能具有相当大的数据字段(例如,参数CRC字段670),且因此传递期间误差的可能性增加。在具有两个CRC字段的包中, CRC产生器(当仅使用一个时)在第一 CRC之后被重新初始化,使得长数据字段之后的CRC 计算不会受到包开始处的参数影响。
含有多个位误差的包产生较好CRC的可能性极小。在含有许多误差的非常长的包上,在具有误差的包上检测到较好CRC的可能性接近7. 6 X 10'通过设计,MDDI链路将具有非常低的误差率或零误差率。希望使用CRC来监视链路的健康状态而不希望检测特定包上的误差来确定是否应重新传输包。
在示范性实施例中,已知用于CRC计算的多项式为CRC-16或X16+X15+X2+X0。图 4D展示可用于实施本发明的CRC产生器454和CRC校验器456的示范性实施方案。图4D 中,就在传递在Tx_MDDI_Data_Before_CRC线上输入的包的第一位之前将CRC寄存器471 初始化为值0x0001,接着将包的字节移位到寄存器(首先以LSB开始)中。请注意,此图中寄存器位编号对应于所使用的多项式的阶数,而不是由MDDI使用的位位置。较有效的是在单一方向上移位CRC寄存器,且这导致CRC位15出现在MDDI CRC字段的位位置O处,且CRC寄存器位14出现在MDDI CRC字段位位置I处等等,且直到到达MDDI位位置14为止。
举例来说,如果包内容是OxOOOc、0x0046、0x000、0x0400、0x00、0x00、0x0000 (或表不为字节序列OxOc >0x00 >0x46 >0x00 >0x00 >0x00 >0x00 >0x04>0x00 >0x00 >0x00 >0x00)且使用多路复用器472和473以及AND门474的输入进行提交,那么Tx_MDDI_Data_With_ CRC线上的所得CRC输出为0xd9aa(或表示为序列,如0xaa、0xd9)。
当CRC产生器454和CRC校验器456配置为CRC校验器时,将在Rx_MDDI_Data线上接收到的CRC输入到多路复用器472和异或(XOR)门476,且使用NOR门475、AND门474 和AND门477将其逐位地与CRC寄存器中建立的值进行比较。如果存在任何误差(如由 AND门477输出的),那么通过将门477的输出连接到寄存器471的输入,针对含有CRC误差的每个包递增CRC —次。请注意,图4D的图表中所示的示范性电路可在给定的CHECK_ CRC_N0W窗口内输出一个以上CRC误差信号(见图4E)。因此,CRC误差计数器通常仅对其中CHECK_CRC_N0W为活动的每一间隔内的第一 CRC误差实例进行计数。如果配置为CRC产生器,那么在与包结束一致的时间将CRC从CRC寄存器中时钟输出。
图4E和4F以图形说明输入和输出信号以及启用信号的时序。图4E展示CRC的产生和数据包的传输,其中状态(O或I)为Gen_Reset、Check_CRC_Now、Generate_CRC_Now和 Sending_MDDI_Data 信号,以及 Tx_MDDI_Data_Before_CRC 和 Tx_MDDI_Data_With_CRC 信号。图4F展示接收数据包和校验CRC值,其中状态为Gen_Reset、Check_CRC_Now、Generate_ CRC_Now 和 Sending_MDDI_Data 信号,以及 Rx_MDDI_Data 和 CRC 误差信号。
包内存在CRC带来操作上的困难,且也提供了更有效地利用MDDI链路210的各种机会。虽然论述内容集中于在MDDI链路210的情境下CRC的用途,但本发明不限于MDDI 情境。本发明可应用于使用CRC的任何类型的数字数据传输链路。
与CRC的使用相关联的一个难题涉及链路初始化。当链路启动时,子帧标头包(例如,子帧标头包500)将由MDDI主机222发送到MDDI客户端206。当链路初始化时,CRC校验器456通常将不会知道数据流内数据的对准。也就是说,其不会知道(例如)其正在处理唯一字字段530还是CRC字段550内的数据。因此,CRC校验器456将需要继续将数据排队到存储器中,直到其辨认出其在数据流内何处为止。这导致效率较低且需要使用较多存储器和芯片面积来对数据进行排队和存储。在不知道在数据流内的精确位置的情况下, CRC校验器456将不能够产生可与所接收的CRC进行比较的CRC来使所接收的数据生效。
图7是解决这些难题的CRC校验器456的图。CRC校验器456包含唯一模式检测器710、CRC产生器720、CRC初始化器730和CRC验证器740。唯一模式检测器710检测传入的数据流内的唯一模式以识别数据流中的特定点。CRC产生器720是用于产生与所接收的数据相关联的CRC值的标准CRC产生器。CRC初始化器730从CRC产生器720抽取与唯一模式和包长度相关联的数据值。CRC验证器740基于所接收的数据将所接收的CRC值与由CRC产生器720产生的CRC值进行比较以使数据生效。
图8是用于初始化链路的方法800的流程图,其例证如图7描绘的CRC校验器456 的用途。在一种方法中,假定子帧标头的包长度始终相同,且将预先计算的值载入CRC校验器中,所述预先计算的值是基于包长度、包类型和唯一字的部分CRC。一种替代方法支持包长度可变的情形。在此情形下,可经由预计算器抽取包长度以及唯一模式来产生一值,接着在已接收到唯一模式的时间点将所述值放置在CRC校验器中。
方法800开始于步骤810。在步骤810中,接收初始化或唤醒传输链路的请求。举例来说,MDDI客户端206可从MDDI主机222接收初始化或唤醒MDDI链路210的请求。在 MDDI客户端206内,CRC校验器456将通过此链路唤醒请求而初始化。明确地说,CRC初始化器730将通过所述请求而进行初始化。
在步骤820中,向CRC产生器预先组装与唯一模式和包长度字段510相关联的数据值,使得可由CRC产生器产生与唯一模式和包长度字段相关联的CRC值。如上文所指示, 在一个实施例中,假定包长度字段是固定的。举例来说,CRC初始化器730可将唯一模式和包长度字段提供到CRC产生器720。在MDDI的情况下,唯一模式是与包含在包类型字段520 和唯一字字段530内的数据相关联的数据值。当唤醒链路时这些字段的值将已知为先验的。因此,CRC初始化器730可将其存储并处于一位置,以能够在接收到唤醒链路请求时将其提供到CRC产生器730。在替代方法中,不是将数据值提供到CRC产生器,而是可向CRC 校验器预加载预先计算的CRC值,如果唯一模式和包长度字段已被提供到CRC产生器则会由所述CRC产生器产生所述预先计算的CRC值。
在步骤830中,禁用CRC产生器(例如,CRC产生器720)。禁用产生器以便不处理更多数据(这会改变CRC值),直到接收到唯一模式和包长度字段为止。
在步骤840中,监视传入的数据以检查唯一数据模式的接收。举例来说,唯一模式检测器710监视从MDDI链路210接收的数据。
在步骤850中,确定已接收到唯一模式。举例来说,唯一模式检测器710确定已接收到包长度字段510、包类型字段520和唯一字字段530。
在步骤860中,启用CRC产生器。当被启用时,CRC产生器720将以使用预加载的唯一模式产生的现有CRC值为基础。因此,CRC产生器720立即与数据对准,且无需在存储器中对数据进行排队或存储。当接收到CRC字段550中包含的CRC值时,CRC验证器740可将CRC字段550内的值与由CRC产生器720产生的值进行比较以确定是否存在CRC误差。 在步骤870中,方法800结束。
通常,使用CRC值来确定传输期间传输链路上的问题是否破坏了数据。在本发明的另一方面,使用CRC值来传达与系统误差和状态有关的信息。以此方式,消息内的CRC字段可更有效地用于支持对传输链路问题以及系统状态或误差信息的识别。
在本发明的一个实施例中,CRC字段数据被破坏简单地指示传输数据的系统存在故障,且因此所接收的数据可能存在问题。举例来说,在一些情况下,经由MDDI链路210传出的数据将被破坏,因为传入MDDI包构造器450中的数据未被足够快地接收。即使可用于包的数据不充分,MDDI规范还是规定仍应发送包。因此,即使发送了包,数据还是可能无效或在某一方面不充分。
在此情况下,可有意破坏CRC值(例如参数CRC 670或像素数据CRC 680),使得 MDDI客户端206可辨认出发生了某一故障而削弱了所传输的包的整体性。在MDDI规范内, 存在一种告知MDDI客户端206所述数据存在问题的方式。或者,将需要发送另一消息,其跟随含有误差的包,实际上指示“我所发送的上一个包有缺陷”。
当MDDI客户端206接收CRC值已受到有意破坏的包时,其决定如何处理所述包。 可形成算法来检测并确定如何处理具有受到有意破坏的CRC值的包。对于某些类型的包, MDDI客户端206可简单地记录CRC误差并继续使用数据。然而在其它情形下,MDDI客户端11206可丢弃所接收的包并请求新的包。
举例来说,在视频包(例如,视频流包600)内,如果像素数据CRC值680受到有意破坏,那么MDDI客户端220将不会通知MDDI客户端220外部的逻辑包受到破坏。在此情况下,所接收的数据可在提供任何种类的误差通知之前被缓冲。没有足够的存储器来缓冲可能的所有的视频数据(即,所有待显示的像素数据)。因此,一接收到像素数据,就将其提供到显示器。因此,如果视频信息中某处存在CRC误差,那么阻止使用所述视频信息已经太迟。在此情况下,所做的只是记录已发生了问题。概括地说,如果受到有意破坏的CRC误差发生在像素数据中而不是参数数据中,那么MDDI客户端简单地将CRC误差记录在误差计数器中,但仍使用后续的像素数据。另一方面,如果参数CRC值受到有意破坏,那么MDDI客户端将不会使用像素数据。
图9是提供用于有意破坏CRC值的机制的循环冗余产生器系统454的图。循环冗余产生器系统454包含CRC产生器910、CRC破坏器920、误差检测器930和误差值产生器 940。
CRC产生器910基于待包含在将经由数字传输链路(例如(但不限于)MDDI链路 210)传输的数据包中的数据产生CRC值。
CRC破坏器920破坏由CRC产生器910产生的CRC值以传达主机或远程系统状态信息。举例来说,如果接口系统230不能将数据足够快地提供到MDDI主机222以适当地填充MDDI包,那么CRC破坏器920有意破坏待发送的包的CRC值。
误差检测器930检测主机系统(例如,或者是MDDI主机222)内的误差状况,或基于从接口系统230接收的信息而接收误差状况信息,并为CRC破坏器920提供有意破坏CRC 值的指令。在一个实施例中,误差检测器930仅检测到出现了故障,但不确定特定的误差状况。在另一实施例中,误差检测器930确定特定类型的误差状况。在后一实施例中,误差检测器930将误差的性质传达到误差值产生器940。误差值产生器940指令CRC破坏器940 用指示系统误差或状态状况的类型的特定值代替由CRC产生器910产生的CRC值。
当破坏CRC值时,必须选择算法以确保有意破坏不会产生可能对应于有效数据且因此将不会由CRC校验器在传输链路的接收端作为唯一 CRC值而接收的CRC值。一种可能的算法将是,识别那些不会由有效数据产生的CRC值,并使用那些值作为用于有意破坏CRC 值的唯一值。基于本文的教示,相关领域的技术人员将确定包含在本发明的精神和范围内的其它算法。
图10是CRC校验器456的图,所述CRC校验器456可解译来自CRC产生器系统454 的被有意破坏的CRC值。CRC校验器456包含CRC误差值检测器1010、CRC产生器1020和 CRC验证器1030。CRC误差值检测器1010检测经由数字传输链路接收的数据包的CRC字段内的值。CRC误差值检测器1010识别CRC值何时对应于识别系统误差状况的受到有意破坏的CRC值。当识别出对应于系统误差状况的CRC值时,CRC误差值检测器1010通知所述接收客户端(例如,MDDI客户端206)的主机处理器。主机处理器接着将基于检测到的误差的类型而采取行动。CRC产生器1020基于所接收的数据流产生CRC值。CRC验证器1030检测基于所接收的数据流产生的CRC值与所接收的数据流内发送的CRC值之间的差异。CRC 产生器1020和CRC验证器1030以相关领域的技术人员将了解的传统方式操作。
图11是用于通过有意破坏CRC值而在数字传输链路上传输系统误差信息的方法1100的流程图。方法1100开始于步骤1110。在步骤1110中,检测主机系统或相关系统内的误差。举例来说,误差检测器930检测MDDI主机222或接口系统230内的误差。在步骤 1120中,产生CRC值。举例来说,CRC产生器910产生与待发送的包相关联的数据的CRC值。 在步骤1130中,破坏CRC值。举例来说,误差检测器930指令CRC破坏器920破坏CRC值。 在步骤1140中,方法1100结束。请注意,虽然已参照涉及MDDI的系统描述了方法1100,但方法1100适用于其中使用CRC的任何数字传输系统。
在本发明内,也可使用CRC字段来传输误差代码信息以表示误差的类型。每当在主机与客户端之间仅传递数据包和CRC时,就不提供误差代码。仅有的误差是同步的损失。 否则,必须等待链路由于缺乏良好的数据传递路径或管线而超时,且接着重置链路并继续下去。不幸的是,这样做耗时且在某种程度上说效率低下。
已开发出一种新的技术以用于一个实施例中,在所述技术中,使用包的CRC部分来传递误差代码信息。也就是说,由所述处理器或处理数据传递的装置产生一个或一个以上误差代码,其指示通信处理或链路内可能发生的特定的预定义的误差或缺陷。当遭遇误差时,产生适当的误差代码并使用包的CRC的位传递所述误差代码。也就是说,用所需的误差代码使CRC值过载或被覆写,这可在接收端由监视CRC字段值的误差监视器或校验器检测到。对于其中误差代码由于某一原因与CRC值匹配的那些情况,传递所述误差的补码 (compliment)以防止混淆。
在一个实施例中,为了提供稳固的误差警告和检测系统,可使用一系列包将误差代码传递若干次,所述一系列包通常是在已检测到误差之后传递或发送的所有包。误差代码的传递一直发生,直到产生误差的条件被从系统中清除的时间点为止,在该时间点有规则的CRC位在不通过另一值过载的情况下传递。
这种使CRC值过载的技术提供对于系统误差的更快速的响应,同时使用最少量的额外位或字段。
如图12所示,展示使用误差检测器或检测装置1202(例如,误差检测器930)的 CRC覆写机构或设备1200,其可形成先前描述或已知的其它电路的一部分,检测通信链路或过程内误差的出现或存在。可形成为其它电路的一部分或使用例如查找表的技术来存储预选的误差消息的误差代码产生器或装置1204(例如,误差值产生器940)产生一个或一个以上误差代码以指示已检测为发生的特定的预定义的误差或缺陷。易了解,装置1202和 1204可视需要形成为单个电路或装置,或形成为其它已知处理器和元件的已拟订的步骤序列的一部分。
展示CRC值比较器或比较装置1206(例如,CRC验证器1030)用于校验以确定所述选定的误差代码或多个选定的误差代码是否与正传递的CRC值相同。如果情况是这样, 那么使用代码补码产生器或产生装置来提供误差代码的补码,以使得不会被误认为是原始 CRC模式或值,且不会混淆检测方案或使检测方案变复杂。误差代码选择器或选择装置元件或装置1210接着选择其希望插入或覆写的误差代码或值,或视需要选择其各自的补码。误差代码CRC覆写器或覆写机构或装置1212(例如,CRC破坏器920)是接收数据流、包和待插入的所需代码并覆写相应的或适当的CRC值,以便将所需的误差代码传递到接收装置的>j-U ρ α装直。
如所提及,误差代码可使用一系列包而传递若干次,因此覆写器1212可利用存储器存储元件以便在处理期间维持代码的副本,或从可用于视需要或按要求地存储或保存其值的先前元件或其它已知的存储位置调用这些代码。
图13和14中额外详细地展示图12的覆写机构正实施的大体处理。图13中,在步骤1302中,在通信数据或过程中检测一个或一个以上误差,且在步骤1304中,选择误差代码以指示此状况。同时,或在适当的时间点,在步骤1306中校验待替代的CRC值,且在步骤1308中将其与所需的误差代码进行比较。如之前所论述,此比较结果是关于所需的代码或其它代表值是否将与存在的CRC值相同的判定。如果情况是这样,那么处理过程继续到步骤1312,在步骤1312处,选择补码(或视需要,在一些情况下为另一代表值)作为要插入的代码。一旦在步骤1310和1314中已确定要插入什么误差代码或值,就选择所述适当的代码进行插入。出于清楚的目的将这些步骤说明为单独的,但其通常表示基于步骤1308决策的输出而作出的单一选择。最后,在步骤1316中,在CRC位置覆写适当的值以供与作为过程的目标的包一起传递。
在包接收侧,如图14所示,在步骤1422中监视包CRC值。通常,CRC值由系统内一个或一个以上过程监视以确定数据传递中是否已发生误差,以及是请求一个包或多个包的重新传输,还是抑制进一步的操作等等,其中一些上文进行了论述。作为这种监视的一部分,也可使用所述信息将值与已知或预选的误差代码或代表值进行比较,并检测误差的存在。或者,可实施单独的误差检测过程和监视。如果似乎存在代码,那么在步骤1424中提取或以另外的方式记录所述代码以进行进一步处理。在步骤1426中可确定其是实际的代码还是补码,在补码的情况下,可使用额外步骤1428将所述值翻译为所需的代码值。在任一情况下,接着使用所得的所提取的代码、补码或其它恢复的值在步骤1430中检测所传输的代码中已出现什么误差。
结论
已提供本发明的示范性实施例。本发明不限于这些实例。本文提供这些实例是出于说明的目的而不是限制的目的。相关领域的技术人员基于本文包含的教示将了解替代形式(包含本文描述的内容的等效物、延伸物、变化形式、偏差形式等)。这些替代形式在本发明的范围和精神内。
本说明书中提及的所有公开案、专利和专利申请案表明本发明所属领域的技术人员的技术水平,且以引用的方式并入本文中,达到如同表明每一个别公开案、专利或专利申请案均明确且个别地以引用的方式并入的程度。
权利要求
1.一种在主机系统内的循环冗余校验(CRC)产生器系统,其包括 CRC产生器,其基于待包含在将经由数字传输链路传输的数据包中的数据来产生CRC值; CRC破坏器,其破坏由所述CRC产生器产生的CRC值,以传达主机状态信息或相关系统状态信息; 误差检测器,其检测主机系统内的误差状况,并为所述CRC破坏器提供有意破坏CRC值的指令。
2.根据权利要求I所述的CRC产生器系统,其进一步包括误差值产生器,所述误差值产生器指令所述CRC破坏器用指示系统误差或状态状况的类型的CRC误差值来代替由所述CRC产生器产生的CRC值。
3.根据权利要求I所述的CRC产生器系统,其中所述数字传输链路是MDDI传输链路。
4.一种循环冗余校验(CRC)校验器,其包括 CRC误差值检测器,其检测经由数字传输链路接收的数据包的CRC字段内的CRC误差值,其中所述CRC误差值与识别系统误差状况的有意破坏的CRC值相对应; 循环冗余校验(CRC)产生器,其基于所接收的数据流产生CRC值; CRC验证器,其检测基于所接收的数据流产生的CRC值与所述接收的数据流内发送的CRC值之间的差异。
5.根据权利要求4所述的CRC校验器,其中所述数字传输链路是MDDI传输链路。
6.一种经由数字传输链路传输来自主机系统的系统误差信息的方法,其包括 (a)检测主机系统或相关系统误差; (b)基于将经由所述数字传输链路在包内传输的数据产生CRC值;以及 (c)破坏所述CRC值,其中所述破坏指示所述主机系统或相关系统误差已发生。
7.根据权利要求6所述的方法,其进一步包括经由所述数字传输链路在数据包内传输所述受破坏的CRC值。
8.根据权利要求6所述的方法,其中所述数字传输链路是MDDI链路。
9.一种经由数字传输链路传输来自主机系统的系统误差信息的方法,其包括 (a)检测主机系统或相关系统误差; (b)基于将经由所述数字传输链路在包内传输的数据产生CRC值; (C)基于步骤(a)中检测到的误差的类型确定CRC误差值;以及 (d)用步骤(c)中产生的所述CRC误差值来代替步骤(b)中产生的所述CRC值,其中所述CRC误差值指示所述主机或相关系统内误差状况的具体类型。
10.根据权利要求9所述的方法,其中经由所述数字传输链路在数据包内传输所述CRC误差值。
11.根据权利要求9所述的方法,其中所述数字传输链路是MDDI链路。
全文摘要
本申请涉及用于实施循环冗余校验的系统和方法。在一个方面,提供循环冗余校验(CRC)校验器,其包含唯一模式检测器、CRC产生器、CRC初始化器和CRC验证器。所述CRC校验器预填充所述CRC产生器以获得唯一模式。当在经由数字传输链路所接收的数据流内接收到所述唯一模式时,所述CRC校验器继续校验CRC而无需对数据进行排队和存储。在另一方面,提供CRC产生器系统,其有意地破坏CRC值以传输系统误差信息。所述CRC产生器系统包含CRC产生器、CRC破坏器、误差检测器和误差值产生器。在一个实例中,所述数字传输链路是MDDI链路。
文档编号H04L1/00GK102983937SQ201210449348
公开日2013年3月20日 申请日期2005年11月23日 优先权日2004年11月24日
发明者布赖恩·斯蒂尔, 乔治·A·威利 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1