FPGA千兆网络摄像头

目录

  • 系统框图
  • 效果图
  • 最后说明

系统框图

FPGA千兆网络摄像头_第1张图片

由框图可以看,有3个地方是比较重要的。

  • 对外部时钟已经处理,因为千兆网时钟达到了125MHz,摄像头时钟达到了84MHz,系统时钟是50MHz,时钟域比较多,这里对外部50MHz的系统时钟进行了pll处理,对gmii_rx_clk也进行了处理,将其送到全局时钟网络上,然后跨时钟域的地方也要小心。因为摄像头的数据送到千兆网上时,时钟不一样,这里采用了异步fifo.
  • 摄像头模块,摄像头配置为640*480,pclk为84MHz,帧率为35fps(84000,000/1500/800/2=35).
assign  cfg_array[266]  =       {8'h78, 16'h3808, 8'h02};       // DVPHO     (640)
assign  cfg_array[267]  =       {8'h78, 16'h3809, 8'h80};       // DVPHO     (640)
assign  cfg_array[268]  =       {8'h78, 16'h380a, 8'h01};       // DVPVO     (480)
assign  cfg_array[269]  =       {8'h78, 16'h380b, 8'he0};       // DVPVO     (480)
                                            
assign  cfg_array[270]  =       {8'h78, 16'h380c, 8'h05};       // HTS       (1500) 
assign  cfg_array[271]  =       {8'h78, 16'h380d, 8'hdc};       // HTS
assign  cfg_array[272]  =       {8'h78, 16'h380e, 8'h03};       // VTS       (800)
assign  cfg_array[273]  =       {8'h78, 16'h380f, 8'h20};       // VTS
  • 千兆网模块,关于这个模块的基本结束可以看我前面关于udp的文章,本模块支持3种包(1280字节udp、20字节udp、arp请求包、arp应答包),其中1280字节udp为数据包,20字节udp为帧开始包,上位机检测到这个20字节包长,就知道一帧图像要开始了。摄像头模块每产生一行数据1280字节,千兆网就自动地将这行数拒发送给上位机。当fpga检测到摄像头的场同步的上升沿时,千兆网模块就会发送20字节的udp包给上位机,上位机是通过检测包长来区分数据和帧开始的。

效果图

最后说明

本实验说明了一行数据过来是可以直接发送的,不需要缓存一帧(千兆网),也不需要发送行号,需要发送帧开始就行了,udp用于摄像头传输效果还是不错的, 基本上是稳定的。

  • 重点:如果使用QT编程,记得使用win socket,不要使用QT的,QT做了一层封装,影响了性能!!!

你可能感兴趣的:(FPGA,千兆网,网络摄像头,FPGA千兆网系列)