>
首页 » 技术文章 » 基于DM642的嵌入式网络视频服务器的开发

基于DM642的嵌入式网络视频服务器的开发

作者:张素文,柯院兵,杨 菊  时间:2006-09-27 00:00  来源:
摘要:介绍了基于DM642 的嵌入式网络视频服务器的开发,包括系统的硬件和软件设计。

关键词:DSP;网络;视频服务器

引言

目前的安防监控领域的主流产品是DVR(数字硬盘录像机),它的主要特点是适合监控点集中的局域监控应用。但是,随着对于远程分布式监控需求的增长,嵌入式网络视频服务器(以下简称视频服务器)以其可靠性高,组网方便等优点越来越受到安防领域厂商和客户的重视。视频服务器最主要的功能是完成图像和声音的采集、压缩及传输的功能。视频服务器用到的核心技术一般包括视频压缩算法,音频压缩算法,网络传输协议。目前市场上的主流技术主要是MPEG4或H26x 视频压缩算法、AAC 音频压缩算法、G.72x 语音压缩算法(或AAC 音频压缩算法),TCP/IP 协议等。

视频服务器的解决方案有多种选择,但是市场产品的主流一般选择两种方案:(1) CPU+ASIC。该方案选择以ARM 为核的CPU 和专用媒体处理芯片搭建。优点是开发时间相对较短,但由于采用ASIC,灵活性较差,产品一旦定型,很难更改。(2) 采用面向媒体处理的专用DSP。其开发时间不长,优点是由于算法是软件代码,所以可以不断对产品性能进行升级,重复开发成本较低。DM642 是TI 公司推出的一款针对多媒体处理领域应用的DSP,它是在C64x 的基础上,增加了很多外围设备和接口。该DSP 为548 脚BGA 封装,高度集成化。主要外围设备包括:三个可配置的视频接口,可以和视频输入,输出或传输流输入无缝连接。VCXO 内插控制端口(VIC)10/100Mbps 以太网口(EMAC)。数据管理输入输出模块(MDI0)。多通道音频串行端口(McASP)。I2C 总线模块。两个多通道有缓存的串口(McBSPs)。三个32-bit 通用定时器。用户可配置的16-bit 或32-bit 的主端口接口(HPI16/HPI32)。6Mhz32-bit 的PCI 接口。通用I/O 端口(GPIO)。64-bit 的外部存储单元接口,支持和同步或异步存储单元的连接。基于以上几点,本系统采用第二种方案设计。

系统的硬件设计

一块TI 公司600MHz 的TMS320DM642 DSP 芯片。独立的、标准的PCI 插卡,3 路视频端口,2 路板上解码器和1路板上编码器,32Mbytes 同步DRAM 通过FPGA 的OSD 4Mbytes Flash memory,10/100 以太网端口通过FPGA 内寄存器执行的板卡软件配置导入加载选项配置。DSP 芯片通过64bit 的EMIF 接口或8/16bit 的3 路视频接口连接板上外围设备。SDRAM、Flash、FPGA 和UART 每一个设备占用其中的一个接口。EMIF 接口也连接扩展背板接口,扩展背板接口用来连接背板。板上的视频解码器和编码器连接到视频端口和扩展连接器上。母板上的2 个编码器和1 个解码器都符合标准规范。McASP 可以通过软件重新设定成为一个扩展接口。可编程逻辑门阵列又被称为FPGA,用来执行板上组合在一起的逻辑程序。FPGA 有基于软件用户端口的寄存器,用户可以通过读写这个寄存器来配置板卡。

存储器映射
C64xx 系列DSP 有大量的字节可设定的地址空间。程序代码和数据可被存储在统一标准的32bit 地址空间的任何位置。默认状态下,内部的寄存器从0x00000000 地址空间开始存储。一小部分存储器可由软件重新映射为L2 高速缓存,而不是固定的RAM。EMIF(外部寄存器端口)有4 个独立的可设定地址的区域,称为芯片使能空间(CE0-CE3)。当Flash、UART 和FPGA 映射到CE1 时,SDRAM 占据CE0。背板使用CE2 和CE3。CE3 的一部分被配置给OSD 功能的同步操作和扩展的FPGA 中的其他同步寄存器操作。

EMIF 端口
本系统设计一个64bit 长的外部存储器端口。将地址空间分割成了四个芯片使能区,允许对地址空间进行8bit、16bit、32bit 和64bit 的同步或不同步的存取。DM642 板使用芯片使能区CE0、CE1 和CE3。CE0 被发送给64bit 的SDRAM总线。CE1 被8bit 的Flash、UART 和FPGA 功能使用。CE3被设置成同步功能。CE2 和CE3 都被发送给背板接口连接器。

SDRAM 寄存器端口
本系统设计在CE0 空间连接了64bit 的SDRAM 总线。这32 兆的SDRAM 空间用来存储程序、数据和视频信息。总线由外部PLL 驱动设备控制,运行在133MHz 的最佳运行状态。SDRAM 的刷新由DM642 自动控制。EMIF 使用的PLL被称为ICS512,PLL 的输入时钟是25MHz。DM642 可以配置EMIF 时钟的原始值。ECLKIN 针脚一般为默认值,但其也可通过分频CPU 时钟,来控制EMIF 的时钟频率。在复位时,通过对ECLKINSEL0 和ECLKINSEL1 针脚的操作进行设置,其与EA19 和EA20 针脚共同分享EMIF 的地址空间。

Flash 寄存器接口
本系统设计4M 的Flash,映射在CE1 空间的低位。Flash寄存器主要被用来导入装载和存储FPGA 的配置信息。

DM642 评估板的CE1 空间被配置成8bit,Flash 寄存器也是8bit。由于CE1 的可利用地址空间小于Flash 的空间,所以利用FPGA 来产生3 个扩展页。这些扩展的线形地址通过FPGA的Flash 的基础寄存器进行定义地址,复位后默认是000。

UATR 接口
双重的UART 寄存器被映射在DM642 的CE1 空间的高位,随同FPGA 异步寄存器一起。每一个UART,A 和B 产生8 位的地址。本系统设计将CE1 空间配置成8 位存取。

FPGA 异步寄存器端口
FPGA 有10 个定位在CE1 空间高位的异步存储寄存器。这些寄存器实现的各种功能由于篇幅所限不再详叙。FPGA同步寄存器端口FPGA 在CE3 地址空间开设同步寄存器。这些寄存器主要实现OSD 功能和一些评估板连接。

EMIF 缓冲器/解码器控制
EMIF 缓冲器和解码器的功能通过GAL16LV8D 普通逻辑数组驱动器实现,U15。驱动器可以对Flash 进行简单的解码处理,UART 与缓冲器共同控制CE1、CE2 和CE3。

视频端口/McASP 端口
本系统设计有3 个板上视频端口,这些端口可以根据可选择性功能,进行再分类,例如端口0 和端口1 的McASP和SPDIF 功能。DM642 使用所有的三个视频端口,视频端口0 和视频端口1 被用作输入端口,视频端口2 用作显示端口。在标准配置中,视频端口0 和视频端口1 根据使用在McASP功能下进行再分类,连接到TLV320AIC23 立体声编解码器或连接到SPDIF 输出接口J9。

视频解码器端口
本系统设计可再分的视频端口0 和视频端口1 被用作捕获输入端口,命名为捕获端口1 和捕获端口2。这些端口连接到SAA7115H 解码器。视频端口贯穿CBT 开关,所以他们为了背板的使用可以被选择性的禁止。另一半的端口被连接到板上的McASP 端口。捕获端口1 通过一个RCA 类型的视频插座J15 和一个4 针的低噪声S-Video 接口J16,连接到视频源。输入的必须是合成的视频源,例如DVD Player 或视频相机。SAA7115H 是可通过DM642 的I2C 总线进行编程的,并且可以连接所有的主要合成视频标准,例如NTSC,PAL和SECAM,这些都可以通过解码器的内部寄存器进行适当的编程。

视频编码器端口
本系统设计视频端口2 被用来驱动视频编码器。它通过FPGA U8 发送,以实现高级功能,例如OSD。但它在默认方式下是直接通过视频,连接到SAA7105 视频编码器。这个编码器可以进行RGB、HD 合成视频,NTSC/PAL 复合视频的编码,也可对依靠SAA7105 内部寄存器进行编程的S-Video进行编码。SAA7105 的内部编程寄存器通过DM642 的I2C总线进行配置。编码器连接到合成的或RGB 显示单元。通过标准的RCA 插座J2、J3 和J4 提供RGB 图像。J3 的绿色输出也可以被用于接口到合成显示单元。4 针的低噪声S-VideoJ1 也可用。15 针的高密度DB 接口允许系统驱动VGA种类的监视器。本系统设计高清晰TV 输出,但要求更换一些支持HDTV 的特殊过滤器。

FPGA 视频功能。本系统设计使用Xilinx
XC2S300E 系列FPGA 来实现增强视频功能和其他的一些连带功能。默认模式下,FPGA 通过DM642 的视频端口2 输出视频到Phillips SAA7105 视频编码器。对于HDTV,FPGA 提供增强的时钟;对于OSD 功能,FPGA 提供了FIFOs,将视频端口2 的数据与FIFOs 端口的数据进行混合。FPGA 的FIFOs 在通过CE3 空间的同步模式下,通过DM642 的EMIF进行存取。

以太网端口。在独立的模式下,DM642 的以太网
MAC 被自动选择,并通过CBT 发送给PHY。本系统设计使用的是Intel LXT971 PHY。10/100Mbit 的端口被隔离,输出至RJ-45 标准的以太网接口,J8。PHY 直接连接到DM642。在制作过程中,以太网的地址存储在I2C 的连续ROM 中。RJ-45 接口具有2 个指示灯,使它成为一个完整的端口。2 个指示灯分别是绿灯和黄灯,用来指示以太网的连接状态。绿灯亮,指示已连接,绿灯一闪一闪,指示连接正在活动;黄灯亮,指示满双方模式。

系统的软件设计

数据流程
(1) 输入设备提供的一帧图象被采集到输入缓存,由YUV 4:2:2 格式进行重抽样变为YUV 4:2:0 格式。
(2) 图象数据由输入任务模块通过一个SCOM 序列提供给处理模块。
(3) 提供图象数据给JPEG 编码库程序,动态检测即与以前图象作比较,动态部分被压缩成JPEG 图象并通过SCOM 消息发送到网络任务模块。
(4) 网络任务模块建立JPEG 副本,当网上有一个对等端点连接到网络并申请“记录”,网络任务模块发送这些图象到对等端点。
(5) 如果网上有一个对等端点请求“回放”连接,网络任务模块将从那个对等端点接收新的JPEG 图象,并发送原始和更新的图象到处理任务模块,消息通过SCOM 序列发送。解码产生的YUV 4:2:0 格式的图象被重新采样成YUV4:2:2 格式的图象。
(6) JPEG 图象被作为解码器的输入,解码的图象通过SCOM 序列进行传输到输出任务模块。
(7) 输出任务模块转换YUV 4:2:0 格式的解码图象成YUV 4:2:2 格式图象并送交显示。显示设备显示输出的图象。

图1 数据流程图

程序流程
(1) 实验程序采用RF-5 来整合JPEG 的编码、解码库。程序使用了6 个任务模块结构。其中4 个任务上图中已描述。第5 个任务是一个控制任务,它使用一个邮箱发送消息给处理任务模块。处理任务模块从邮箱接收消息,并根据消息中指定的图象质量调节图象帧率。第6 个任务模块是网络初始化模块,它由CDB 文件定义处理网络环境的初始化。当网络准备好后,上图中的网络任务模块就被建立。在进入DSP/BIOS 的调度程序之前,程序初始化了多个要使用的模块。包括:

① 处理器和系统板的初始化
a、初始化BIOS 环境和CSL;
b、设置使用128K 的二级高速缓存;
c、设置二级高速缓存可映射到EMIF 的CE0 和CE1空间;
d、设置DMA 优先级序列长度取最大值;
e、设置二级高速缓存的请求优先级最高;
f、DMA 管理器用内部的和扩展堆初始化。

② RF-5 模块的初始化
a、系统初始化RF-5 的通道模块;
b、系统初始化RF-5 框架中用于内部单元通讯和传递消息的ICC 和SCOM 模块;
d、各通道建立在内部的和扩展的堆上。

③ 建立摄入和显示通道
a、建立和启动一个摄入通道的实例;
b、建立和启动一个显示通道的实例。

(2) 在完成初始化工作之后,系统进入DSP/BIOS 调度程序管理下的6 个任务系统。6 个任务通过RF-5 的SCOM 模块互相发送消息。以下是这6 个任务:

① 输入任务。输入任务从输入设备驱动程序获得视频图象。它使用驱动程序提供的FVID_exchange调用从输入设备获得一帧最新视频图象。获得的图象是YUV 4:2:2 格式的,它被重采样成YUV 4:2:0。输入任务接着发送消息到处理任务,消息中包含图象数据指针。接着等待处理任务发送来的消息以继续处理。

② 处理任务。处理任务包含两个单元。第一个单元是一个JPEG 编码单元,它接受YUV 4:2:0 格式的图象,产生用户定制压缩质量的JPEG 图象。第二个单元是一个JPEG 解码单元,它接收JPEG 压缩图象并生成解压缩图象。解码的图象格式是YUV 4:2:0 的。首先,如果激活标注,则处理任务模块在输入的图象上加注时间码。然后图象被传输给编码算法单元。当JPEG 图象生成后,原始图象将进行动态检测,方法是在固定网格点上进行象素比较。JPEG 图象同动态检测结果都传输给网络任务模块供后续处理。当网络任务模块完成处理后,它将返回一个JPEG 图象给处理任务模块供解码显示。此图可以是刚才传输给网络任务模块的图象或是刚从网络上得到的图象。解码完成后,如果设置标注网格,处理任务模块在图象上标注网格。通过发送一个SCOM 消息,输出的图象接着发送给输出任务。

③ 输出任务。输出任务将图象显示在显示设备上。它使用输出驱动程序提供的FVID_exchange调用实现图象的显示。它得到的图象的格式是YUV 4:2:0 的,需要重新采样成YUV 4:2:2 格式。然后等待处理任务发来的消息以继续运行。

④ 控制任务。控制任务管理可选参数,可以控制JPEG图象帧率和压缩质量。控制任务检测参数的改变,这些参数定义在一个全局结构“External Control”,同时将更新的参数复制到任务自定义的结构“External Control_prev”中,并向处理任务模块的邮箱中发送消息。处理任务模块定时检测这些消息并调用相应单元的控制函数。

⑤ 网络初始化任务。网络初始化任务启动网络环境。当网络准备好后,建立网络任务。

⑥ 网络任务网络任务用于支持系统中的网络功能调用。当它初始化完成后,它开始监听两个端口(3001 和3002)。3001 端口用于“回放”连接,当客户端希望发送视频流给DSP。端口3002 用于“记录”连接,当客户端希望从DSP 接收视频流。

网络任务模块接着等待一个从处理模块发来的SCOM消息,其中应包含可供使用的新的JPEG 图象。首先,网络模块用发来的JPEG 图象在RAM中建立一个可由HTTP 服务器识别和可发送到HTTP 客户端的图象文件(IMAGE1.JPG)当一个“记录”连接激活时,网络模块首先检测是否客户端发送过来一些命令。命令包含设置日期和时间、是否显示日期和时间、是否显示网格在输出图象上。然后,接收的JPEG图象要进行活动检测。如果图象有改变,则发送图象到“记录”连接上。否则发送空文件指示以使客户端的图象保持同步。下一步,如果一个“播放”连接被激活,从连接中得到一个新的JPEG 图象。这个新的图象就替代处理模块发来的图象。网络模块回传JPEG 图象给处理模块,通过发送一个SCOM 消息。

相关推荐

中移动升级全球通套餐 套餐外流量资费降50%

中国移动  网络  2012-09-19

中电信收购CDMA网络为降高额租赁费

CDMA  网络  2012-08-24

TD-LTE扩大规模试验14城市入围 三频段均覆盖

TD-LTE  网络  2012-08-16

CEVA凭借90%的市场份额继续领导DSP IP市场

CEVA  DSP  2012-05-30

研发使飞思卡尔后劲十足

飞思卡尔  MCU  汽车  网络  2012-05-16

三大趋势影响飞思卡尔

飞思卡尔  MCU  汽车  网络  2012-05-16
在线研讨会
焦点