FPGA教學(xué)——如何將易靈思FPGA干到750MHz(1080P顯示)
2022-08-29
作者:電子技術(shù)應(yīng)用專(zhuān)欄作家 瘋狂的FPGA
來(lái)源:電子技術(shù)應(yīng)用專(zhuān)欄作家 瘋狂的FPGA
前陣子寫(xiě)過(guò)一篇文章《如何才能半導(dǎo)體雪崩中活下來(lái)》,然后昨天任老爺子就發(fā)布了講話(huà),即接下來(lái)是全球經(jīng)濟(jì)衰退期,為了保證度過(guò)未來(lái)三年的“經(jīng)濟(jì)”危機(jī),縮減業(yè)務(wù),核心聚焦,不再關(guān)注銷(xiāo)售額,而是現(xiàn)金流/利潤(rùn)為王。
為了活下來(lái),我們可以躺平;我們需要臥薪嘗膽,既然不適合去轟轟烈烈趕一把,我們反而可以利用這段時(shí)間,臥薪嘗膽,好好學(xué)習(xí)。前陣子出差+工作耽擱了下,內(nèi)心無(wú)比愧疚,今天重新開(kāi)始學(xué)習(xí)分享FPGA知識(shí),歡迎各位斧正。
拿來(lái)主義的好處就是,相對(duì)效率會(huì)更高一點(diǎn),并且試錯(cuò)成本還低很多。那么在此感謝原廠(chǎng)FAE王奇搶先一步在我的開(kāi)發(fā)板商移植HDMI,讓我們?cè)?a class="innerlink" href="http://ihrv.cn/tags/易靈思" target="_blank">易靈思Ti60 FPGA上一睹為快。
易靈思鈦金系列FPGA Ti60F255的開(kāi)發(fā)板,出爐已經(jīng)有一些日子了,板載HDMI電路理論上是成熟的(別家FPGA上我驗(yàn)證過(guò)),但卻一直沒(méi)能擠出時(shí)間來(lái)移植一下HDMI 1.4的顯示方案,今天我們就來(lái)挑戰(zhàn)一下IO模擬1080P60,把易靈思Ti60 FPGA干到750MHz主頻!
這部分采用FPGA模擬的話(huà),電路其實(shí)非常簡(jiǎn)單,加了EMC芯片后的原理圖如下所示。
HDMI 采用和 DVI 相同的傳輸原理——TMDS最小化傳輸差分信號(hào)。TMDS 傳輸系統(tǒng)分為兩個(gè)部分:發(fā)送端和接收端。TMDS 發(fā)送端收到HDMI 接口傳來(lái)的24bit RGB信號(hào),然后對(duì)這些數(shù)據(jù)進(jìn)行編碼和并/串轉(zhuǎn)換,再將RGB 信號(hào)的數(shù)據(jù)分別分配到獨(dú)立的傳輸通道發(fā)送出去。接收端接收來(lái)自發(fā)送端的串行信號(hào),對(duì)其進(jìn)行解碼和串/并轉(zhuǎn)換,然后發(fā)送到顯示器的控制端;與此同時(shí)也接收時(shí)鐘信號(hào),以實(shí)現(xiàn)同步。
網(wǎng)上很多FPGA模擬HDMI PHY的設(shè)計(jì),可參見(jiàn)https://zhuanlan.zhihu.com/p/435937460。其中以Digilent的HDMI IP最為常見(jiàn),其采用VHDL模擬TMDS,用FPGA實(shí)現(xiàn)HDMI的收發(fā),節(jié)省了外部PHY芯片的成本(https://github.com/Digilent/vivado-library)。
Digilent HDMI IP方案,后來(lái)很多朋友其他平臺(tái)上都有移植,我也在Xilinx和安路上都有移植測(cè)到過(guò),其采用VHDL實(shí)現(xiàn),稍微有點(diǎn)復(fù)雜。不過(guò)今天我將在FAE王奇的基礎(chǔ)上,消化吸收另一個(gè)HDMI tx ip(采用Verilog編寫(xiě),結(jié)構(gòu)很簡(jiǎn)單),在易靈思Ti60 FPGA挑戰(zhàn)下1080P60(其實(shí)主頻主要還是看收發(fā)器的速率)。這里也感謝這個(gè)HDMI IP創(chuàng)作者的勞動(dòng)果實(shí),Verilog Header如下:
給出目前的框圖,如下所示,外部輸入25M,由Interface的PLL生成150/750MHz(離開(kāi)148.5MHz有點(diǎn)偏差也沒(méi)關(guān)系),hdmi_ip接收前面測(cè)試的RGB數(shù)據(jù)后,模擬HDMI協(xié)議發(fā)送給外部,在顯示器上顯示。由于TMDS用10bit編碼,F(xiàn)PGA采用DDR模式進(jìn)行數(shù)據(jù)發(fā)送,因此當(dāng)串行時(shí)鐘是像素時(shí)鐘的10/2=5倍。
我們?cè)贗nterface中配置PLL,這里輸入25M,輸出150+750MHz,如下圖所示:
另外,這里的關(guān)鍵是我們采用易靈思的Double Data IO,配置如下,這里將hdmi_tx_data和hdmi_tx_clk都打開(kāi)了resync模式:
查詢(xún)Efinity help文檔,可以看到DDIO的Resync Mode,用戶(hù)在Clock下降沿輸入OUT0+OUT1,GPIO在上升沿輸出OUT0,在Clock下降沿輸出OUT1,從而達(dá)到了倍頻的目的(這里的HI就是OUT0,LO就是OUT1)。
那么在代碼中,我們需要驅(qū)動(dòng)GPIO DDIO前的HI與LO,我們的頂層代碼如下:
這部分通過(guò)serdes_4b_10to1.v文件編碼輸出,相關(guān)代碼如下所示:
最后,采用Efinity進(jìn)行綜合,上圖中的邏輯跑到了750MHz,DDIO實(shí)現(xiàn)了1.5Gbps的帶寬。DDIO 1.5Gbps已經(jīng)是易靈思的瓶頸了,雖然時(shí)序有一點(diǎn)小違例(150M到750M跨時(shí)鐘域部分電路),但是HDMI 1080P60已經(jīng)成功顯示,如下所示(盜用8年前的圖,懶得拍)。
本來(lái)打算移植LVDS模式,但是頻率上不去,目前懷疑HDMI電路還得加上拉電阻,當(dāng)前版本省略了,以后有機(jī)會(huì)再試試。下一步,上T35移植HDMI測(cè)試一下能跑到多少頻率,至少應(yīng)該能跑720P吧?
本文配套開(kāi)發(fā)板Ti60F225 FPGA開(kāi)發(fā)板,請(qǐng)轉(zhuǎn)crazyfpga.taobao.com(CB電子鋪)了解更多。
對(duì)易靈思FPGA感興趣的朋友,歡迎進(jìn)FPGA微信群交流,我們共同進(jìn)步,等待疫情過(guò)去,我們重新坐起來(lái)。
由于群規(guī)模在短時(shí)間內(nèi)超過(guò)了200人,無(wú)法再掃碼入群,請(qǐng)有興趣的朋友添加客服同學(xué)的微信,再邀請(qǐng)入群。
關(guān)于FPGA國(guó)產(chǎn)替代,以及FPGA解決方案咨詢(xún),歡迎加入知識(shí)星球一對(duì)一探討交流,碰撞思維火花。
更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<
電子技術(shù)應(yīng)用專(zhuān)欄作家: 瘋狂的FPGA