基于FPGA的DisplayPort設(shè)計(jì)與實(shí)現(xiàn)
MicroBlaze 處理器發(fā)揮核心作用
賽靈思推出的 Source Policy Maker Controller 可與內(nèi)核配合使用,這樣其功能在很大程度上和 ASSP DisplayPort源端設(shè)備一樣。我們建議您使用MicroBlaze 嵌入式或外部處理器來(lái)正確初始化和維持該鏈路。XAPP 包含的Policy Maker Reference Design 預(yù)配置版本在 FPGA 內(nèi)的 MicroBlaze 處理器中實(shí)施,可幫助用戶立刻將設(shè)計(jì)方案轉(zhuǎn)換成硬件。正式供貨時(shí)的參考設(shè)計(jì)將包含設(shè)計(jì)人員可以修改的源代碼。
Source Policy Maker Controller設(shè)計(jì)的“邏輯”部分位于 MicroBlaze處理器之上,并使用 I2C 命令來(lái)控制內(nèi)核配合使用,控制器即可在 FPGA 外部實(shí)施(即在外部處理器中實(shí)施)。
設(shè)計(jì)人員可使用支持賽靈思Platform Studio (EDK) 的賽靈思嵌入式硬件設(shè)計(jì)套件或具有 SDK 的賽靈思嵌入式軟件設(shè)計(jì)套件,對(duì) XAPP 設(shè)計(jì)進(jìn)行修改。通常情況下,FPGA 設(shè)計(jì)人員使用 EDK,而軟件開發(fā)人員則使用SDK。
EDK 流會(huì)生成一個(gè)中間網(wǎng)絡(luò)文件 (NGC),您可以在實(shí)施設(shè)計(jì)之前,將其整合在項(xiàng)級(jí) ISE 項(xiàng)目中。NGC文件包含構(gòu)成 BRAM 初始化一部分的MicroBlaze 代碼。
如果用戶修改過(guò)軟件,EDK 流通常會(huì)占用較長(zhǎng)的時(shí)間。不過(guò),用戶一旦生成了網(wǎng)絡(luò)列表,就不再需要 EDK或者 SDK 了。SDK 流可修改 FPGA比特流,因此僅需更新 BRAM 中的MicroBlaze 代碼內(nèi)容。該 SDK 流能夠?yàn)檐浖薷奶峁└斓霓D(zhuǎn)換時(shí)間,但在這種情況下,用戶必須每生成一個(gè)比特流就使用一次 SDK。有關(guān)本專題的 XAPP 白皮書涵蓋了如何使用賽靈思FPGA 嵌入式軟件開發(fā)套件運(yùn)行該設(shè)計(jì)的詳盡說(shuō)明。
該“入門指南”涵蓋豐富信息,其中包括訂購(gòu)與許可、仿真、全系統(tǒng)硬件評(píng)估,以及技術(shù)支持等。此外,其還包含用戶可用于生成范例設(shè)計(jì)的腳本文件,以及如何使用范例測(cè)試臺(tái)與范例模式生成器進(jìn)行仿真的說(shuō)明。
用戶可將該設(shè)計(jì)與從 TED Spartan-6FPGA 消費(fèi)類視頻套件中下載的完整版或評(píng)估版賽靈思DisplayPort LogiCORE以及 DisplayPort FPGA Mezzanine Card卡配合使用(http://www.xilinx.com/products/devkits/TB-6S-CVK.htm)。
源端的 Policy Maker 內(nèi)含一個(gè)狀態(tài)機(jī),可通過(guò) AMBA?APB 端口或采用AMBA 至 PLB 橋的 32 位 PLBv46 總線連接至處理器接口。賽靈思在 BlockRAM 中存儲(chǔ)了用戶可修改的指令集。賽靈思用來(lái)調(diào)訓(xùn) (train) 該鏈路的 C++代碼不但是采用 GNU C++ 編譯器編譯的,并且還在采用賽靈思 EDK PlatformStudio 處理器設(shè)計(jì)套件的 FPGA 內(nèi)部實(shí)施的軟 MicroBlaze 處理器上進(jìn)行了全面測(cè)試。參考設(shè)計(jì)包含完整的賽靈思 SDK項(xiàng)目。范例測(cè)試臺(tái)可將一個(gè) 135MHz的時(shí)鐘連接至 VID 時(shí)鐘,并將一個(gè)100MHz 的時(shí)鐘連接至 APB 時(shí)鐘。賽靈思對(duì)所有輸入是否連接正確進(jìn)行檢查。此外,頂級(jí)模塊還提供復(fù)位功能。
擴(kuò)展顯示識(shí)別
DisplayPort 一個(gè)特別重要的特性是,能夠通過(guò) VESA 的增強(qiáng)顯示識(shí)別2010年 夏季刊37手把手課堂:FPGA 101數(shù)據(jù) (EDID) 結(jié)構(gòu)與不同的設(shè)備進(jìn)行接口相連。EDID 并不是什么新事物。實(shí)際上多年以來(lái)設(shè)計(jì)人員一直在使用各種視頻接口讀取 EDID 的宿端設(shè)備參數(shù),從而與設(shè)備進(jìn)行接口連接。不過(guò)這些早期的 EDID 及相關(guān)接口 技術(shù)通常不包含高級(jí)可配置通信通道。如今借助 DisplayPort,VESA 為系統(tǒng)增添了智能性,不但能在源端(如機(jī)頂盒、DVD 播放器或 PC 圖形卡)與宿端設(shè)備(如顯示監(jiān)控器)之間進(jìn)行功能協(xié)調(diào),而且還可優(yōu)化通信參數(shù)。DisplayPort v1.1a 可協(xié)調(diào)的變量包括通道數(shù)量(1、2 或者 4)、每信道數(shù)據(jù)速率(1.62 或 2.7Gbps)、電壓擺幅(0.2、0.6、0.8、1.2 V)、4 個(gè)級(jí)別的通道預(yù)加重以及鏈路時(shí)鐘向下擴(kuò)散。
由 CORE Generator 生成,并與LogiCORE 一道提供的接收宿端范例設(shè)計(jì)可提供范例 EDID(見圖 3),以便滿足 EDID 源端設(shè)備的讀取需求,確保用戶的最佳視覺體驗(yàn)。
圖3 DisplayPort 接收高級(jí)方框圖
宿端范例設(shè)計(jì)在 FPGA 內(nèi)部的BRAM 中實(shí)施了 EDID 數(shù)據(jù)結(jié)構(gòu)。DisplayPort 的源代碼可通過(guò) AUX 通道實(shí)現(xiàn) I2C 協(xié)議。圖 3 和圖 4 顯示了連接至源端的 DisplayPort 宿端的方框圖。宿端的 Link 與 Stream Policy Maker屬于宿端內(nèi)核的組成部分,不過(guò)源端的 LinkPolicy Maker 具有更高的復(fù)雜性,將作為源代碼隨參考設(shè)計(jì)提供。EDID 通過(guò)I2C 接口與接受宿端進(jìn)行接口連接。
I2C 協(xié)議非常適合針對(duì) EDID 數(shù)據(jù)結(jié)構(gòu)的連接,并常常用于這種類型的應(yīng)用。I2C 控制器負(fù)責(zé)定位與管理在EDID 中發(fā)現(xiàn)的數(shù)據(jù),并通過(guò)串行接口與 I2C 接口協(xié)議(通過(guò) AUX 通道)將數(shù)據(jù)傳輸至宿端內(nèi)核。在工作模式下,用戶無(wú)需知曉 EDID 是否正被訪問(wèn)。用戶可通過(guò)檢測(cè) I2C 總線來(lái)監(jiān)控 ROM 的內(nèi)容。在調(diào)試模式下,用戶能夠修改I2C 控制器,覆蓋 EDID ROM 提供的 3位內(nèi)容。I2C 提供控制信號(hào),在與適當(dāng)?shù)拈_集輸出相連時(shí),可提供 I2C 主接口。
宿端內(nèi)含名為“DisplayPort 配置數(shù)據(jù)(DPCD)”的數(shù)據(jù)結(jié)構(gòu),可以存儲(chǔ)配置數(shù)據(jù)并作為宿端與源端都可讀寫的通信郵箱使用。源端一般使用跨 AUX 通道的 DPCD 內(nèi)容(參見圖 3 和圖 4)。
Policy Maker 鏈路調(diào)訓(xùn)
在 DisplayPort 鏈路上建立通信的過(guò)程稱為“鏈路調(diào)訓(xùn)”。在鏈路調(diào)訓(xùn)的過(guò)程中,內(nèi)核在通信啟動(dòng)時(shí)將著力于最大限度降低錯(cuò)誤的同時(shí),優(yōu)化鏈路速度與功耗。如果在數(shù)據(jù)傳輸中出現(xiàn)問(wèn)題,內(nèi)核將自動(dòng)重復(fù)鏈路調(diào)訓(xùn),以適應(yīng)不斷變化的條件。源端與宿端信息包之間的通信通過(guò)雙向半雙工 1Mbps AUX 通道進(jìn)行。視頻與音頻數(shù)據(jù)通過(guò)主鏈路信道(1、2 或 4)進(jìn)行傳輸,其是從源端到宿端的高速千兆位級(jí)收發(fā)器通道。
內(nèi)核的鏈路調(diào)訓(xùn)工作分兩步執(zhí)行:時(shí)鐘恢復(fù)、信道均衡;符號(hào)鎖定(symbol lock)、信道間對(duì)準(zhǔn)。步驟一,接收器的 PLL 鎖定至進(jìn)入的信號(hào),并恢復(fù)鏈路時(shí)鐘。步驟二,系統(tǒng)對(duì)通道均衡與信道間對(duì)準(zhǔn)進(jìn)行優(yōu)化。
下面是源端與宿端的 PolicyMakers 的典型工作順序:
1. Tx Link Policy Maker 可監(jiān)控?zé)岚尾鍣z測(cè)情況,如果檢測(cè)到有熱拔插,則向 Stream Source Policy Maker 發(fā)送通知。Stream Source Policy Maker 通過(guò) AUC 通道讀取宿端 EDID;
2. Tx Link Policy Maker 通過(guò)AUX 通道讀取來(lái)自宿端的 DisplayPort配置數(shù)據(jù)。根據(jù)源端與宿端的功能配置情況,它可為宿端 DPCD 的鏈路配置字段編寫配置參數(shù),并通過(guò)寫入到宿端 DPCD 的“TRAINING_PATTERN_SET”字節(jié)啟動(dòng)鏈路調(diào)訓(xùn),隨即對(duì)調(diào)訓(xùn)模式的發(fā)送進(jìn)行初始化;
3. Tx Link Policy Maker 根據(jù)來(lái)自 Rx Link Policy Maker 的反饋,通過(guò)調(diào)節(jié)電壓擺幅以及在必要時(shí)調(diào)節(jié)比特率,來(lái)控制時(shí)鐘恢復(fù)順序。一旦內(nèi)核完成時(shí)鐘恢復(fù),鏈路調(diào)訓(xùn)就進(jìn)入通道均衡階段。在該階段,如果調(diào)用 Rx LinkPolicy Maker,即對(duì)預(yù)加重進(jìn)行調(diào)節(jié)。此外,接收器還將在本階段完成符號(hào)鎖定與信道間的對(duì)準(zhǔn);
4. 一旦內(nèi)核通過(guò)鏈路調(diào)訓(xùn)( 即系統(tǒng)完成位鎖定與符號(hào)鎖定),就會(huì)在 DPCD 中予以提示。Tx Link PolicyMaker 可向 Tx Stream Policy Maker 報(bào)告調(diào)訓(xùn)狀況,以在進(jìn)行流屬性數(shù)據(jù)傳輸?shù)耐瑫r(shí)實(shí)現(xiàn)同步流。
Policy Maker 的附加功能
除了參與鏈路調(diào)訓(xùn)外,Tx Link Policy Maker 還可利用來(lái)自接收器的IRQ HPD 信號(hào)監(jiān)控宿端事件通知,并可檢查 DPCD 的鏈路狀態(tài)字段,了解中斷的原因。如果Tx Link Policy Maker檢測(cè)到鏈路失去鎖定,就必須重新訓(xùn)練鏈路。如果接收器調(diào)用,其還可重新配置鏈路,增加或者減少主鏈路信道數(shù)。
此外,Link Policy Maker 還可決定多個(gè) AUX 請(qǐng)求事物處理的順序,因?yàn)槊總€(gè)事物處理結(jié)束于另一個(gè)事物處理開始之前。由于宿端的答復(fù)可以是 NACK或者 DEFER,Policy Maker 必須決定針對(duì)這兩種情況的后續(xù)工作。AUX 事物處理僅限于 16 字節(jié)的數(shù)據(jù),因此Policy Maker 必須將較大的事務(wù)處理分成多個(gè)不超過(guò) 16 字節(jié)的事物處理。
由于 DisplayPort 能夠協(xié)商和優(yōu)化鏈路設(shè)置,因而能夠在不斷變動(dòng)的條件下實(shí)現(xiàn)最佳結(jié)果。Link 與 Stream Policy Maker是進(jìn)行流程協(xié)調(diào)的控制功能,能夠?qū)崿F(xiàn)現(xiàn)代高速視頻與音頻的傳輸。采用 MicroBlaze 嵌入式系統(tǒng)的賽靈思Source Policy Maker Controller 系統(tǒng)參考設(shè)計(jì)經(jīng)過(guò)精心設(shè)計(jì),可幫助您充分發(fā)揮這些全新功能的所有優(yōu)勢(shì),向市場(chǎng)推出功能豐富的顯示產(chǎn)品。賽靈思DisplayPort LogiCORE 可提供高度靈活的源端與宿端解決方案,具有可下載到TED Spartan-6 消費(fèi)類視頻套件中的范例 EDID 及源代碼。免費(fèi)提供該 IP 的評(píng)估版本。
fpga相關(guān)文章:fpga是什么
評(píng)論