徐巧玉,李坤鵬,王軍委,王紅梅
一種LVDS接口的液晶顯示驅(qū)動設(shè)計
徐巧玉1,李坤鵬1,王軍委2,王紅梅1
(1.河南科技大學(xué)機(jī)電工程學(xué)院,河南洛陽471003;2.洛陽銀杏科技有限公司,河南洛陽471003)
為了解決目前嵌入式液晶顯示技術(shù)中存在的顯示驅(qū)動支持分辨率低、數(shù)據(jù)更新慢及控制靈活性差等問題,設(shè)計了一種基于現(xiàn)場可編程門陣列(FPGA)的LVDS接口的液晶顯示驅(qū)動。對數(shù)據(jù)緩存技術(shù)中數(shù)據(jù)讀寫控制等關(guān)鍵問題進(jìn)行了分析,研究了對液晶顯示驅(qū)動時序和低電壓差分信號(LVDS)傳輸時序?;贔PGA構(gòu)建緩存控制模塊和顯示控制模塊,實現(xiàn)數(shù)據(jù)快速更新及LVDS接口液晶顯示屏的顯示。通過QuartusⅡ軟件,對緩存控制模塊控制時序進(jìn)行了采樣分析驗證。驗證結(jié)果表明:第二代雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存取存儲器(DDR2 SDRAM)在166 MHz下工作,LVDS接口液晶顯示屏分辨率為1 024 pixel×768 pixel,位寬為16 bit時,數(shù)據(jù)更新率達(dá)82 MHz,且控制靈活,能夠滿足目前對液晶顯示驅(qū)動的需求。
現(xiàn)場可編程門陣列;第二代雙倍數(shù)據(jù)率;低電壓差分信號;顯示驅(qū)動
近年來,隨著嵌入式技術(shù)的快速發(fā)展,嵌入式顯示終端的應(yīng)用越來越廣泛。應(yīng)用領(lǐng)域的多樣化以及高分辨率液晶顯示的需求,對嵌入式液晶顯示技術(shù)的靈活性以及高分辨率提出了更高要求。
目前,嵌入式液晶顯示實現(xiàn)方法主要包括單端并行傳輸方式和低電壓差分信號(low-voltage differential signaling,LVDS)差分傳輸方式。其中,單端并行傳輸方式簡單易用,在嵌入式顯示設(shè)備中廣泛運用。文獻(xiàn)[1-2]采用單端并行數(shù)據(jù)傳輸方式,以基于現(xiàn)場可編程門陣列(field-programmable gate array,F(xiàn)PGA)作為液晶顯示驅(qū)動器,實現(xiàn)了多分辨率顯示。該方法邏輯簡單,操作靈活,但在傳輸高頻信號時,信號串?dāng)_和噪聲干擾等問題明顯,因此不適用于高分辨率顯示。LVDS傳輸方式以其高速穩(wěn)定的特性被推廣。文獻(xiàn)[3-4]采用LVDS傳輸方式,通過LVDS專用芯片實現(xiàn)并行數(shù)據(jù)與串行差分信號的轉(zhuǎn)換,從而驅(qū)動液晶顯示。該方法具有很好的抗干擾及串?dāng)_能力[5],但專用芯片一般適用于常見分辨率及時序固定的應(yīng)用場合,對于特殊分辨率的液晶顯示應(yīng)用場合,其應(yīng)用受到一定的限制。
針對上述問題,本文提出了一種基于FPGA的LVDS接口的液晶顯示驅(qū)動設(shè)計。該方案以第二代雙倍數(shù)據(jù)率同步動態(tài)隨機(jī)存取存儲器(double-data-rate two synchronous dynamic random access memory,DDR2 SDRAM)作為數(shù)據(jù)緩存單元,基于FPGA構(gòu)建緩存控制模塊,通過對第二代雙倍數(shù)據(jù)率(doubledata-rate two,DDR2)大容量數(shù)據(jù)緩存器的控制,實現(xiàn)數(shù)據(jù)的快速更新和顯示數(shù)據(jù)的及時傳輸?;贔PGA構(gòu)建顯示驅(qū)動模塊,產(chǎn)生相應(yīng)的顯示時序并完成LVDS接口時序的轉(zhuǎn)換,從而實現(xiàn)圖像的顯示。該方案同時擁有FPGA的靈活性及LVDS傳輸?shù)姆€(wěn)定性,可以很好地解決上述問題。
本系統(tǒng)總體設(shè)計方案如圖1所示。系統(tǒng)主要包括:時鐘模塊、緩存模塊、緩存控制模塊、顯示控制模塊和顯示模塊(即液晶顯示屏)等。時鐘模塊對輸入的時鐘信號進(jìn)行倍頻和分頻等處理,為系統(tǒng)各模塊提供工作時鐘。緩存模塊為大容量數(shù)據(jù)存儲設(shè)備,本設(shè)計采用DDR2 SDRAM存儲器完成輸入圖像數(shù)據(jù)的暫存。緩存控制模塊通過協(xié)調(diào)緩存模塊與顯示控制模塊之間的數(shù)據(jù)傳輸,完成對輸入數(shù)據(jù)和顯示數(shù)據(jù)的處理和控制,實現(xiàn)更新數(shù)據(jù)的快速寫入和顯示數(shù)據(jù)的及時讀出,保證圖像的實時顯示。顯示控制模塊包括用于產(chǎn)生與像素信息相對應(yīng)的時序發(fā)生模塊以及依據(jù)LVDS時序進(jìn)行轉(zhuǎn)換的時序轉(zhuǎn)換模塊,最終實現(xiàn)LVDS信號輸出以及圖像數(shù)據(jù)的顯示。
外部輸入數(shù)據(jù)首先進(jìn)入系統(tǒng)的預(yù)處理模塊,在該模塊中完成數(shù)據(jù)的預(yù)處理操作。DDR2控制器控制數(shù)據(jù)的寫入與讀出,在沒有收到讀請求時則進(jìn)行寫操作,將數(shù)據(jù)從預(yù)處理模塊中寫入緩存模塊,在顯示的準(zhǔn)備階段,從緩存模塊中讀出數(shù)據(jù)到顯存RAM1和顯存RAM2中??刂浦鴥蓚€隨機(jī)存取存儲器(random access memory,RAM)的乒乓操作將數(shù)據(jù)送入顯示控制模塊。顯示控制模塊對顯示數(shù)據(jù)及時序控制信號進(jìn)行處理并轉(zhuǎn)換為LVDS顯示時序,通過LVDS接口傳輸?shù)揭壕э@示屏顯示。數(shù)據(jù)緩存控制模塊和顯示控制模塊為本設(shè)計的核心部分。
圖1 系統(tǒng)總體設(shè)計方案
數(shù)據(jù)緩存控制模塊結(jié)構(gòu)如圖2所示。該模塊由數(shù)據(jù)預(yù)處理模塊、顯存模塊及DDR2控制器組成,主要完成對輸入數(shù)據(jù)存儲及顯示圖像數(shù)據(jù)讀取的協(xié)調(diào)控制。
2.1 數(shù)據(jù)預(yù)處理模塊
數(shù)據(jù)預(yù)處理包括數(shù)據(jù)的整合及緩存。由于輸入數(shù)據(jù)與DDR2存儲數(shù)據(jù)速率不匹配,因此需對外部輸入數(shù)據(jù)進(jìn)行緩存處理。進(jìn)入系統(tǒng)的數(shù)據(jù)包含圖像信息及地址信息,并且兩者一一對應(yīng),為了避免圖像信息與地址信息不對應(yīng)而導(dǎo)致的顯示錯誤等問題,在緩存處理之前對數(shù)據(jù)進(jìn)行整合處理[6]。將數(shù)據(jù)和地址鎖存之后整合為一個數(shù)高位地址低位數(shù)據(jù)的多位數(shù)據(jù),從而避免出現(xiàn)顯示圖像和顯示地址不同步的問題。合并之后的多位數(shù)據(jù)存入數(shù)據(jù)緩存先入先出隊列(first input first output,F(xiàn)IFO)中,等待被寫入緩存模塊。
2.2 顯存模塊
顯存模塊包含兩個單口RAM,顯示過程中,數(shù)據(jù)從DDR2讀出。為了匹配速率先進(jìn)入到顯存模塊,該模塊的每個RAM深度可以存儲一行數(shù)據(jù),位寬為16 bit,液晶顯示屏顯示時讀取其中一個RAM的同時,對另一個RAM進(jìn)行數(shù)據(jù)填充,兩個RAM乒乓讀寫實現(xiàn)數(shù)據(jù)連續(xù)輸出。
2.3 DDR2控制器
DDR2控制器為緩存控制模塊的核心部分,包括物理層模塊、用戶接口模塊和控制模塊。物理層模塊對用戶的訪問地址和指令進(jìn)行解釋和匹配。用戶接口模塊在控制信號的控制下接收和存儲用戶的數(shù)據(jù)、命令和地址等信息??刂颇K在系統(tǒng)正常工作期間,為用戶接口模塊和物理層模塊提供相應(yīng)的控制信號,并為系統(tǒng)提供控制器狀態(tài)指示信號[7]。本文設(shè)計的DDR2驅(qū)動器采用Altera公司的IP核,其已包含物理層模塊和用戶接口模塊,本控制器的設(shè)計主要完成控制模塊的構(gòu)建,實現(xiàn)對DDR2的讀寫控制。DDR2控制模塊主要完成對DDR2的初始參數(shù)配置、刷新以及讀寫操作等控制,其中DDR2的讀寫控制為本模塊的核心。
圖2 數(shù)據(jù)緩存控制模塊結(jié)構(gòu)
液晶顯示屏在每個顯示使能期間要求數(shù)據(jù)連續(xù)輸出,不允許數(shù)據(jù)中斷,因此對DDR2的讀取操作設(shè)置為最高優(yōu)先級,在整個DDR2的控制模塊中都以數(shù)據(jù)的讀取控制為中心進(jìn)行設(shè)計。每一幀顯示中,第一個顯示使能信號DE使能區(qū)開始向液晶屏傳輸顯示數(shù)據(jù),需提前從DDR2讀出數(shù)據(jù)寫入顯存RAM1和RAM2,第一個DE使能區(qū)讀出RAM1的數(shù)據(jù)送往液晶顯示屏,顯示完畢之后立即從DDR2讀取數(shù)據(jù)寫入RAM1中。此時采用分段讀取方式,每讀取256個數(shù)據(jù)設(shè)置一次等待,再進(jìn)行下次讀取,直至讀取完一行數(shù)據(jù)。每段等待區(qū)間為DDR2的寫操作時間,此設(shè)計縮短了寫DDR2的等待時間,從而有效地緩解了不能及時處理高速輸入的數(shù)據(jù)而導(dǎo)致數(shù)據(jù)丟失的問題,提高了數(shù)據(jù)更新率。在第二個DE使能區(qū)對RAM2進(jìn)行操作,操作過程與RAM1相同。依次交替讀寫兩個RAM的數(shù)據(jù)完成圖像顯示。RAM讀寫操作時序如圖3所示。圖3中,DE為顯示使能信號,Hs為行同步信號。
為了減少DDR2帶寬的浪費,提高數(shù)據(jù)更新率,在RAM的讀寫操作中各設(shè)置一個計數(shù)器,每當(dāng)RAM讀寫完成一次計數(shù)器加1,當(dāng)累加至列像素點值時計數(shù)器清零,表明一幀數(shù)據(jù)顯示完畢,RAM進(jìn)入等待狀態(tài)直至開始下一幀數(shù)據(jù)的顯示。此設(shè)計在一幀圖像顯示完畢之后不再對DDR2進(jìn)行讀操作,以節(jié)省DDR2的帶寬,增加DDR2的寫操作時間,從而提高數(shù)據(jù)更新率。DDR2的刷新操作設(shè)計在固定的時間執(zhí)行,每一幀的前N個場周期設(shè)置為刷新時間(N根據(jù)液晶顯示屏分辨率調(diào)整),經(jīng)過計算,此設(shè)計可以保證在64 ms內(nèi)完成對DDR2所有Bank的刷新,同時也避免刷新操作與讀寫操作發(fā)生沖突。
圖3 RAM讀寫操作時序
顯示控制模塊主要包括時序發(fā)生模塊和時序轉(zhuǎn)換模塊,以實現(xiàn)輸入數(shù)據(jù)與顯示時序的整合,并最終完成時序的轉(zhuǎn)換。其中,時序發(fā)生模塊實現(xiàn)液晶顯示時序的發(fā)生,時序轉(zhuǎn)換模塊完成顯示數(shù)據(jù)的調(diào)整,并將液晶顯示時序信號及數(shù)據(jù)信號轉(zhuǎn)換為LVDS傳輸格式。
3.1 LVDS接口時序
本設(shè)計采用單路6 bit的LVDS接口實現(xiàn)數(shù)據(jù)傳輸,傳輸接口包含3路差分?jǐn)?shù)據(jù)通道和1路差分時鐘通道。LVDS接口信號取消單端并行傳輸方式中獨立的控制信號線,將RGB圖像數(shù)據(jù)和控制信號重新采樣編碼,并通過3路差分?jǐn)?shù)據(jù)通道傳輸,具有較強(qiáng)的抗干擾能力[8]。控制信號包括行同步信號Hs、場同步信號Vs以及顯示使能信號DE。數(shù)據(jù)信號采用單基色6位,共18位RGB數(shù)據(jù)的格式。LVDS傳輸時序如圖4所示。通道0和通道1傳輸RGB數(shù)據(jù),通道2除了傳輸剩余的RGB數(shù)據(jù)以外還要傳輸控制信號,3路差分?jǐn)?shù)據(jù)通道同時傳輸,每一個時鐘完成7次移位,實現(xiàn)21位數(shù)據(jù)傳輸。
3.2 時序發(fā)生器設(shè)計
時序發(fā)生模塊主要產(chǎn)生液晶顯示時序信號,包括像素時鐘信號D_CLK、行同步信號Hs、場同步信號Vs、顯示使能信號DE和RGB數(shù)據(jù)信號[9]。利用邏輯編程方法產(chǎn)生行場掃描時序是一個發(fā)展方向。此方法電路簡單、功能強(qiáng)、修改方便、可靠性高,只需在代碼中修改一些時序參數(shù)就能產(chǎn)生任意時序波形,可以支持各種接口時序要求的液晶顯示屏[10]。時序發(fā)生模塊原理如圖5所示。
圖4 LVDS傳輸時序圖
行、場同步信號包含Sync、Front Porch、Active Video、Back Porch等信號段[11]。設(shè)計時序發(fā)生器時,分別設(shè)置兩個計數(shù)器作為行、場同步信號的基準(zhǔn)。通過FPGA內(nèi)部鎖相環(huán)對輸入的時鐘信號進(jìn)行倍頻獲得像素時鐘,在像素時鐘下對行計數(shù)器計數(shù),根據(jù)液晶顯示時序標(biāo)準(zhǔn),行計數(shù)器累加至行像素點值時,行計數(shù)器清零并循環(huán)計數(shù)。行同步信號在行sync區(qū)間時,使行同步信號置為低,其他區(qū)間行同步信號置為高。場計數(shù)器在行同步信號下累加到列像素點值后,場計數(shù)器清零并循環(huán)計數(shù),作為場同步信號的基準(zhǔn)。場同步信號在場Sync區(qū)間時,使場同步信號置為低,其余時間置為高,此區(qū)間類似于行同步信號。根據(jù)時序標(biāo)準(zhǔn),DE信號僅在行、場信號的Active Video重疊區(qū)域置為高時,開啟顯示使能,其他時間關(guān)閉顯示使能。
圖5 時序發(fā)生模塊原理圖
3.3 時序轉(zhuǎn)換設(shè)計
圖6 時序轉(zhuǎn)換模塊
實現(xiàn)LVDS信號輸出有兩種處理方式:一種是選用LVDS轉(zhuǎn)換芯片;另一種是選用支持LVDS電平標(biāo)準(zhǔn)的FPGA,既可省去LVDS轉(zhuǎn)換芯片,又可降低系統(tǒng)的復(fù)雜度??紤]到該設(shè)計要兼容多種分辨率液晶顯示屏,單一的LVDS轉(zhuǎn)換芯片不能滿足需求,因此采用第二種方案,以FPGA作為LVDS轉(zhuǎn)換芯片。時序轉(zhuǎn)換模塊如圖6所示。
本文設(shè)計的緩存模塊與輸入系統(tǒng)的圖像數(shù)據(jù)位寬均為16 bit,而液晶顯示屏接收的數(shù)據(jù)位寬為18 bit,在對數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換時,既要保證數(shù)據(jù)的精度也要保證系統(tǒng)的數(shù)據(jù)傳輸速率。565結(jié)構(gòu)的16位數(shù)據(jù)轉(zhuǎn)換為666結(jié)構(gòu)的18位數(shù)據(jù),R(紅)和B(藍(lán))兩個基色的最低位各增加一位,并將最高位數(shù)據(jù)賦給最低位,此方法在不增加過多運算的情況下,最大限度地保證了數(shù)據(jù)精度[12]。在時序轉(zhuǎn)換時,輸入的數(shù)據(jù)包括數(shù)據(jù)和液晶顯示時序控制信號,在進(jìn)行時序轉(zhuǎn)換之前需對數(shù)據(jù)進(jìn)行整合。在像素時鐘下同時對3個控制信號進(jìn)行采樣,并與轉(zhuǎn)換后的RGB數(shù)據(jù)合并為一個多位數(shù)據(jù),高位至低位依次為顯示使能信號DE、行同步信號Hs、場同步信號Vs和18位RGB數(shù)據(jù),共21位。
ALTLVDS_TX的輸入端接入轉(zhuǎn)換后的多位數(shù)據(jù)及像素時鐘,輸出為3路差分?jǐn)?shù)據(jù)信號和1路差分時鐘信號。在并轉(zhuǎn)串后會將數(shù)據(jù)重新排列,輸入的21位數(shù)據(jù)分為3通道7 bit輸出,高7位為一組,中間7位為一組,低7位為一組。為了實現(xiàn)每個通道在一個時鐘輸出7位數(shù)據(jù),ALTLVDS_TX中的鎖相環(huán)根據(jù)輸出與輸入的速率比,計算出倍頻后的時鐘為像素時鐘×7。倍頻后的時鐘為移位時鐘,第一個移位時鐘輸出每組的最高位數(shù)據(jù),第二個移位時鐘輸出每組的次高位數(shù)據(jù),依次進(jìn)行至輸出整個數(shù)據(jù)。
數(shù)據(jù)更新率是顯示性能的關(guān)鍵參數(shù),影響數(shù)據(jù)更新率的因素主要有DDR2的工作時鐘及讀寫操作控制。為了驗證系統(tǒng)性能,以本顯示驅(qū)動器為實驗平臺進(jìn)行實驗驗證。顯示驅(qū)動器是型號為EP4CE15F23C8N的FPGA,數(shù)據(jù)緩存器為400 MHz的DDR2存儲器,顯示裝置為1 024 pixel×768 pixel分辨率的具有LVDS接口的液晶顯示屏。該FPGA的DDR2驅(qū)動時鐘最高輸出為166 MHz,因此將此時鐘作為最高測試時鐘。利用QuartusII軟件中的SignalTap II Logic Analyzer工具對DDR2的讀寫過程進(jìn)行采樣分析,本文設(shè)計采用的分段讀寫方式,使得讀寫交替的時間縮短,輸入數(shù)據(jù)的等待時間減小,可最大限度利用總線帶寬,提高數(shù)據(jù)更新率。
利用發(fā)送一幀數(shù)據(jù)的時間測算數(shù)據(jù)更新率,每發(fā)送完一幀數(shù)據(jù)計時信號取反,根據(jù)計時信號計算數(shù)據(jù)更新率,在同一實驗平臺分別對分段讀寫模式及傳統(tǒng)的連續(xù)讀寫模式進(jìn)行數(shù)據(jù)更新率測試。測試3組不同時鐘頻率下的實驗數(shù)據(jù),測試數(shù)據(jù)如表1所示。從表1的測試結(jié)果可以看到:相對于普通的連續(xù)讀寫方式,本文設(shè)計的分段讀寫具有更好的數(shù)據(jù)更新率。
表1 數(shù)據(jù)更新率測試數(shù)據(jù)
本文設(shè)計的基于FPGA的LVDS接口顯示屏驅(qū)動,圖像數(shù)據(jù)更新率達(dá)到了高清屏的顯示需求,并且LVDS接口使得數(shù)據(jù)傳輸?shù)目垢蓴_能力更強(qiáng),采用FPGA進(jìn)行邏輯編程使得設(shè)計控制靈活。此設(shè)計能夠滿足目前對液晶顯示驅(qū)動的需求,與傳統(tǒng)的顯示驅(qū)動模式相比,具有更好的實用價值。
[1]程明,肖祖勝.基于FPGA的TFT-LCD顯示驅(qū)動設(shè)計[J].液晶與顯示,2009,24(2):228-231.
[2]張超建,王厚軍.基于FPGA的TFT-LCD液晶顯示模塊設(shè)計[J].中國測試,2010,36(5):73-75.
[3]董春雷,王康平,陳威,等.LVDS技術(shù)在LCD數(shù)據(jù)傳輸中的應(yīng)用[J].電子技術(shù),2011,38(2):48-49.
[4]劉杰,程松華,張永棟,等.基于Mini-LVDS技術(shù)的TFT-LCD時序控制器的設(shè)計[J].液晶與顯示,2014,29(2): 238-244.
[5]潘子升,苗繪玲.時序控制器TCON的研究與設(shè)計[J].電子設(shè)計工程,2011,19(3):67-70.
[6]梁皓東,張國平.基于ARM9+FPGA的便攜式視頻展示臺的設(shè)計[J].電視技術(shù),2014,38(3):60-63.
[7]陳建軍,金強(qiáng)寧,章鵬,等.基于FPGA的TFT液晶顯示時序控制器設(shè)計[J].液晶與顯示,2015,30(4):647-654.
[8]陳俊,唐小琦,周會成,等.基于FPGA的TFT大屏幕液晶顯示控制器設(shè)計[J].組合機(jī)床與自動化加工技術(shù),2014(3):13-15.
[9]薛家祥,黃澤林,沈棟,等.TFT-LCD驅(qū)動中SDRAM控制器的仲裁器設(shè)計[J].液晶與顯示,2013,28(6):877-882.
[10]劉亮.特定需求液晶顯示控制器的設(shè)計實現(xiàn)[J].液晶與顯示,2015,30(1):109-113.
[11]王軍,張福弟,王磊,等.基于STM32的R61581驅(qū)動液晶屏顯示方法研究[J].液晶與顯示,2016,31(1):93-96.
[12]張斌,解宇,劉陳曦,等.基于液晶顯示屏的低功耗驅(qū)動技術(shù)[J].液晶與顯示,2016,31(3):290-294.
TN27
A
1672-6871(2017)05-0016-04
10.15926/j.cnki.issn1672-6871.2017.05.004
國家自然科學(xué)基金項目(51205108);河南省高等學(xué)校重點科研基金項目(15A535001)
徐巧玉(1979-),女,河南洛陽人,副教授,博士,碩士生導(dǎo)師,主要研究方向為嵌入式系統(tǒng)、機(jī)器視覺、智能測試技術(shù)及儀器.
2016-09-07