掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及数据存储技术领域,尤其涉及一种HDMI控制器UPI存储电路和UPI数据存储方法。

背景技术

HDMI(High Definition Multimedia Interface,高清晰度多媒体接口)控制器用于对接收到的音视频数据进行解码和处理,并控制解码后的音视频数据输出至相应显示设备。音视频数据集成于UPI(Universal Packet Interface,通用包接口)数据中,通过对HDMI控制发出的UPI数据进行解析,可判断音视频数据是否满足要求。

目前,一般通过寄存器方式来读取UPI数据以获取音视频数据的,然而,寄存器方式读取的UPI数据不完整,进而影响对UPI数据解析的准确度。

发明内容

本申请提供一种HDMI控制器UPI存储电路和UPI数据存储方法,用以解决现有技术中通过寄存器方式读取UPI数据不完整的缺陷,实现对UPI数据的完整存储,提高对UPI数据解析的准确度。

本申请至少一实施例提供一种HDMI控制器UPI存储电路,包括:存储逻辑控制电路和公共存储模块,所述存储逻辑控制电路连接HDMI控制器和所述公共存储模块,其中:

所述HDMI控制器用于基于时钟脉冲,连续向所述存储逻辑控制电路发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送;

所述存储逻辑控制电路用于基于所述HDMI控制器的发送时序,依次接收所述HDMI控制器在不同时钟脉冲发送的UPI数据;基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至所述公共存储模块中。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述存储逻辑控制电路包括:依次串联连接的组包模块、缓存模块和控制模块,其中:

所述组包模块用于获取所述HDMI控制器发送的错误信号,并根据所述错误信号对接收的所述HDMI控制器在不同所述时钟脉冲发送的所述UPI数据进行过滤,得到多个所述UPI有效数据,并将多个所述UPI有效数据发送至所述缓存模块进行缓存;

所述缓存模块用于将缓存的多个所述UPI有效数据发送至控制模块;

所述控制模块用于获取所述HDMI控制器发送的控制信号,并根据所述控制信号匹配UPI帧数据的分区偏移地址,并基于所述分区偏移地址将第一预设数量的所述UPI帧数据存储至所述公共存储模块中,每帧所述UPI帧数据中包括至少两个UPI有效数据。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述控制模块包括分区模块、并转串模块和偏移地址确定模块,所述分区模块分别连接所述并转串模块和所述偏移地址确定模块,所述偏移地址确定模块连接所述并转串模块,其中:

所述分区模块用于根据所述控制信号确定所述分区模块对应的信号状态,根据所述信号状态对所述UPI帧数据进行分区,得到所述UPI帧数据对应的分区信息;

所述并转串模块用于将所述UPI帧数据中的各所述UPI有效数据进行分割,得到至少两个连续的UPI子数据以及所述UPI有效数据对应的串行数据流,所述串行数据流中包括至少两个连续的UPI子数据对应的子数据流;将所述串行数据流向接口转换模块和所述偏移地址确定模块发送;

所述偏移地址确定模块用于基于所述分区信息和所述串行数据流,确定所述UPI帧数据对应的分区偏移地址。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述偏移地址确定模块包括初始地址选择模块和地址累加模块,所述初始地址选择模块连接所述分区模块和所述地址累加模块,所述地址累加模块连接所述并转串模块,其中:

所述初始地址选择模块用于基于所述分区信息确定所述UPI帧数据对应的分区初始偏移地址;

所述地址累加模块用于基于所述分区初始偏移地址和所述串行数据流中各所述子数据流的数据量,确定所述UPI帧数据中各所述串行数据流对应的分区偏移地址。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述存储逻辑控制电路还包括:接口转换模块,所述接口转换模块通过数据总线与所述公共存储模块连接。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,在所述数据总线不支持单侧复位的情况下,所述存储逻辑控制电路还包括:单侧复位模块,所述单侧复位模块分别连接所述组包模块、所述缓存模块和所述控制模块,并通过控制总线连接处理器;

在需要进行复位且处理器关闭所述HDMI控制器对UPI数据的输出功能的情况下,所述单侧复位模块用于在检测到所述缓存模块对应的空信号在预设时长内均有效,且通过所述控制模块检测到所述接口转换模块的写使能信号为低电平信号的情况下,设置复位信号以关闭所述缓存模块的写入功能。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述存储逻辑控制电路还包括中断模块,所述中断模块连接所述控制模块,并通过控制总线连接处理器;

所述中断模块用于在所述处理器发送的第二使能信号开启所述中断模块的情况下,分别确定中断信号和中断数据,并将所述中断信号和所述中断数据发送至所述处理器,所述中断信号用于开启中断,并指示所述处理器读取UPI帧数据,所述中断数据包括各分区写入的UPI有效数据对应的byte数、当前帧数和所述分区信息中的分区编号。

根据本申请至少一实施例提供的HDMI控制器UPI存储电路,所述存储逻辑控制电路还包括计数模块,所述计数模块分别连接所述HDMI控制器、所述组包模块、所述缓存模块和所述接口转换模块,所述计数模块还通过控制总线连接处理器,其中:

所述计数模块用于分别对所述HDMI控制器发送的UPI数据的发送数量、所述组包模块确定的UPI有效数据的确定数量、所述缓存模块对UPI有效数据的缓存数量和所述公共存储模块中UPI有效数据的存储数量进行计数,并将计数结果通过所述控制总线发送至处理器。

本申请至少一实施例还提供一种UPI数据存储方法,包括:

基于时钟脉冲,连续向存储逻辑控制电路发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送;

基于HDMI控制器的发送时序,依次接收所述HDMI控制器在不同时钟脉冲发送的UPI数据;

基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块中。

根据本申请至少一实施例提供的UPI数据存储方法,所述基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块中,包括:

获取所述HDMI控制器发送的错误信号,并根据所述错误信号对所述UPI数据进行过滤,得到多个所述UPI有效数据;

获取所述HDMI控制器发送的控制信号,根据所述控制信号对UPI帧数据进行分区,确定所述UPI帧数据对应的分区偏移地址,并基于所述分区偏移地址将第一预设数量的所述UPI帧数据存储至所述公共存储模块中,每帧所述UPI帧数据中包括至少两个UPI有效数据。

本申请提供的HDMI控制器UPI存储电路和UPI数据存储方法,通过HDMI控制器向存储逻辑控制电路连续发送UPI数据,存储逻辑控制电路基于HDMI控制器的发送时序依次接收UPI数据,确保存储逻辑控制电路对应的UPI数据的接收数量与HDMI控制器对应的发送数量相同,并从接收的UPI数据中确定UPI有效数据,并依次将UPI有效数据存储至公共存储模块中,确保公共存储模块中UPI有效数据的存储数量与存储逻辑控制电路中UPI有效数据的确定数量相同,基于存储逻辑控制电路的接收时序与HDMI控制器的发送时序相同,确保UPI数据在存储过程中的完整性。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之一;

图2是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之二;

图3是本申请至少一实施例提供的控制模块的结构示意图;

图4是本申请至少一实施例提供的分区模块的状态跳转示意图;

图5是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之三;

图6是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之四;

图7是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之五;

图8是本申请至少一实施例提供的中断模块的结构示意图;

图9是本申请至少一实施例提供的功能中断信号和功能中断数据的时序约束示意图;

图10是本申请至少一实施例提供的UPI数据存储方法的流程示意图。

附图标记:

100:HDMI控制器UPI存储电路;110:HDMI控制器;200:存储逻辑控制电路;210:组包模块;220:缓存模块;230:控制模块;231:分区模块;232:并转串模块;233:偏移地址确定模块;2331:初始地址选择模块;2332:地址累加模块;240:接口转换模块;250:数据总线;260:单侧复位模块;270:中断模块;271:功能中断模块;272:错误中断模块;280:计数模块;290:控制总线;300:公共存储模块;400:处理器。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

针对现有技术中通过寄存器方式获取UPI数据不完整的问题,本申请至少一实施例提供一种HDMI控制器UPI存储电路,图1是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之一,如图1所示,该HDMI控制器UPI存储电路100包括:存储逻辑控制电路200和公共存储模块300,所述存储逻辑控制电路200连接HDMI控制器110和所述公共存储模块300,其中:

所述HDMI控制器110用于基于时钟脉冲,连续向所述存储逻辑控制电路200发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送;

所述存储逻辑控制电路200用于基于所述HDMI控制器110的发送时序,依次接收所述HDMI控制器110在不同时钟脉冲发送的UPI数据;基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至所述公共存储模块300中。

具体的,HDMI(High Definition Multimedia Interface,高清晰度多媒体接口)控制器不断获取UPI(Universal Packet Interface,通用包接口)数据,并基于时钟脉冲,HDMI控制器110连续向存储逻辑控制电路200发送UPI数据,且每次发送一个UPI数据,存储逻辑控制电路200用于根据HDMI控制器110的发送时序进行依次接收,即,HDMI控制器110每发送一个UPI数据,则存储逻辑控制电路200接收一个UPI数据,即确保存储逻辑控制电路200对应的UPI数据的接收数量与HDMI控制器110对应的发送数量相同,避免UPI数据发送过程中存在丢包等现象,从数据发送角度确保UPI数据的完整性。HDMI控制器110发送的UPI数据或者存储逻辑控制电路200接收的UPI数据可能为有效数据,还可能为无效数据,因此,存储逻辑控制电路200在接收到UPI数据后,对UPI数据进行过滤,确定UPI有效数据,并将UPI有效数据依次存储至公共存储模块300中,确保公共存储模块300中UPI有效数据的存储数量与存储逻辑控制电路200中UPI有效数据的确定数量相同,确保UPI有效数据的转发、存储过程中不存在丢包,从存储角度确保UPI有效数据的完整性,确保后续对UPI数据解析的准确度。同时,从UPI数据中确定UPI有效数据,可一定程度上节省公共存储模块300的存储空间。

需要说明的是,上述UPI数据可以理解为:每帧视频数据均以行为单位,该帧视频数据存在hblack区间和hactive区间,hactive区间中存在有效图像数据,UPI数据为hblack区间中的数据,即UPI数据在hblack区间内有效。UPI数据可以携带音视频数据的时钟、采样、各种格式、报文等。

可选地,上述公共存储模块300可以为双数据速率(Double Data Rate,DDR)静态随机存取存储器(Static Random Access Memory,SRAM)等各种能够存储的静态随机存储器(Static Random Access Memory,SRAM)。DDR SRAM既具有SRAM的快速访问速度和低延迟特性,又具备更高的数据传输带宽。

可选地,图2是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之二,如图2所示,所述存储逻辑控制电路200包括:依次串联连接的组包模块210、缓存模块220和控制模块230,其中:

所述组包模块210用于获取所述HDMI控制器110发送的错误信号,并根据所述错误信号对接收的所述HDMI控制器110在不同所述时钟脉冲发送的所述UPI数据进行过滤,得到多个所述UPI有效数据,并将多个所述UPI有效数据发送至所述缓存模块220进行缓存;

所述缓存模块220用于将缓存的多个所述UPI有效数据发送至控制模块230;

所述控制模块230用于获取所述HDMI控制器110发送的控制信号,并根据所述控制信号匹配UPI帧数据的分区偏移地址,并基于所述分区偏移地址将第一预设数量的所述UPI帧数据存储至所述公共存储模块300中,每帧所述UPI帧数据中包括至少两个UPI有效数据。

具体的,HDMI控制器110发送的UPI数据可以由多个子包和包头组成,组包模块210在接收到HDMI控制器110发送的UPI数据后,将该UPI数据中的多个子包和包头进行拼接,得到UPI拼接数据,一个UPI拼接数据的数据量可以为256bit,本申请至少一实施例对此不做限制。同时,HDMI控制器110会将错误信号、控制信号和UPI数据并行发送,组包模块210可根据错误信号过滤掉错误的UPI拼接数据,得到UPI有效数据。由于HDMI控制器110与数据总线250不是在一个时钟域内,因此,组包模块210获取所有UPI有效数据后,将所有UPI有效数据发送至缓存模块220进行缓存。缓存模块220可以将UPI有效数据发送至控制模块230,由控制模块230控制该UPI有效数据进行对应存储。上述缓存模块220可以是FIFO(First InputFirst Output,先进先出)存储器,也可以是双端口SRAM等具有多比特跨时钟处理的存储器。

此外,由于现有技术中,通过寄存器方式读取UPI数据时具有时效性,很容易被下一行给覆盖掉,要求CPU(Central Processing Unit,中央处理器)处理的时效性很高,增大了CPU处理的压力。同时,公共存储模块300的存储空间有限,无法一直写入数据,因此,本申请至少一实施例中,在控制模块230控制UPI有效数据进行存储时,是以帧为单位进行存储,即一帧UPI帧数据中包括多个UPI有效数据,每个UPI有效数据可以为256bit。并对存入公共存储模块的帧数进行限制,公共存储模块300每次最多存储第一预设数量帧的UPI帧数据,CPU可以每隔第一预设数量帧(或少于第一预设数量帧)读取一次,并清空公共存储模块300中读取的第一预设数量帧的UPI帧数据,不需要CPU频繁去读,降低了CPU的处理压力。上述第一预设数量可以为8,即,公共存储模块300最多存储8帧UPI帧数据,处理器400可以每隔8帧(或少于8帧)读取一次,并清空公共存储模块300中读取的8帧UPI帧数据,便于后续UPI帧数据的存储。为了确定当前存入的是第几帧UPI帧数据,确保数据清除的准确度,需要对UPI帧数据进行明确的分区操作。即,控制模块230根据HDMI控制器110发送的控制信号,匹配UPI帧数据对应的分区偏移地址,并将该UPI帧数据存储至公共存储模块300中分区偏移地址对应的位置。

需要说明的是,缓存模块220非空即可向控制模块230发送UPI帧数据。

可选地,图3是本申请至少一实施例提供的控制模块230的结构示意图,如图3所示,所述控制模块230包括分区模块231、并转串模块232和偏移地址确定模块233,所述分区模块231分别连接所述并转串模块232和所述偏移地址确定模块233,所述偏移地址确定模块233连接所述并转串模块232,其中:

所述分区模块231用于根据所述控制信号确定所述分区模块231对应的信号状态,根据所述信号状态对所述UPI帧数据进行分区,得到所述UPI帧数据对应的分区信息;

所述并转串模块232用于将所述UPI帧数据中的各所述UPI有效数据进行分割,得到至少两个连续的UPI子数据以及所述UPI有效数据对应的串行数据流,所述串行数据流中包括至少两个连续的UPI子数据对应的子数据流;将所述串行数据流向接口转换模块240和所述偏移地址确定模块233发送;

所述偏移地址确定模块233用于基于所述分区信息和所述串行数据流,确定所述UPI帧数据对应的分区偏移地址。

具体的,上述控制信号包括视频数据的数据使能信号(Data Enable,den)、UPI帧数据对应的数据接收信号(Packet Receive,pkt_rcv)和垂直同步信号(Vertical Sync,vsync),其中,den信号用于指示有效的数据传输周期。pkt_rcv信号用于指示数据包的接收。当pkt_rcv信号为高电平时,表示接收到一个完整的数据包,可以进行进一步的处理和解析。vsync信号通常由HDMI控制器生成,以确保显示设备按照正确的帧率同步进行显示。图4是本申请至少一实施例提供的分区模块231的状态跳转示意图,如图4所示,分区模块231可以为一个状态机,分区模块231存在四个信号状态,且分别为IDLE_STATE状态、VSYNC_STATE状态、DEN_STATE状态和PKT_STATE状态。在发送第一帧UPI帧数据之前,分区模块231处于IDLE_STATE状态。若分区模块231检测到vsync信号拉高后,即vsync信号为高电平信号后,分区模块231由IDLE_STATE状态跳转至VSYNC_STATE状态,表明正常发送一帧UPI帧数据,否则该分区模块231保持IDLE_STATE状态。若分区模块231继续检测到den信号被拉高后,即den信号为高电平信号后,分区模块231由VSYNC_STATE状态跳转至DEN_STATE状态,否则保持VSYNC_STATE状态。若分区模块231继续检测到pkt_rcv信号被拉高后,即pkt_rcv信号为高电平信号后,分区模块231由DEN_STATE状态跳转至PKT_STATE状态,否则保持DEN_STATE状态。在分区模块231依次经过VSYNC_STATE状态、DEN_STATE状态和PKT_STATE状态,表明一帧UPI帧数据发送结束。

然而,由于UPI数据在每行视频数据的hblack区间内有效,因此,设置一帧UPI帧数据为一个分区。在数据使能信号无效时,发送UPI帧数据,即,在控制信号中的数据使能信号有效前,将上一帧UPI帧数据发送完。因此,需要检测den信号是否有效。然而,若处理器400突然关闭UPI数据的使能,导致HDMI控制器110不发送UPI数据,会导致当前UPI帧数据不完整,且不完整的当前UPI帧数据会一直保持到下次UPI数据发送为止。因此,需要继续锁存pkt_rcv信号的上升沿,以确保下一帧UPI帧数据发送时可以经历完整的VSYNC_STATE状态、DEN_STATE状态和PKT_STATE状态,并在VSYNC_STATE状态跳转至DEN_STATE状态时进行分区,得到该帧UPI帧数据对应的分区信息,该分区信息可以包括:分区标识area_mark和分区编号area_num,即分区标识area_mark有效时分区编号area_num加1,通过分区编号area_num可确定该帧UPI帧数据对应的分区。如图3所示,fifo_out数据表示要发送的UPI帧数据,fifo_pop_req信号为该帧UPI帧数据的使能信号,用于表示该帧UPI帧数据有效,在确定分区信息后,分区模块231将该分区信息发送至中断模块270,即每发送一帧UPI帧数据,则进行一次中断操作,以便于提醒处理器400或CPU获取数据。此外,分区模块231还将确定的分区编号发送至偏移地址确定模块233,以根据该分区编号确定该分区对应的分区偏移地址,便于将该帧UPI帧数据存储至公共存储模块300中分区偏移地址对应的存储空间内。

此外,分区模块231将获取的UPI帧数据中的各UPI有效数据发送至并转串模块232中,并转串模块232可以将各256bit的UPI有效数据分割成第二预设数量对应的较小的UPI子数据,针对每个UPI有效数据来说,分割后的多个UPI子数据为连续的子数据,每个UPI子数据生成对应的子数据流,则多个连续的子数据流可生成一个串行数据流,即每个UPI有效数据对应一个串行数据流。以第二预设数量为8为例,并转串模块232可以将各256bit的UPI有效数据分割成8个32bit的连续的较小的UPI子数据,进而生成由8个连续的32bit的子数据流构成的串行数据流,并将该串行数据流发送至接口转换模块240和偏移地址确定模块233,将该串行数据流发送至偏移地址确定模块233,可以根据该串行数据流和分区编号,确定该分区对应的分区偏移地址,便于存储的准确度。

可选地,如图3所示,所述偏移地址确定模块233包括初始地址选择模块2331和地址累加模块2332,所述初始地址选择模块2331连接所述分区模块231和所述地址累加模块2332,所述地址累加模块2332连接所述并转串模块232,其中:

所述初始地址选择模块2331用于基于所述分区信息确定所述UPI帧数据对应的分区初始偏移地址;

所述地址累加模块2332用于基于所述分区初始偏移地址和所述串行数据流中各所述子数据流的数据量,确定所述UPI帧数据中各所述串行数据流对应的分区偏移地址。

具体的,以第一预设数量为8为例,由于一帧对应一个分区,处理器400可在初始地址选择模块2331中预先配置8个分区各自对应的分区初始偏移地址start_addr_0-start_addr_7。在分区模块231确定该帧UPI帧数据对应的分区编号后,初始地址选择模块2331可根据该分区编号确定该帧UPI帧数据对应的分区初始偏移地址,若分区编号为3,可将start_addr_2确定为该帧UPI帧数据对应的分区初始偏移地址。初始地址选择模块2331将该分区初始偏移地址发送至地址累加模块2332,地址累加模块2332基于并转串模块232向接口转换模块240发送串行数据流的数据量,在该分区初始偏移地址的基础上,每发送一个32bit的子数据流,则在该分区初始偏移地址的基础上加32bit。由于地址累加模块2332是以byte为单位进行计数,因此,基于1byte=8bit,在该分区初始偏移地址的基础上,每发送一个32bit的子数据流,则在该分区初始偏移地址的基础上加4byte,确保各子数据流存储的准确度。

可选地,图5是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之三,如图5所示,所述存储逻辑控制电路200还包括:接口转换模块240,所述接口转换模块240通过数据总线250与所述公共存储模块300连接。

具体的,接口转换模块240在接收到控制模块230中并转串模块232发送的串行数据流后,接口转换模块240可将接口转换为AXI(Advanced eXtensible Interface,高级可扩展接口),并通过数据总线250将该UPI帧数据对应的多个串行数据流存储至公共存储模块300中,AXI可提供高带宽、低延迟的数据传输,并支持多通道、乱序传输和高度并行的数据交换。此外,上述转换后的接口除AXI以外,还可以为APB(Advanced Peripheral Bus)接口或其他数据接口,本申请至少一实施例对此不做限制。

可选地,图6是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之四,如图6所示,在所述数据总线250不支持单侧复位的情况下,所述存储逻辑控制电路200还包括:单侧复位模块260,所述单侧复位模块260分别连接所述组包模块210、所述缓存模块220和所述控制模块230,并通过控制总线290连接处理器400;

在需要进行复位且处理器400关闭所述HDMI控制器110对UPI数据的输出功能的情况下,所述单侧复位模块260用于在检测到所述缓存模块220对应的空信号在预设时长内均有效,且通过所述控制模块230检测到所述接口转换模块240的写使能信号为低电平信号的情况下,设置复位信号以关闭所述缓存模块220的写入功能。

具体的,由于UPI存储电路可能会出现错误,比如缓存模块220爆满等,需要对缓存模块220进行复位清空。为了防止复位时数据总线250挂死,必须等数据总线250上没有UPI帧数据传输时才可以复位。因此,在数据总线250不支持单侧复位的情况下增加单侧复位模块260,以控制缓存模块220的写入功能。正常情况下,缓存模块220使能信号由HDMI控制器110发出的缓存数据使能信号控制,若出现错误需要进行复位时,处理器400首先关闭HDMI控制器110对UPI数据的输出功能。之后,处理器400通过控制总线290在单侧复位模块260的寄存器中配置重置使能信号reset_req为高电平信号,单侧复位模块260中计数器检测缓存模块220中的空信号fifo_empty信号是否在预设时长内有效,例如,单侧复位模块260检测到缓存模块220中的空信号fifo_empty信号在连续16个时钟信号内均有效,即表示该缓存模块220中读空,即缓存模块220中的UPI帧数据已全部发送至控制模块230。之后,单侧复位模块260继续通过控制模块230检测接口转换模块240中的写使能信号mwrite信号是否为低电平信号,若该mwrite信号为低电平信号,则表示UPI帧数据已全部写入接口转换模块240,此时,单侧复位模块260设置复位信号ready2reset信号为高电平,等待处理器400执行复位操作。

需要说明的是,若该数据总线250支持单侧复位,存储逻辑控制电路200中可不设置单侧复位模块260。

可选的,上述处理器包括但不限于中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Process,DSP)或图形处理器(graphics processingunit,GPU),本申请实施例对此不做限制。上述处理器不属于本申请实施例中的HDMI控制器UPI存储电路,该处理器可通过与控制总线的连接,控制HDMI控制器UPI存储电路100进行复位和中断。

可选地,图7是本申请至少一实施例提供的HDMI控制器UPI存储电路的连接示意图之五,如图7所示,所述存储逻辑控制电路200还包括中断模块270,所述中断模块270连接所述控制模块230,并通过控制总线290连接处理器400;

所述中断模块270用于在所述处理器400发送的第二使能信号开启所述中断模块270的情况下,分别确定中断信号和中断数据,并将所述中断信号和所述中断数据发送至所述处理器400,所述中断信号用于开启中断,并指示所述处理器400读取UPI帧数据,所述中断数据包括各分区写入的UPI有效数据对应的byte数、当前帧数和所述分区信息中的分区编号。

具体的,图8是本申请至少一实施例提供的中断模块270的结构示意图,如图8所示,中断模块270包括功能中断模块271和错误中断模块272,上述第二使能信号可以为控制功能中断模块271开启或关闭的功能使能信号func_int_en信号,或者控制错误中断模块272开启或关闭的错误使能信号err_int_en信号,func_int_en信号和err_int_en信号均为处理器400进行配置的。功能中断模块271和错误中断模块272均为开启状态时,其中:

(1)在功能使能信号func_int_en信号有效时,即功能中断模块271为开启状态时,控制模块230每发送一帧UPI帧数据均会生成该帧UPI帧数据对应的分区信息,即生成该帧UPI帧数据对应的分区标识area_mark和分区编号area_num,每检测到一个分区标识area_mark,则更新一次功能中断数据func_int_sta,并拉高一次功能中断信号func_int,即配置功能中断信号func_int为高电平信号,以进行一次中断,并以通知处理器400读取UPI帧数据。在处理器400读取UPI帧数据后,可配置功能中断模块271中的功能中断清除信号func_int_clr为高电平信号,以清除这次中断。在更新功能中断数据func_int_sta时,各分区写入一帧UPI帧数据对应的byte数可通过wready信号、wvalid信号和wlast信号三个信号进行确定,其中:wready信号表示处理器400是否准备好接收数据,当wready信号为高电平信号时,表示处理器400已经准备好接收数据。wvalid信号表示有效的写入数据,当wvalid信号为高电平时,表示数据是有效的,需要被存储。wlast信号表示数据流的结束,用于指示处理器400接收到的UPI帧数据中各子数据流的最后一个字节。当wready信号和wvalid信号同时有效时,wlast信号会被拉高,通过计算被拉高的wlast信号的次数,即可得到发送的UPI帧数据中的byte数。

为便于处理器400准确获取功能中断数据func_int_sta,功能中断信号func_int与功能中断数据func_int_sta具有时序约束。图9是本申请至少一实施例提供的功能中断信号和功能中断数据的时序约束示意图,如图9所示,功能中断数据func_int_sta包括32bit数据,在每个vsync信号后,或者,在vsync信号之后的第一个den信号后,处理器400配置func_int_sta[0]为低电平信号,即func_int_sta[0]=0;延迟16个时钟周期后,发出功能中断信号func_int进行中断,同时更新功能中断数据func_int_sta[31:1];再延迟16个时钟周期后,更新func_int_sta[0]为高电平信号,即func_int_sta[0]=1。

(2)在错误使能信号err_int_en信号有效时,即错误中断模块272为开启状态时,若存在brsp_err信号、max_len_err信号、overflow_err信号中的至少一种时,均为拉高一次错误中断信号err_int,并更新一次错误中断数据err_int_sta,该错误中断数据err_int_sta包括当前帧数以及brsp_err信号、max_len_err信号和overflow_err信号三个信号中的至少一种。其中,brsp_err信号用于判断数据总线250或控制总线290是否出错,在数据总线250或控制总线290正常工作的情况下,brsp_err信号为低电平,即brsp_err=0,在数据总线250或控制总线290出错的情况下,brsp_err信号为高电平,即brsp_err信号拉高报错。max_len_err信号用于判断当前byte数是否超出处理器400配置的最大byte数,若超出则max_len_err信号拉高报错。overflow_err信号用于判断缓存模块220是否存满,若缓存模块220存满,则overflow_err信号拉高报错。处理器400在接收到错误中断信号err_int和错误中断数据err_int_sta后,进行后续操作,若错误问题解决,则配置错误中断模块272中的错误中断清除信号err_int_clr为高电平信号,以清除这次中断。此外,错误中断模块272还接受bready信号和bvalid信号,bready信号表示处理器400是否准备好接收数据。bvalid信号表示有效的总线数据。当bready信号和bvalid信号均为高电平时,表示数据总线250已经准备好接收数据,即处理器400已做好准备接收数据,且发送的数据有效。

可选地,如图7所示,所述存储逻辑控制电路200还包括计数模块280,所述计数模块280分别连接所述HDMI控制器110、所述组包模块210、所述缓存模块220和所述接口转换模块240,所述计数模块280还通过控制总线290连接处理器400,其中:

所述计数模块280用于分别对所述HDMI控制器110发送的UPI数据的发送数量、所述组包模块210确定的UPI有效数据的确定数量、所述缓存模块220对UPI有效数据的缓存数量和所述公共存储模块300中UPI有效数据的存储数量进行计数,并将计数结果通过所述控制总线290发送至处理器400。

具体的,存储逻辑控制电路200还包括计数模块280,该计数模块280可以包括4个计数器,各计数器分别对应HDMI控制器110、组包模块210、缓存模块220和接口转换模块240,第一个计数器计算HDMI控制器110发送的UPI数据的发送数量,第二计数器计算组包模块210确定的UPI有效数据的确定数量,第三计数器计算缓存模块220对UPI有效数据的缓存数量,第四计数器计算公共存储模块300中UPI有效数据的存储数量,得到包括四个计数值的计算结果,并将该计算结果通过控制总线290发送至处理器400,处理器400通过对比4个计数器对应的计数值,可分析得到出UPI存储电路在工作中是否存在丢包现象和无效的UPI数据的数量等,根据上述分析信息,便于处理器400执行后续操作。

本申请提供的HDMI控制器UPI存储电路,通过HDMI控制器110向存储逻辑控制电路200连续发送UPI数据,存储逻辑控制电路200基于HDMI控制器110的发送时序依次接收UPI数据,确保存储逻辑控制电路200对应的UPI数据的接收数量与HDMI控制器110对应的发送数量相同,并从接收的UPI数据中确定UPI有效数据,并依次将UPI有效数据存储至公共存储模块300中,确保公共存储模块300中UPI有效数据的存储数量与存储逻辑控制电路200中UPI有效数据的确定数量相同,基于存储逻辑控制电路200的接收时序与HDMI控制器110的发送时序相同,确保UPI数据在存储过程中的完整性。

本申请至少一实施例还提供一种UPI数据存储方法,图10是本申请至少一实施例提供的UPI数据存储方法的流程示意图,如图10所示,该方法包括:

步骤1010、HDMI控制器110基于时钟脉冲,连续向存储逻辑控制电路200发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送。

步骤1020、基于HDMI控制器110的发送时序,依次接收所述HDMI控制器110在不同时钟脉冲发送的UPI数据。

步骤1030、基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块300中。

具体的,针对现有技术中通过寄存器方式获取UPI数据不完整的问题,本申请至少一实施例中,通过HDMI控制器110基于时钟脉冲,连续向存储逻辑控制电路200发送UPI数据,且每次发送一个UPI数据,存储逻辑控制电路200用于根据HDMI控制器110的发送时序进行依次接收,即,HDMI控制器110每发送一个UPI数据,则存储逻辑控制电路200接收一个UPI数据,即确保存储逻辑控制电路200对应的UPI数据的接收数量与HDMI控制器110对应的发送数量相同,避免UPI数据发送过程中存在丢包等现象,从数据发送角度确保UPI数据的完整性。HDMI控制器110发送的UPI数据或者存储逻辑控制电路200接收的UPI数据可能为有效数据,还可能为无效数据,因此,存储逻辑控制电路200在接收到UPI数据后,对UPI数据进行过滤,确定UPI有效数据,并将UPI有效数据依次存储至公共存储模块300中,确保公共存储模块300中UPI有效数据的存储数量与存储逻辑控制电路200中UPI有效数据的确定数量相同,确保UPI有效数据的转发、存储过程中不存在丢包,从存储角度确保UPI有效数据的完整性,同时,从UPI数据中确定UPI有效数据,可一定程度上节省公共存储模块300的存储空间。

可选地,基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块300中,包括:

获取所述HDMI控制器110发送的错误信号,并根据所述错误信号对所述UPI数据进行过滤,得到多个所述UPI有效数据;

获取所述HDMI控制器110发送的控制信号,根据所述控制信号对UPI帧数据进行分区,确定所述UPI帧数据对应的分区偏移地址,并基于所述分区偏移地址将第一预设数量的所述UPI帧数据存储至所述公共存储模块300中,每帧所述UPI帧数据中包括至少两个UPI有效数据。

具体的,在控制模块230控制UPI有效数据进行存储时,是以帧为单位进行存储,即一帧UPI帧数据中包括多个UPI有效数据,每个UPI有效数据可以为256bit。由于公共存储模块300的存储空间有限,无法一直写入数据,因此,对存入的帧数进行限制,公共存储模块300最多存储第一预设数量帧的UPI帧数据,处理器400可以每隔第一预设数量帧(或少于第一预设数量帧)读取一次,并清空公共存储模块300中读取的第一预设数量帧的UPI帧数据。上述第一预设数量可以为8,即,公共存储模块300最多存储8帧UPI帧数据,处理器400可以每隔8帧(或少于8帧)读取一次,并清空公共存储模块300中读取的8帧UPI帧数据,便于后续UPI帧数据的存储。为了确定当前存入的是第几帧UPI帧数据,确保数据清除的准确度,需要对UPI帧数据进行明确的分区操作。即,控制模块230根据HDMI控制器110发送的控制信号,匹配UPI帧数据对应的分区偏移地址,并将该UPI帧数据存储至公共存储模块300中分区偏移地址对应的位置。

本申请提供的UPI数据存储方法,通过HDMI控制器110向存储逻辑控制电路200连续发送UPI数据,存储逻辑控制电路200基于HDMI控制器110的发送时序依次接收UPI数据,确保存储逻辑控制电路200对应的UPI数据的接收数量与HDMI控制器110对应的发送数量相同,并从接收的UPI数据中确定UPI有效数据,并依次将UPI有效数据存储至公共存储模块300中,确保公共存储模块300中UPI有效数据的存储数量与存储逻辑控制电路200中UPI有效数据的确定数量相同,基于存储逻辑控制电路200的接收时序与HDMI控制器110的发送时序相同,确保UPI数据在存储过程中的完整性。

本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,执行所述计算机程序时,计算机能够执行上述各方法所提供的UPI数据存储方法,该方法包括:

基于时钟脉冲,连续向存储逻辑控制电路200发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送。

基于HDMI控制器110的发送时序,依次接收所述HDMI控制器110在不同时钟脉冲发送的UPI数据;

基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块300中。

又一方面,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,执行该计算机程序被可实现以执行上述各方法提供的UPI数据存储方法,该方法包括:

基于时钟脉冲,连续向存储逻辑控制电路200发送获取的UPI数据,并在检测到第一使能信号无效的情况下,停止数据发送。

基于HDMI控制器110的发送时序,依次接收所述HDMI控制器110在不同时钟脉冲发送的UPI数据;

基于所述UPI数据确定UPI有效数据,并依次将所述UPI有效数据存储至公共存储模块300中。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

技术分类

06120116570992