《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于MCU和FPGA的LED圖文顯示屏控制系統(tǒng)
基于MCU和FPGA的LED圖文顯示屏控制系統(tǒng)
摘要: 引言目前,,市場上的中小規(guī)模LED顯示系統(tǒng),,一般采用傳統(tǒng)的單片機作為主控芯片,。對LED大屏幕顯示屏來說,,由于數(shù)據(jù)傳輸量大,,要求掃描速度快,,而單片機內(nèi)部的資源較少,、運行速度較慢,,難于滿足系統(tǒng)要求,。以FPGA
關(guān)鍵詞: FPGA MCU 圖文顯示屏 LED
Abstract:
Key words :

  引言

  目前,市場上的中小規(guī)模LED顯示系統(tǒng),,一般采用傳統(tǒng)的單片機作為主控芯片,。對LED大屏幕顯示屏來說,由于數(shù)據(jù)傳輸量大,,要求掃描速度快,,而單片機內(nèi)部的資源較少、運行速度較慢,,難于滿足系統(tǒng)要求,。以FPGA作為控制器,一方面,,F(xiàn)PGA采用軟件編程實現(xiàn)硬件功能,,速度較快;另一方面,,它的引腳資源豐富,,可擴展性強。因此,,用單片F(xiàn)PGA和簡單的外圍電路就可以實現(xiàn)大屏幕LED顯示屏的控制,,無需另外設(shè)計漢字庫,具有集成度高,、穩(wěn)定性好,、設(shè)計靈活和效率高等優(yōu)點。

  1  系統(tǒng)總體結(jié)構(gòu)

  LED大屏幕顯示系統(tǒng)由上位機(PC機),、單片機系統(tǒng),、FPGA控制器、LED顯示屏的行列驅(qū)動電路等模塊組成,,如圖1所示,。上位機負責(zé)漢字、字符等數(shù)據(jù)的采集與發(fā)送,。單片機系統(tǒng)與上位機之間以異步串行通信工作方式,,通過串行端口從上位機獲得已完成格式轉(zhuǎn)換的待顯示的圖形點陣數(shù)據(jù),并將其存入EEPROM存儲器,。之后通過FPGA控制器,,將存儲器的顯示數(shù)據(jù)還原到LED顯示屏。掃描控制電路采用可編程邏輯芯片CycloneEP1C6,利用VHDL語言編程實現(xiàn),,采用1/16掃描方式,,刷新頻率在60Hz以上。本文著重介紹2561024的單色圖文顯示屏的FPGA控制模塊,。

  2  LED顯示屏基本工作原理

  對大屏幕LED顯示屏來說,,列顯示數(shù)據(jù)通常采用的是串行傳輸方式,行采用1/16的掃描方式,。圖2為1632點陣屏單元模塊的基本結(jié)構(gòu),,列驅(qū)動電路采用4個74HC595級聯(lián)而成。在移位脈沖SRCLK的作用下,,串行數(shù)據(jù)從74HC595的數(shù)據(jù)端口SER一位一位地輸入,,當一行的所有32列數(shù)據(jù)傳送完后,輸出鎖存信號RCLK并選通行信號Y0,則第1行的各列數(shù)據(jù)就可按要求顯示,。

  按同樣的方法顯示其余各行,,當16行數(shù)據(jù)掃描一遍(即完成一個周期)后,再從第1行開始下一個周期的掃描,。只要掃描的周期小于20ms,顯示屏就不閃爍,。

  2561024大屏幕顯示屏由1632個的1632點陣屏級聯(lián)而成。為了縮短控制系統(tǒng)到屏體的信號傳輸時間,,將顯示數(shù)據(jù)分為16個區(qū),,每個區(qū)由161024點陣組成,每行數(shù)據(jù)為1024/8=128字節(jié),,顯示屏的像素信號由LED顯示屏的右側(cè)向左側(cè)傳輸移位,,把16個分區(qū)的數(shù)據(jù)存在同一塊存儲器。一屏的顯示數(shù)據(jù)為32KB,要準確讀出16個分區(qū)的數(shù)據(jù),,其存儲器的讀地址由16位組成,,由于數(shù)據(jù)只有32KB,因此最高可置為0,。其余15位地址從高到低依次為:行地址(4位)、列地址(7位),、分區(qū)地址(4位),。4位分區(qū)地址的譯碼信號(Y0~Y15)作為鎖存器的鎖存脈沖,在16個讀地址發(fā)生周期內(nèi),,依次將第1~16分區(qū)的第1字節(jié)數(shù)據(jù)鎖存到相應(yīng)的鎖存器,,然后在移位鎖存信號上升沿將該16字節(jié)數(shù)據(jù)同時鎖存入16個8位并轉(zhuǎn)串移位寄存器組中。在下一個16個讀地址發(fā)生時鐘周期,,一方面,,并轉(zhuǎn)串移位寄存器將8位數(shù)據(jù)移位串行輸出,移位時鐘為讀地址發(fā)生時鐘的二分頻,;另一方面,,依次將16個分區(qū)的第2字節(jié)數(shù)據(jù)讀出并鎖入相應(yīng)的鎖存器,按照這種規(guī)律將所有分區(qū)的第一行數(shù)據(jù)依次全部讀出后,,在數(shù)據(jù)有效脈沖信號的上升沿將所有串行移位數(shù)據(jù)輸出,,驅(qū)動LED顯示。接下來,,移位輸出第2行的數(shù)據(jù),,在此期間第1行保持顯示;第2行全部移入后,,驅(qū)動第2行顯示,,同時移入第3行按照這種各分區(qū)分行掃描的方式完成整個LED大屏幕的掃描顯示。

  3  基于FPGA顯示屏控制器的設(shè)計

  3.1 FPGA控制模塊總體方案

  如圖3所示,,F(xiàn)PGA控制模塊主要由單片機與FPGA接口及數(shù)據(jù)讀寫模塊,、讀地址發(fā)生器、譯碼器,、行地址發(fā)生器,、數(shù)據(jù)鎖存器組、移位寄存器組,、脈沖發(fā)生器等模塊組成,。

  讀地址發(fā)生器主要產(chǎn)生讀地址信號,地址信號送往MCU接口及數(shù)據(jù)讀寫模塊,,讀取外部SRAM1或SRAM2中已處理好的LED顯示屏數(shù)據(jù),,并把數(shù)據(jù)按分區(qū)方式送到數(shù)據(jù)鎖存器組鎖存。鎖存器輸出16分區(qū)數(shù)據(jù),,通過移位寄存器組實現(xiàn)并串轉(zhuǎn)換得到顯示屏所需要的串行數(shù)據(jù),,并送往LED顯示屏列驅(qū)動電路。脈沖發(fā)生器為各模塊提供相應(yīng)的同步時鐘,行地址發(fā)生器產(chǎn)生相應(yīng)的行信號送往顯示屏的行驅(qū)動電路,。

  3.2 單片機與FPGA接口及數(shù)據(jù)讀寫模塊

  單片機與FPGA接口及數(shù)據(jù)讀寫模塊結(jié)構(gòu)如圖4所示,。單片機從EEPROM中讀取數(shù)據(jù)并根據(jù)顯示要求進行處理后,通過接口及數(shù)據(jù)讀寫模塊把數(shù)據(jù)送往數(shù)據(jù)緩沖器SRAM1或SRAM2,。為提高數(shù)據(jù)的傳輸速度,,保證顯示效果的連續(xù)性,,在系統(tǒng)中采用雙體切換技術(shù)來完成數(shù)據(jù)存儲過程,。也就是說,采用雙SRAM存儲結(jié)構(gòu),,兩套完全獨立的讀,、寫地址線和數(shù)據(jù)線輪流切換進行讀寫。工作時,,F(xiàn)PGA在一個特定的時間只從兩塊SRAM中的一塊讀取顯示的數(shù)據(jù)進行顯示,,同時另外一塊SRAM與MCU進行數(shù)據(jù)交換。MCU會寫入新的數(shù)據(jù),,依次交替工作,,可實現(xiàn)左移、上移,、雙屏等顯示模式,。如果顯示的內(nèi)容不改變,即一塊SRAM里的數(shù)據(jù)不變時,,MCU不需要給另外一塊SRAM寫數(shù)據(jù),。

  該模塊采用VHDL有限狀態(tài)機來實現(xiàn),整個控制分為4個狀態(tài),,其狀態(tài)轉(zhuǎn)換圖如圖5所示,。其工作過程如下:

 

  系統(tǒng)開機進入初始狀態(tài)ST0,單片機的寫入使能端E為低電平,單片機從EEPROM中讀取數(shù)據(jù)并把數(shù)據(jù)寫入到SRAM1,同時FPGA讀取SRAM2中的數(shù)據(jù),;當單片機數(shù)據(jù)寫完一屏數(shù)據(jù)后E變?yōu)楦唠娖?,當FPGA從SRAM2中讀完數(shù)據(jù)、結(jié)束信號READ_END為低電平時,,進入ST1狀態(tài),。

 

  在ST1狀態(tài)下,若沒有新的數(shù)據(jù)寫入則E保持高電平,,F(xiàn)PGA讀取SRAM1的數(shù)據(jù),,為靜態(tài)顯示;只有當單片機的讀入控制信號E為低電平且READ_END為低電平時,,進入ST2狀態(tài),。在ST2狀態(tài)下,單片機把數(shù)據(jù)寫入SRAM2,同時FPGA讀取SRAM1的數(shù)據(jù),單片機數(shù)據(jù)寫完后E變?yōu)楦唠娖?,當FPGA一屏數(shù)據(jù)讀完后READ_END為低電平,,進入ST3狀態(tài)。在ST3狀態(tài)下,,如果沒有新數(shù)據(jù)寫入E為高電平,,F(xiàn)PGA讀取SRAM2中的數(shù)據(jù)。當單片機有新的數(shù)據(jù)寫入時E變?yōu)榈碗娖?,當FPGA一屏數(shù)據(jù)讀完后READ_END為低電平時,,重新進入ST0狀態(tài)。通過這種周而復(fù)始的交替工作完成數(shù)據(jù)的寫入與讀取,,其端口程序如下:

  3.3 讀地址發(fā)生器

  讀地址發(fā)生器主要產(chǎn)生外部緩存器SRAM1(SRAM2)的讀地址信號,,使系統(tǒng)能正確地從存儲器中讀取相應(yīng)的顯示數(shù)據(jù)。其地址最高位為0,其余地址分別為行地址(hang[30]),、列地址(lie[60]),、分區(qū)地址(qu[30])15位有效地址信號。在16個脈沖周期內(nèi)讀出在SRAM1(SRAM2)中的16字節(jié)數(shù)據(jù),,其部分VHDL源程序如下:

  3.4 譯碼器

  譯碼器模塊主要是產(chǎn)生16路的分區(qū)信號(低電平有效)分別控制16個鎖存器,,把16個分區(qū)的顯示數(shù)據(jù)分別鎖存在相應(yīng)的鎖存器中。

  3.5 數(shù)據(jù)鎖存器組及移位寄存器組模塊

  數(shù)據(jù)鎖存器組模塊由16個8位鎖存器組成鎖存器組,,鎖存16個分區(qū)的數(shù)據(jù),。移位寄存器組模塊由16個8位移位寄存器組成,把各路鎖存器中8位并行數(shù)據(jù)轉(zhuǎn)換成同時輸出的16路串行數(shù)據(jù),,驅(qū)動LED顯示屏,,實現(xiàn)數(shù)據(jù)的并串轉(zhuǎn)換。

  其生成的元件符號如圖6所示,。其中,,DATA_IN[7.0]為每個分區(qū)的8位并行數(shù)據(jù)輸入,SCLK為移位時鐘,,CLR為清零信號,,LOAD為數(shù)據(jù)鎖存信號,CS[150]為16分區(qū)的輸入信號(接譯碼器的輸出),,DATA_OUT[150]為16路的串行數(shù)據(jù)輸出,。

  3.6 脈沖發(fā)生器

  系統(tǒng)采用1/16的掃描方式,把數(shù)據(jù)分為16分區(qū),,16分區(qū)數(shù)據(jù)同時傳送,。假設(shè)刷新的頻率為60Hz(即周期為16.67ms),每一行顯示的時間約為16.67ms/16=1.04ms,。每行有1024位,,則移位脈沖周期為1.04/1024=102s,即移位頻率為0.983MHz以上才能滿足要求,。

  由于移位脈沖是數(shù)據(jù)讀取模塊時鐘的2分頻,因此系統(tǒng)的時鐘至少1.97MHz以上,,本系統(tǒng)采用50MHz時鐘源,。

  其時序圖如圖7所示。

  其中,,RDCLK為FPGA讀取數(shù)據(jù)時鐘,;SCLK是串行輸出的移位時鐘,是RDCLK的2分頻,;LOAD是數(shù)據(jù)鎖存信號,,每次讀完16個分區(qū)中的某個字節(jié)數(shù)據(jù)DATA后產(chǎn)生鎖存信號,數(shù)據(jù)鎖存在數(shù)據(jù)鎖存器組中,,其時鐘是RDCLK的16分頻,。

  4  FPGA控制模塊的仿真測試

  在QuartusII5.1中建立一個工程,,并建立原理圖文件,,把單片機與FPGA接口及數(shù)據(jù)讀寫模塊、讀地址發(fā)生器,、譯碼器,、行地址發(fā)生器、數(shù)據(jù)鎖存器,、移位寄存器,、脈沖發(fā)生器等單元模塊所生的模塊元件符號連接起來,構(gòu)成總控制模塊邏輯圖并對其功能仿真,。仿真結(jié)果如圖8所示,,從存儲器中讀取16字節(jié)數(shù)據(jù),經(jīng)并串轉(zhuǎn)換輸出16路的串行數(shù)據(jù),。從波形圖分析,,功能正確,且各輸出端口信號均符合時序要求,。

  5  結(jié)語

  FPGA是在線可編程芯片,,可以根據(jù)不同的用戶要求進行不同的編程,縮短了系統(tǒng)的開發(fā)周期并節(jié)約了硬件的開發(fā)成本,。本文以FPGA為主芯片,,較完整地設(shè)計了大屏幕LED單色圖文顯示屏控制系統(tǒng)。隨著LED顯示屏技術(shù)的發(fā)展,,F(xiàn)PGA與ARM或DSP等芯片的組合,,必將在雙色顯示屏和彩色顯示屏領(lǐng)域獲得廣泛的應(yīng)用。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。