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