如果能夠用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
+關注
關注
1660文章
22408瀏覽量
636210 -
HDMI
+關注
關注
34文章
1899瀏覽量
160492 -
樹莓派
+關注
關注
122文章
2078瀏覽量
110454
原文標題:用FPGA/樹莓派RP2040驅動HDMI的資源
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Xilinx FPGA入門連載68:VGA驅動ColorBar顯示
請問如何查詢液晶顯示器的VGA協議??1366*768
例說FPGA連載28:VGA顯示驅動子板設計
例說FPGA連載78:基于VGA顯示器的720p的廣告機設計之功能概述
液晶顯示器VGA視頻接口及顯示規范
VGA圖形控制器的FPGA實現
VGA顯示與基于FPGA的VGA彩色圖片顯示設計
應用于彩色顯示器的VGA時序信號和彩條圖像信號的設計與實現
顯示器接口針腳定義及接法,VGA Pin Definition
FPGA、MCU(stm32&51)驅動VGA顯示器_電阻分壓法硬件設計_VGA電阻網絡分壓
如何用FPGA邏輯來驅動VGA顯示器
評論