背景技术:
本公开涉及数据通信,并且更具体地,涉及控制数据和音频数据的同时传输。
视频和音频数据通常通过诸如高清晰度多媒体接口(hdmi)电缆等通信通道从一个设备传输到另一设备。例如,hdmi电缆可以用于从诸如音频/视频接收器(avr)等源设备向宿设备(例如,诸如tv等显示设备)单向传输高分辨率视频数据。
在某些情况下,宿设备可以从另一源接收音频和/或视频数据(例如,经由天线、无线因特网连接、第二源设备等)。这样,可能需要宿设备将音频数据传输回源设备。例如,宿设备可以显示所接收的视频数据,同时通过hdmi电缆向源设备传输音频数据以由与源设备相关联的扬声器系统播放。
技术实现要素:
实施例涉及通过同一物理通道在宿设备与源设备之间同时传输音频数据和控制数据。源设备和宿设备可以经由接口电缆(例如,hdmi电缆)连接,该接口电缆包括多个端口,这些端口被划分为形成第一物理通道的第一组端口和形成第二物理通道的第二组端口。源设备通过第一物理通道向宿设备传输单向视频数据。另外,宿设备可以通过第二物理通道向源设备传输单向音频数据。
在一些实施例中,音频数据可以包括音频回传数据。宿设备和源设备可以通过第二物理通道在这两个设备之间传输控制数据。
在一些实施例中,音频数据使用差分信令以第一速率被传输,并且控制数据使用共模信号以低于第一速率的第二速率被传输。
在一些实施例中,控制数据包括在源设备与宿设备之间传输的读取事务和写入事务。
在一些实施例中,控制数据以半双工模式被传输。宿设备可以用作主设备,并且发起每个读取或写入事务。源设备可以用作从设备,该从设备在控制数据的分组从宿设备向源设备的传输之后的指定响应窗口期间,向宿设备传输控制数据的分组。
实施例还涉及在宿设备与源设备之间同时传输音频和控制数据。通过第一物理通道从源设备接收未压缩视频数据,其中第一物理通道是单向物理通道。通过与第一物理通道分离的第二物理通道,从源设备接收发现信号,以确认源设备对双向通信模式的支持。在接收到发现信号之后,建立双向通信。在双向通信期间,通过第二物理通道,使用共模信号向源设备和从源设备通信传递控制数据。共模信号以第一速度被传输。此外,音频信号通过第二物理通道向源设备传输。音频信号被叠加在共模信号上并且以高于第一速度的第二速度被传输。
附图说明
图1示出了根据一个实施例的通过第一物理通道和第二物理通道进行通信的源设备和宿设备的示意图。
图2示出了根据一个实施例的与用于传输音频数据或控制数据的下降沿调制(fem)相关联的波形。
图3示出了根据一个实施例的用于通过第二物理通道在源设备与宿设备之间同时传输音频数据和控制数据两者的共模比特流的示例。
图4a和图4b示出了根据一个实施例的在宿设备与源设备之间建立双向通信的示例状态图。
图5a示出了根据一个实施例的有效载荷分组格式。
图5b示出了根据一些实施例的使用双相标记编码来传输的分组的前导码和同步比特的示例。
图6示出了根据一个实施例的在主设备与从设备之间的一系列被传输的分组。
图7是根据一个实施例的用于在源设备与宿设备之间建立earc双向通信通道的过程的流程图。
图8是根据一个实施例的用于使用双向通信通道来处理事务的过程的流程图。
附图仅出于说明的目的描绘了本公开的实施例。
具体实施方式
附图和以下描述仅通过说明的方式涉及各种实施例。应当注意,从下面的讨论中,本文中公开的结构和方法的替代实施例将容易地被认为是在不偏离本文中讨论的原理的情况下可以采用的可行替代方案。现在将详细参考几个实施例,其示例在附图中被示出。应当注意,在适当的情况下,相似或类似的附图标记可以在附图中使用并且可以指示相似或类似的功能。
实施例涉及彼此独立地通过同一物理通道在宿设备与源设备之间同时传输音频回传数据和控制数据。源设备和宿设备通过接口电缆连接,诸如包括第一物理通道和第二物理通道的高清晰度多媒体接口(hdmi)电缆。源设备可以通过第一物理通道向宿设备传输单向视频数据,而宿设备可以通过第二物理通道向宿设备传输单向音频数据。宿设备和源设备还可以通过第二物理通道在这两个设备之间传输双向控制数据。单向音频数据和双向控制数据可以在彼此之上叠加,从而音频数据经由差分信令以第一速率被传输,而控制数据经由共模信令以低于第一速率的第二速率被传输。
系统的总体概述
图1示出了根据一个实施例的用于通过第一物理通道和第二物理通道进行通信的源设备102和宿设备104的示意图。源设备102和宿设备104通过多个物理通道彼此通信。多个物理通道可以被实现为接口电缆(例如,hdmi电缆)。
宿设备104是从对端源设备(例如,源设备102)接收媒体数据以进行再现的设备。宿设备104可以被实现为诸如电视等显示设备。
源设备102向宿设备104传输媒体数据以进行再现。示例源设备尤其包括音频/视频接收器(avr)、dvd或蓝光播放器、机顶盒和游戏机。
尽管宿设备104通常从源设备102接收媒体数据,但在某些设置中,宿设备104还可以从除源设备102之外的信源接收媒体数据。例如,连接到诸如dvd或游戏机等源设备的电视也可以经由备选信源(诸如空中天线、无线因特网连接、第二源设备(例如,另一dvd或游戏机)等)接收媒体数据。在这样的设置中,宿设备可以通过接口电缆向源设备102发送经由备选信源接收到的音频或其他媒体数据。然后,源设备102可以向扬声器系统发送音频数据以产生声音。
连接源设备102和宿设备104的接口电缆(例如,hdmi电缆)可以包括形成第一物理通道的第一组导线和形成第二物理通道的第二组导线。例如,第一物理通道可以用于从源设备102的源设备发射器106向宿设备的宿设备接收器108单向传输视频数据110。第一物理通道可以被实现为经由转换最小化差分信令(tmds)来传输数据的导线对。第二物理通道可以被实现为导线,每条导线连接到hdmi的热插拔检测(hpd)端口和公用(utility,util)端口。
如图1所示,源设备102和宿设备104可以包括各自的源双向发射器/接收器(tx/rx)112和宿双向tx/rx114。源双向tx/rx112和宿双向tx/rx114可以通过第二物理通道通信,第二物理通道可以用于从宿双向tx/rx114向源双向tx/rx112单向传输音频数据116。此外,第二物理通道可以在宿双向rx114与源双向tx/rx112之间双向传输控制数据118。
第二物理通道可以在宿设备104与源设备102之间传输控制数据118,诸如扩展显示标识数据(edid)、指令命令和其他状态信息。控制数据118可以包括例如hdcp(高带宽数字内容保护)相关的控制数据,诸如周期性链路完整性检查、从源设备102(用作音频宿)向宿设备104(用作音频源)传输的earc能力数据(该数据可以类似于edid控制数据),等等。在一些实施例中,控制数据118可以用于通过使用与宿设备104相关联的遥控器来控制源设备102的一个或多个设置。
尽管本文中主要关于hdmi来描述实施例,但其他实施例可以使用其他类型的数据传输标准来实现,诸如显示端口(displayport)或移动高清晰度链路(mhl)等。
示例共模传输方案
在下文中,通过第二物理通道的音频数据传输被描述为使用下降沿调制(fem)方案来执行,但实施例不限于fem方案。fem方案或类似方案(例如,上升沿调制方案)是有利的,这尤其是因为音频或控制数据可以与时钟信号同时传输。
图2示出了根据一个实施例的与用于传输音频数据或控制数据的下降沿调制(fem)相关联的波形。如图2所示,信号200被划分为多个时钟周期202a、202b、202c等。在每个时钟周期202a、202b、202c等中传输媒体数据(例如,音频数据)的一个比特。每个时钟周期202由信号200的上升沿限定。
信号200中的每个时钟周期202期间传输的数据比特的值基于每个时钟周期200内的信号200的下降沿的时序来确定。在图2的示例中,如果下降沿在距上升沿的阈值时间量内,则值“0”被发信号传送,而如果下降沿在距上升沿的阈值时间量之后出现,则改为值“1”被发信号传送。信号200的值在每个上升沿之后的一个设定时间量(例如,基于阈值时间量)处被测量,以确定信号的值。如果信号200为低,表明已经出现下降沿,则发信号传送值“0”。如果信号200为高,表明尚未出现下降沿,则发信号传送值“1”。
图3示出了根据一个实施例的用于通过第二物理通道在源设备102与宿设备104之间同时传输音频数据和控制数据两者的共模比特流的示例。图3的信号300被传输为包括正信号302a和负信号302b的差分信号。例如,在hdmi的上下文中,正信号302a可以通过hdmi电缆的热插拔线传输,而负信号302b可以通过hdmi电缆的util线传输,反之亦然。
在信号300内,音频数据以高于控制数据的速率被传输,因此音频数据可以被嵌入在控制数据内。音频数据可以使用上述fem方案来传输,而控制数据作为共模信号来传输。在其他实施例中,控制数据也可以使用fem方案来传输。
信号300的值(包括正信号302a和负信号302b)可以在三种不同状态(例如,低、中、高)之间变化。共模控制数据的值可以基于正信号302a和负信号302b的值的均值来确定。例如,如图3所示,在第一时间段304a期间,正信号302a和负信号302b在低值与中值之间交替,因此具有在低值与中值之间的均值,其发信号传送共模控制数据的低值(“0”)。另一方面,在第二时间段304b期间,正信号302a和负信号302b在中值与高值之间交替,具有在中值与高值之间的均值,发信号传送共模控制数据的高值(“1”)。
另外,正信号302a与负信号302b之间的差异被用于确定所传输的音频数据的值。例如,当正信号302a高于负信号302b时(例如,在第一时间段304a期间,正信号302a为中,而负信号302b为低),音频数据为高。类似地,当正信号302a低于负信号302b时,音频数据为低。然后可以基于fem来确定所传输的音频数据的值。
这样,通过将信号300传输为包括正信号302a和负信号302b两者的差分信号,可以基于正信号302a和负信号302b的均值来区分信号300发信号传送共模控制数据的“0”还是“1”。另外,可以基于正信号302a和负信号302b之间的差异来确定所产生的音频数据的值,而不管正信号302a和负信号302b是在低与中之间的范围(例如,如在第一时间段304a期间)还是在中与高之间的范围(例如,如在第二时间段304b期间)。
在一些实施例中,使用双相标记编码来编码信号300的共模控制数据。这样,基于每两个时钟周期是存在转换或是不存在转换(从高到低,反之亦然),来确定控制数据的实际值。在一些实施例中,可以基于与如上所述的基于fem编码信号而限定的音频数据相关联的时钟周期,来推导与控制数据相关联的时钟周期(例如,是音频数据时钟的倍数)。
因此,如图3所示,通过传输共模差分信号,音频数据、音频数据时钟、控制数据和控制数据时钟都可以通过单个物理通道来传输,从而允许音频和控制数据的同时传输。音频数据以由差分信号302a、302b的移位所表示的第一速率来传输,而控制数据以由两个差分信号302a、302b的平均电压电平的变化移位所表示的第二速率来传输。第二速率低于第一速率。也就是说,在共模控制数据的仅一个比特被传输的时段期间,传输音频数据的多个比特被传输。例如,在一些实施例中,传输音频数据的第一速率可以在4mbps至98mbps之间,而传输控制数据的第二速率可以约为1mbps。
在一些实施例中,在双向通信期间,可以以基本恒定的速率传输音频数据。另一方面,在必要时可以偶尔传输控制数据。另外,当不传输控制数据时,共模信号的值可以处于浮置状态。然而,可以继续使用差分信号来传输音频数据,因为正信号和负信号之间的差异可以独立于正信号和负信号的均值来确定。另外,控制数据在被传输时不依赖于所传输的音频数据的值,因为在一个时间段内差分信号的正负信号的均值不依赖于正负信号之间的差异。这样,使用差分信号的音频数据的传输和使用共模的控制数据的传输允许在不依赖于音频数据的情况下传输控制数据,反之亦然。
建立双向通信
图4a和图4b示出了根据一个实施例的在宿设备104与源设备102之间建立双向通信的示例状态图。因为存在各种具有不同能力的不同的源设备和宿设备,所以特定的宿设备可以连接到支持双向通信的第一源设备,或者连接到与不支持双向通信的传统设备相对应的第二源设备。这样,在双向通信开始之前,宿设备首先验证所连接的源设备实际上支持双向通信。如果源设备支持双向通信,则源设备发起与源设备的双向通信。否则,将不会发起双向通信。如本文中使用的,在不同时传输双向控制数据的情况下进行的音频数据从信宿到信源的传输可以被称为通过音频回传通道(arc)的通信。另一方面,允许在双向控制数据的同时传输的情况下进行的音频数据从信宿到信源的传输的双向通信通道可以被称为增强音频回传通道(earc)。
图4a示出了根据一个实施例的在源设备上实现的源tx/rx的状态图400a。图4b示出了根据一个实施例的在宿设备上实现的宿tx/rx的状态图400b。源tx/rx和宿tx/rx(为了便于讨论,在下文中称为“信源”和“信宿”)可以对应于在图1所示的源设备102和宿设备104上实现的源双向tx/rx112和宿双向tx/rx114。由于信源经历的状态(状态图400a所示)和信宿经历的状态(状态图400b所示)彼此镜像,因此下面将这两种状态结合起来讨论。在所示的状态图400a和状态图400b中,粗实线指示设备(对于状态图400a,设备是信源;对于状态图400b,设备是信宿)的两个状态之间的转换是由该设备的动作引起的,而细实线指示两种状态之间的转换是由源自外部设备的动作引起的。
如图4a和图4b所示,信源和信宿都可以以初始空闲状态(idle1)开始。当信源和信宿经由接口电缆(例如,hdmi电缆)连接时,信源和/或信宿能够经由热插拔检测(hpd)端口检测该连接。在检测到已经连接了源设备和宿设备(例如,hpd=1)时,信源和信宿将转换到第一发现状态(disc1)。当在源设备与宿设备之间形成连接(例如,通过在这些设备之间连接hdmi电缆)时,宿设备可以通过指定端口(例如,hpd端口)向源设备传输标识信息,从而向源设备通知宿设备的存在以及宿设备的一个或多个能力。在一些实施例中,响应于连接的检测(例如,hpd=1),宿设备通过接口电缆的端口(例如,hdmi电缆的数据显示通道(ddc)端口)向源设备传输edid信息(未示出)。
当处于发现状态时,信源和信宿可以尝试建立earc通信。如果信源支持earc通信,则信源将会周期性向信宿传输逗点(comma)信号(下文将详细讨论)。逗点信号可以以特定节奏传输。例如,信源可以在预定时间段(例如,10ms)内传输逗点信号,随后在传输另一逗点信号之前(在状态disc1下),信源在预定时间段(例如,10ms)内等待应答信号(例如,来自信宿的set_earc_valid信号),在状态图400a中被指示为第二发现状态(disc2)。
在第一发现状态(disc1)期间,信宿等待从信源接收逗点信号。在接收到逗点信号之后,信宿将获悉信源支持earc通信,并且转换到第二发现状态(disc2),在该状态下,信宿向信源传输应答(例如,set_earc_valid信号),以确认接收到该公共信号并且表明已经准备好使用earc进行通信。在一些实施例中,如果宿设备不能够转换到earc双向通信状态(例如,不能够设置它的earc_valid位),则其可以忽略接收到的逗点信号。
响应于接收到set_earc_valid应答信号,信源设置earc_valid位的值,并且转换到双向通信状态(earc状态)。另外,信源可以响应于从信宿接收到set_earc_valid应答信号而向信宿传输确认信号(ack)。这样,信宿也可以转换到双向通信状态(earc)。
另一方面,如果信源无法设置earc_valid位,则它可以向信宿传输否定确认信号(nack)。作为响应,信宿可以返回到第一发现状态(disc1),在该状态下,信宿等待接收另一逗点信号。
在双向通信状态(earc状态)期间,信源和信宿可以同时传输在彼此上叠加的共模控制数据和音频数据(例如,如图3所示)。例如,控制数据可以包括hdcp控制数据、earc能力数据和/或其他类型的控制数据。另外,在信源和信宿处于earc状态的整个持续时间内,在信源与信宿之间传输心跳信号(该信号可以对应于与一系列事务相对应的一个或多个传输分组,下文将关于图5和图6更详细地进行描述)。心跳信号可以包括作为控制数据的一部分、以周期性间隔在信源与信宿之间传输的一系列一个或多个事务(例如,读取事务或写入事务)。例如,心跳可以包括信宿将其当前状态写入信源内的指定地址,并且读取信源的当前状态。在一些实施例中,set_earc_valid信号从信宿到信源的传输对应于形成所建立的earc通信的第一心跳的一部分的写入事务。
如果心跳信号丢失(例如,至少在一个阈值时间量内未检测到),则earc通信可以结束,因此信源和信宿状态可以离开earc状态并且返回发现状态(disc1),以尝试重新建立双向通信。
如果在发现过程中未在一个阈值时间量(例如,100ms)内建立earc,则信源和信宿可以从发现状态转换出来,并且进入空闲状态(idle2),此时,信源和信宿保持连接状态(hpd=1),但是earc通信不是活跃的。
在源设备不支持双向earc通信的实施例中,可以可选地使用传统arc通信。例如,在earc发现失败之后,信宿可以发起arc通信,使得信源和信宿转换到arc状态。arc通信的终止使得信源和信宿转换回空闲状态(idle2)。
在earc发现失败之后(例如,信源和信宿处于idle2状态),在一个预定时间段之后,信源可以通过向信宿传输逗点信号来重新尝试建立earc通信。
如果信宿与信源之间的连接断开(hpd=0),则信宿和信源可以转换回初始空闲状态(idle1)。
示例逗点信号发现
如上所述,可以在验证信源支持earc通信的这样的发现阶段之后建立源设备与宿设备之间的earc通信。在这样的实施例中,信源(例如,图1所示的源双向tx/rx112)可以向信宿(例如,图1所示的宿双向tx/rx114)传输逗点信号,并且等待来自信宿的确认信号。
逗点信号可以包括在预定时间段(例如,10ms)内传输的一系列0和1值(例如,交替的0和1值)。逗点信号可以使用fem方案或类似方案来传输。在传输逗点信号之后,信源可以等待一个预定时间段(例如,10ms)以获取来自信宿的响应(例如,set_earc_valid信号)。如果在预定时间段内未接收到响应,则可以传输另一逗点信号。这样,信源可以以传输逗点信号和等待信宿的应答这样的交替周期继续操作,直到接收到应答并且建立earc通信,或者直到已经过去一个阈值时间段(例如,~100ms),因此earc通信未被建立。
传输有效载荷
如以上参考图4讨论的,在信宿与信源之间传输的控制数据可以用于在宿设备与源设备之间通信状态信息,以及向源设备传输由宿设备接收到的命令以配置源设备的一个或多个设置。控制数据可以以半双工来传输,其中可以从信宿向信源传输控制数据,或者从信源向信宿传输控制数据,但是不能同时传输。
信源与信宿之间的双向通信可以被实现为主-从关系。例如,宿设备可以是主控方,而源设备可以作为从属方。使用earc通信进行的控制数据的所有传输均由主控方发起。如本文中使用的,“主控方”可以用于指代信宿,而“从属方”可以用于指代信源。因为控制数据的传输是双向的,所以在给定传输中,主控方或从属方可以对应于发送设备或接收设备。
主控方向从属方传输控制数据,随后是与在其中从属方可以进行响应的一个预定时间段相对应的一个限定的响应窗口,因此避免了传输数据之间的任何冲突。在一些实施例中,主控方被配置为向从属方周期性地传输发起事务(例如,读取或写入事务)的控制数据,以用作心跳信号,这将在下面更详细地讨论。
控制数据可以以分组的形式被传输,每个分组符合特定格式。图5示出了根据一个实施例的有效载荷分组格式。如图5所示,分组500包括前导码502、同步比特504、有效载荷类型指示符506、有效载荷508、纠错码(ecc)比特510和奇偶校验比特512。分组500的数据可以使用双相标记编码来传输。
前导码502包括预定数目的具有特定值的比特。例如,前导码502可以包括六个比特的序列,六个比特全部指示值“1”。接收设备使用在其中发送设备传输前导码502的时间段,以便准备好接收同步比特504。例如,因为控制数据只能在主控方与从属方之间间歇地传输,所以在没有控制数据正在传输的空闲期间,earc通道可以处于浮置状态。前导码比特可以被用于恢复earc通道的电平,使得接收设备将能够在同步比特504被接收到时读取同步比特504。
同步比特504包括与前导码502不同的、预定数目的具有特定值的比特。例如,同步比特504可以包括四个比特的序列,四个比特全部指示值“0”。同步比特504的传输可以允许发送设备和接收设备彼此同步以准备好分组有效载荷的传输。
因为分组500(包括前导码502和同步比特504)可以使用双相标记编码来传输,所以尽管各自包括多次重复的相同逻辑值,但是前导码502和同步比特504将都包括电信号“0”和“1”两者。例如,图5b示出了根据一些实施例的使用双相标记编码传输的分组500的前导码502和同步比特504的示例。
有效载荷类型指示符506指示包含在分组500的有效载荷508内的数据的类型。有效载荷可以包括命令,或者可以包括数据有效载荷。例如,写入事务可以在多个分组上被传输,包括与发起事务的写入命令相对应的第一分组和包含要被写入的数据的一个或多个附加分组。在一些实施例中,有效载荷类型指示符506可以包括单个比特,其中比特值“1”指示有效载荷包括命令,而比特值“0”指示有效载荷包括数据。
有效载荷508包括与要在发送设备与接收设备之间传输的命令或数据相对应的预定数目的比特的序列。例如,有效载荷可以指示写入命令、读取命令、与写入或读取命令相关联的数据等。在一些实施例中,每个分组500的有效载荷508包括1个字节(8位)。
ecc比特510包括用于对有效载荷508进行保护和/或纠错的预定数目的比特。在一些实施例中,ecc比特510被配置为覆盖有效载荷类型指示符506、有效载荷508以及ecc比特510本身。在一些实施例中,ecc比特510包括用于每个分组500的四个比特。
奇偶校验比特512包括从有效载荷508和ecc比特510计算出的单个奇偶校验比特。在一些实施例中,奇偶校验比特512还用于将传输的信号返回到电值“0”。例如,在双相标记编码下,“1”值被编码具有中点转换、使得在比特的开头和结尾处的信号电平相同,而对“0”值用中点转换进行编码、使得比特的开头和结尾处的信号电平不同。奇偶校验比特512可以确保分组500内的偶数个“0”值,使得在分组的开始处的电信号电平将与在分组的结尾处的电信号电平相同(例如,电值“0”)。在一些实施例中,分组500还可以包含一个或多个保留比特(未示出)。
如上所述,控制数据可以在信宿(主控方)与信源(从属方)之间双向传输。图6示出了根据一些实施例的在主设备与从设备之间的一系列传输分组。为了避免冲突,使用半双工方案来传输控制数据。如图6所示,主设备向从设备传输第一分组602。该分组可以包括命令、或与先前传输的命令相关联的数据。
在第一分组602的传输之后,通道可以进入空闲状态,在该空闲状态期间,可以从从设备接收响应分组604。响应分组604将在从第一分组602的传输之后的空闲状态的开始起的一个预定时间段(例如,100ms)内(称为“响应窗口”)被接收。响应分组604可以在响应窗口内开始传输。例如,如图6所示,响应分组604的最后一位(例如,奇偶校验比特)可以在响应窗口已经结束之后被传输。在一些实施例中,如果主设备在响应窗口的结尾之前尚未开始接收响应分组604,则主设备可以重新传输第一分组602,从而开始新的响应窗口,在该新的响应窗口期间,从设备可以传输响应。
在主设备接收到响应分组604之后,该通道可以再次进入空闲状态,直到主设备向从设备传输第二分组606。第二分组606可以在响应分组604的传输之后的任何时间被传输,并且不限于在特定时间段内传输。
这样,如图6所示,从从属方到主控方的分组传输被限制在从主控方到从属方的分组传输之后的响应窗口,而从主控方到从属方的分组通常可以在任何时间发生(响应窗口除外)。
如图6所示,在一些实施例中,响应窗口的开始与分组602的结尾由一个驱动停止时间段(t_cm_drive_stop)和一个周转时间段(t_cm_turnover)分离。驱动停止时间段指示前一分组的发送方(例如,主设备)将要停止驱动电“0”的时间段。如以上关于图5a讨论的,由于每个传输分组中的奇偶校验比特,每个传输分组以电“0”结束。周转时间段指示在其之后分组602的接收方(例如,从设备)可以开始驱动其响应分组604的时间段。因此,从设备进行响应的响应窗口在该周转时间段之后开始。
由于控制数据是双向传输的(例如,通过hdmi电缆的热插拔和util线),因此可以从宿设备(例如,主设备)向源设备(例如,从设备)异步传输音频数据(例如,earc音频数据)。因为音频数据是差分地传输的并且与控制数据的值无关,所以控制数据的传输能够切换方向(例如,从主控方到从属方,以及从从属方到主控方),而不影响音频数据的传输。
示例控制数据命令
从主设备向从设备传输的控制数据的每个分组可以促使从从设备到主设备的响应分组。这样的布置是有利的,尤其是因为使得每个设备都能够周期性确认成功地接收到向另一设备传输的分组。控制数据的分组可以包括命令,或者可以包含与先前传输的命令相关联的数据。
下面的表1示出了可以在主设备与从设备之间传输的示例命令。在一些实施例中,某些类型的命令仅由主控方向从属方传输,而其他类型的命令则从从属方向主控方传输。
表1
与命令和数据相对应的分组的组可以被分组为事务。如本文中使用的,事务是读取事务或写入事务。例如,主设备可以发起与从设备的写入事务,指令从设备向一个或多个寄存器写入数据(例如,以设置从设备的状态,向从设备发出一个或多个命令,等等),或者发起指令从设备从一个或多个寄存器读取数据的读取事务。
主控方可以通过向从属方传输<earc_read>分组来发起读取事务,主控方在应答确认接收中接收针对前述分组的<ack>分组。主控方随后传输<deviceid>分组(包含主设备的标识的数据分组)和<offset>分组(指示要从中读取数据的从设备的地址),并且响应于每个传输分组而接收<ack>分组。从设备随后开始传输从与<offset>分组相对应的地址读取的数据,一次传输一个数据分组(例如,<data0>、<data1>、……、<datan>),随后主控方在接收到每个数据分组之后传输<cont>分组,以向从设备确认已经成功接收到数据。在接收到最后的数据分组(<datan>)之后,主设备传输<stop>分组,以指示事务的终止,从设备可以使用<ack>分组对此进行确认。
主控方可以通过以下来发起写入事务:向从属方传输<earc_write>分组,然后是指示要向其写入数据的地址的<deviceid>和<offset>分组。然后,主控方传输一个或多个数据分组(例如,<data0>、<data1>、……、<datan>),并且在传输最后的数据分组之后,传输<stop>分组。从设备通过传输<ack>分组来确认接收到每个分组。
在一些实施例中,如果主控方传输从属方不支持的<deviceid>分组,则从属方可以向主控方传输<nack>分组,这可以提示主控方传输<stop>分组以终止该事务。
在一些实施例中,因为从设备可以仅在指定的响应窗口期间向主设备传输分组,所以从设备可能不会总是准备好在指定的响应窗口期间接收或发送数据。如果从设备尚未准备好发送/接收数据,则从设备可以改为向主控方传输<nack>分组,以便推迟数据的传输。例如,在读取事务期间,如果从设备尚未准备好向主控方传输下一数据分组,则从设备可以传输<nack>。主控方可以通过<cont>分组进行应答,从而开始新的响应窗口,在此期间,从属方可以传输下一数据分组或另一<nack>。
类似地,在写入事务期间,如果从属方未准备好接收从主控方传输的数据分组,则从属方可以向主控方传输<nack>,以促使主控方重新发送数据分组,从而开始新的响应窗口。然后,如果从属方能够接收数据,则从属方可以传输<ack>(由此主控方可以继续后续数据的传输),或者如果从属方仍然不能接收数据,则从属方可以传输另一<nack>(以提示主控方继续重新发送数据分组)。
在一些实施例中,不被支持的或以奇偶校验错误(例如,由奇偶校验比特512指示)被接收到的任何所传输的命令可以被接收设备丢弃而无需确认。然后,主设备可以尝试重新发送分组。例如,如果从设备丢弃从主设备接收的分组,则主设备在未检测到来自从设备的响应之后尝试重新发送分组。如果主设备丢弃从从设备接收的分组,则主设备可以向从设备重新发送先前的分组。
心跳和虚拟信号
如以上参考图4讨论的,为了维持源设备与宿设备之间的双向通信,可以在源设备与宿设备之间传输心跳信号。心跳信号可以包括由宿设备(例如,主设备)向源设备(例如,从设备)以规则间隔发出的读取事务和写入事务。例如,在一些实施例中,宿设备可以以大约每100ms的间隔发起读取事务和写入事务(统称为“心跳事务”)。
心跳事务的成功完成指示双向通信链路仍在运行中。另外,心跳事务可以用于传输指示通信链路的当前状态的数据。例如,心跳事务的读取事务可以被定向到与源状态寄存器相对应的源设备的特定地址。类似地,写入事务可以指示信源将与信宿状态相对应的数据写入信源的状态寄存器。这样,心跳事务的成功完成允许源设备和宿设备都接收另一设备的当前状态。在一段时间(例如,两个间隔)内无法完成心跳事务(读取事务或写入事务)可以指示心跳丢失,断开通信链接并且引起源设备和宿设备转换到空闲或发现状态。在一些实施例中,心跳事务是与通过双向通信链路传输的其他控制数据事务相分离的显式信号。在一些实施例中,通过双向通信链路在源设备与宿设备之间的任何成功完成的事务可以用作双向通信链路的操作状态的心跳事务指示。
下面的表2示出了根据一些实施例的存储在宿设备和源设备的状态寄存器中的数据的示例。状态寄存器的读取和写入可以用来代替通信通道的一个或多个端口的功能。例如,由于hdmi电缆中的hpd端口用于earc通信,因此可以使用状态寄存器来维护hpd端口的值,而不是进行物理切换。这样,源设备和宿设备的状态寄存器可以被称为“虚拟信号”。
表2
如以上表2所示,hdmi电缆的物理hpd端口可以被替换为与虚拟hpd信号相对应的寄存器,其中hpd端口的值可以通过传输与虚拟hpd寄存器相对应的读取事务和写入事务来表达。
例如,与源设备的状态寄存器的位0相对应的vid-hpd(也称为虚拟hpd)可以用作通过hdmi电缆上的物理hpd端口从宿设备向源设备传输的数据的虚拟替换。另一方面,在earc的实现期间,与宿设备的状态寄存器的位0相对应的earc_hpd在相反的方向上可以用作物理hpd的功能等效项。
在一些实施例中,将虚拟信号用于hpd可以避免在双向通信期间物理hpd的切换。在某些情况下,如果宿设备的edid已经改变(例如,由于所连接的avr被打开),则物理hpd可以被切换,宿设备可以经由hpd切换来向源设备发信号通知这一改变。在其他情况下,如果宿设备是传统设备,并且在解码接收数据时检测到超过阈值错误数目,则宿设备可以切换hpd,以便强制源设备重新开始认证。然而,通过将hdmi电缆的物理hpd的功能替换为虚拟信号,可以防止切换可能中断双向通信的hpd。
示例流程
图7是根据一个实施例的用于在源设备与宿设备之间建立earc双向通信通道的过程的流程图。源设备和宿设备通过第一物理通道和第二物理通道连接。例如,源设备和宿设备可以通过hdmi电缆连接。第一物理通道对应于hdmi电缆的tmds导线对,而第二物理通道对应于hdmi电缆的hpd和util通道的导线。
宿设备与源设备建立702连接,该连接至少包括第一物理通道和与第一物理通道分离的第二物理通道。在一些实施例中,第一物理通道可以用于从源设备向宿设备单向传输视频数据。在一些实施例中,该连接可以使用hdmi电缆来形成。
当源设备和宿设备连接(例如,使用hdmi电缆连接)时,宿设备通过第二物理通道向源设备发信号通知704该连接。例如,宿设备可以检测通过hdmi电缆的hpd端口的连接,并且向源设备传输指示宿设备的状态和/或标识符的信号。
在通过第二物理通道在源设备与宿设备之间建立连接之后,宿设备可以等待706从源设备接收应答信号。应答信号可以包括由源设备周期性传输的逗点信号。源设备仅在支持earc双向通信时才传输逗点信号。因为并非所有源设备(例如,传统源设备)都可以支持earc双向通信,所以逗点信号的传输向宿设备指示其所连接到的源设备支持earc双向通信。
如果在预定时间段内未接收到706应答信号,则宿设备可以进入空闲状态。在一些实施例中,宿设备可以尝试发起与源设备的传统音频回传通信。
如果宿设备接收到应答信号(例如,逗点信号),则宿设备传输708指示earc双向通信应当被建立的确认信号(例如,set_earc_valid信号)。然后,宿设备转换710到earc双向通信状态。
一旦建立了earc双向通信,则源设备和宿设备可以以第一速度通过第二物理通道传输712双向控制数据。控制数据可以包括在源设备与宿设备之间交换的状态信息。在一些实施例中,控制数据可以包括由宿设备接收的改变源设备的一个或多个设置的命令。例如,宿设备可以从外部源(例如,遥控器)接收命令,该外部源使用earc双向通信、经由第二物理通道将这样的命令传输到源设备。
在一些实施例中,宿设备用作主控方,该主控方发起与用作从属方的源设备的所有事务。例如,宿设备可以通过发起写入事务来向源设备传输数据,并且可以通过发起读取事务来从源设备接收数据。宿设备和源设备以半双工模式通信,其中在宿设备(主控方)向源设备(从属方)传输分组之后,源设备具有用于发起应答分组的传输的预定的响应窗口。
使用包括差分信号线(例如,hpd线和util线)的共模信号来传输控制数据。在一些实施例中,所传输的控制数据的比特值使用双相标记编码来传输。
另外,宿设备可以通过第二物理通道传输714单向音频数据。该音频数据可以包括由宿设备接收以由源设备回放的音频回传数据。使用差分信号来(例如,在hdmi电缆的hpd线与util线之间)传输该音频数据,并且以高于第一速率的第二速率传输。这样,音频数据可以被叠加在所传输的控制数据上。因为音频数据使用差分信号被传输并且控制数据使用共模被传输,所以音频数据和控制数据可以彼此独立地传输。在一些实施例中,使用fem编码来传输音频数据。
图8是根据一些实施例的用于使用earc双向通信来处理事务的过程的流程图。在一些实施例中,仅主设备(例如,宿设备)能够发起事务。主设备802将事务划分为多个分组。例如,写入事务可以包括指示写入事务的开始的初始分组(例如,<earc_write>)、设备id分组、地址/偏移分组、与要写入的数据相对应的一个或多个分组、以及事务结束分组(例如,<stop>)。类似地,读取事务可以包括指示读取事务的开始的初始分组(例如,<earc_read>)、设备id分组、地址/偏移分组、基于要读取的数据的一个或多个分组、以及事务结束分组。
主设备通过双向通信通道向从设备发送804事务的分组。例如,主设备可以通过发送指示事务类型的初始分组(例如,<earc_read>或<earc_write>)来发起事务。在写入事务期间,所传输的分组可以包括要由从设备写入的数据的分组。另一方面,在读取事务期间,所传输的分组可以包括指示主设备准备好接收附加数据的分组(例如,<cont>分组)。
主设备在阈值时间段内从从设备接收806响应分组。从设备被要求在指定的响应窗口内对来自主控方的传输分组进行响应。在一些实施例中,如果在响应窗口内未接收到响应分组,则主设备可以尝试向从设备重新发送传输分组。
在一些实施例中,响应分组可以包括确认分组(例如,<ack>),该确认分组确认从设备已经成功地从主设备接收到传输分组。在事务是读取事务的实施例中,响应分组可以包括与读取数据的一部分相对应的数据分组。在一些实施例中,如果由主控方传输的分组未被识别或不被支持(例如,不支持的设备id、无效偏移等),则从属方可以返回提示主控方终止事务的<nack>分组。
在一些实施例中,从设备可以推迟事务。例如,在特定的响应窗口期间,从设备可能不会被读取以发送读取数据或接收写入数据。在这些情况下,从属方可以传输<nack>分组以推迟从主控方接收写入数据或推迟向主控方发送读取数据。
主控方确定808所接收的响应分组是否推迟了事务(例如,<nack>分组推迟了读取数据的传输或写入数据的接收)。如果是这样,则主控方可以重新发送812传输分组。在一些实施例中,在特定时间段之后,分组被重新发送。如果事务是读取事务,则主控方可以重新发送<cont>分组,以指示主设备已经准备好继续接收数据。另一方面,如果事务是写入事务,则主设备可以重新发送先前传输的、要由从设备写入的数据分组。
另一方面,如果接收分组没有推迟事务,则主控方确定810传输分组是否是事务的最后分组。如果是,则事务结束。另一方面,如果传输分组不是事务的最后分组,则主设备传输804事务的下一分组。该过程可以继续,直到事务结束。
已经出于解释说明的目的给出了对实施例的前述描述;它并不旨在穷举或将专利权限制为所公开的精确形式。相关领域的技术人员可以理解,根据以上公开,很多修改和变化是可能的。
说明书中使用的语言主要是为了可读性和指导性目的而选择的,并且可能没有被选择用来界定或限制本发明的主题。因此,意图在于,专利权的范围不受具体实施方式部分的限制,而是受基于此的申请所发布的任何权利要求的限制。因此,实施例的公开意在说明性,而不是限制专利权的范围,专利权的范围是在所附权利要求中阐述的。