引言 目前,市場上的中小規模LED顯示系統,一般采用傳統的單片機作為主控芯片。對LED大屏幕顯示屏來說,由于數據傳輸量大,要求掃描速度快,而單片機內部的資源較少、運行速度較慢,難于滿足系統要求。以FPGA作為控制器,一方面,FPGA采用軟件編程實現硬件功能,速度較快;另一方面,它的引腳資源豐富,可擴展性強。因此,用單片FPGA和簡單的外圍電路就可以實現大屏幕LED顯示屏的控制,無需另外設計漢字庫,具有集成度高、穩定性好、設計靈活和效率高等優點。 1 系統總體結構 LED大屏幕顯示系統由上位機(PC機)、單片機系統、FPGA控制器、LED顯示屏的行列驅動電路等模塊組成,如圖1所示。上位機負責漢字、字符等數據的采集與發送。單片機系統與上位機之間以異步串行通信工作方式,通過串行端口從上位機獲得已完成格式轉換的待顯示的圖形點陣數據,并將其存入EEPROM存儲器。之后通過FPGA控制器,將存儲器的顯示數據還原到LED顯示屏。掃描控制電路采用可編程邏輯芯片CyclONeEP1C6,利用VHDL語言編程實現,采用1/16掃描方式,刷新頻率在60Hz以上。本文著重介紹2561024的單色圖文顯示屏的FPGA控制模塊。 對大屏幕LED顯示屏來說,列顯示數據通常采用的是串行傳輸方式,行采用1/16的掃描方式。圖2為1632點陣屏單元模塊的基本結構,列驅動電路采用4個74HC595級聯而成。在移位脈沖SRCLK的作用下,串行數據從74HC595的數據端口SER一位一位地輸入,當一行的所有32列數據傳送完后,輸出鎖存信號RCLK并選通行信號Y0,則第1行的各列數據就可按要求顯示。 2561024大屏幕顯示屏由1632個的1632點陣屏級聯而成。為了縮短控制系統到屏體的信號傳輸時間,將顯示數據分為16個區,每個區由161024點陣組成,每行數據為1024/8=128字節,顯示屏的像素信號由LED顯示屏的右側向左側傳輸移位,把16個分區的數據存在同一塊存儲器。一屏的顯示數據為32KB,要準確讀出16個分區的數據,其存儲器的讀地址由16位組成,由于數據只有32KB,因此最高可置為0。其余15位地址從高到低依次為:行地址(4位)、列地址(7位)、分區地址(4位)。4位分區地址的譯碼信號(Y0~Y15)作為鎖存器的鎖存脈沖,在16個讀地址發生周期內,依次將第1~16分區的第1字節數據鎖存到相應的鎖存器,然后在移位鎖存信號上升沿將該16字節數據同時鎖存入16個8位并轉串移位寄存器組中。在下一個16個讀地址發生時鐘周期,一方面,并轉串移位寄存器將8位數據移位串行輸出,移位時鐘為讀地址發生時鐘的二分頻;另一方面,依次將16個分區的第2字節數據讀出并鎖入相應的鎖存器,按照這種規律將所有分區的第一行數據依次全部讀出后,在數據有效脈沖信號的上升沿將所有串行移位數據輸出,驅動LED顯示。接下來,移位輸出第2行的數據,在此期間第1行保持顯示;第2行全部移入后,驅動第2行顯示,同時移入第3行按照這種各分區分行掃描的方式完成整個LED大屏幕的掃描顯示。 3 基于FPGA顯示屏控制器的設計 3.1 FPGA控制模塊總體方案 如圖3所示,FPGA控制模塊主要由單片機與FPGA接口及數據讀寫模塊、讀地址發生器、譯碼器、行地址發生器、數據鎖存器組、移位寄存器組、脈沖發生器等模塊組成。 3.2 單片機與FPGA接口及數據讀寫模塊 單片機與FPGA接口及數據讀寫模塊結構如圖4所示。單片機從EEPROM中讀取數據并根據顯示要求進行處理后,通過接口及數據讀寫模塊把數據送往數據緩沖器SRAM1或SRAM2。為提高數據的傳輸速度,保證顯示效果的連續性,在系統中采用雙體切換技術來完成數據存儲過程。也就是說,采用雙SRAM存儲結構,兩套完全獨立的讀、寫地址線和數據線輪流切換進行讀寫。工作時,FPGA在一個特定的時間只從兩塊SRAM中的一塊讀取顯示的數據進行顯示,同時另外一塊SRAM與MCU進行數據交換。MCU會寫入新的數據,依次交替工作,可實現左移、上移、雙屏等顯示模式。如果顯示的內容不改變,即一塊SRAM里的數據不變時,MCU不需要給另外一塊SRAM寫數據。 系統開機進入初始狀態ST0,單片機的寫入使能端E為低電平,單片機從EEPROM中讀取數據并把數據寫入到SRAM1,同時FPGA讀取SRAM2中的數據;當單片機數據寫完一屏數據后E變為高電平,當FPGA從SRAM2中讀完數據、結束信號READ_END為低電平時,進入ST1狀態。 3.3 讀地址發生器 讀地址發生器主要產生外部緩存器SRAM1(SRAM2)的讀地址信號,使系統能正確地從存儲器中讀取相應的顯示數據。其地址最高位為0,其余地址分別為行地址(hang[30])、列地址(lie[60])、分區地址(qu[30])15位有效地址信號。在16個脈沖周期內讀出在SRAM1(SRAM2)中的16字節數據,其部分VHDL源程序如下: 3.4 譯碼器 譯碼器模塊主要是產生16路的分區信號(低電平有效)分別控制16個鎖存器,把16個分區的顯示數據分別鎖存在相應的鎖存器中。 3.5 數據鎖存器組及移位寄存器組模塊 數據鎖存器組模塊由16個8位鎖存器組成鎖存器組,鎖存16個分區的數據。移位寄存器組模塊由16個8位移位寄存器組成,把各路鎖存器中8位并行數據轉換成同時輸出的16路串行數據,驅動LED顯示屏,實現數據的并串轉換。 其生成的元件符號如圖6所示。其中,DATA_IN[7.0]為每個分區的8位并行數據輸入,SCLK為移位時鐘,CLR為清零信號,LOAD為數據鎖存信號,CS[150]為16分區的輸入信號(接譯碼器的輸出),DATA_OUT[150]為16路的串行數據輸出。 3.6 脈沖發生器 系統采用1/16的掃描方式,把數據分為16分區,16分區數據同時傳送。假設刷新的頻率為60Hz(即周期為16.67ms),每一行顯示的時間約為16.67ms/16=1.04ms。每行有1024位,則移位脈沖周期為1.04/1024=102s,即移位頻率為0.983MHz以上才能滿足要求。 由于移位脈沖是數據讀取模塊時鐘的2分頻,因此系統的時鐘至少1.97MHz以上,本系統采用50MHz時鐘源。 其時序圖如圖7所示。 其中,RDCLK為FPGA讀取數據時鐘;SCLK是串行輸出的移位時鐘,是RDCLK的2分頻;LOAD是數據鎖存信號,每次讀完16個分區中的某個字節數據DATA后產生鎖存信號,數據鎖存在數據鎖存器組中,其時鐘是RDCLK的16分頻。 4 FPGA控制模塊的仿真測試 在QuartusII5.1中建立一個工程,并建立原理圖文件,把單片機與FPGA接口及數據讀寫模塊、讀地址發生器、譯碼器、行地址發生器、數據鎖存器、移位寄存器、脈沖發生器等單元模塊所生的模塊元件符號連接起來,構成總控制模塊邏輯圖并對其功能仿真。仿真結果如圖8所示,從存儲器中讀取16字節數據,經并串轉換輸出16路的串行數據。從波形圖分析,功能正確,且各輸出端口信號均符合時序要求。 FPGA是在線可編程芯片,可以根據不同的用戶要求進行不同的編程,縮短了系統的開發周期并節約了硬件的開發成本。本文以FPGA為主芯片,較完整地設計了大屏幕LED單色圖文顯示屏控制系統。隨著LED顯示屏技術的發展,FPGA與ARM或DSP等芯片的組合,必將在雙色顯示屏和彩色顯示屏領域獲得廣泛的應用。 來源:電子工程網 |