<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 嵌入式大屏幕LED顯示屏的設(shè)計(jì)與實(shí)現(xiàn)

          嵌入式大屏幕LED顯示屏的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-02-06 來源:網(wǎng)絡(luò) 收藏

          摘 要:鑒于傳統(tǒng)的顯示規(guī)模小、可靠性差、需要上位機(jī)實(shí)時(shí)控制的問題,提出一種基于FPGA和2片SRAM的顯示的方法,其顯示規(guī)模達(dá)到512×512點(diǎn)陣列,并且可以在完全不需要上位機(jī)控制的情況下實(shí)時(shí)獨(dú)立的工作。本已經(jīng)實(shí)際使用在現(xiàn)場(chǎng)廠房中,能夠較好地對(duì)廠房中的生產(chǎn)情況進(jìn)行實(shí)時(shí)顯示。著重討論該系統(tǒng)最底層的硬件連接及相應(yīng)的軟件,并給出其軟、硬件。

          本文引用地址:http://www.ex-cimer.com/article/168583.htm

          關(guān)鍵詞:;;優(yōu)化;FPGA

          1 引 言

          LED的應(yīng)用已經(jīng)比較普遍,而且隨著應(yīng)用的普及,更多新式的LED會(huì)應(yīng)用在更多的場(chǎng)合,所以研究點(diǎn)陣LED的顯示很有實(shí)際意義。

          但是現(xiàn)在市場(chǎng)上的多種LED在顯示性能上良莠不齊,并且大多需要上位機(jī)對(duì)顯示過程進(jìn)行實(shí)時(shí)控制。本文提出一種優(yōu)化的高性能高可靠性的嵌入式大屏幕LED顯示系統(tǒng),只需要用1片F(xiàn)PGA和2片SRAM就可以大屏幕LED顯示的驅(qū)動(dòng)和內(nèi)容更換,可以說其性能已經(jīng)大有改善。本設(shè)計(jì)可以應(yīng)對(duì)多種大屏幕顯示的場(chǎng)合。

          2 系統(tǒng)硬件設(shè)計(jì)與

          硬件連接的方式多種并且靈活,其連接方式直接影響到顯示的性能。下面給出的硬件連接方式是最優(yōu)的方式,能夠達(dá)到高性能的顯示,并且使軟件編寫變得簡單。

          每個(gè)8×8的LED點(diǎn)陣塊稱為最小模塊。每16個(gè)8×8的LED點(diǎn)陣塊為一個(gè)基模塊,一個(gè)基模塊橫向有8個(gè),縱向有2個(gè)最小模塊,如圖1所示。圖中每個(gè)小方格代表一個(gè)最小模塊。

          每個(gè)最小模塊控制信號(hào)為8個(gè)行信號(hào)H1~H8和8個(gè)數(shù)據(jù)信號(hào)R1~R8。行信號(hào)接一個(gè)38譯碼器74HC138的輸出,他的輸入為HangQ[2..0];而列信號(hào)給具體這一行的數(shù)據(jù)信號(hào)接的是一個(gè)74HC595的輸出,如圖2所示。

          74HC595是移位鎖存芯片,他內(nèi)部有一個(gè)移位寄存器,還有一個(gè)數(shù)據(jù)移入引腳(DS)、一個(gè)數(shù)據(jù)移出引腳(Q8)、8個(gè)數(shù)據(jù)輸出引腳(Q1~Q8),另外還有脈沖信號(hào)(CLK)和數(shù)據(jù)鎖存信號(hào)(ST)。他的工作原理是當(dāng)脈沖信號(hào)作用時(shí)將移入引腳的數(shù)據(jù)移入芯片內(nèi)部的移位寄存器,當(dāng)移滿8位數(shù)據(jù)以后,第8位的數(shù)據(jù)就會(huì)出現(xiàn)在數(shù)據(jù)移出引腳上,再給一個(gè)脈沖信號(hào),這一位數(shù)據(jù)就會(huì)被移出同時(shí)也有新的數(shù)據(jù)移入。當(dāng)數(shù)據(jù)鎖存信號(hào)有效時(shí),芯片內(nèi)部的的移位寄存器就將8位數(shù)據(jù)就鎖存到8個(gè)數(shù)據(jù)輸出引腳上,從而實(shí)現(xiàn)數(shù)據(jù)輸出。
          對(duì)于一個(gè)最小模塊,當(dāng)數(shù)據(jù)信號(hào)R有效后,時(shí)鐘信號(hào)TSCK就將該數(shù)據(jù)移入74HC595的內(nèi)部寄存器,內(nèi)部寄存器的8位全部移滿數(shù)據(jù)后,鎖存信號(hào)TLOCK有效,就能將移滿的數(shù)據(jù)全部送到8個(gè)數(shù)據(jù)信號(hào)R1~R8上。這個(gè)時(shí)候,再用HangQ[2..0]選中其中的某一行信號(hào),行鎖存信號(hào)TLEDEN有效后,就可以在這個(gè)8×8的點(diǎn)陣列上實(shí)現(xiàn)數(shù)據(jù)顯示。因?yàn)樵谝粋€(gè)特定的時(shí)間只能在這個(gè)8×8的LED點(diǎn)陣塊上顯示其中的一行,所以將第一行到第8行依次循環(huán)顯示,只要速度足夠快,人眼看起來就是連續(xù)的。
          對(duì)于一個(gè)基模塊,因?yàn)槊總€(gè)最小模塊都有一個(gè)74HC595移位鎖存芯片,只要將各個(gè)最小模塊的74HC595串聯(lián)起來,也就是將前一個(gè)74HC595的數(shù)據(jù)移出引腳接到下一個(gè)74HC595的數(shù)據(jù)移入引腳上,而74HC595的脈沖信號(hào)和數(shù)據(jù)鎖存信號(hào)都接同一個(gè)信號(hào),就可以實(shí)現(xiàn)一個(gè)基模塊的數(shù)據(jù)顯示。與最小模塊一樣,在一個(gè)特定的時(shí)間只能顯示基模塊中的所有最小模塊的某一行。只要在8行依次顯示的過程中速度足夠快,人眼就看不出閃爍。
          這樣就實(shí)現(xiàn)了上面16個(gè)基模塊連在一起。數(shù)據(jù)及控制信號(hào)從右邊進(jìn)入,從左邊輸出。一個(gè)基模塊為64×16的LED點(diǎn)陣塊,本設(shè)計(jì)中的顯示規(guī)模為512×512點(diǎn)陣,所以要將橫向有8個(gè),豎向有32個(gè)最小模塊連接起來。而在實(shí)際的設(shè)計(jì)中分為上半屏和下半屏顯示,分別為512×256。當(dāng)數(shù)據(jù)裝滿上半屏后再裝下半屏,數(shù)據(jù)鎖存信號(hào)和行鎖存信號(hào)最后給出,從而實(shí)現(xiàn)整屏的最小模塊的某一行顯示。當(dāng)然要實(shí)現(xiàn)整屏數(shù)據(jù)的顯示,只有循環(huán)顯示整屏中最小模塊的8行。
          在上半屏顯示中,又將其分為8個(gè)512×32的塊,這樣的塊叫單獨(dú)顯示模塊,也就是說將橫向的2行基模塊看成一個(gè)單獨(dú)的模塊并用單獨(dú)的一組信號(hào)進(jìn)行控制,上半屏就要8組信號(hào)控制。這8組信號(hào)除了數(shù)據(jù)信號(hào)R不同外,其他的信號(hào)都是一樣的。也就是說,在上半屏顯示中8條數(shù)據(jù)線同時(shí)給上半屏的8個(gè)單獨(dú)顯示模塊串打數(shù)據(jù),當(dāng)然只是給單獨(dú)顯示模塊中的最小模塊的某一行打滿數(shù)據(jù),然后再給下半屏打入數(shù)據(jù)。所以下半屏的情況與上半屏基本一樣,除了8組數(shù)據(jù)信號(hào)R不同外,還有時(shí)鐘信號(hào)也不一樣。輸入數(shù)據(jù)時(shí),上半屏的時(shí)鐘信號(hào)首先有效,根據(jù)基模塊的理論要輸入2048個(gè)脈沖以后上半屏的數(shù)據(jù)才被灌滿;然后下半屏的數(shù)據(jù)才有效,從而輸入下半屏的數(shù)據(jù),情況與上半屏完全一樣。
          在顯示控制方面,使用一塊ALTERA公司的FPGA芯片,型號(hào)為EPF10K20TC1444,另外還使用了2塊SRAM芯片,每塊的容量為128kB,他們都用來存放顯示的數(shù)據(jù)(見圖3)。
          工作時(shí),FPGA在一個(gè)特定的時(shí)間只從2塊SRAM的其中一塊取出顯示的數(shù)據(jù)進(jìn)行顯示,而同時(shí)另外一塊SRAM與MPU進(jìn)行數(shù)據(jù)交換,MPU會(huì)寫入新的數(shù)據(jù),以便FPGA在下一個(gè)時(shí)間段顯示這塊SRAM的數(shù)據(jù),以此交替的工作。如果顯示的圖像不改變,即一塊SRAM里的數(shù)據(jù)不變時(shí),MPU就不需要給另一塊SRAM寫數(shù)據(jù),這時(shí)該嵌入式顯示模塊就可以獨(dú)立于MPU工作。一幀的數(shù)據(jù)大小為32kB,遠(yuǎn)小于SRAM的容量,所以可以在編寫程序的時(shí)候加入一些顯示的技巧,比如從上往下顯示等。
          由以上所知,FPGA有2個(gè)基本作用,一個(gè)是從一塊SRAM中取出數(shù)據(jù)并顯示在顯示屏上;另外一個(gè)是將MPU給的數(shù)據(jù)寫到另一塊SRAM中。
          3 軟件設(shè)計(jì)
          軟件設(shè)計(jì)要根據(jù)硬件的連接情況編寫,主要分為顯示部分和寫RAM部分(見圖4)。

          在掃描顯示中,首先上半屏的8組控制信號(hào)的時(shí)鐘脈沖信號(hào)有效,并且在這個(gè)過程中,8組控制信號(hào)的數(shù)據(jù)信號(hào)R有效,所以就可以先將上半屏的8個(gè)單獨(dú)顯示模塊中的最小模塊的某一行灌滿數(shù)據(jù)。然后用同樣的方法將下半屏的8個(gè)單獨(dú)顯示模塊中的最小模塊的某一行灌滿數(shù)據(jù),當(dāng)然上半屏和下半屏灌滿的都是最小模塊的相同的一行。最后數(shù)據(jù)鎖存信號(hào)和行鎖存信號(hào)有效,使其顯示。在這個(gè)過程中要注意的是數(shù)據(jù)信號(hào)R,因?yàn)橐@示整屏的數(shù)據(jù),在軟件編寫的過程中要將某個(gè)位置顯示的數(shù)據(jù)準(zhǔn)確的顯示在該位置,就要從內(nèi)存中準(zhǔn)確的取出這個(gè)數(shù)據(jù)。

          每一幀顯示的數(shù)據(jù)大小為32768B,對(duì)于2塊RAM交替工作的情況是完全符合要求的。并且SRAM的存取速度快,換幀的時(shí)候也能夠很好地顯示出預(yù)期的數(shù)據(jù)。程序中用一個(gè)RAM選擇模塊,用來選擇某個(gè)時(shí)間是讀出哪一塊RAM,還是寫入哪一塊RAM。

          FPGA與存儲(chǔ)器聯(lián)接的信號(hào)為am1A[16..0], Ram1D[7..0], Ram1Rd, Ram1 Wr; Ram2A[16..0], Ram2D[7..0], Ram2Rd, Ram2Wr。當(dāng)FPGA從Ram1取出數(shù)據(jù)進(jìn)行顯示時(shí),其中有關(guān)Ram1的信號(hào)就有效;同時(shí)就給Ram2寫數(shù)據(jù)。程序中還用到4個(gè)內(nèi)部變量Rt[7..0][7..0],Gt[7..0][7..0],Rs[7..0][7..0]和Gs[7..0][7..0]分別代表4個(gè)數(shù)組,每個(gè)數(shù)組里有8個(gè)字節(jié)。

          程序中用到1個(gè)全局時(shí)鐘clk,他用來驅(qū)動(dòng)1個(gè)內(nèi)部全局信號(hào)counter_temp,他是1個(gè)15位的矢量。TSCK和TNsck信號(hào)將8個(gè)clk時(shí)鐘周期作為他們的1個(gè)時(shí)鐘周期,也就是說8個(gè)clk時(shí)間送出1位數(shù)據(jù)。FPGA讀RAM的時(shí)序?yàn)?首先地址信號(hào)出現(xiàn)在RamxA[16..0]上,然后RamxRd,RamxWr分別置為低電平和高電平,經(jīng)過12~15ns,讀出的數(shù)據(jù)就會(huì)出現(xiàn)在RamxD[7..0]上以便FPGA讀這個(gè)數(shù)來顯示。

          FPGA寫Ram的時(shí)序是外部MPU信號(hào)控制,首先地址信號(hào)出現(xiàn)在Ram2A[16..0]上,然后RamRd, RamWr分別置為高電平和低電平,寫的數(shù)據(jù)出現(xiàn)在Ram2D[7..0]上。經(jīng)過很短的時(shí)間,數(shù)據(jù)就寫入了。

          程序設(shè)定FPGA中的Ram1D和Ram2D為雙向口,可寫可讀。在內(nèi)部要設(shè)相應(yīng)的緩沖器。因?yàn)閷慠AM是MPU寫給RAM,MPU要指明寫的地址和數(shù)據(jù),所以在程序中要有地址和數(shù)據(jù)輸入口。實(shí)際設(shè)計(jì)中為了減少FP2GA的端口,設(shè)計(jì)成低地址和數(shù)據(jù)復(fù)用線AD[7..0],用一個(gè)信號(hào)ALE選擇;當(dāng)其為低電平時(shí),AD[7..0]有效的數(shù)據(jù)是地址,為高電平時(shí)為要寫入RAM中的數(shù)據(jù)。

          靜態(tài)圖像顯示過程中為了使眼睛看上去不閃爍,就要使一幀圖像在一秒內(nèi)至少顯示50次,即使一幀圖像在最多20ms顯示完。要達(dá)到這個(gè)要求,就要使一個(gè)最小模塊的8行在最多20ms內(nèi)完成一個(gè)循環(huán)顯示。因?yàn)槭巧习肫僚c下半屏分開傳輸數(shù)據(jù),所以要求在最多1.25ms內(nèi)傳完半屏數(shù)據(jù),時(shí)鐘周期需要在0.6μs以下,而選用的FPGA的時(shí)鐘頻率可以達(dá)到50MHz以上,完全符合顯示的要求。

          4 結(jié) 語

          硬件連接和軟件設(shè)計(jì)是融為一體的,在最初系統(tǒng)的整體規(guī)劃中,就是要兼顧兩者。本設(shè)計(jì)從硬件連接到最后的軟件實(shí)現(xiàn),都是優(yōu)化以后的結(jié)果。所以按照本設(shè)計(jì)中的硬件連接情況而設(shè)計(jì)的軟件,只需要一片2萬門的FPGA就可以實(shí)現(xiàn)如此大規(guī)模的點(diǎn)陣顯示,并且本設(shè)計(jì)的LED顯示屏,畫面非常清晰穩(wěn)定,并且在換幀的過程中能夠做到流暢自如,看不出停滯。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();