李 勇,魏廷存,鄭海林
(1.中國電子科技集團第二十八研究所,南京 210007; 2.西北工業大學 計算機學院,西安 710072)
基于FPGA的MDDI數據處理電路實現
李 勇1,魏廷存2,鄭海林1
(1.中國電子科技集團第二十八研究所,南京 210007; 2.西北工業大學 計算機學院,西安 710072)
介紹了一種基于FPGA的MDDI(mobiledisplaydigitalinterface)數據處理電路設計;基于單片集成AM-OLED驅動控制芯片的設計需求以及并行數據總線在移動顯示設備上存在的不足,設計了MDDI數據處理電路;MDDI作為一種高速串行移動顯示數字接口標準,具有連線數量少,信號傳輸可靠性高,低功耗等特點,廣泛應用于移動顯示終端領域;所設計的MDDIType2主端數據處理電路采用兩級狀態機控制內部電路,主狀態機用于控制從狀態機的狀態切換,從狀態機則用于實現MDDI數據的生成;通過加入可配置寄存器,實現對數據包生成和接口模式的控制;采用Verilog語言編寫RTL級代碼實現MDDIType2數據處理電路軟核;使用Xilinx工具綜合的結果表明,該數據處理電路能夠支持480-RGB×320、26萬色的AM-OLED顯示屏,數據傳輸速率可達180Mbps,其性能指標滿足系統設計要求。
移動顯示數字接口;數據處理電路;有源-有機發光二極管驅動芯片;串行接口
AM-OLED(active matrix-organic light emitting diode,有源-有機發光二極管),具有響應速度快、高畫質、低功耗以及輕薄的特點,被公認為下一代平板顯示的主流技術[1-2]。近年來,隨著AM-OLED的制造工藝和量產技術不斷進步,AM-OLED已成功應用于手機、數碼相機、平板電視等消費類電子產品中。隨著顯示屏的尺寸、分辨率和顏色數的不斷增加,主機與顯示屏之間的數據傳輸量也急劇增加。為此,在手機等便攜式顯示產品中,面向VESA(video electronics standards association)的高速串行接口MDDI(mobile display digital interface)得到了越來越廣泛的應用[3]。
MDDI作為一種新型的高速串行數據接口,具有連線少、傳輸數據速度快和低功耗的特點,在驅動芯片中作為主機與顯示屏之間的高速數據通信接口。根據MDDI協議,主端數據處理電路的功能是,接收微處理器寫入的控制信號和數據信號,數據處理電路生成符合協議的控制數據包和顯示數據包,并通過LVDS接口發送給MDDI客戶端。基于單片集成AM-OLED驅動控制芯片的設計需求,設計了MDDI的主端數據處理電路,可作為IP核應用于AM-OLED驅動控制芯片中。
圖1所示為MDDI主端和客端連接示意圖。數據從主端向客端發送為前向鏈接,從客端向主端發送為反向鏈接。MDDI對數據傳輸的物理層和鏈接層都做了明確的規定。

圖1 MDDI主端和客端連接示意圖
物理層上,MDDI采用LVDS(low-voltage differential signaling)技術。與傳統的LVDS接口不同的是,MDDI在信號傳輸之前采用數據-觸發編碼對時鐘進行編碼,在通道中實際傳輸的是數據MDDI_Data0和經過數據-觸發編碼的MDDI_Stb信號。客端通過將接收到的MDDI_Data0與MDDI_Stb信號進行異或操作,就可將包含在Data0和Stb信號線上的時鐘信息恢復,恢復后的時鐘信號頻率為主端發送頻率的1/2。與LVDS接口中直接傳輸數據和時鐘相比,MDDI顯著提高了高速數據傳輸時的抗干擾能力。
鏈接層上,MDDI協議規定了40多種類型的數據包,這些數據包用于實現包括顯示屏在內的許多外設同主機間的數據通信。MDDI數據包由數據包長度、數據包類型、數據和CRC校驗位4個部分組成[4]。圖2所示為數據包和幀結構。

圖2 MDDI的數據包和數據幀結構
根據系統設計的需要,所設計的電路支持5種前向傳輸數據包與4種反向傳輸數據包,表1所示為這9種數據包的名稱與作用。

表1 驅動控制電路支持的9種MDDI數據包
Video Stream Packet用于傳輸圖像顯示數據;Register Access Packet用于初始化寄存器配置信息;Round-Trip Delay Measurement Packet用于測量環路傳輸延時;Reverse Link Encapsulation Packet用于反向數據的傳輸;Client Capability Packet與Client Request and Status Packet則是客端發送給主端用于配置主客端鏈接的數據包。
本文設計的MDDI數據處理電路應用于MDDI的主端,它接收MCU寫入的圖像數據和控制信息,并根據控制信息產生相應的數據包,完成數據發送。圖3所示為本文設計的MDDI(Type2)主端數據處理電路的系統結構框圖。該系統主要由特殊功能寄存器(SFR)、先進先出存儲器(FIFO)、喚醒電路(Wake-up Checker)、鏈接控制器(Link Controller)、CRC校驗電路(CRC Block)、串行發送模塊(TX Driver)和并行接收模塊(RX Driver)等構成。

圖3 MDDI主端數據處理電路結構
MDDI主機可作為IP核掛載在微處理器總線上。微處理器通過地址總線和數據總線將控制信號和數據信號寫入MDDI主機,主機產生符合協議的數據包并通過LVDS接口發送給MDDI客戶端。控制信號寫入特殊功能寄存器,該模塊主要用于控制主機系統的接口模式和鏈接控制模塊的數據包生成,配置數據包中相關參數值,如子幀長度、反向鏈接標識和讀寫信息等。數據信號則是多媒體數據流,它用于AM-OLED顯示。寫入FIFO中的多媒體數據以8-bit形式向鏈接控制模塊和CRC校驗電路傳輸。CRC校驗電路采用16-bit的循環冗余校驗算法產生校驗結果,并傳輸給鏈接控制模塊。鏈接控制模塊根據控制信號生成Sub-frame Header Packet 、Video Stream Packet等6種前向傳輸數據包,最后以8-bit數據形式寫入串行發送模塊,經串行化處理后,將數據和數據-脈沖編碼信號發送到MDDI客戶端。
3.1 數據-觸發編碼電路(Strobe)
串行數據在發送到LVDS接口之前,需要經過數據-觸發編碼電路對數據和時鐘信號進行編碼,實際在LVDS通道中傳輸的是數據和經過編碼的脈沖信號,圖4為數據-觸發編碼電路。其工作原理是:假如輸入數據發生改變,則MDDI_Stb保持原狀態不變;但如果輸入數據未發生改變,則MDDI_Stb發生改變。換句話就是,在每個時鐘周期MDDI_Data和MDDI_Stb之間有且僅有一位發生改變,其時序如圖5所示。

圖4 數據-觸發編碼電路

圖5 數據-觸發編碼電路時序圖
3.2 鏈接控制器(Link Controller)
鏈接控制模塊用于生成前向鏈接數據包,同時解析客戶端發送的反向鏈接數據包,根據客戶端的解碼能力、接口性能等改變主機數據包參數和發送速率,實現主機-客戶端鏈接最優化。該部分是主機數據處理電路的最重要模塊。
鏈接控制模塊主要由狀態機實現,圖6所示為鏈接控制模塊的框圖[5]。該狀態機由主狀態機(Main FSM)、前向鏈接狀態機(Forward FSM)、關斷狀態機(Shutdown FSM)和服務請求狀態機(Service-request FSM)。

圖6 鏈接控制模塊框圖
鏈接控制模塊讀取寄存器堆中相關控制信號用于配置MDDI數據包中的相關參數;讀取FIFO中的圖像數據生成Video Stream Packet中的Pixel Data部分,最后將生成的數據包發送到串并轉換模塊。主狀態機控制前向鏈接狀態機、關斷狀態機和服務請求狀態機之間的切換,選擇其中一種狀態機產生MDDI數據包,并通過選擇控制信號(TX_Sel)控制選擇器的輸出。同時,主狀態機通過TX_Driver控制驅動器的關斷。為了降低設計復雜度,本系統將狀態機分為主狀態機和子狀態機兩級實現。
3.2.1 主狀態機(Main FSM)
圖7為主狀態機狀態轉移圖,表2為主狀態機跳轉指令。系統上電復位后,狀態機默認處于休眠狀態(Hibernation State),這樣保證了內部電路能充分復位,高速驅動器和接收器能進入穩定的工作狀態。當特殊功能寄存器中的狀態控制寄存器Bit[0]有效時,狀態機進入服務請求狀態(Service_request State)。主狀態機控制服務請求狀態機(Service_request FSM)產生鏈接重啟序列,通過選擇電路選擇服務請求狀態機的輸出,以喚醒客戶端進入鏈接同步狀態。當鏈接重啟序列發送結束,且狀態控制寄存器的Bit[1]有效時,鏈接控制狀態機進入前向鏈接狀態(Forward State)。主狀態機讀取寄存器堆中的相關數據包參數和FIFO中的圖像數據,控制前向鏈接狀態機(Forward FSM)產生Sub-frame Header Packet、Video Stream Packet、Round Trip Measurement Packet、Register Access Packet、Reverse Link Encapsulation Packet等前向鏈接數據包。當前向鏈接狀態結束,狀態控制寄存器Bit[7]有效時,鏈接控制狀態機進入鏈接關斷狀態(Link-shutdown State),這時主狀態機選擇關斷鏈接狀態機(Shutdown FSM)產生關斷數據包關斷客戶端,使主機和客戶端都進入休眠狀態,以降低MDDI系統功耗。接下來,文章將詳細分析各個狀態的轉移關系以及相關時序。

圖7 主狀態機

表2 主狀態跳轉指令
3.2.2 服務請求狀態機(Service Request FSM)
圖8所示為服務請求狀態機的狀態轉移圖[5],該狀態實現MDDI鏈接的休眠喚醒操作,使主機-客戶端之間建立通訊。

圖8 服務請求狀態機
主機發送關斷數據包(Link Shutdown Packet)通知客戶端將進入休眠狀態,這時主機也切換到低功耗休眠狀態。其具體喚醒過程如下所述。
A.在休眠狀態下,一段時間后,寄存器堆中狀態控制寄存器Bit[0]有效,鏈接控制模塊進入STB_EN狀態,開始準備發送鏈接重啟序列;
B.主機發送完一個數據-觸發編碼信號之后,鏈接控制模塊進入客戶端啟動狀態(Client Start State)。為了使客戶端的高速接收器完全開啟,主機至少經過200 ns的時間才發送數據-觸發信號(使MDDI_Data驅動器能夠達到穩定的“1”,MDDI_Stb驅動器達到穩定的“0”);為便于系統控制,本系統延時50個數據-觸發信號周期,即50個Stb周期;
C.經過50個Stb周期后,鏈接控制模塊進入重啟高電平狀態(Restart_H State),這時服務請求狀態機產生邏輯高電平數據,使輸出MDDI_Data信號邏輯高電平,并維持150個Stb周期,而MDDI_Stb經過數據-觸發編碼電路產生周期性變化脈沖信號;
D.主機完成150個Stb周期后,鏈接控制模塊切換到重啟低電平狀態(Restart_L State),服務請求狀態機將輸出數據置為邏輯“0”,MDDI_Data輸出邏輯低電平,并維持50個Stb周期,而MDDI_Stb輸出周期性脈沖信號;
E.在完成40個Stb周期后,客戶端開始檢測子幀頭數據包,以實現主機-客戶端鏈接同步。如果暫時無數據,則進入IDLE狀態。其鏈接時序圖見圖9所示。

圖9 服務請求時序
3.2.3 前向鏈接狀態機(Forward Link FSM)
圖10為前向鏈接狀態轉移圖,表3為前向鏈接狀態機跳轉指令。該狀態機主要用于生成Sub-Frame Header Packet,Video Stream Packet、Reverse Link Encapsulation Packet、Register Access Packet、Round-Trip Delay Measurement Packet等前向鏈接數據包。

圖10 前向鏈接狀態機

表3 前向鏈接狀態機跳轉指令
前向鏈接狀態轉移具體過程如下:
1)主機完成休眠喚醒之后,當前向鏈接狀態機有效,且主狀態機使能信號(Enable)有效,這時鏈接控制模塊進入SFH_pkt狀態,開始向客戶端發送子幀頭數據包,并建立鏈接同步。前向鏈接狀態機根據寄存器中的值配置子幀頭數據包中的參數,并通過串并轉換電路發送給客戶端;
2)當子幀頭數據包完成發送之后,且Reverse Link、Round Trip和Register Access命令無效,這時前向鏈接狀態機默認進入VS_pkt狀態模式。VS_pkt狀態下,前向鏈接狀態機獲取FIFO中寫入的圖像數據,并按照MDDI協議生成影像流數據包(Video Stream Packet),最后串行發送到客戶端;
3)當子幀頭數據包發送完,且Reverse Link命令有效時,前向鏈接狀態機進入RLE_pkt狀態模式,這時鏈接控制模塊將向客戶端發送Reverse Link Encapsulation Packet,使得客戶端能根據反向鏈接標志將反向鏈接數據包反饋給主機,告知主機當前客戶端的接口性能或狀態,實現主機最優配置需要;
4)當子幀頭數據包發送完,且Round Trip命令有效時,前向鏈接狀態機進入RTM_pkt狀態模式。這時鏈接控制模塊將向客戶端發送Round Trip Delay Measurement Packet,以測試主機-客戶端-主機之間的環路延時,為其他數據包參數或接口提供參考;
5)當子幀頭數據包發送完,且Register Access命令有效時,前向鏈接狀態機進入RA_pkt狀態模式。這時鏈接控制模塊向客戶端發送Register Access Packet,用于讀/寫AM-OLED驅動芯片中相關寄存器;
當環路測試數據包、寄存器訪問數據包、反向鏈接數據包或者影像流數據包發送結束,前向鏈接狀態機進入Filler_pkt狀態模式。鏈接控制器產生Filler Packet填充在每個數據包之后,以保證數據包的完整性。為了使其他數據包具有最大的靈活性,本系統將該數據包的長度設置為32字節。
3.2.4 鏈接關斷狀態機(Shutdown FSM)
圖11為鏈接關斷狀態轉移圖。當圖像數據發送結束,主機產生鏈接關斷數據包用于關斷MDDI連接,以降低主機和客戶端的功耗,使其進入低功耗休眠狀態。

圖11 鏈接關斷狀態機
在同步鏈接狀態,如果休眠(Hibernation)指令有效,鏈接關斷狀態機開始工作,并產生鏈接關斷數據包。主狀態機通過選擇電路將鏈接關斷數據包發送給客戶端,通知系統將進入休眠狀態。
為了使MDDI接口支持480RGB×320像素、26萬色的顯示屏,取幀頻為60 Hz,則顯示數據的傳輸率為480×320×18-bit×60 Hz=166 Mbps,加上傳輸其他控制數據,幀格式數據傳輸需要的最高傳輸率為180 Mbps。為了驗證本文設計的結果,采用Xilinx工具對所設計的Verilog編碼進行了綜合驗證。驗證時,采用45 MHz的工作時鐘,然后觀察內部節點和輸出信號。通過對內部節點和輸出信號的分析,證明電路系統能正確工作,且滿足以上設計需求。
考慮到一幀數據量太大,本文采用一個子幀數據量,結合所設計的客端數據電路對主端數據處理電路進行功能驗證。上電復位后,延遲1000個單位時間后,主機開始發送鏈接喚醒序列,這時MDDI_Data1和MDDI_Data0維持150個MDDI_Stb周期的高電平,然后被置為低電平。這時客戶端檢測到喚醒序列,開始恢復出時鐘信號,無并行數據生成,包分析模塊處于空閑狀態。在低電平的第50個MDDI_Stb周期時,主機開始發送Sub-frame Header Packet。Sub-frame Header Packet發送結束,主機則向客戶端發送Video Stream Packet,其中Video Stream Packet中的像素數據為1080個字節,功能驗證如圖12所示。

圖12 系統仿真驗證
本文根據MDDI協議,設計了一種用于AM-OLED驅動控制芯片的MDDI主端數據處理電路。該數據處理電路支持9種數據包,在電路中增加可配置寄存器,可支持MDDI的Type I和Type II傳輸模型的配置。在鏈接控制模塊中,將狀態機分為主狀態和同步狀態,降低了電路實現難度,保證了狀態機的健壯性,有利于降低狀態跳轉中的功耗。采用Xilinx工具的驗證結果表明,本文設計的MDDI主端數據處理電路滿足MDDI接口設計要求,可以支持480-RGB×320、26萬色的AM-OLED顯示屏。
[1] 熊文彬. 基于FPGA的OLED顯示系統[D]. 成都: 電子科技大學,2011.
[2] 趙湘源. AM-OLED顯示屏驅動芯片的研究與設計[D]. 上海: 上海大學, 2011.
[3] 李奇奮,李 妥,陳志良. 用于AM-OLED顯示屏控制的MDDI數據處理芯片設計[J].液晶與顯示,2011(6):801-807.
[4] VESA Mobile Display Digital Interface Standard[S].Version 1.2, July 9, 2008.
[5] Park J W,Lee K J,Kim J H,et al. An MDDI-Host Architecture with Low Complexity for SoC Platforms[J].IEEE Trans. Consumer Electronics, 2007,53(4):1668-1673.
MDDI Data Processing Circuit Based on FPGA Implementation
Li Yong1, Wei Tingcun2, Zheng Hailin1
(1.28th Research Institute of China Electronics Technology Group Corporation, Nanjing 210007,China;2.School of Computer, Northwestern Polytechnical University, Xi’an 710072,China)
A single chip Mobile Display Digital Interface (MDDI) data processing circuit was implemented based on FPGA. Based on the requirements of monolithic integrated AM-OLED driver IC and deficiency of parallel data bus in mobile display device, the MDDI data processing circuit is designed. MDDI is a high-speed serial digital interface standard, since it has many advantages such as less signal lines, higher signal transmission reliability, lower power consumption and the simpler circuits, it is widely used in the mobile display terminal. This paper proposes a novel design strategy for MDDI Type2 host data processing circuit to reduce the complexity of the circuit. In this design, the internal circuits are controlled with two-stage state machines. The master state machine is used to control the state switch from the secondary machine, and the secondary machine is used for generating MDDI data. The configurable registers control the packets generated and change the interface mode. RTL code of the MDDI data processing circuit is designed using Verilog to implement the soft-core. The synthesized results by Xilinx tools show that, this data processing circuit can support AM-OLED display with 480-RGB × 320 resolution and 260k color image data, the maximum transfer rate is 180 Mbps. The performances of the MDDI data processing circuit meet the requirements of system design.
MDDI; data processing circuit; AM-OLED driver IC; serial interface
2016-10-09;
2016-11-17。
陜西省科技統籌創新工程計劃項目(2011KTCQ01-22)。
李 勇(1987-),男,四川內江人,碩士研究生,助理工程師,主要從事模擬與混合信號處理方向的研究。
魏廷存(1960-),男,陜西西安人,博士、教授,博士生導師,主要從事模擬與混合信號處理方向的研究。
1671-4598(2017)03-0172-04DOI:10.16526/j.cnki.11-4762/tp
TN
A