activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...
1)實驗平臺:正點原子領航者ZYNQ開發板
2)平臺購買地址:https://item.taobao.com/item.htm?&id=606160108761
3)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.html
4)對正點原子FPGA感興趣的同學可以加群討論:876744900
5)關注正點原子公眾號,獲取最新資料
http://weixin.qq.com/r/hEhUTLbEdesKrfIv9x2W (二維碼自動識別)
第二十章SD卡讀BMP圖片HDMI顯示實驗
我們在“SD卡讀BMP圖片LCD顯示實驗”中,成功地將SD卡中的BMP圖片讀出,并將其顯示在了LCD屏上。本章我們將學習如何SD卡中的BMP圖片顯示在HDMI顯示器上。
本章包括以下幾個部分:
2020.1簡介
20.2實驗任務
20.3硬件設計
20.4軟件設計
20.5下載驗證
20.1簡介
在“SD卡讀BMP圖片LCD顯示實驗”的簡介部分,我們詳細介紹了BMP圖片的數據格式;另外在《領航者FPGA開發指南》中的“HDMI彩條顯示實驗”一章,我們介紹了HDMI接口。如果大家對這兩部分的內容不熟悉的話,可以參考相應的章節,此處就不再贅述了。
20.2實驗任務
本章的實驗任務是使用領航者ZYNQ開發板讀取SD卡中存放的BMP格式圖片,分辨率為1920*1080,并將其顯示在HDMI顯示器上。
20.3硬件設計
根據實驗任務我們可以畫出本次實驗的系統框圖,如下圖所示:
圖 20.3.1 系統框圖
圖 5.3.1與“SD卡讀BMP圖片LCD顯示實驗”中的系統框圖基本相同,只是將驅動LCD顯示的rgb2lcd模塊替換成了本次實驗中的DVI Transmitter,用于驅動HDMI接口;另外還刪除了用于讀取LCD ID信息的AXI GPIO模塊。因此本次實驗的硬件設計部分在“SD卡讀BMP圖片LCD顯示實驗”的基礎上稍作修改即可。
首先要刪除《SD卡讀BMP圖片LCD顯示實驗》工程中的rgb to lcd和AXI GPIO兩個模塊,以及LCD相關的接口。如圖 20.3.2所示,我們要刪除圖中橙色高亮的兩個模塊和3個接口:
圖 20.3.2 刪除LCD相關模塊
接下來添加DVI Transmitter IP核。該IP核位于工程目錄下的ip_repo文件夾中,名為“DVI_TX”。我們需要將其添加到工程的IP庫中,添加IP核的方法請大家參考“自定義IP核-呼吸燈實驗”。添加完成后,我們要在Block Design中連接DVI Transmitter模塊的接口信號,并引出外部端口,具體的連接方式如圖 20.3.3所示:
圖 20.3.3 添加并連接DVI_Transmitter IP核
至此本次實驗的硬件框圖已經搭建好了。需要說明的是,本次實驗的硬件框圖是基于《SD卡讀BMP圖片LCD顯示實驗》搭建的,VDMA的AXI Stream格式數據流和Memory Map格式數據流的時鐘頻率設置的較低,為100Mhz,因此VDMA和DDR3的數據交互速率會受到限制,即支持的HDMI顯示分辨率無法達到很高,實測最大能達到的分辨率為1280x800。
對于LCD屏的顯示實驗來說,達到1280x800的分辨率已經夠用了,但是考慮到目前大多數的HDMI顯示器支持1080P(1920x1080)的分辨率,我們需要對底層搭建的硬件環境做修改,才能支持1080P分辨率。考慮到本手冊HDMI顯示相關的例程不需要1080P分辨率,且大多數HDMI顯示例程是基于LCD例程修改而來,如果每次都為了兼容1080P分辨率而修改底層硬件環境比較麻煩,因此本手冊僅本章實驗的底層硬件環境支持1080P分辨率,其它HDMI實驗大家如果有1080P分辨率的顯示需求,可以按照本章實驗進行修改。
底層硬件修改的方法是將VDMA的AXI Stream格式數據流和Memory Map格式數據流的時鐘頻率改為150Mhz,而VDMA的配置端口不需要太高的頻率,可以仍然保持100Mhz。
首先雙擊打開“ZYNQ7 Processing System”框圖,點擊“Clock Configuration”,在“PL Fabric Clocks”一欄下勾選FCLK_CLK1,時鐘頻率設置為150Mhz。設置完成后,點擊“OK”按鈕,如下圖所示:
圖 20.3.4 添加“FCLK_CLK1”時鐘
修改完成后,可以發現“ZYNQ7 Processing System”框圖多了一個FCLK_CLK1端口。接下來刪除FCLK_CLK0連線,首先選中FCLK_CLK0的連線使其高亮,然后按下鍵盤的“Delete”進行刪除,如圖 20.3.5和圖 20.3.6所示:
圖 20.3.5 選中FCLK_CLK0連線
圖 20.3.6 刪除FCLK_CLK0連線
然后刪除框圖中的AXI Interconnect IP核(ps7_0_axi_periph)、AXI SmartConnect IP核(axi_smc)和Processor System Reset IP核(rst_ps7_0_100M),框圖刪除后,如下圖所示。
圖 20.3.7 刪除IP核
接下來連接FCLK_CLK1的時鐘,如下圖所示。
然后點擊“Run Connnection Automation”,下面列出了會自動連接的模塊及其接口,勾選“All Automation”,然后點擊“OK”按鈕。
此時系統會自動生成 AXI Interconnect 和 AXI Smartconnect。AXI Interconnect(ps7_0_axi_periph)用于橋接ZYNQ處理器M_AXI_GP0總線和外部低速外設的AXI_LITE總線;AXI Smartconnect(axi_smc)用于連接ZYNQ處理器的HP0接口和VDMA的M_AXI_MM2S總線。另外系統也自動生成了兩個 reset模塊(rst_ps7_0_100M和rst_ps7_0_150M),用于復位總線上的外設。
整體系統架構圖如下:
圖 20.3.8 整體系統架構連接圖
block design修改完成后保存,然后重新Generate Output Products和“Create HDL Wrapper”。接下來我們還要修改約束文件,為HDMI接口分配引腳。打開工程中名為“system_wrapper.xdc”的約束文件,并將原先LCD相關的約束語句刪除,替換成以下內容:
set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS33} [get_ports tmds_oen_0]
set_property PACKAGE_PIN L16 [get_ports {TMDS_0_tmds_data_p[2]}]
set_property PACKAGE_PIN M14 [get_ports {TMDS_0_tmds_data_p[1]}]
set_property PACKAGE_PIN K19 [get_ports {TMDS_0_tmds_data_p[0]}]
set_property PACKAGE_PIN L14 [get_ports TMDS_0_tmds_clk_p]
保存約束文件,然后選擇“Generate Bitstream”重新生成BIT文件。
20.4軟件設計
本次實驗的軟件工程與“SD卡讀BMP圖片LCD顯示實驗”略有不同,如下圖所示:
圖 20.4.1 軟件工程
圖 20.4.1左側紅色方框中的文件夾名為“display_ctrl_hdmi”,它在前面實驗中“display_ctrl”的基礎上刪除了GPIO相關的函數及變量。在本次實驗中刪除了AXI GPIO模塊,因此要刪除這些函數和變量,否則會報錯。
本次實驗的代碼如下所示:
可以看出,本次實驗的程序與“SD卡讀BMP圖片LCD顯示實驗”非常相似,只是刪除了讀取LCD ID相關的內容。有關這部分代碼的詳細介紹請大家參考“SD卡讀BMP圖片LCD顯示實驗”,此處不再贅述。需要注意的是,本次實驗在SD卡中放置的圖片分辨率為1920*1080,因此在程序的第35行,視頻參數設置成VMODE_1920x1080。
20.5下載驗證
首先我們將下載器與領航者底板上的JTAG接口連接,下載器另外一端與電腦連接。然后使用Mini USB連接線將開發板左側的USB_UART接口與電腦連接,用于串口通信。
我們在工程目錄下新建了一個名為“風景圖片”的文件夾,把其中名為“fengjing.bmp”的圖片拷貝到SD卡的根目錄下,然后將SD卡插入領航者底板背面的卡槽中。另外還需要使用HDMI連接線將HDMI顯示器連接到領航者底板上的HDMI接口。最后連接開發板的電源,并打開電源開關。
在SDK軟件下方的SDK Terminal窗口中點擊右上角的加號來設置并連接串口。然后下載本次實驗硬件設計過程中所生成的BIT文件,來對PL進行配置。最后下載軟件程序,下載完成后,在下方的SDK Terminal中可以看到應用程序打印的信息,如下圖所示:
圖 20.5.1 串口打印信息
圖 20.5.1中打印出了BMP文件的文件頭和信息頭等信息,同時從數據中計算出BMP圖片的寬度為1920,高度為1080,與我們存入SD卡中的BMP圖片一致。
同時HDMI顯示器上顯示存入SD卡中的示例圖片,如圖 20.5.2所示,說明本次實驗在領航者ZYNQ開發板上面下載驗證成功。
圖 20.5.2 下載驗證
總結
以上是生活随笔為你收集整理的activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100个网络基础知识,赶紧收藏吧!
- 下一篇: zabbix详解