基于NiosII的IP Camera传输系统实现

[09-14 01:02:00]   来源:http://www.88dzw.com  电子制作   阅读:8362

文章摘要:1 引言随着网络技术的发展,人们对监控功能要求越来越高,网络摄像头以其特有的优势改变了传统监控手段,为远程实时监控提供了出色的解决方案。人们只需打开网页或视频浏览器就可实时查看需要监控场所的安全情况。2 系统的硬件设计IP Camera的硬件架构如图1所示,这是笔者参与开发的一种基于Altera公司NiosII嵌入式软核CPU的网络视频传输设计方案,实现了以太网内视频数据传输。FPGA采用的是Altera公司的Cy-cloneII系列的EP2C35F672C6器件。IP camera主要是由视频采集、Cyclone FPGA及系统存储和网络传输等3部分组成。由于Cyclone FPGA及系统存

基于NiosII的IP Camera传输系统实现,标签:电子小制作,http://www.88dzw.com

1 引言

  随着网络技术的发展,人们对监控功能要求越来越高,网络摄像头以其特有的优势改变了传统监控手段,为远程实时监控提供了出色的解决方案。人们只需打开网页或视频浏览器就可实时查看需要监控场所的安全情况。

  2 系统的硬件设计

  IP Camera的硬件架构如图1所示,这是笔者参与开发的一种基于Altera公司NiosII嵌入式软核CPU的网络视频传输设计方案,实现了以太网内视频数据传输。FPGA采用的是Altera公司的Cy-cloneII系列的EP2C35F672C6器件。IP camera主要是由视频采集、Cyclone FPGA及系统存储和网络传输等3部分组成。由于Cyclone FPGA及系统存储的电路设计具有一定的通用性,所以这里仅介绍视频采集和网络传输的电路设计。

基于NiosII的IP Camera传输系统实现

  2.1视频采集模块设计

  本系统设计的视频采集器件采用ADV7181B。ADV7181B是一款集成的视频解码器,通过配置可以接收CVBS复合视频、S-Video及YPrPb分量多种模拟信号,ADV7181B的数字输出是16位或8位、并与CCIR656标准兼容的YCrCb4:2:2视频数据,还包括垂直同步VS、水平同步HS及场同步信号。

  本系统设计选用ADV7181B的AIN6作为CVBS复合视频信号的输入,ADV7181B的输出数据采用8位的数据宽度。ADV7181B的27 MHz时钟由FPGA提供,FPGA通过I2C总线读/写ADV7181B的寄存器控制ADV7181B,ADV7181B的I2C总线读地址为0x40,写地址为0x41。ADV7181B的8位YCrCb4:2:2视频输出数据及其他输出信号直接连接至FPGA。视频采集电路模块电路图如图2所示。

基于NiosII的IP Camera传输系统实现

www.88dzw.com

  LWIP是瑞士计算机科学院的开发的TCP/IP协议栈,其开发的初衷是用于嵌入式系统,一般它只需要几十KB的RAM和约40 KB的ROM就可运行。NiosII IDE开发环境内部集成了LWIP协议栈,用户在加载操作系统μC/OS-II后,只需选取相应的LWIP选项,即可加入协议栈。工程中,LWIP以系统库的形式存在,应用软件只需加上相应的头文件,就可调用API函数实现网络连接、数据收发等功能,迅速实现系统的网络接入。

  3.2建立应用软件

  本系统设计的嵌入式应用软件流程图如图4所示。

基于NiosII的IP Camera传输系统实现

  首先对堆栈和驱动程序初始化。初始化堆栈,应在调用OSStart启动μC/OS-II调度程序之前调用IDE的库函数lwip_stack_int(),该函数用于设置协议栈。堆栈初始化后,再调用库函数init_done_func(),但该函数必须调用库函数lwip_devices_init(),这个函数将对在system.h中定义的所有已安装的以太网设备驱动程序进行注册。函数lwip_devices_init()还会调用函数get_mac_addr()和函数get_ip_address()从而获取系统的mac地址和IP地址。当lwip_devices_init()返回一个非0值则表示注册成功。注册成功后,LWIP栈可用,从而便可在程序中创建任务。

  初始化完成后,使用函数sys_thread_new()创建使用套接字API与LWIP栈对话的新任务。系统中,由函数sys_thread_new(link_task,NULL,link_PRIO)创建的用户任务是link_task()。该任务中,系统调用函数listen(fd_listen,1)监听上位机连接是否成功,一旦连接成功,调用NiosII IDE所提供的IO操作函数IOWR(OUT_PIO_BASE,0,0x01)控制接收模块,将视频数据保存到SRAM,当存满一帧后,接收模块产生一个中断,这时系统可通过指针读取SRAM中的值a[i]=*(p+i+N/2*(TIMES-times),每读取1 450 Byte就调用套接字API函数send(clisock,send_buf,N,0)发送至上位机。由于保存图像的分辨率仅是320×240,所以数据量并不大。发送时,通过函数IOWR(OUT_PIO_BASE,0,0x00)控制接收模块何时停止接收,一帧图像发送完毕,再通过函数IOWR(OUT_PI-O_BASE,0,0x01)控制接收模块开始接收下一帧图像,如此反复循环,直到连接断开为止。

[1] [2]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《基于NiosII的IP Camera传输系统实现》相关文章