OV5640 相机开发流程

@[TOC]

本文是正点原子vitis开发指南的学习笔记。使用的是ov5640双目相机,但仅用到其中一个摄像头。

配置流程

  • 1 配置zynq
    • UART0 (MIO14,15)
    • DDR3 低电压,RE125
    • PS-PL Configuration->HP Slave AXI Interface->勾选S AXI HP0 Interface
    • Clock Configuration->PL Fabric Clocks->FCLK_CLK0设为100
    • MIO Configuration->【I/O Peripheral/GPIO】->勾选EMIO GPIO(Width),其IO设为2
  • 2 配置VDMA
    • Frame Buffers 3
    • 勾选Enable Write Channel
      • Memory Map Data Width设为Auto(默认)
      • Write Burst Size 64
      • Stream Data Width(Auto) 32
      • Lin Buffer Depth 2048
    • 勾选Enable Read Channel
      • Memory Map Data Width 64
      • Read Burst Size 64
      • Stream Data Width 24
      • Line Buffer Depth 2048
    • Advanced选项卡,写入通道为Dynamic-Master,读取通道为Dyamic-Slave
  • 3 配置Video Timing Controller
    • 勾选Enable Generation,取消勾选Enable Detection
  • 4 配置AXI-Stream to Video Out
    • 选中Independent模式
  • 5 配置Video In to AXI4-Stream
    • 选中Independent模式
  • 6 配置Clocking Wizard
    • 【Clocking Options】选项卡->勾选【Clocking Features/Dynamic Reconfig】
    • 【Output Clocks】选项卡->勾选【clk_out1】,将其Output Freq均设为33.3333
  • 7 配置GPIO IP核
    • GPIO Width设为3
  • 8 添加自定义模块rgb2lcd
    • 【Project Manager/Setting】->【IP/Repository】->【➕】->找到自定义IP文件夹->【OK】
    • 【➕】导入rgb2lcd_0
    • 【➕】导入ov5640_capture_data_0
  • 9 手动连线
    • 【ov5640】-【Video In】
      • 【cmos_rgb】-【vid_io_in】
      • 【cmos_frame_clk】-【vid_io_in_clk】
      • 【cmos_frame_ce】-【vid_io_in_ce】
    • 【Video In/video_out】-【VDMA/S_AXIS_S2MM】
    • 【ov5640/rst_n】-【clk_wiz_0/locked】
    • 【VDMA/M_AXIS_MM2S】-【Video Out/video_in】
    • 【Video Out/video_out】-【rgb2lcd/vid_rgb】
    • 【Video Out/vtiming_in】-【VTC/vtiming_out】
    • 【VTC/clk】-【rgb2lcd/pixel_clk】-【clk_wiz/clk_out1】-【Video Out/vid_io_out_clk】
    • 【clk_wiz/clk_in1】-【GPIO/s_axi_aclk】-【Vid Out/aclk】-【VDMA/s_axi_lite_aclk】-【VDMA/m_axi_mm2s_aclk】-【VDMA/m_axis_mm2s_aclk】-【ZYNQ/FCLK_CLK0】
  • 10 Run Block Automation->Run Connection Automation
  • 11 引出引脚

约束文件

本文使用的是双目OV5640摄像头,但只用了其中的一个,其引脚约束为

xdc 复制代码
#72M
create_clock -period 13.888 -name cam_pclk [get_ports cam_pclk]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets cam_pclk_IBUF]


set_property -dict {PACKAGE_PIN W18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[0]}]
set_property -dict {PACKAGE_PIN W19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[1]}]
set_property -dict {PACKAGE_PIN R16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[2]}]
set_property -dict {PACKAGE_PIN R17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[3]}]
set_property -dict {PACKAGE_PIN W20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[4]}]
set_property -dict {PACKAGE_PIN V20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[5]}]
set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[6]}]
set_property -dict {PACKAGE_PIN N17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[7]}]
set_property -dict {PACKAGE_PIN V17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[8]}]
set_property -dict {PACKAGE_PIN V18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[9]}]
set_property -dict {PACKAGE_PIN T17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[10]}]
set_property -dict {PACKAGE_PIN R18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[11]}]
set_property -dict {PACKAGE_PIN Y18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[12]}]
set_property -dict {PACKAGE_PIN Y19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[13]}]
set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[14]}]
set_property -dict {PACKAGE_PIN P16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[15]}]
set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[16]}]
set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[17]}]
set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[18]}]
set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[19]}]
set_property -dict {PACKAGE_PIN Y17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[20]}]
set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[21]}]
set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[22]}]
set_property -dict {PACKAGE_PIN U17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[23]}]
set_property -dict {PACKAGE_PIN N18  IOSTANDARD LVCMOS33} [get_ports lcd_hs]
set_property -dict {PACKAGE_PIN T20  IOSTANDARD LVCMOS33} [get_ports lcd_vs]
set_property -dict {PACKAGE_PIN U20  IOSTANDARD LVCMOS33} [get_ports lcd_de]
set_property -dict {PACKAGE_PIN M20  IOSTANDARD LVCMOS33} [get_ports lcd_bl]
set_property -dict {PACKAGE_PIN P19  IOSTANDARD LVCMOS33} [get_ports lcd_clk]
set_property -dict {PACKAGE_PIN L17  IOSTANDARD LVCMOS33} [get_ports lcd_rst]

set_property -dict {PACKAGE_PIN P14 IOSTANDARD LVCMOS33} [get_ports cam_rst_n]
set_property -dict {PACKAGE_PIN U10 IOSTANDARD LVCMOS33} [get_ports cam_rst_n]
set_property -dict {PACKAGE_PIN V15 IOSTANDARD LVCMOS33} [get_ports cam_pwdn]
set_property -dict {PACKAGE_PIN V11 IOSTANDARD LVCMOS33} [get_ports cam_pwdn]
set_property -dict {PACKAGE_PIN R14 IOSTANDARD LVCMOS33} [get_ports {cam_data[0]}]
set_property -dict {PACKAGE_PIN T9 IOSTANDARD LVCMOS33} [get_ports {cam_data[0]}]
set_property -dict {PACKAGE_PIN U13 IOSTANDARD LVCMOS33} [get_ports {cam_data[1]}]
set_property -dict {PACKAGE_PIN W6 IOSTANDARD LVCMOS33} [get_ports {cam_data[1]}]
set_property -dict {PACKAGE_PIN V13 IOSTANDARD LVCMOS33} [get_ports {cam_data[2]}]
set_property -dict {PACKAGE_PIN V6 IOSTANDARD LVCMOS33} [get_ports {cam_data[2]}]
set_property -dict {PACKAGE_PIN U15 IOSTANDARD LVCMOS33} [get_ports {cam_data[3]}]
set_property -dict {PACKAGE_PIN Y7 IOSTANDARD LVCMOS33} [get_ports {cam_data[3]}]
set_property -dict {PACKAGE_PIN U14 IOSTANDARD LVCMOS33} [get_ports {cam_data[4]}]
set_property -dict {PACKAGE_PIN Y6 IOSTANDARD LVCMOS33} [get_ports {cam_data[4]}]
set_property -dict {PACKAGE_PIN W13 IOSTANDARD LVCMOS33} [get_ports {cam_data[5]}]
set_property -dict {PACKAGE_PIN Y9 IOSTANDARD LVCMOS33} [get_ports {cam_data[5]}]
set_property -dict {PACKAGE_PIN V12 IOSTANDARD LVCMOS33} [get_ports {cam_data[6]}]
set_property -dict {PACKAGE_PIN Y8 IOSTANDARD LVCMOS33} [get_ports {cam_data[6]}]
set_property -dict {PACKAGE_PIN Y14 IOSTANDARD LVCMOS33} [get_ports {cam_data[7]}]
set_property -dict {PACKAGE_PIN W10 IOSTANDARD LVCMOS33} [get_ports {cam_data[7]}]
set_property -dict {PACKAGE_PIN T12 IOSTANDARD LVCMOS33} [get_ports cam_href]
set_property -dict {PACKAGE_PIN U9 IOSTANDARD LVCMOS33} [get_ports cam_href]
set_property -dict {PACKAGE_PIN W14 IOSTANDARD LVCMOS33} [get_ports cam_pclk]
set_property -dict {PACKAGE_PIN W9 IOSTANDARD LVCMOS33} [get_ports cam_pclk]
set_property -dict {PACKAGE_PIN U12 IOSTANDARD LVCMOS33} [get_ports cam_vsync]
set_property -dict {PACKAGE_PIN W8 IOSTANDARD LVCMOS33} [get_ports cam_vsync]
#cam_scl:
set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[0]}]
set_property -dict {PACKAGE_PIN V8 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[0]}]
#cam_sda:
set_property -dict {PACKAGE_PIN U8 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[1]}]
set_property PULLUP true [get_ports {emio_sccb_tri_io[1]}]
相关推荐
明德扬4 小时前
K7+AD9144 多模式实测|8 种 JESD204B 配置全覆盖验证
fpga开发
xyx-3v14 小时前
SOC相对于版上系统的优势是什么?
fpga开发
Aaron15882 天前
RFSOC+VU13P+GPU 在6G互联网中的技术应用
大数据·人工智能·算法·fpga开发·硬件工程·信息与通信·信号处理
stars-he2 天前
基于 Design Compiler 的 UDP Payload 追加控制模块综合与门级后仿真
笔记·fpga开发·udp
尤老师FPGA2 天前
HDMI数据的接收发送实验(十)
fpga开发
逻辑诗篇2 天前
破核拆解:PCIE719——基于Xilinx Zynq UltraScale+的高性能SAS扩展卡设计
fpga开发·架构
逻辑诗篇2 天前
高性能存储扩展利器|PCIE719 基于Zynq UltraScale+的企业级可编程SAS方案
fpga开发
liuluyang5302 天前
SV主要关键词详解
fpga开发·uvm·sv
happyDogg_2 天前
验证环境采样rtl时序数据遇到的问题
fpga开发
unicrom_深圳市由你创科技3 天前
项目分析和FPGA器件选型外包服务包括哪些内容?别让选错芯片毁了整个项目
fpga开发