Pynq_Z2-hdmi輸出圖像、文字流程(VDMA)

  1. 軟件平臺
    vivado2019.1web
  2. 硬件平臺
    PYNQ_Z2
  3. 具體操作流程
    3.1 新建一個工程
    在這裏插入圖片描述
    在這裏插入圖片描述
    create BD
    在這裏插入圖片描述
    如果不想手動連線請轉到此處:利用tcl命令設計(建議使用Tcl方式
    add zynq - IP
    在這裏插入圖片描述
    run block automation
    在這裏插入圖片描述
    配置PYNQ參數,使能HP0口,用於VDMA快速讀取DDR3

    配置時鐘,FCLK_CLK0配置爲100Mhz,FCLK_CLK1配置爲142MHz,這個時鐘用於VDMA
    在這裏插入圖片描述
    配置中斷,使能IRQ_F2P,用於接收PL的中斷響應信號

在這裏插入圖片描述
因爲使用了boardfile,bu不需要做其他配置,點擊OK

在這裏插入圖片描述
添加VDMA IP
在這裏插入圖片描述
配置DMA參數

在這裏插入圖片描述
配置advanced參數,然後點擊OK
在這裏插入圖片描述
添加視頻時序控制器
在這裏插入圖片描述
配置視頻時序控制器參數,取消Enable Detection
在這裏插入圖片描述
add AXI4-stream to video out
在這裏插入圖片描述
配置AXI-stream to video out參數(clock,timing mode)
在這裏插入圖片描述
添加自定義的IP(附件)
點擊 IP Catalog然後在空白處右擊,點擊add respository
在這裏插入圖片描述
在這裏插入圖片描述
選擇select->ok

然後添加時鐘控制器
在這裏插入圖片描述
添加 HDMI編碼器
在這裏插入圖片描述

設置編碼器參數,如下(可能不需要修改)
在這裏插入圖片描述
點擊regenerate layout (重新佈局)

在這裏插入圖片描述
手動連接時鐘信號
FCLK_CLK1
在這裏插入圖片描述
連接clk。。。
在這裏插入圖片描述

連接serialclk
在這裏插入圖片描述

連接aRst_n
在這裏插入圖片描述
連接一些數據傳輸通道信號
在這裏插入圖片描述
add concat IP用於連接中斷信號
在這裏插入圖片描述
連接中斷信號
在這裏插入圖片描述
點擊Run connection Automation,選擇所有模塊自動連接
完成所有連線

在這裏插入圖片描述
再一次
#regenerate layout
regenerate_bd_layout
在這裏插入圖片描述
導出端口
在這裏插入圖片描述

在這裏插入圖片描述
按F6檢查設計,無誤後,create HDL wrapper

在這裏插入圖片描述
添加HDMI輸出的xdc文件,約束管腳
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

#hdmi_out
set_property -dict { PACKAGE_PIN L17 IOSTANDARD TMDS_33 } [get_ports { TMDS_Clk_n_0 }]; #IO_L11N_T1_SRCC_35 Sch=hdmi_tx_clk_n
set_property -dict { PACKAGE_PIN L16 IOSTANDARD TMDS_33 } [get_ports { TMDS_Clk_p_0 }]; #IO_L11P_T1_SRCC_35 Sch=hdmi_tx_clk_p

set_property -dict { PACKAGE_PIN K18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[0] }]; #IO_L12N_T1_MRCC_35 Sch=hdmi_tx_d_n[0]
set_property -dict { PACKAGE_PIN K17 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[0] }]; #IO_L12P_T1_MRCC_35 Sch=hdmi_tx_d_p[0]
set_property -dict { PACKAGE_PIN J19 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[1] }]; #IO_L10N_T1_AD11N_35 Sch=hdmi_tx_d_n[1]
set_property -dict { PACKAGE_PIN K19 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[1] }]; #IO_L10P_T1_AD11P_35 Sch=hdmi_tx_d_p[1]
set_property -dict { PACKAGE_PIN H18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_n_0[2] }]; #IO_L14N_T2_AD4N_SRCC_35 Sch=hdmi_tx_d_n[2]
set_property -dict { PACKAGE_PIN J18 IOSTANDARD TMDS_33 } [get_ports { TMDS_Data_p_0[2] }]; #IO_L14P_T2_AD4P_SRCC_35 Sch=hdmi_tx_d_p[2]

set_property -dict { PACKAGE_PIN R19   IOSTANDARD LVCMOS33 } [get_ports { oen_0 }]; #IO_0_34 Sch=hdmi_tx_hpdn


生成bitstream

在這裏插入圖片描述
在這裏插入圖片描述
number of jobs與電腦CPU有關,數量越多跑的越快
編譯時間與電腦性能有關,現在你可以去歇會了,等待編譯完成吧
…(等待着。。。半個小時了還沒編譯完成)
在這裏插入圖片描述
編譯完成後,
file->export hardware->include bitstream->ok
file->luanch SDK
下面的操作參考
https://blog.csdn.net/qq_42263796/article/details/101828046
SDK部分的src部分代碼將放在附件2
顯示字母、符號、以及數字的庫文件可以參考LCD屏幕的寫法
或者下載附件2
附件2
最終圖像顯示效果如下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章