×
嵌入式 > 嵌入式开发 > 详情

一种基于SDR SDRAM的视频数据逻辑分析存储器设计

发布时间:2020-06-22 发布时间:
|

摘要:针对传统硬件测试软件的弊端,文章提出一种便携式视频数据逻辑分析存储器的设计方法,这种分析存储器能够针对网络多媒体数据进行采集、分析和存储等操作。在不影响网络正常传输的前提下,针对TS流进行采集、存储和分析。由于多媒体数据网络传输具有数据量大、网络带宽占用量大等特点,因此设计中根据系统结构需要,设计SDR SDRAM存储器控制器,采用分层状态机的设计模式,可以对结构较大的网络数据包或是大量高速传输中的数据进行突发存储操作。测试结果表明系统工作稳定,数据处理速度快,精度可达纳秒级,满足系统设计要求。

0 引言

在传统硬件调试系统中,通常采用SIGNALTAPII软件进行数据抓取和采集,但是这种调试工具具有一定的弊端,对高速传输的数据中具有某种特征的整段数据需要反复触发抓取,同时很难对采集的数据进行实时观测。音视频数据是一种高速传输的数据,具有数据量大、网络带宽占用量大等特点。要对这种数据进行系统调试,需要系统能够对数据进行实时处理、采集和观测,采用SIGNALTAPII很难实现这一功能。同时,在网络音视频数据传输系统中,接收端除了接收音视频数据外,还会接收到网络中传输的一些控制信息等数据,这些数据对音视频数据的分析无用,应首先进行识别和过滤。

针对音视频数据传输采集分析的要求,本文设计了一种具有新型结构的音视频数据逻辑分析存储器,这种系统能够针对具有TS数据流结构的网络多媒体数据进行实吋的数据结构、数据速率的监控,能够通过程序对网络数据包的帧头、协议号等信息进行分析,监控网络中音视频数据流量,并针对这种结构的数据包进行存储采集,导入SD卡,或在PC平台上进行实时监控、播放或是仿真处理。

1 视频数据逻辑分析存储器的结构和工作原理

音视频数据逻辑分析存储器的结构如图1所示。硬件开发平台接收到的网口测试数据由路由器发出,同时由某一台PC机通过流媒体服务器向硬件开发平台所连接的PC机发送音频和视频数据。流媒体服务器发送的音、视频数据是封装成UDP数据包的TS传输流。此时由MII接口与FPGA进行通信的网络数据协议类型非常丰富,例如TCP、UDP、DNS、NRP、HTTP等。不同网络协议数据包,都具有其特定的数据帧结构。对封装成UDP数据包的TS传输流的数据帧格式进行分析,从而将其过滤出来,实现对音视频数据的提取、监控以及存储功能。UDP/非UDP过滤模块实现TS流的分流和提取,网口数据速率监控模块可以对单位时间的数据量进行实时监控。

音视频数据经FIFO缓存模块、锁存模块后由SDRAM驱动模块将数据高速地写入SDRAM存储器中,SDRAM驱动模块、SDRAM接口模块、SDRAM控制器完成数据的读写、缓存和封装。经过一段时间后,根据UDP帧长度缓存模块的输出值将输出数据打包成帧,转存至SD card中,可保存、携带或将SD card中的数据导入PC平台,对采集到的数据进行各种分析、仿真操作。

2 视频数据逻辑分析存储器可编程模块的设计

2.1 可编程模块的结构和工作原理

可编程模块包括:UDP/非UDP过滤模块、双网口异步传输模块、网口速率监控模块、输入/输出FIFO缓存模块、SDRAM驱动模块、SDRAM接口模块、SDRAM控制器、数据帧封装模块等。在可编程模块的设计中,SDRAM控制器、输入/输出FIFO模块、SDRAM驱动模块、SDRAM接口模块是整个系统的核心处理模块,该部分采用分层状态机的设计模式,实现主状态机与具体操作控制状态机的分离,能有效提高读写操作效率,模块设计结构清晰,提高了系统设计的可读性,也使程序具有更高的通用性。

SDRAM控制器、输入/输出FIFO缓存模块、SDRAM驱动模块、SDRAM接口模块等核心模块的设计原理如图2所示。

在系统上电后,SDRAM控制器模块首先跳转至初始化进程,对SDRAM发出初始化命令,分别对SDRAM的各种参数进行配置。初始化完毕后,SDRAM驱动模块开始进行状态跳转判定,判定结果将使SDRAM控制器由开始的空闲状态跳转至其他工作状态。在控制器第一次进入写状态时,SDRAM驱动模块对SDRAM接口模块发送命令信号,使SDRAM接口模块的工作进程跳转至写进程。进入写进程的SDRAM接口模块向SDRAM控制器发送数据、地址和写命令。SDRAM控制器根据接收到的命令将FIFO中缓存的数据以突发模式写入SDRAM中。SDRAM完成写操作后,SDRAM驱动模块将再一次进行状态跳转判定,如此反复。在整个过程中,SDRAM驱动模块根据判定结果进行状态跳转,并发出不同的命令,SDRAM接口模块根据接收到的命令,相应地进入不同的工作进程。在不同的工作进程中,SDRAM接口模块对SDRAM控制器发送不同的操作命令,从而完成对SDRAM的初始化、读、写、刷新等各种操作。最后将需要分析、存储的数据从输出FIFO中导入SD卡。这一操作由开关模块进行控制。

其中,SDRAM控制器的程序编写是本系统设计的另一个重要的部分,SDRAM控制器主要包括命令监控、命令译码以及数据传递等几部分,SDRAM控制器根据接收到的命令,将数据和地址分别送入相应模块进行处理。

2.2 SDRAM控制器的实现

SDRAM控制器由4个可编程模块组成,分别为命令监控模块、命令译码模块、数据传输模块和时钟模块等,支持1、2、4、8和全页突发等突发模式。

首先需要对SDRAM进行初始化,系统的时钟和电源稳定后,在发起读、写、预充电、刷新等命令前,需要100 μs的上电延时。从100 μs内某点开始到100μs结束的过程中,需要发出至少一次NOP或是COMMAND INHIBIT命令。在系统上电结束后,发出PRECHARGE命令,对SDRAM中的所有bank进行预充电,使其至于空闲状态中。在完成SDRAM初始化过程中,还需要接口模块对SDRAM控制器里面的配置存储器进行编码,本设计中写入配置寄存器中的值为0x33,表明SDRAM采用8bit突发读写模式。

 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于嵌入式系统的CAN总线网络通信流程设计