嵌入式大屏幕LED顯示屏的設計與實(shí)現
摘 要:鑒于傳統的LED顯示規模小、可靠性差、需要上位機實(shí)時(shí)控制的問(wèn)題,提出一種基于FPGA和2片SRAM的嵌入式大屏幕LED顯示的方法,其顯示規模達到512×512點(diǎn)陣列,并且可以在完全不需要上位機控制的情況下實(shí)時(shí)獨立的工作。本設計已經(jīng)實(shí)際使用在現場(chǎng)廠(chǎng)房中,能夠較好地對廠(chǎng)房中的生產(chǎn)情況進(jìn)行實(shí)時(shí)顯示。著(zhù)重討論該系統最底層的硬件連接及相應的軟件設計,并給出其軟、硬件實(shí)現。
本文引用地址:http://dyxdggzs.com/article/168583.htm關(guān)鍵詞:嵌入式;LED大屏幕;設計優(yōu)化;FPGA
1 引 言
LED顯示屏的應用已經(jīng)比較普遍,而且隨著(zhù)應用的普及,更多新式的LED顯示屏會(huì )應用在更多的場(chǎng)合,所以研究嵌入式大屏幕點(diǎn)陣LED的顯示很有實(shí)際意義。
但是現在市場(chǎng)上的多種LED顯示屏在顯示性能上良莠不齊,并且大多需要上位機對顯示過(guò)程進(jìn)行實(shí)時(shí)控制。本文提出一種優(yōu)化的高性能高可靠性的嵌入式大屏幕LED顯示系統,只需要用1片FPGA和2片SRAM就可以實(shí)現大屏幕LED顯示的驅動(dòng)和內容更換,可以說(shuō)其性能已經(jīng)大有改善。本設計可以應對多種大屏幕顯示的場(chǎng)合。
2 系統硬件設計與實(shí)現
硬件連接的方式多種并且靈活,其連接方式直接影響到顯示的性能。下面給出的硬件連接方式是最優(yōu)的方式,能夠達到高性能的顯示,并且使軟件編寫(xiě)變得簡(jiǎn)單。
每個(gè)8×8的LED點(diǎn)陣塊稱(chēng)為最小模塊。每16個(gè)8×8的LED點(diǎn)陣塊為一個(gè)基模塊,一個(gè)基模塊橫向有8個(gè),縱向有2個(gè)最小模塊,如圖1所示。圖中每個(gè)小方格代表一個(gè)最小模塊。
每個(gè)最小模塊控制信號為8個(gè)行信號H1~H8和8個(gè)數據信號R1~R8。行信號接一個(gè)38譯碼器74HC138的輸出,他的輸入為HangQ[2..0];而列信號給具體這一行的數據信號接的是一個(gè)74HC595的輸出,如圖2所示。


在上半屏顯示中,又將其分為8個(gè)512×32的塊,這樣的塊叫單獨顯示模塊,也就是說(shuō)將橫向的2行基模塊看成一個(gè)單獨的模塊并用單獨的一組信號進(jìn)行控制,上半屏就要8組信號控制。這8組信號除了數據信號R不同外,其他的信號都是一樣的。也就是說(shuō),在上半屏顯示中8條數據線(xiàn)同時(shí)給上半屏的8個(gè)單獨顯示模塊串打數據,當然只是給單獨顯示模塊中的最小模塊的某一行打滿(mǎn)數據,然后再給下半屏打入數據。所以下半屏的情況與上半屏基本一樣,除了8組數據信號R不同外,還有時(shí)鐘信號也不一樣。輸入數據時(shí),上半屏的時(shí)鐘信號首先有效,根據基模塊的理論要輸入2048個(gè)脈沖以后上半屏的數據才被灌滿(mǎn);然后下半屏的數據才有效,從而輸入下半屏的數據,情況與上半屏完全一樣。


在掃描顯示中,首先上半屏的8組控制信號的時(shí)鐘脈沖信號有效,并且在這個(gè)過(guò)程中,8組控制信號的數據信號R有效,所以就可以先將上半屏的8個(gè)單獨顯示模塊中的最小模塊的某一行灌滿(mǎn)數據。然后用同樣的方法將下半屏的8個(gè)單獨顯示模塊中的最小模塊的某一行灌滿(mǎn)數據,當然上半屏和下半屏灌滿(mǎn)的都是最小模塊的相同的一行。最后數據鎖存信號和行鎖存信號有效,使其顯示。在這個(gè)過(guò)程中要注意的是數據信號R,因為要顯示整屏的數據,在軟件編寫(xiě)的過(guò)程中要將某個(gè)位置顯示的數據準確的顯示在該位置,就要從內存中準確的取出這個(gè)數據。
每一幀顯示的數據大小為32768B,對于2塊RAM交替工作的情況是完全符合要求的。并且SRAM的存取速度快,換幀的時(shí)候也能夠很好地顯示出預期的數據。程序中用一個(gè)RAM選擇模塊,用來(lái)選擇某個(gè)時(shí)間是讀出哪一塊RAM,還是寫(xiě)入哪一塊RAM。
FPGA與存儲器聯(lián)接的信號為am1A[16..0], Ram1D[7..0], Ram1Rd, Ram1 Wr; Ram2A[16..0], Ram2D[7..0], Ram2Rd, Ram2Wr。當FPGA從Ram1取出數據進(jìn)行顯示時(shí),其中有關(guān)Ram1的信號就有效;同時(shí)就給Ram2寫(xiě)數據。程序中還用到4個(gè)內部變量Rt[7..0][7..0],Gt[7..0][7..0],Rs[7..0][7..0]和Gs[7..0][7..0]分別代表4個(gè)數組,每個(gè)數組里有8個(gè)字節。
程序中用到1個(gè)全局時(shí)鐘clk,他用來(lái)驅動(dòng)1個(gè)內部全局信號counter_temp,他是1個(gè)15位的矢量。TSCK和TNsck信號將8個(gè)clk時(shí)鐘周期作為他們的1個(gè)時(shí)鐘周期,也就是說(shuō)8個(gè)clk時(shí)間送出1位數據。FPGA讀RAM的時(shí)序為:首先地址信號出現在RamxA[16..0]上,然后RamxRd,RamxWr分別置為低電平和高電平,經(jīng)過(guò)12~15ns,讀出的數據就會(huì )出現在RamxD[7..0]上以便FPGA讀這個(gè)數來(lái)顯示。
FPGA寫(xiě)Ram的時(shí)序是外部MPU信號控制,首先地址信號出現在Ram2A[16..0]上,然后RamRd, RamWr分別置為高電平和低電平,寫(xiě)的數據出現在Ram2D[7..0]上。經(jīng)過(guò)很短的時(shí)間,數據就寫(xiě)入了。
程序設定FPGA中的Ram1D和Ram2D為雙向口,可寫(xiě)可讀。在內部要設相應的緩沖器。因為寫(xiě)RAM是MPU寫(xiě)給RAM,MPU要指明寫(xiě)的地址和數據,所以在程序中要有地址和數據輸入口。實(shí)際設計中為了減少FP2GA的端口,設計成低地址和數據復用線(xiàn)AD[7..0],用一個(gè)信號ALE選擇;當其為低電平時(shí),AD[7..0]有效的數據是地址,為高電平時(shí)為要寫(xiě)入RAM中的數據。
靜態(tài)圖像顯示過(guò)程中為了使眼睛看上去不閃爍,就要使一幀圖像在一秒內至少顯示50次,即使一幀圖像在最多20ms顯示完。要達到這個(gè)要求,就要使一個(gè)最小模塊的8行在最多20ms內完成一個(gè)循環(huán)顯示。因為是上半屏與下半屏分開(kāi)傳輸數據,所以要求在最多1.25ms內傳完半屏數據,時(shí)鐘周期需要在0.6μs以下,而選用的FPGA的時(shí)鐘頻率可以達到50MHz以上,完全符合顯示的要求。
4 結 語(yǔ)
硬件連接和軟件設計是融為一體的,在最初系統的整體規劃中,就是要兼顧兩者。本設計從硬件連接到最后的軟件實(shí)現,都是優(yōu)化以后的結果。所以按照本設計中的硬件連接情況而設計的軟件,只需要一片2萬(wàn)門(mén)的FPGA就可以實(shí)現如此大規模的點(diǎn)陣顯示,并且本設計的LED顯示屏,畫(huà)面非常清晰穩定,并且在換幀的過(guò)程中能夠做到流暢自如,看不出停滯。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論