如果能夠用FPGA能夠驅動顯示器,就可以做不少與視頻相關的實驗,很多FPGA開發板使用了比較簡單的VGA接口,連接非常簡單,如下圖:
只需要5跟線就可以連接VGA顯示器
連接VGA的原理圖
VGA連接器
然后我們就可以用FPGA的邏輯來做各種游戲了:
經典的Pong游戲
關于如何用FPGA邏輯來驅動VGA顯示器,可以參考頁面:
然而,現在的顯示器基本上都使用的是HDMI連接器,VGA接口的顯示器只能在古老的實驗室里才有。所以我們要做視頻的一些項目,就要用FPGA來輸出HDMI的信號,HDMI的連接器有不同大小,常用的體積比較大,信號線的定義如下圖:
HDMI連接器
HDMI的信號線
標準的HMDI連接器有19個管腳,只有其中的8根是以差分信號的方式來傳輸高速視頻信息的,所以只需要8根FPGA的管腳,配制成7對差分TMDS輸出即可。
那時鐘的速率需要多快呢?如果我們要生成一個640*480 RGB 24bpp的視頻信號,刷新頻率為60Hz,每幀有307200個像素,每一個像素為24位(R|G、B各8位),需要0.44Gbps的又用數據才能傳輸。再考慮一些屏外區域的信息,實際的分辨率需要大一些,比如800*525.
一個像素需要3 * 8位來傳輸,實際上HDMI還需要添加2bits以便對數據進行加擾,也就是需要3*10位來傳輸,每個像素需要30bits。
加擾用的額外數據用于接收端對接收到的數據進行同步,下面是TMDS差分信號的時序:
對于640*480分辨率的顯示,我們需要至少250MHz的時鐘信號,如果要獲得更高的分辨率則需要更高的時鐘頻率,小腳丫FPGA模塊中使用的Lattice的XO2-4000HC系列FPGA以及Intel的MAX10器件內部的時鐘通過鎖相環生成,可以達到400MHz。支持640*480分辨率是沒有問題的,如果要獲得更高的分辨率可以采用DDR輸出的方式。
顯示驅動邏輯
屏幕的分布
通過邏輯編程,可以在顯示屏上實現如下的效果:
用HDMI顯示器實現的Pong游戲,比VGA實現的要效果好很多
PacMan游戲
具體的代碼實現可以參考頁面
講完了FPGA驅動HDMI,有沒有可能用單片機/微控制器也能實現同樣的效果呢?一般的MCU真的夠嗆,但樹莓派基金會推出的RP2040卻是可以做到的:
雖然RP2040的標稱時鐘為125MHz,但可以輕松超頻到250MHz,能夠滿足640*480分辨率的時鐘要求了
RP2040的PIO可以通過編程配置稱為4對差分輸出的串行信號
具體如何實現,看一下技術大神Luke Wren在RP2040上用GPIO通過Bitbang的方式得到的DVI接口
有位小哥使用他的代碼,在SparkFun的RP2040板上實現的效果:
在顯示屏上顯示文字:
顯示月亮:
當然也可以播放視頻
有人專門制作了一個板子,RP2040超頻到252MHz
關于用RP2040驅動HDMI的更多資源可以在Github搜索HDMIRP2040.
原文標題:用FPGA/樹莓派RP2040驅動HDMI的資源
文章出處:【微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1643文章
21975瀏覽量
614437 -
HDMI
+關注
關注
33文章
1819瀏覽量
154608 -
樹莓派
+關注
關注
121文章
1952瀏覽量
107019
原文標題:用FPGA/樹莓派RP2040驅動HDMI的資源
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
液晶顯示器-VGA 視頻接口及顯示規范
Xilinx FPGA入門連載68:VGA驅動ColorBar顯示
請問如何查詢液晶顯示器的VGA協議??1366*768
例說FPGA連載28:VGA顯示驅動子板設計
例說FPGA連載78:基于VGA顯示器的720p的廣告機設計之功能概述
液晶顯示器VGA視頻接口及顯示規范
VGA顯示與基于FPGA的VGA彩色圖片顯示設計

應用于彩色顯示器的VGA時序信號和彩條圖像信號的設計與實現

顯示器接口針腳定義及接法,VGA Pin Definition
FPGA、MCU(stm32&51)驅動VGA顯示器_電阻分壓法硬件設計_VGA電阻網絡分壓

評論