当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]浅谈千兆网接口的摄像机设计与实现

1 引 言

随着监控系统在商用民用的日渐普及,监控系统主要由前端监视设备、传输设备、后端控制显示设备这三大部分组成,其中后端设备可进一步分为中心控制设备和分控制设备。前、后端设备有多种构成方式,它们之间的联系(也可称作传输系统)可通过电缆、光纤或微波等多种方式来实现。视频监控摄像机广泛应用于居民住宅、楼盘别墅、商场店铺、财务室。每个不同的应用领域,需要有不同类型的监控摄像机。传统的监控摄像机图像分辨率低,难以满足一些有特殊要求的应用场合。利用网络来实现对高分辨率高帧率视频图像传输是视频监控系统的一种重要思想。本文提出了基于千兆以太网传输视频图像并充分利用了FPGA并行处理和SDRAM高速缓存的优势,提高了视频图像的传输速度。

2 硬件总体设计

硬件总体框架如上图,主控制器FPGA选用altera公司高性价比芯片EP2C20F256C6N.系统工作频率为100M.图像传感器的数据首先在FIFO里缓冲后暂存于SDRAM,在网络空闲时将暂存的图像数据经FIFO2缓冲后送MAC芯片,再发送到网络上。

CMOS芯片中文名称:互补型金属氧化物半导体 芯片类型:随即存贮器(断电会丢失数据的那种)容量:128~256字节是一种低耗电存储器,其主要作用是用来存放BIOS中的设置信息以及系统时间日期。应该把它和BIOS芯片区别开。早期的CMOS芯片是一块单独的芯片MC146818A(DIP封装),共有64个字节存放系统信息。386以后的微机一般将 MC146818A芯片集成到其它的IC芯片中(如82C206,PQFP封装),586以后主板上更是将CMOS与系统实时时钟和后备电池集成到一块叫做DALLDA DS1287的芯片中。随着微机的发展、可设置参数的增多,现在的CMOS ROM一般都有128字节及至256字节的容量。CMOS芯片选用MICRON TECHNOLOGY的MT9P031,在500万像素的满分辨率下最高可输出14帧的图像数据。 SDRAM选用W982516BH-75,容量为32Mbytes,g与FPGA内部FIFO结合可设计为32Mbytes的大容量循环缓存,在图像分辨率为300万像素时可缓存10帧以上图像数据。千兆网接口MAC芯片选用AX88180,物理层芯片选用88E1111,再通过网络变压器及RJ45用六类网线与计算机千兆网卡相连。

3 千兆网接口设计

AX88180是亚信公司推出的一款高性能低成本的Non-PCI千兆以太网控制器,适用于多种需要高速接入网络的嵌入式系统,如消费电子和家庭网络等。AX88180内置10/100/1000 Mb/s以太网媒体存取控制器(MAC),符合IEEE 802.3/IEEE 802.3u/IEEE 802.3ab协议,可与一般16/32位微控制器连接,其操作与SRAM相同。AX88180内置10/100/1000 Mb/s以太网媒体存取控制器(MAC),与PHY之间采用RGMII接口;内置主机接口控制器,可以与16/32位主机方便连接寻址方式与SRAM相同;内置40 KB SRAM网络封包缓存器,其中32 KB用于从PHY接收数据包,KB用于主机发送数据包到PHY,可以用高效方式进行封包的存储、检索与修改;内置256字节的配置寄存器,用于主机控制和参数设置;内置EEP-ROM接口;图2为AX88180及PHY芯片88E1111的连接图。
 

3.1 千兆网接口初始化

千兆网接口的初始非常重要,如果初始化不正确,系统将无法正常工作。对接口的初始化主要包括对AX88180和88E1111的初始化。

代码用verilog语言完成。Verilog HDL是目前应用最为广泛的硬件描述语言。Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。Verilog HDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。Verilog HDL进行设计最大的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。具体代码可参考亚信公司的驱动程序代码,应注意初始化时需要加入一些固定的延时以确定芯片正常工作。

3.2 图像数据的封包

当图像的分辨率为2048×1536时,一个UDP数据包包含1024字节的图像数据和两个bytes图像行编号。当计算机收到数据包时,根据图像行编号信息放入对应的内存中,可以很方便的组合成一副完整的图像。以下这FPGA写入AX88180的UDP包头代码。

  case(param_num)

  'd0: w_dd <= 'hFFFF;//目的MAC地址(广播地址),写三次

  'd3: w_dd <= 'h1111;//源MAC地址,均为0x1111,写三次

  'd6: w_dd <= 'h0008;//协议号

  'd7: w_dd <= 'h0045;//固定数据VIP4,

  'd8: w_dd <= 'h1E04;//IP包总长度1026+28,并且高低8位交换

  'd9: w_dd <= 'h0;//ID号,始终为0

  'd10:w_dd <= 'h0;//fragment offset始终为0;

  'd11:w_dd <= 'h1140;//生存期和协议号,固定

  'd12:w_dd <= 'h0;//IP校验和,由MAC芯片自动生成

  'd13:w_dd <= 'hA8C0;//源IP,固定为192.168.1.204

  'd14:w_dd <= 'hCC01;

  'd15:w_dd <= 'hFFFF;//目的IP,任意

  'd16:w_dd <= 'hFFFF;

  'd17:w_dd <= 'h7017;//源端口,固定为6000

  'd18:w_dd <= 'h7017;// 目的端口,固定为6000

  'd19:w_dd <= 'h0A04;//UDP数据长度

  'd20:w_dd <= 'h0;////校验和由AX88180自动生成

  'd21:w_dd <= row_num;//图像行信息从0开开始

  default:w_dd <= w_dd;

  endcase

3.3 应用程序设计

由于大量数据在网络上传输,用SOCKET的方式来获图像数据包已经比较困难,丢包率会比较高。采用Winpcap来捕获网络上的数据包,可有效的减少丢包率。

  第一步,指定要通信的网卡设备并打开。

  BOOL InitWpcap(){

  pcap_if_t* alldevs;

  pcap_if_t* d;

  char errbuf[PCAP_ERRBUF_SIZE];

  if(pcap_findalldevs(&alldevs, errbuf) == -1){

  AfxMessageBox("Error in pcap_findalldevs");

  return FALSE; }

  // 枚举网卡然后添加到用户选择的ComboBox中,代码省略

  char *filter = "port 6000";//只接收端口6000的数据

  bpf_u_int32 NetMask = 0xFFFFFF;

  struct bpf_program fcode;

  if(pcap_compile(m_pcap, &fcode, filter, 1, NetMask) < 0){

  AfxMessageBox("nError compiling filter: wrong syntax");

  pcap_close(m_pcap);  return FALSE; }

  if(pcap_setfilter(m_pcap, &fcode)<0){

  AfxMessageBox("nError setting the filtern");

  pcap_close(m_pcap); return FALSE; }

  pcap_freealldevs(alldevs); // 释放alldev资源

  return TRUE;}

第二步:开启一个线程接收数据。

  UINT  RecvProc(LPVOID lpParammeter)

  { pcap_loop(m_pcap, 0, packet_handler, NULL); return 0;}

packet_handler是处理收到数据包的回调函数, 当从port6000收到数据后它会被调用,直到线程终止。

第三步:处理收到的数据

  void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data){

  const u_char *real_data = pkt_data+42;

  int row=real_data[0]+(real_data[1]《8); }//这里就没有处理包头,直接处理数据。

4 总结

兆网接口摄像机,网络传输有效数据带宽达400Mb/s以上,较好的解决了百兆网传输带宽不足、数据传输速度慢的问题。传输300万像素不进行压缩的原始图像,帧率可达18帧/秒,视频流畅清晰。计算机采用Winpcap捕获图像数据,丢包率小于0.02%.winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且MS也已经放弃了对win9x的开发。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭