Skip to content

cemtech1213/pynq_cameroverlay

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PYNQ4CV工程搭建

简介(Introduction)

通过本文档,你将能够了解:

  • 如何使用Vivado搭建PYNQ-Z2上可以使用的摄像头输入、HDMI输出的视频通路Overlay
  • 如何在Overlay中添加自定义图像处理IP
  • 如何在SDK中如何初始化摄像头、配置图像处理IP

所需硬件(Hardware Requirements)

  • The PYNQ-Z2 board
  • MicroUSB to USB-A cable
  • OV5640 camera
  • PMOD adapter
  • HDMI cable
  • HDMI screen

所需软件(Software Requirements)

  • Vivado® Design Suite 2018.2

  • Board files for PYNQ-Z2 should be installed

    Vivado 2018.2默认并不包含PYNQ-Z2的板级支持文件,所以需要将{path/to/doc}\files\pynq-z2文件夹拷贝至{ptah/to/vivado}\2018.2\data\boards\board_file

  • Xilinx SDK 2018.2

  • Vivado HLS 2018.2

  • HLS Image Processing IP Core

注意事项(Note)

  • {path/to/doc}表示文档根目录
  • {path/to/vivado}表示Vivado安装目录
  • {path/to/prj}表示所创建工程根目录

硬件连接(Hardware Setup)

将OV5640 camera接到PMOD adapter上并连接至PYNQ-Z2 board PMODA及PMODB,使用HDMI cable连接PYNQ-Z2 HDMI OUT及HDMI screen,使用MicroUSB to USB-A cable连接PROG UART及电脑USB端口。

创建工程(Create a Vivado Project)

  1. 单击Start > Xilinx Design Tools > Vivado 2018.2打开Vivado。

  1. 在打开的Vivado窗口Quick Start部分单击Create Project,打开New Project窗口,此时处于Create a New Vivado Project界面,单击Next进入Project Name界面。

  1. Project name:栏中输入工程名pynq4cv,在Project location:栏中选择工程所在位置,即{path/to/prj},单击四次Next,跳过Project TypeAdd SourcesAdd Constraint(optional)界面,进入Default Part界面。

  1. Default Part界面,单击Boards栏,在Vendor栏中选择tul.com.tw,此时Display Name中显示pynq-z2开发板,如果没有显示pynq-z2开发板,请检查是否已经安装PYNQ-Z2的板级支持文件。单击显示的pynq-z2开发板一栏,显示浅蓝色后单击Next进入New Project Summary界面。

  1. New Project Summary界面单击Finish完成工程创建,稍等片刻,进入工程界面,

搭建Overlay(Create a Block Design)

输入模块

  1. 单击IP INTERGRATOR > Create Block Design,弹出Create Block Design对话框。

  1. Create Block Design对话框中,修改Design name:system,单击OK

  1. Diagram窗口单击蓝色加号,在Search:栏中输入Zynq,并双击ZYNQ7 Processing System添加ZYNQ IP。

  1. 单击Diagram窗口左上角Run Block Automation,在弹出对话框单击OK,自动配置ZYNQ IP。

  1. 双击ZYNQ7 Processing System,打开Re-customize IP,单击并勾选PS-PL Configuration > HP Slave AXI Interface > S AXI HP0 interface

  1. 单击并勾选Clock Configuration > PL Fabric Clocks > FCLK_CLK1,并修改频率为24。

  1. 单击并勾选Interrupts > Fabric Interrupts > PL-PS Interrupts Ports > IRQ_F2P[15:0],单击OK,完成配置。

  1. {path/to/doc}\files\ip文件夹拷贝至{path/to/prj}\pynq4cv.ip_user_files,在Tcl Console的输入栏,输入
set_property ip_repo_paths {path/to/prj}/pynq4cv.ip_user_files [current_project]
update_ip_catalog

WARNING{path/to/prj}要替换成相应工程路径,如D:/pynq4cv/,此时应该使用/而非\

  1. 单击Diagram界面蓝色加号Add IP,或者使用快捷键Ctrl+I,在Search:栏中输入video to stream,双击Video In to AXI4-Stream,双击添加到Diagram界面的IP,修改Video FormatMono/Sensor,修改FIFO Depth2048,修改Clock ModeIndependent,单击OK确认。

  1. 单击选中processing_system7_0FCLK_CLK1引脚,单击邮件,选择Make External,也可以使用快捷键Ctrl+T引出端口。

  1. 单击选中FCLK_CLK1_0端口,修改名字为vid_xclk

  1. 单击v_vid_in_axi4s_0vid_io_i接口上的蓝色加号,分别引出vid_active_videovid_datavid_vsyncvid_io_in_clk,并修改端口名为vid_hsyncvid_datavid_vsyncvid_pclk

  2. 添加两个Constant,双击xlconstant_1,修改xlconstant_1Const Val0

  1. 引出xlconstant_0dout并修改名字为vid_rst,引出xlconstant_1dout并修改名字为vid_pwd

  1. 添加Sensor Demosaic,单击Diagram左上角Run Connection Automation,在弹出窗口,确认s_axi_CTRL勾选,单击OK

  1. 连接v_vid_in_axi4s_0 > aclk --> processing_system7_0 > FCLK_CLK0v_vid_in_axi4s_0 > video_out --> v_demosaic_0 > s_axis_video,单击Regenerate Layout,完成视频输入部分搭建。

缓存模块

  1. 添加两个AXI Video Direct Memory Access模块,即VDMA,此时出现axi_vdma_0axi_vdma_1,单击Diagram左上角Run Connection Automation

  1. 在弹出窗口,勾选All Automation,单击OK。此时会自动连接时钟、复位、HP等接口。

  1. 单击Diagram旁的Address Editor,可以看到VDMA已经自动分配好了地址。

  1. 切换回Diagram,双击axi_vdma_0axi_vdma_0,修改Stream Data Width24

  1. 连接v_demosaic_0 > m_axis_videoaxi_vdma_0 > S_AXIS_S2MM,单击Diagram左上角Run Connection Automation,在弹出窗口,确认All Automation勾选,单击OK

处理模块

  1. 添加Sobelfilter,单击Diagram左上角Run Connection Automation,在弹出窗口,确认All Automation勾选,单击OK

  1. 连接axi_vdma_0 > M_AXIS_MM2S --> sobelFilter_0 > in_rsobelFilter_0 > out_r --> axi_vdma_1 > S_AXIS_S2MM,再次单击Diagram左上角Run Connection Automation

  1. 在弹出窗口,确认All Automation勾选,单击OK

输出模块

  1. 添加Clocking WizardVideo Timing ControllerAXI4-Stream to Video OutRGB to DVI Video Encoder模块。

  2. 双击Clocking Wizard,单击Output Clocks界面,修改clk_out1Output Freq74.25,勾选clk_out2,修改Output Freq371.25,向下拉到Enable Optional Inputs/Outputs for MMCM/PLL,取消勾选reset,单击OK确认。

  1. 双击Video Timing Controller,取消勾选Optional Features 栏中Include AXI4-Lite InterfaceEnable Detection,单击OK确认。

  1. 双击AXI4-Stream to Video Out,修改FIFO Depth2048,修改Timing ModeMaster,单击OK确认。

  1. 双击rgb2dvi_0,取消勾选Reset active highGenerate SerialClk internally from pixel clock.,在TMDS clock range栏中,勾选<120MHx(720p),单击OK确认。

  1. 连接下列端口
processing_system7_0 > FCLK_CLK1 --> clk_wiz_0 > clk_in1

clk_wiz_0 > clk_out1 --> v_tc_0 > clk
clk_wiz_0 > clk_out1 --> v_axi4s_vid_out_0 > aclk
clk_wiz_0 > clk_out1 --> axi_vdma_1 > m_axis_mm2s_aclk

clk_wiz_0 > clk_out1 --> rgb2dvi > PixelClk
clk_wiz_0 > clk_out2 --> rgb2dvi > SerialClk
clk_wiz_0 > locked --> rgb2dvi > aRst_n

v_tc_0 > vtiming_out --> v_axi4s_vid_out_0 > vtiming_in
axi_vdma_1 > M_AXIS_MM2S --> v_axi4s_vid_out_0 > video_in
v_axi4s_vid_out_0 > vid_io_out --> rgb2dvi_0 > RGB
  1. 单击选中rgb2dvi_0TMDS并引出端口。

  1. 添加AXI IIC模块,单击Diagram左上角Run Connection Automation,在弹出窗口,确认勾选S_AXI,取消勾选IIC,单击OK确认。

  1. 单击选中axi_iic_0IIC并引出端口,修改端口名为vid_iic

添加中断

  1. 添加AXI Interrupt Controller模块,单击Diagram左上角Run Connection Automation,在弹出窗口,确认勾选All Automation,单击OK确认

  2. 双击axi_intc_0,修改Interrupt Output ConnectionSingle,单击OK确认。

  1. 添加Concat模块,双击xlconcat_0,修改Numver of Ports5,单击OK确认。

  1. 连接下列端口
processing_system7_0 > FCLK_CLK1 --> clk_wiz_0 > clk_in1

axi_vdma_0 > mm2s_introut --> xlconcat_0 > In0
axi_vdma_0 > s2mm_introut --> xlconcat_0 > In1

axi_vdma_1 > mm2s_introut --> xlconcat_0 > In2
axi_vdma_1 > s2mm_introut --> xlconcat_0 > In3

axi_iic_0 > iic2intc_irpt --> xlconcat_0 > In4

xlconcat_0 > dout --> axi_intc_0 > intr

axi_intc_0 > irq --> processing_system7_0 > IRQ_F2P

创建顶层

  1. 单击Validate Design或者按下F6,如果弹出如下警告单击OK忽略。

  1. Sources栏中右键单击system,选择Generate Output Products...

  1. 在弹出窗口单击Generate,其中Number of jobs:和电脑配置相关,可修改为能够选择的最大数。

  1. 稍等片刻,当生成文件完成后,会弹出Generate Output Products窗口,单击OK,在Sources栏中右键单击system,选择Create HDL Wrapper...

  1. 确认默认勾选为Let Vivado manage wrapper and auto-update,在弹出窗口单击OK,生成顶层文件。

添加约束

  1. Sources栏中出现system_wrapper后,右键单击Sources > Constraints下的constrs_1,单击Add Sources...

  1. 在弹出窗口单击Next,在Add or Create Constraints窗口,单击Create File,在弹出窗口修改File Name:system,单击OKFinish

  1. 双击打开Sources > Constraints > constrs_1 > system.xdc,将{path/to/doc}\files\system.xdc中的内容拷贝至文本栏中并保存。

生成Bitstream

  1. 单击Flow Navigator下的Generate Bitstream,在弹出窗口单击Yes,在弹出Launch Runs窗口单击OK,之后生成Bitstream文件的过程需要等待十五分钟左右。

  1. Bitstream生成完成后,弹出Bitstream Generation Completed窗口,单击Cancel完成工程搭建。

导出工程

  1. 单击File > Export > Export Hardware...

  1. 在弹出窗口勾选Include bitstream,并单击OK,如果提醒Save project before exporting?,单击Save

  1. 单击File > Launch SDK,在弹出窗口单击OK,等待片刻,打开SDK工作窗口。

创建应用(Create an SDK Software Project)

  1. SDK窗口单击File > New > Application Project

  1. 在弹出窗口,修改Project name:display,单击Next

  1. 选择Empty Application,单击Finish,完成应用创建。

  1. {path/to/doc}\files\src下的main.cmain.hov5640.h拖动到工程左侧栏中Project Explorer > display > src,在弹出窗口单击OK

  1. 此时左侧栏中会出现相应文件,完成应用创建。

上板测试(Test in Hardware)

  1. 连接开发板,单击Xilinx > Program FPGA,在弹出窗口单击Program

  1. 右键单击Project Explorer > display,选择Run As > Launch on Hardware(System Debugger)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • VHDL 60.9%
  • Coq 27.8%
  • Verilog 6.8%
  • C 2.2%
  • Tcl 1.3%
  • Objective-C 0.5%
  • Other 0.5%