云满曼冷运完成B轮融资,布局数字冷链运输赛道
06-18
1简介 随着网络技术的发展,人们对监控功能的要求越来越高。
网络摄像机以其独特的优势改变了传统的监控方式,提供远程实时监控。
提供了优秀的解决方案。
人们只需打开网页或视频浏览器,就可以实时查看需要监控场所的安全状况。
2 系统硬件设计 IP Camera的硬件架构如图1所示,这是笔者参与开发的基于Altera的NiosII嵌入式软核CPU的网络视频传输设计方案,实现以太网内部视频数据传输。
FPGA采用Altera公司Cy-cloneII系列的EP2C35FC6器件。
IP摄像机主要由视频采集、Cyclone FPGA、系统存储和网络传输三部分组成。
由于Cyclone FPGA和系统存储的电路设计具有一定的通用性,这里仅介绍视频采集和网络传输的电路设计。
2.1 视频采集模块设计 本系统设计的视频采集装置采用ADVB。
ADVB 是一款集成视频解码器,可配置为接收 CVBS 复合视频、S-Video 和 YPrPb 分量模拟信号。
ADVB的数字输出为16位或8位YCrCb4:2,兼容CCIR标准:2视频数据还包括垂直同步VS、水平同步HS和场同步信号。
本系统设计采用ADVB的AIN6作为CVBS复合视频信号的输入。
ADVB的输出数据采用8位数据宽度。
ADVB的27 MHz时钟由FPGA提供。
FPGA通过I2C总线读写ADVB寄存器来控制ADVB。
ADVB的I2C总线读地址是0x40,写地址是0x41。
ADVB的8位YCrCb4:2:2视频输出数据和其他输出信号直接连接到FPGA。
视频采集电路模块的电路图如图2所示。
2.2网络传输模块设计 本系统设计的网络设备采用DMA方式。
DMA是Davicom推出的低功耗高速网络控制器。
该器件具有通用处理器接口、10 M/M PHY 和 4 KB SRAM。
本系统设计的以太网接口电路原理图如图3所示,DMA的48个引脚中TX+、TX-、RX+、RX-分别连接TD+、TD-、RD+、RD分别为RJ45INTLED。

-.LED1和LED2分别连接到RJ45INTLFD的黄色LED和绿色LED接口。
除浮动引脚和电源相关引脚外,其余引脚均连接至 FPGA。
3 系统软件设计 系统软件设计主要包括:建立底层软件平台——NiosII IDE提供的底层软件开发平台、建立应用软件、创建用户传输任务等功能,实现TCP/IP连接和视频数据传输。
3.1建立底层软件平台——μC/OS-II和LWIP 考虑到嵌入式系统资源有限以及NiosII IDE开发环境对μC/OS-II的支持,系统选择μC/OS -II作为操作系统。
在NiosII IDE集成开发环境中,μC/OS-II加载非常方便。
创建工程时只需选择μC/OS-II库选项即可。
更重要的是,它是根据用户在SOPC中构建的硬件平台动态加载的。
在开发系统时,需要不断修改和调整硬件平台以获得最佳配置。
NiosIIIIDE开发环境会根据开发者修改的硬件平台自动加载μC/OS-II。
这样,开发人员就可以解决与操作系统μC/OS-II不匹配的问题,而无需考虑硬件平台。
LWIP 是由瑞士计算机科学院开发的 TCP/IP 协议栈。
它最初是为嵌入式系统开发的。
一般来说,它只需要几十KB的RAM和大约40KB的ROM就可以运行。
NiosII IDE开发环境集成了LWIP协议栈。
加载操作系统μC/OS-II后,用户只需选择相应的LWIP选项即可加入协议栈。
在项目中,LWIP以系统库的形式存在。
应用软件只需添加相应的头文件即可调用API函数来实现网络连接、数据发送和接收等功能,快速实现对系统的网络访问。
3.2 建立应用软件 为本系统设计的嵌入式应用软件流程图如图4所示。
首先初始化堆栈和驱动程序。
要初始化堆栈,您应该在调用 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()返回非零值时,注册成功。
注册成功后,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中,当一帧满时,接收模块产生中断。
此时系统可以通过指针a[i]=*(p+i+N/2*(TIMES-times)读取SRAM中的值,每次读取得到1个Byte,调用socket API函数send(clisock,send_buf,N,0)发送到上位机,由于保存的图像分辨率只有×,所以发送时数据量不大( , 0, 0x00)控制何时接收模块。
停止接收。
一帧图像发送完毕后,通过函数IOWR(OUT_PI-O_BASE,0,0x01)控制接收模块开始接收下一帧图像。
重复此循环,直到连接断开。
迄今为止。
4 PC软件设计 为本系统设计的客户端视频显示应用程序是使用LabWindows/CVI软件开发的。
本应用程序采用socket编程方式,可以作为NiosII系统客户端和服务器之间的纽带。
沟通。
本系统设计的上位机应用程序除了视频显示功能外,还增加了保存和回放功能。
上位机通过创建标准Socket接口完成连接并接收数据;接收到一帧数据后,对其进行数据处理,然后调用函数CreateDIBitmap()创建位图,最后调用函数CanvasDrawBitmap()将其完整显示。
5 结论 本系统设计基于NiosII网络摄像机系统。
介绍了从SOPC Builder创建NiosII软核处理器、IDE建立底层软件平台、到NiosI应用软件设计的整个架构。
同时对上位机的应用程序进行了说明。
经过硬件测试,整个系统运行良好,具有良好的实时性。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-18
06-17
06-17
06-17
最新文章
PCBA质检员的日常工作内容
美国法院裁定VoIP不属于电信服务,需征税
雷达嵌入式工控主板如何使用?工控主板故障分析
摩托罗拉在西班牙促销Z8手机
中宇买下了一台三星机型,品牌和规模是合作的主要原因
舰载军用加固计算机热设计
谷歌开始对仍由HTC生产的谷歌手机进行内部测试
英国EE分享LTE发展经验教训,面临终端-语音-回传三大挑战