前言
之前沒有寫過部落格,這是第一次寫,希望能記錄下自己的開發流程,如果能給一些人一些參考,那是榮幸之至,如果有疏漏錯誤之處,大家可以互相讨論。 Zynq是一款比較強大的SOC,内部包含FPGA和Cortex-A9雙核的ARM,我的這個設計就是用Zedboard開發闆,搭配一個OV7725的cmos圖像傳感器,實作圖像的采集和簡單的傳輸,具體功能包括:圖像采集,Bayer圖像轉RGB888圖像,自制VDMA子產品,VGA controller,Linux系統視訊發送,Linux虛拟機QT用戶端視訊顯示,後續可能還會再添加一些功能子產品。其中OV7725寄存器初始化,Bayer圖像轉RGB888圖像,VGA controller參考了crazybingo的設計。
這裡不再贅述Zynq内部結構等,而是直接針對具體應用,如果有不明白的可以看官方手冊或者給我留言。
硬體設計
先上一張圖檔
使用了Zedboard的pmod接口,做了适當的修改,也可以使用杜邦線連接配接,管腳限制如下: [plain] view plain copy
- set_property PACKAGE_PIN Y9 [get_ports ext_clk]
- set_property IOSTANDARD LVCMOS25 [get_ports ext_clk]
- #
- #VGA
- #
- set_property PACKAGE_PIN V20 [get_ports {vga_r[0]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_r[0]}]
- set_property PACKAGE_PIN U20 [get_ports {vga_r[1]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_r[1]}]
- set_property PACKAGE_PIN V19 [get_ports {vga_r[2]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_r[2]}]
- set_property PACKAGE_PIN V18 [get_ports {vga_r[3]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_r[3]}]
- set_property PACKAGE_PIN AB22 [get_ports {vga_g[0]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_g[0]}]
- set_property PACKAGE_PIN AA22 [get_ports {vga_g[1]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_g[1]}]
- set_property PACKAGE_PIN AB21 [get_ports {vga_g[2]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_g[2]}]
- set_property PACKAGE_PIN AA21 [get_ports {vga_g[3]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_g[3]}]
- set_property PACKAGE_PIN Y21 [get_ports {vga_b[0]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_b[0]}]
- set_property PACKAGE_PIN Y20 [get_ports {vga_b[1]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_b[1]}]
- set_property PACKAGE_PIN AB20 [get_ports {vga_b[2]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_b[2]}]
- set_property PACKAGE_PIN AB19 [get_ports {vga_b[3]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {vga_b[3]}]
- set_property PACKAGE_PIN AA19 [get_ports vga_hs]
- set_property IOSTANDARD LVCMOS25 [get_ports vga_hs]
- set_property PACKAGE_PIN Y19 [get_ports vga_vs]
- set_property IOSTANDARD LVCMOS25 [get_ports vga_vs]
- set_property PACKAGE_PIN Y10 [get_ports {cmos_data[0]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[0]}]
- set_property PACKAGE_PIN AB9 [get_ports {cmos_data[1]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[1]}]
- set_property PACKAGE_PIN AA9 [get_ports {cmos_data[2]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[2]}]
- set_property PACKAGE_PIN AA8 [get_ports {cmos_data[3]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[3]}]
- set_property PACKAGE_PIN W12 [get_ports {cmos_data[4]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[4]}]
- set_property PACKAGE_PIN V12 [get_ports {cmos_data[5]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[5]}]
- set_property PACKAGE_PIN W11 [get_ports {cmos_data[6]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[6]}]
- set_property PACKAGE_PIN W10 [get_ports {cmos_data[7]}]
- set_property IOSTANDARD LVCMOS25 [get_ports {cmos_data[7]}]
- set_property PACKAGE_PIN AB10 [get_ports cmos_sclk]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_sclk]
- set_property PACKAGE_PIN AA11 [get_ports cmos_sdat]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_sdat]
- set_property PACKAGE_PIN V9 [get_ports cmos_pclk]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_pclk]
- set_property PACKAGE_PIN V10 [get_ports cmos_xclk]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_xclk]
- set_property PACKAGE_PIN V8 [get_ports cmos_vsync]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_vsync]
- set_property PACKAGE_PIN W8 [get_ports cmos_href]
- set_property IOSTANDARD LVCMOS25 [get_ports cmos_href]
附上一張成像效果圖
接下來的文章中就開始整個系統設計