一种基于FPGA架构的静态底图控制方法及其装置
技术领域
本发明涉及视频显示技术领域,特别涉及一种基于FPGA架构的静态底图控制方法及其装置。
背景技术
视频拼接控制器可应用于室内娱乐视听***、安防监控***、指挥调度管理***,例如公安军事指挥中心、水利电力***监控项目、石化行业监控项目、交通***监控项目、地下管道管理等应用场合。这些行业都有着复杂的网络拓扑结构,网络复杂节点众多,数据量大,图像超大,有着实时点对点显示在大屏上的需要。
因此,在视频拼接显示行业,经常需要显示超大分辨率底图的场合,比如公安消防军事指挥使用的大分辨率地图,水利电力***的网络拓扑图,以及高清大尺寸的广告发布等。这些图像往往像素很高,效果非常清晰,图像分辨率很大甚至超过了现有的8K视频尺寸、即7680x4320显示分辨率,而有些行业的图像中网络及节点密集,需要在大屏上实现像素点对点显示,或者局部放大显示。
虽然4K视频已经走进实际投影、电视、大屏拼接市场中,更高端的8K亦有出现。但是真正要实现像素点对点显示8K及以上图片,并且支持局部放大,对于目前市场上的这些设备来说,由于限制于硬件速度和***架构原理,以较低成本将超大特大分辨率的视频源在拼接屏上以人眼适应的刷新率显示还比较困难。
因而现有技术还有待改进和提高。
发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种基于FPGA架构的静态底图控制方法及其装置,以解决现有显示设备实现像素点对点显示8K及以上图片成本较高的问题。
为了达到上述目的,本发明采取了以下技术方案:
一种基于FPGA架构的静态底图控制方法,其包括:
FPGA将MCU传输的图片数据写入nandflash内存中;
当底图显示功能开启后,FPGA从nandflash内存中读取图片数据,并写入DDR3存储器中;
FPGA从DDR3存储器中读取整幅图的图片数据,并成帧地发送至显示端显示。
所述的基于FPGA架构的静态底图控制方法中,所述nandflash内存的存储物理空间按地址递增顺序划分为预设个物理存储块,各物理存储块对应一个逻辑地址块,每个逻辑地址块中设置若干个物理地址,每幅图片设置一个图片编号。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA将MCU传输的图片数据写入nandflash内存中的步骤具体包括:
MCU根据数据块与物理地址相对应的链表查询物理存储块的空闲信息,将图片数据划分为多个数据块并根据图片编号设置子号;
MCU更新数据块与物理地址相对应的链表,并在物理地址所属的逻辑地址块上标记图片编号;
MCU将物理地址和数据块传输给FPGA,FPGA根据物理地址将数据块按序写入nandflash内存对应的物理存储块中。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA从nandflash内存中读取图片数据,并写入DDR3存储器中的步骤具体包括:
MCU根据读取命令中的图片编号索引到相应的逻辑地址块,查询该图片的物理地址的链表;
根据链表中的顺序发送数据块和对应的物理地址给FPGA;
FPGA按序将数据块写入DDR3存储器中。
所述的基于FPGA架构的静态底图控制方法中,所述图片数据为RGB格式,DDR3存储器在FPGA内的接口为128bit;写入DDR3存储器时,将5组24bit的RGB拼成128bit;从DDR3存储器读出时,将128bit拆分为5组RGB后读出。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA从DDR3存储器中读取整幅图的图片数据的步骤中, FPGA在DDR3存储器中以预设数据率动态读取整幅图的图片数据,并按照预设数据帧率、将图片成帧地通过总线传输至显示端。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA从DDR3存储器中读取整幅图的图片数据的步骤中,根据图片的行场分辨率控制一帧图片数据传输至显示端。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA从DDR3存储器中读取整幅图的图片数据的步骤中,帧之间或者行之间加入停顿,以匹配数据总线和显示端的处理速度。
所述的基于FPGA架构的静态底图控制方法中,所述FPGA从DDR3存储器中读取整幅图的图片数据的步骤中,实时重复执行从DDR3存储器中读取图片数据,总线传输数据帧,形成实时的图片。
一种基于FPGA架构的静态底图控制装置,其包括FPGA、MCU、nandflash内存和DDR3存储器;
所述FPGA将MCU传输的图片数据写入nandflash内存中;当底图显示功能开启后,FPGA从nandflash内存中读取图片数据,并写入DDR3存储器中;FPGA从DDR3存储器中读取整幅图的图片数据,并成帧地发送至显示端显示。
相较于现有技术,本发明提供的基于FPGA架构的静态底图控制方法及其装置,通过FPGA将MCU传输的图片数据写入nandflash内存中;当底图显示功能开启后,FPGA从nandflash内存中读取图片数据,并写入DDR3存储器中;FPGA从DDR3存储器中读取整幅图的图片数据,并成帧地发送至显示端显示;通过MCU和FPGA的控制方式提高了控制的灵活性,即能实现像素点对点显示8K及以上图片的功能,又能降低成本;通过设置nandflash内存和DDR3存储器能扩大存储空间,能存储多张图片,支持拼接显示分辨率从64*64至8K及以上的超大特大图片。
附图说明
图1为本发明提供的基于FPGA架构的静态底图控制方法流程图;
图2为本发明提供的基于FPGA架构的静态底图控制装置的结构框图。
具体实施方式
本发明提供一种基于FPGA架构的静态底图控制方法及其装置,通过FPGA来读写图片数据,利用FPGA(Field-Programmable Gate Array,现场可编程门阵列)的灵活性,能以较低成本实现像素点对点显示8K及以上图片的功能。为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参阅图1,本发明提供的基于FPGA架构的静态底图控制方法包括读写控制和显示控制,具体包括:
S100、FPGA将MCU传输的图片数据写入nandflash内存中;
S200、当底图显示功能开启后,FPGA从nandflash内存中读取图片数据,并写入DDR3存储器中。
S300、FPGA从DDR3存储器中读取整幅图的图片数据,并成帧地发送至显示端显示。
来自客户端的图片数据在MCU的控制下传输给FPGA,由FPGA将图片数据写入nandflash内存(flash内存的一种)中。MCU传输所述图片数据时,采用并行数据传输方式。所述图片数据即底层图的数据。当底图显示功能开启后,FPGA从nandflash内存中读取图片数据,并写入DDR3(一种计算机内存规格)存储器中。
本实施例中,图片数据存储(即写入)在nandflash中或从中读出时采用动态分配存储空间的方式。即将整个nandflash内存的存储物理空间按地址递增顺序划分为预设个(如20个)大小相等的物理存储块并按序编号,如第一物理存储块、第二物理存储块等。各物理存储块支持存放一张超大分辨率的能占满整个存储空间的图片,也支持多张分辨率小些的图片。存放图片的张数受总的存储空间限制,存储在物理存储块中的图片可以动态更换。
本实施例中,20个物理存储块与20个动态的逻辑地址块动态对应。每个逻辑地址块中设置若干个物理地址。由于每幅图片对应一个编号, MCU将该图片的图片数据划分为多个数据块并根据图片编号设置子号。如一幅图片的图片编号为X1,对应划分为3个数据块,每个数据块的子号分别为X11、X12、X13。每个数据块与一个逻辑地址块中的物理地址相对应、并按数据顺序组成链表。这样每个链表就包括了一幅图片的数据块的子号和对其对应的物理地址。
上层的客户端直接操作物理地址来写入和读出图片的数据块。在所述步骤S100中,写入时,MCU根据链表查询物理存储块的空闲信息,将图片数据划分为多个数据块并根据图片编号设置子号,将数据块与空闲的物理地址相对应。MCU将物理地址和数据块传输给FPGA。FPGA根据物理地址即可将数据块按块写入nandflash内存对应的物理存储块中。同时,一幅图片与哪个逻辑地址块相对应,则在该逻辑地址块上标记该图片的图片编号。各逻辑地址块中,哪些物理地址未使用、即未与数据块相对应,则标记其空闲。
例如,一幅图片的图片编号为Y,则图片数据包括数据块Y1和数据块Y2。另一幅图片的图片编号为Z,图片数据包括数据块Z1。第一逻辑地址块中设置物理地址01、物理地址02和物理地址03,第二逻辑地址块中设置物理地址11和物理地址12。物理地址01与数据块Y1对应,物理地址02与数据块Y2对应,物理地址03标记为空闲并组成链表1,第一逻辑地址块标记Y。物理地址11与数据块Z1对应,物理地址12标记为空闲并组成链表2,第二逻辑地址块标记Z。第一逻辑地址块对应第一物理存储块,第二逻辑地址块对应第二物理存储块。这样就相当于将一幅图片编号为Y的数据块Y1和数据块Y2全部存储到第一物理存储块中。假设物理地址03虽然空闲但数据块Z1较大无法存放,因此将另一幅图片编号为Z的数据块Z1全部存储到第二物理存储块中。
读取时,客户端发送读取命令至MCU,读取命令包含图片编号,MCU根据图片编号索引到相应的逻辑地址块,找到该图片的物理地址的链表,从而按链表中的顺序发送该图片的数据块和地址至FPGA。FPGA按顺序读出相应的数据块,从而构成图片数据。不同分辨率的图片占用的物理地址的数目不同,对应的逻辑地址块也不相同。当图片删除时,对应的物理地址释放后,由MCU标记,客户端则实时读取状态信息获得未使用的物理地址,以备新图片写入使用。
本实施例中,在FPGA中设置允许写入信号和允许读出信号。当FPGA正在进行数据写入nandflash时、或正在从nandflash中读出数据时,不允许执行其他新的数据块写入或读出操作,此时将允许写入信号和允许读出信号,直到写入或者读出数据块完成后,将允许写入信号和允许读出信号拉高,再执行新的数据块的写入和读出。客户端需要写入或者读出图片数据时,先查询允许写入信号和允许读出信号,当值为1(表示高电平)时,允许发布写入数据或者读出数据命令。
本实施例中,所述图片数据为RGB格式,按R-G-B的顺序以字节存入nandflash内存中。读取图片字节数据时,将8位字节数据拼成24bit的RGB像素值。DDR3存储器在FPGA内的接口为128bit,写入时将5组24bit的RGB拼成128bit,读出时将128bit拆分为5组RGB。由图片的行场分辨率控制一帧图片数据读出和写入DDR3存储器的过程。
在所述步骤S300中,FPGA在DDR3存储器中以预设数据率动态读取整幅图的图片数据,并按照预设数据帧率、将图片成帧地利用高速总线传输至显示端。当从DDR3存储器读取第一个128bit时,拆分为5组RGB中的第一组RGB对应产生帧起始信号。根据图片的行场分辨率控制一帧图片数据发送完成。帧之间或者行之间加入停顿,以匹配数据总线和显示端的处理速度。实时重复执行从DDR3存储器中读取图片数据,数据总线传输数据帧,形成实时的图片。
当需要显示存储在nandflash内存中的其它图片时,只需将该图片按上述步骤S100~S200写入DDR3,及按上述步骤S300将图片读出和传输即可。只要使用的nandflash内存和DDR3存储器的容量足够大就可以支持超大特大分辨率的图片,选用普通的nandflash内存和DDR3存储器芯片就足以支持8K的分辨率的图片。数据总线采用现有FPGA架构的视频拼接控制器的数据总线即可。
基于上述的基于FPGA架构的静态底图控制方法,本发明实施例还提供一种静态底图控制装置,请参阅图2、所述静态底图控制装置包括FPGA 10、MCU 20、nandflash内存30和DDR3存储器40。所述FPGA 10将MCU 20传输的图片数据写入nandflash内存30中;当底图显示功能开启后,FPGA 10从nandflash内存30中读取图片数据,并写入DDR3存储器40中;FPGA从DDR3存储器40中读取整幅图的图片数据,并成帧地发送至显示端显示。
显示端用于显示一定帧率和分辨率的实时视频图像。显示端缓存三帧视频图像以匹配显示帧率和视频源帧率。这样显示端各个显示部分通过数据总线接收图片数据帧时,只存储自己需要显示的那部分即可,虽然图片是实时传输并按一定帧率刷新,但由于图片本身的内容不变(底图通常不变),人眼感觉到的图片亦不变,所以显示超大图片导致的帧率下降不会影响图片显示。这样即可实现超大特大图片在拼接屏上的显示。显示端为现有FPGA视频拼接控制器本身兼容的模块,即为FPGA架构的拼接控制器显示输出模块,已具备缩放功能,当需要放大图片的某一部分时,由显示端实现即可。本实施例重点叙述图片的写入和读出过程。图片经过该静态底图控制装置处理后、即可通过普通的FPGA架构的拼接控制器显示输出超大特大底图。
综上所述,本发明在液晶拼接大屏上能实现像素点对点拼接显示超大分辨率的图片,或放大缩小显示特大超大分辨率的静态图片;分辨率能达到8K以上,并且支持动态的局部放大缩小操作。支持的图片最小的分辨率在64*64,最大达到8K以上;通过nandflash内存和DDR3存储器的两次存储,支持多张图片实时更换显示,掉电重启后图片仍然在静态底图控制装置中且支持掉电重启,能对存储空间进行动态分配。通过一定的帧率使图片能实时显示。
利用MCU加FPGA架构的灵活性,将nandflash内存划分为20个物理存储块,可以进行存储空间的动态使用,存储多张图片,进行图片的动态删减添加及更换。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。