1、基于 DM642 的嵌入式网络视频服务器的设计很好的一个实例目前的安防监控领域的主流产品是 DVR(数字硬盘录像机),它的主要特点是适合监控点集中的局域监控应用。但是,随着对于远程分布式监控需求的增长,嵌人式网络视频服务器以其可靠性高,组网方便等优点越来越受到安防领域厂商和客户的重视。视频服务器的解决方案有多种选择,但是市场产品的主流一般选择两种方案(I)CPU 十 ASIC。该方案选择以 ARM 为核的 CPU和专用媒体处理芯片搭建。优点是开发时间相对较短,但由于采用 ASIC,灵活性较差,产品一旦定型,很难更改。(2)采用面向媒体处理的专用 DSP。其开发时间不长,优点是由于算法是软件代码
2、,所以可以不断对产品性能进行升级,重复开发成本较低。基于以上几点,本系统采用第二种方案设计。一、系统的硬件设计视频服务器最主要的功能是完成图像和声音的采集、压缩及传输的功能。视频服务器用到的核心技术一般包括视频压缩算法,音频压缩算法,网络传输协议。目前市场上的主流技术主要是MPEG4 或 H26x 视频压缩算法、AAC 音频压缩算法、G.72x 语音压缩算法(或 AAC 音频压缩算法),TCP/IP 协议等。DM642 是 TI 公司推出的一款针对多媒体处理领域应用的 DSP,它是在 C64x 的基础上,增加了很多外围设备和接口。该 DSP 为 548 脚 BGA 封装,高度集成化。主要外围设
3、备包括:三个可配置的视频接口,可以和视频输人,输出或传输流输人无缝连接。VCXO 内插控制端口(VIC)10/100Mbps 以太网口(EMAC)。数据管理输人输出模块(MDIO)。多通道音频串行端口(McASP)o 12C 总线模块。两个多通道有缓存的串口(McBSPs)。三个 32- bit 通用定时器。用户可配置的 16- bit 或 32- bit 的主端口接口(HPI16/HPI32)o 6Mhz32- bit 的 PCI 接口。通用1/0 端口(GPIO)o 64- bit 的外部存储单元接口,支持和同步或异步存储单元的连接。系统硬件框图如下:本系统设计 3 路视频端口,2 路板上
4、解码器和 1 路板上编码器,32Mbyte,同步 DRAM 通过 FPGA的 OSD 4MbytesFlashm emory,10 /100 以太网端口通过 FPGA 内寄存器执行的板卡软件配置导人加载选项配置。DSP 芯片通过 64bit 的 EMIF 接口或 8/16bit 的 3 路视频接口连接板上外围设备。SDRAM, Flash, FPGA 和 UART 每一个设备占用其中的一个接口。EMIF 接口也连接扩展背板接口,扩展背板接口用来连接背板。板上的视频解码器和编码器连接到视频端口和扩展连接器上。母板上的 2 个编码器和 1 个解码器都符合标准规范。McASP 可以通过软件重新设定成
5、为一个扩展接口。可编程逻辑门阵列又被称为 FPGA,用来执行板上组合在一起的逻辑程序。FPGA有基于软件用户端口的寄存器,用户可以通过读写这个寄存器来配置板卡。系统的硬件设计主要有以下几个部分。(1)存储器映射。C64。系列 DSP 有大量的字节可设定的地址空间。程序代码和数据可被存储在统一标准的 32bit 地址空间的任何位置。默认状态下,内部的寄存器从 0x00000000 地址空间开始存储。一小部分存储器可由软件重新映射为 L2 高速缓存,而不是固定的 RAM.EMIF(外部寄存器端口)有 4 个独立的可设定地址的区域,称为芯片使能空间(CEO- CE3)。当 Flash, UART和
6、FPGA 映射到 CEI 时,SDRAM 占据 CEO。背板使用 CE2 和 CE3. CE3 的一部分被配置给 OSD 功能的同步操作和扩展的 FPGA 中的其他同步寄存器操作。(2)EMIF 端口。本系统设计一个 64bit 长的外部存储器端口。将地址空间分割成了四个芯片使能区,允许对地址空间进行 8bit, 16bit, 32bit 和“bit 的同步或不同步的存取。DM642 板使用芯片使能区 CEO, CEI 和 CE3. CEO 被发送给 64bit 的 SDRAM 总线。CEI 被 8bit 的 Flash, UART 和 FPGA 功能使用。CE3 被设置成同步功能。CE2 和
7、 CE3 都被发送给背板接口连接器。(3)SDRAM 寄存器端口。本系统设计在 CEO 空间连接了 64bit 的 SDRAM 总线。这 32 兆的 SDRAM空间用来存储程序、数据和视频信息。总线由外部 PLL 驱动设备控制,运行在 133MHz 的最佳运行状态。SDRAM 的刷新由 DM642 自动控制。EMIF 使用的 PLL 被称为 ICS512,PLL 的输人时钟是 25MHzo DM642 可以配置 EMIF 时钟的原始值。ECLKIN 针脚一般为默认值,但其也可通过分频CPU 时钟,来控制 EMIF 的时钟频率。在复位时,通过对 ECLKINSELO 和 ECLKINSELI 针
8、脚的操作进行设置,其与 EA19 和 EA20 针脚共同分享 EMIF 的地址空间。 (4)Fl ash 寄存器接口本系统设计 4M 的 Flash,映射在 CEI 空间的低位。Flash 寄存器主要被用来导人装载和存储 FPGA 的配置信息。DM642 评估板的 CE1 空间被配置成 8bit,Fl ash 寄存器也是 8bit。由于 CEI 的可利用地址空间小于 Flash 的空间,所以利用 FPGA 来产生 3 个扩展页。这些扩展的线形地址通过 FPGA 的 Flash 的基础寄存器进行定义地址,复位后默认是 000. (5)UATR 接口。双重的 UART 寄存器被映射在 DM642
9、的 CEI 空间的高位,随同 FPGA 异步寄存器一起。每一个 UART, A 和 B 产生 8 位的地址。本系统设计将 CE1 空间配置成 8 位存取。(6)FPGA 异步寄存器端口。FPGA 有 10 个定位在 CEI 空间高位的异步存储寄存器。这些寄存器实现的各种功能由于篇幅所限不再详叙。FPGA 同步寄存器端口 FP 以在 CE3 地址空间开设同步寄存器。这些寄存器主要实现 OSD 功能和一些评估板连接(7)EM IF 缓冲器/解码器控制。EMIF 缓冲器和解码器的功能通过 GAL16LV8D 普通逻辑数组驱动器实现,U15o 驱动器可以对 Flash 进行简单的解码处理,UART 与
10、缓冲器共同控制 CE1, CE2 和CE3o(8) 视频端口/McASP 端口。本系统设计有 3 个板上视频端口,这些端口可以根据可选择性功能,进行再分类,例如端口。和端口 1 的 McASP 和 SPDIF 功能。DM642 使用所有的三个视频端口,视频端口 0 和视频端口 1 被用作输入端口,视频端口 2 用作显示端口。在标准配置中,视频端口 0 和视频端口 1 根据使用在 McASP 功能下进行再分类,连接到 TLV320AIC23 立体声编解码器或连接到 SPDIF 输出接口 J9. (9)视频解码器端口。本系统设计可再分的视频端口 0 和视频端口 1 被用作捕获输人端口,命名为捕获端
11、口 1 和捕获端口 2。这些端口连接到 SAA7115H 解码器。视频端口贯穿 CBT 开关,所以他们为了背板的使用可以被选择性的禁止。另一半的端口被连接到板上的 McASP 端口。捕获端口 1 通过一个 RCA 类型的视频插座 J15 和一个 4 针的低噪声 S- Video 接口 J16,连接到视频源。输人的必须是合成的视频源,例如 DVD Playe 域视频相机。SAA7115H 是可通过 DM642 的12C 总线进行编程的,并且可以连接所有的主要合成视频标准,例如 NTSC PAL 和 SECAM,这些都可以通过解码器的内部寄存器进行适当的编程。(10)视频编码器端口。本系统设计视频
12、端口 2 被用来驱动视频编码器。 鼺 PGA U8 发送,以实现高级功能,例如 OSD。但它在默认方式下是直接通过视频,连接到 SAA7105 视频编码器。这个编码器可以进行 RGB, HD 合成视频,NTSC/PAL 复合视频的编码,也可对依靠 SAA7105 内部寄存器进行编程的 SrVideo 进行编码。SAA7105 的内部编程寄存器通过 DM642 的 12C 总线进行配置。编码器连接到合成的或 RGB 显示单元。通过标准的 RCA 插座 J2, J3 和 J4 提供 RGB 图像。J3 的绿色输出也可以被用于接口到合成显示单元。4 针的低噪声 S- Videojl 也可用。15 针
13、的高密度 DB 接口允许系统驱动 VGA 种类的监视器。本系统设计高清晰 TV 输出,但要求更换一些支持 HDTV 的特殊过滤器。(11) FPGA 视频功能。本系统设计使用 XilinxXC2S300E 系列 FPGA 来实现增强视频功能和其他的一些连带功能。默认模式下,FPGA 通过 DM642 的视频端口 2 输出视频到 Phillips SAA7105视频编码器。对于 HDTV; FPGA 提供增强的时钟;对于 OSD 功能;FPGA 提供了 FIFOs,将视频端口 2 的数据与 FIFOs 端口的数据进行混合。FPGA 的 FIFOs 在通过 CE3 空间的同步模式下,通过DM642
14、 的 EMIF 进行存取。(12)以太网端口。在独立的模式下,DM642 的以太网 MAC 被自动选择,并通过 CBT 发送给PHY。本系统设计使用的是 IntelLXT971 PHYO 10/100Mbit 的端口被隔离,输出至 RJ-45 标准的以太网接口,JSa PHY 直接连接到 DM642。在制作过程中,以太网的地址存储在 I2C 的连续ROM 中。RJ- 45 接口具有 2 个指示灯,使它成为一个完整的端口。2 个指示灯分别是绿灯和黄灯,用来指示以太网的连接状态。绿灯亮,指示已连接,绿灯一闪一闪,指示连接正在活动;黄灯亮,指示满双方模式。二、 系统的软件设计1、 数据流程(1)输入
15、设备提供的一帧图象被采集到输人缓存,由 YUV4:2:2 格式进行重抽样变为 YUV4:2:0格式。(2)图象数据由输人任务模块通过一个 SCOM 序列提供给处理模块。(3)提供图象数据给 JPEG 编码库程序,动态检测即与以前图象作比较,动态部分被压缩成 JPEG图象并通过 SCOM 消息发送到网络任务模块。(4)网络任务模块建立 JPEG 副本,当网上有一个对等端点连接到网络并申请“记录”,网络任务模块发送这些图象到对等端点。(5)如果网上有一个对等端点请求“回放”连接,网络任务模块将从那个对等端点接收新的JPEG 图象,并发送原始和更新的图象到处理任务模块,消息通过 SCOM 序列发送。
16、解码产生的YUV 4:2:0 格式的图象被重新采样成 YUV4:2:2 格式的图象。(6)JPEG 图象被作为解码器的输人,解码的图象通过 SCOM 序列进行传输到输出任务模块。(7)输出任务模块转换 YUV 4:2:0 格式的解码图象成 YUV 4:2:2 格式图象并送交显示,显示设备显示输出的图象。2、 数据流图,如图 1图 1 数据流图3. 程序流程(1)实验程序采用 RF-5 来整合 JPEG 的编码、解码库。程序使用了 6 个任务模块结构。其中 4个任务上图中已描述。第 5 个任务是一个控制任务,它使用一个邮箱发送消息给处理任务模块。处理任务模块从邮箱接收消息,并根据消息中指定的图象
17、质量调节图象帧率。第 6 个任务模块是网络初始化模块,它由 CDB 文件定义处理网络环境的初始化。当网络准备好后,上图中的网络任务模块就被建立。在进人 DSP/BIOS 的调度程序之前,程序初始化了多个要使用的模块,包括:1)处 理 器 和系统板的初始化:初始化 BIOS 环境和 CSL,设置使用 128K 的二级高速缓存,设置二级高速缓存可映射到 EMIF 的 CEO 和 CE1 空间,设置 DMA 优先级序列长度取最大值,设置二级高速缓存的请求优先级最高,DMA 管理器用内部的和扩展堆初始化。2)RF-5 模块的初始化:系统初始化 RF-5 的通道模块,系统初始化 RF- 5 框架中用于内
18、部单元通讯和传递消息的 ICC 和 SCOM 模块,各通道建立在内部的和扩展的堆上。3)建立摄入和显示通道:建立和启动一个摄人通道的实例。(2) 在完成初始化工作之后,系统进入 DSP/BIOS 调度程序管理下的 6 个任务系统。6 个任务通过 RF-5 的 SCOM 模块互相发送消息。以下是这 6 个任务:1)输人任务。输人任务从输入设备驱动程序获得视频图象。它使用驱动程序提供的 FVIDesex change 调用从输人设备获得一帧最新视频图象。获得的图象是 YUV 4:2:2 格式的,它被重采样成 YUV4:2:0。输入任务接着发送消息到处理任务,消息中包含图象数据指针。接着等待处理任务
19、发送来的消息以继续处理。2)处理任务。处理任务包含两个单元。第一个单元是一个 JPEG 编码单元,它接受 YUV 4:2:0格式的图象,产生用户定制压缩质量的 JPEG 图象。第二个单元是一个 JPEG 解码单元,它接收JPEG 压缩图象并生成解压缩图象。解码的图象格式是 YUV 4:2:0 的。首先,如果激活标注,则处理任务模块在输人的图象上加注时间码。然后图象被传输给编码算法单元。当 JPEG 图象生成后,原始图象将进行动态检测,方法是在固定网格点上进行象素比较。JPEG 图象同动态检测结果都传输给网络任务模块供后续处理。当网络任务模块完成处理后,它将返回一个 JPEG 图象给处理任务模块
20、供解码显示。此图可以是刚才传输给网络任务模块的图象或是刚从网络上得到的图象。解码完成后,如果设置标注网格,处理任务模块在图象上标注网格。通过发送一个SCOM 消息,输出的图象接着发送给输出任务。3)输出任务。输出任务将图象显示在显示设备上。它使用输出驱动程序提供的 FVID-exchange调用实现图象的显示。它得到的图象的格式是 YUV 4:2:0 的,需要重新采样成 YUV 4:2:2 格式。然后等待处理任务发来的消息以继续运行。4)控制任务。控制任务管理可选参数,可以控制 JPEG 图象帧率和压缩质量。控制任务检测参数的改变,这些参数定义在一个全局结构“External Control“
21、,同时将更新的参数复制到任务自定义的结构“ExternalCo ntrol-prev“中,并向处理任务模块的邮箱中发送消息。处理任务模块定时检测这些消息并调用相应单元的控制函数。5)网络初始化任务。网络初始化任务启动网络环境。当网络准备好后,建立网络任务。 6)网络任务网络任务用于支持系统中的网络功能调用。当它初始化完成后,它开始监听两个端口(3001 和 3002). 3001 端口用于“回放”连接,当客户端希望发送视频流给 DSP。端口 3002用于“记录”连接,当客户端希望从 DSP 接收视频流。网络任务模块接着等待一个从处理模块发来的 SCOM 消息,其中应包含可供使用的新的 JPEG
22、 图象。首先,网络模块用发来的 JPEG 图象在 RAM 中建立一个可由 HTTP 服务器识别和可发送到 HTTP 客户端的图象文件(IMAGE 1.JPG)当一个“记录”连接激活时,网络模块首先检测是否客户端发送过来一些命令。命令包含设置日期和时间、是否显示日期和时间、是否显示网格在输出图象上。然后,接收的 JPEG 图象要进行活动检测。如果图象有改变,则发送图象到“记录”连接上。否则发送空文件指示以使客户端的图象保持同步。下一步,如果一个“播放”连接被激活,从连接中得到一个新的 JPEG 图象。这个新的图象就替代处理模块发来的图象。网络模块回传 JPEG 图象给处理模块,通过发送一个 SCOM 消息。三、调试与结论本系统在美国 TI 公司提供的集成开发环境 CCS2.2 版本下调试通过,它对于安防监控领域有着广阔的应用前景。