位置:51电子网 » 技术资料 » 其它综合

基于S3C2410的MPEG-4数字录像机的设计与实现

发布时间:2008/6/5 0:00:00 访问次数:485

微计算机信息/危自福 毕笃彦 杨洋

  视频信息在现代信息化战争发挥日益重要的作用,在视频监控、侦察、机载或车载视频记录等方面都得到了越来越广泛应用,这种形势对数字视频监控记录设备的研制提出了新的要求:大批量的应用要求降低监控记录设备成本,多样的应用环境、分散、孤立的监控点要求监控记录设备尽可能一体化、小型化、独立、便携、低功耗、供电方便、性能可靠。针对这些新问题和新要求,笔者设计实现了一种基于嵌入式系统和mpeg-4编码标准的数字录像机,系统集成度高、体积小、功耗低、独立、便携,适合大量的各类视频监控和记录应用。

  1 系统总体设计及原理


  本系统选择嵌入式微处理器加专用压缩编码芯片的方案,系统电路主体框图如图1所示,主要由视音频解码芯片、视音频压缩编码芯片、核心微处理器控制模块、电源模块以及各种外部接口等组成。系统采用单一5v电源供电,正常启动后,视频、音频解码芯片saa7114和pcm1800分别对对输入的模拟视频、音频信号进行解码,并分别送入压缩编码芯片ime6400进行压缩生成mpeg-4复合流,控制芯片s3c2410从ime6400的host接口接收数据并以文件的形式存储至硬盘,并完成系统的总体控制

  2 硬件设计

  2.1 视频音频解码及压缩编码部分设计

  视频a/d芯片选用philips公司的saa7114,该芯片支持多种输入模式,具有抗混叠滤波、自动增益变换、亮度、对比度调整等功能。通过设定saa7114的内部的配置寄存器93h[6]为1使能其host端口,实现与ime6400的无缝连接。音频a/d芯片采用burr-brown公司的pcm1800,它对模拟音频进行高信噪比20bit数字采样,生成pcm数字音频流。

  压缩编码采用intime公司的mpeg-4编码芯片ime6400。该芯片是一款高性能的单片多通道mpeg-4数字压缩编码芯片,它支持多种编码模式和比特率控制,并提供了丰富的外围硬件接口。其外部host接口有四种模式,由mode引脚来决定,本系统选用异步模式:mode[1:0] pin = 11。在此模式下,ime6400对输入的视频音频流进行压缩和复合,产生mpeg-4的系统流,然后经过输出端口大小为1k的fifo缓冲进行数据的输出,当fifo满,其gpio0脚就产生一个下降沿的中断通知主机读取fifo中的数据,主机通过512次(16bit主机)读ime6400 host端口的encodedstream寄存器完成数据的读取,外部主机通过写一个不同的值到user4寄存器来通知ime6400数据传输已完成[1]。

  2.2 控制、接口及存储部分设计

  系统控制模块选用三星的s3c2410微处理器,这是一个采用arm920t内核,高性能、低功耗、低成本的32位微处理器[2]。为了提高设计和应用的灵活性,硬件设计上采用核心板加底板的模块化设计方法,在核心板上集成了基于s3c2410的最小系统,通过底板来扩展外部功能。在核心板上主要配置了64mb的nandflash 和64mb的sdram及提供rtc时钟和工作时钟的晶体,并将其丰富的外设接口资源引出。在底板上扩展出usb主机接口、以太网口、uart接口、ide接口等,以实现与外部设备间的数据传输和通信。

  s3c2410并不带有ide控制模块,接口电路需另行设计,图2是ide接口电路示意图。电路利用s3c2410的第5个bank的片选信号ngcs4和地址信号add4和add5相或后形成ide接口的两个片选信号nide_cs0、nide_cs1,s3c2410的读写信号noe、nwe 则直接用于ide接口读写信号nior、niow。该方法将ide接口映射到了s3c2410的第5个memory bank中, s3c2410将ide设备视为普通的存储器,以相同的方式访问,这大大降低了系统软件开发的复杂度[3]。


  采用类似ide接口的方式将ime6400的host接口映射到处理器的第6个memory bank中。系统存储部分采用体积小、抗震性好、温度范围宽的电子硬盘作为存储器。

  3 软件设计

  由于linux系统具有稳定、高效、易定制、易裁减、开放源码等优点,本系统选用嵌入式linux作为操作系统,在此系统下实现ime6400驱动程序设计和相关应用程序设计。

  linux 将设备当作文件处理,编写linux驱动程序的最主要工作就是file_operations结构中各入口点的实现,即对应于open()、release()、read()、write()、ioctrl()等系统调用子函数的编写[4]。同时本系统的设备驱动程序采用灵活性较好的动态加载方式,驱动程序还应包括模块初始化函数和模块注销函数。下面介绍几个主要函数及其功能:

模块初始化函数在驱动程序被加载的时候被调用,主要完成以下功能:

  申请挂载总线上的视频编码芯片的实际物理地址空间并且将它映射到虚拟地址空间:

  request_region(base_addr,0x100,"ime6400")

  vbase = ioremap_nocache(base_addr,0x100)

  注册设备并获取主设备号[4]

微计算机信息/危自福 毕笃彦 杨洋

  视频信息在现代信息化战争发挥日益重要的作用,在视频监控、侦察、机载或车载视频记录等方面都得到了越来越广泛应用,这种形势对数字视频监控记录设备的研制提出了新的要求:大批量的应用要求降低监控记录设备成本,多样的应用环境、分散、孤立的监控点要求监控记录设备尽可能一体化、小型化、独立、便携、低功耗、供电方便、性能可靠。针对这些新问题和新要求,笔者设计实现了一种基于嵌入式系统和mpeg-4编码标准的数字录像机,系统集成度高、体积小、功耗低、独立、便携,适合大量的各类视频监控和记录应用。

  1 系统总体设计及原理


  本系统选择嵌入式微处理器加专用压缩编码芯片的方案,系统电路主体框图如图1所示,主要由视音频解码芯片、视音频压缩编码芯片、核心微处理器控制模块、电源模块以及各种外部接口等组成。系统采用单一5v电源供电,正常启动后,视频、音频解码芯片saa7114和pcm1800分别对对输入的模拟视频、音频信号进行解码,并分别送入压缩编码芯片ime6400进行压缩生成mpeg-4复合流,控制芯片s3c2410从ime6400的host接口接收数据并以文件的形式存储至硬盘,并完成系统的总体控制

  2 硬件设计

  2.1 视频音频解码及压缩编码部分设计

  视频a/d芯片选用philips公司的saa7114,该芯片支持多种输入模式,具有抗混叠滤波、自动增益变换、亮度、对比度调整等功能。通过设定saa7114的内部的配置寄存器93h[6]为1使能其host端口,实现与ime6400的无缝连接。音频a/d芯片采用burr-brown公司的pcm1800,它对模拟音频进行高信噪比20bit数字采样,生成pcm数字音频流。

  压缩编码采用intime公司的mpeg-4编码芯片ime6400。该芯片是一款高性能的单片多通道mpeg-4数字压缩编码芯片,它支持多种编码模式和比特率控制,并提供了丰富的外围硬件接口。其外部host接口有四种模式,由mode引脚来决定,本系统选用异步模式:mode[1:0] pin = 11。在此模式下,ime6400对输入的视频音频流进行压缩和复合,产生mpeg-4的系统流,然后经过输出端口大小为1k的fifo缓冲进行数据的输出,当fifo满,其gpio0脚就产生一个下降沿的中断通知主机读取fifo中的数据,主机通过512次(16bit主机)读ime6400 host端口的encodedstream寄存器完成数据的读取,外部主机通过写一个不同的值到user4寄存器来通知ime6400数据传输已完成[1]。

  2.2 控制、接口及存储部分设计

  系统控制模块选用三星的s3c2410微处理器,这是一个采用arm920t内核,高性能、低功耗、低成本的32位微处理器[2]。为了提高设计和应用的灵活性,硬件设计上采用核心板加底板的模块化设计方法,在核心板上集成了基于s3c2410的最小系统,通过底板来扩展外部功能。在核心板上主要配置了64mb的nandflash 和64mb的sdram及提供rtc时钟和工作时钟的晶体,并将其丰富的外设接口资源引出。在底板上扩展出usb主机接口、以太网口、uart接口、ide接口等,以实现与外部设备间的数据传输和通信。

  s3c2410并不带有ide控制模块,接口电路需另行设计,图2是ide接口电路示意图。电路利用s3c2410的第5个bank的片选信号ngcs4和地址信号add4和add5相或后形成ide接口的两个片选信号nide_cs0、nide_cs1,s3c2410的读写信号noe、nwe 则直接用于ide接口读写信号nior、niow。该方法将ide接口映射到了s3c2410的第5个memory bank中, s3c2410将ide设备视为普通的存储器,以相同的方式访问,这大大降低了系统软件开发的复杂度[3]。


  采用类似ide接口的方式将ime6400的host接口映射到处理器的第6个memory bank中。系统存储部分采用体积小、抗震性好、温度范围宽的电子硬盘作为存储器。

  3 软件设计

  由于linux系统具有稳定、高效、易定制、易裁减、开放源码等优点,本系统选用嵌入式linux作为操作系统,在此系统下实现ime6400驱动程序设计和相关应用程序设计。

  linux 将设备当作文件处理,编写linux驱动程序的最主要工作就是file_operations结构中各入口点的实现,即对应于open()、release()、read()、write()、ioctrl()等系统调用子函数的编写[4]。同时本系统的设备驱动程序采用灵活性较好的动态加载方式,驱动程序还应包括模块初始化函数和模块注销函数。下面介绍几个主要函数及其功能:

模块初始化函数在驱动程序被加载的时候被调用,主要完成以下功能:

  申请挂载总线上的视频编码芯片的实际物理地址空间并且将它映射到虚拟地址空间:

  request_region(base_addr,0x100,"ime6400")

  vbase = ioremap_nocache(base_addr,0x100)

  注册设备并获取主设备号[4]

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!