电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 其它 > 详细信息
其它:基于S3C2410的MPEG-4数字录像机的设计与实现
来源: 微计算机信息/危自福 毕笃彦 杨洋   时间: 2007-9-26 9:30:57    

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

  1 系统总体设计及原理

系统电路主体框图


  本系统选择嵌入式微处理器加专用压缩编码芯片的方案,系统电路主体框图如图1所示,主要由视音频解码芯片、视音频压缩编码芯片、核心微处理器控制模块、电源模块以及各种外部接口等组成。系统采用单一5V电源供电,正常启动后,视频、音频解码芯片SAA7114PCM1800分别对对输入的模拟视频、音频信号进行解码,并分别送入压缩编码芯片IME6400进行压缩生成MPEG-4复合流,控制芯片S3C2410IME6400的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]:

  ret=register_chrdev(IME6400_MAJOR,"ime6400",&ime6400_fops)

  设置并且申请中断及注册中断处理函数:

  set_external_irq(IRQ_EINT19, EXT_FALLING_EDGE, GPIO_PULLUP_DIS) request_irq(IRQ_EINT19, &ime 
6400_irq, SA_INTERRUPT,"ime6400", NULL)

  注册设备文件系统:

  ime6400_devfs_dir= devfs_register(NULL,"ime6400",DEVFS_FL_DEFAULT,IME6400_MAJOR,0, S_IFCHR |S_IRUSR |S_IWUSR |S_IRGRP |S_IWGRP,&ime6400_fops, NULL)

  l         OPEN函数递增模块使用计数,防止没有释放设备就把模块卸载了。

  l         READ函数阻塞等待数据缓冲区满,然后把数据从内核空间复制到用户空间。

  l         IOCTRL函数实现从用户空间向内核空间传递参数,用于设置IME6400工作模式。

  l         中断处理函数读取IME6400输出的MPEG-4码流数据存入内核缓冲区,并通知IME6400数据读取完毕。Linux将中断处理函数分为两部分:顶半部(top half)是实际响应中断的例程,底半部(bottom half)是一个被顶半部调用在稍后安全的时间内运行的例程[5]。Linux采用Tasklet机制实现底半部处理,通过宏DECLARE_TASKLET可以声明Tasklet:

  static DECLARE_TASKLET(ime_tasklet,do_tasklet,NULL),其中do_tasklet函数实际处理中断,从IME6400读取数据至内核缓冲区。通过函数tasklet_schedule()可以调度一个Tasklet运行:tasklet_schedule(&ime_tasklet) 。

  本系统应用程序主要实现从驱动层接收MPEG-4码流数据并存储至硬盘,主要采用多线程编程的方式,主程序创建了读和写线程两个线程:首先,用户程序读线程调用read(),此时编码尚未开始,驱动进行ime6400_read()无数据可读,进入睡眠态,用户进程被阻塞。此后中断到来,中断处理程序从IME6400读取数据存入内核缓冲区,若缓冲区满则唤醒睡眠的ime6400_read(),并往IME6400的USER4寄存器写入一个新值,通知IME6400数据已读取完毕,启动新一轮的编码。ime6400_read()被唤醒后,将内核缓冲区数据拷贝到用户缓冲区,然后返回并等待用户进程的下一次调用。ime6400_read()返回后,用户空间读到编码数据退出阻塞状态,然后读线程以信号量通知写线程,由写线程完成将缓冲区数据存储至硬盘。

  4 结束语

  系统目前已完成了初步调试,可实时压缩存储最大分辨率为720x576全帧率的4:2:2的彩色视频,采用2G的电子硬盘,在720x576分辨率下可记录2小时以上,且图像质量较好。同时系统还具有较好的灵活性,可以通过设置视频图像分辨率大小、量化系数、帧率等参数,来达到对图像大小、图像质量及码率等方面的不同要求,以满足不同场合应用的需要。

相关信息
发表评论
打印本页 关闭本页
高速大深度新型FIFO存储器IDT72V3680的应用
  1 FIFO概述     FIFO芯片是一种具有存储功能的高速逻辑芯片,可在高速数字系统中用作数据缓存。FIFO通常利用双口RAM和读写地址产生模块来实现其功能。FIFO的接口信号包括异步写时钟(wr-clk)和读时钟(rd-clk)、与写时钟同步的写有效(wren)和写数据(wr-data)、与读时钟同步的读有效(rden)和读数据(rd-data)。写地址产生模块一般还根据读地址和写地址来产生FIFO的满标志。读...
>>详细内容
大容量NANDFLASH在ARM嵌入式系统中的设计与实现
  1引言 随着嵌人式系统在数码相机、数字摄像机、移动电话、mp3音乐播放器等移动设备中越来越广泛的应用,FLASH存储器已经逐步取代其他半导体存储元件,成为嵌入式系统中主要数据和程序载体。FLASH存储器又称闪存,是一种可在线多次擦除的非易失性存储器,即掉电后数据不会丢失。FLASH存储器还具有体积小、功耗低、抗振性强等优点,是嵌入式系统的首选存储设备。 NAND和NORFLASH是现在...
>>详细内容
在FPGA中基于信元的FIFO设计方法
    设计工程师通常在FPGA上实现FIFO(先进先出寄存器)的时候,都会使用由芯片提供商所提供的FIFO。但是,由于其通用性使得其针对性变差,某些情况下会变得不方便或者将增加硬件成本。此时,需要进行自行FIFO设计。本文提供了一种基于信元的FIFO设计方法以供设计者在适当的时候选用。这种方法也适合于不定长包的处理。   FIFO在数字通讯芯片领域中有两个主要的作用,缓冲数据...
>>详细内容
基于FPGA 的DDR SDRAM控制器在高速数据采集系统中应用
    实现数据的高速大容量存储是数据采集系统中的一项关键技术。本设计采用Altera 公司Cyclone系列的FPGA 完成了对DDR SDRAM 的控制,以状态机来描述对DDR SDRAM 的各种时序操作,设计了DDR SDRAM 的数据与命令接口。用控制核来简化对DDR SDRAM 的操作,并采用自顶至下模块化的设计方法,将控制核嵌入到整个数据采集系统的控制模块中,完成了数据的高速采集、存储及上传。使用开发软件Qua...
>>详细内容
基于DSP芯片PNX1501的NandFlash在线烧录系统
  0 引言   随着电子产品市场的不断扩大,闪存器无疑将获得极大的增长。这种增长在很大程度上取决于存储器的非易失性、低功耗、高密度和重量轻等特点。多项优点集于一身使得闪存器在移动电子和嵌入式领域中得到了极大的应用。而nand-Flash价格便宜量又足,性价比也很高,且十分轻便,抗震性也很不错,很适合用来做数码产品,现在的单片nandFlash芯片的存储容量已经可以做到4 GB。很难想像...
>>详细内容
基于ARM9内核Processor外部NANDFLASH的控制实现
  NANDFLASH   NAND写回速度快、芯片面积小,特别是大容量使其优势明显。页是NAND中的基本存贮单元,一页一般为512B(也有2kB每页的largepageNANDFLASH),多个页面组成块。不同存储器内的块内页面数不尽相同,通常以16页或32页比较常见。块容量计算公式比较简单,就是页面容量与块内页面数的乘积。根据FLASHMemory容量大小,不同存储器中的块、页大小可能不同,块内页面数也不同。例如:...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com