基于FPGA的LED大屏幕控制系統設計
3 基于FPGA顯示屏控制器的設計
3.1 FPGA控制模塊總體方案
如圖3所示,FPGA控制模塊主要由單片機與FPGA接口及數據讀寫模塊、讀地址發生器、譯碼器、行地址發生器、數據鎖存器組、移位寄存器組、脈沖發生器等模塊組成。本文引用地址:http://www.cqxgywz.com/article/169049.htm

讀地址發生器主要產生讀地址信號,地址信號送往MCU接口及數據讀寫模塊,讀取外部SRAM1或SRAM2中已處理好的LED顯示屏數據,并把數據按分區方式送到數據鎖存器組鎖存。鎖存器輸出16分區數據,通過移位寄存器組實現并串轉換得到顯示屏所需要的串行數據,并送往LED顯示屏列驅動電路。脈沖發生器為各模塊提供相應的同步時鐘,行地址發生器產生相應的行信號送往顯示屏的行驅動電路。
3.2 單片機與FPGA接口及數據讀寫模塊
單片機與FPGA接口及數據讀寫模塊結構如圖4所示。單片機從EEPROM中讀取數據并根據顯示要求進行處理后,通過接口及數據讀寫模塊把數據送往數據緩沖器SRAM1或SRAM2。為提高數據的傳輸速度,保證顯示效果的連續性,在系統中采用雙體切換技術來完成數據存儲過程。也就是說,采用雙SRAM存儲結構,兩套完全獨立的讀、寫地址線和數據線輪流切換進行讀寫。工作時,FPGA在一個特定的時間只從兩塊SRAM中的一塊讀取顯示的數據進行顯示,同時另外一塊SRAM與MCU進行數據交換。MCU會寫入新的數據,依次交替工作,可實現左移、上移、雙屏等顯示模式。如果顯示的內容不改變,即一塊SRAM里的數據不變時,MCU不需要給另外一塊SRAM寫數據。

該模塊采用VHDL有限狀態機來實現,整個控制分為4個狀態,其狀態轉換圖如圖5所示。其工作過程如下:系統開機進入初始狀態ST0,單片機的寫入使能端E為低電平,單片機從EEPROM中讀取數據并把數據寫入到SRAM1,同時FPGA讀取SRAM2中的數據;當單片機數據寫完一屏數據后E變為高電平,當FPGA從SRAM2中讀完數據、結束信號READ_END為低電平時,進入ST1狀態。

在ST1狀態下,若沒有新的數據寫入則E保持高電平,FPGA讀取SRAM1的數據,為靜態顯示;只有當單片機的讀入控制信號E為低電平且READ_END為低電平時,進入ST2狀態。在ST2狀態下,單片機把數據寫入SRAM2,同時FPGA讀取SRAM1的數據,單片機數據寫完后E變為高電平,當FPGA一屏數據讀完后READ_END為低電平,進入ST3狀態。在ST3狀態下,如果沒有新數據寫入E為高電平,FPGA讀取SRAM2中的數據。當單片機有新的數據寫入時E變為低電平,當FPGA一屏數據讀完后READ_END為低電平時,重新進入ST0狀態。通過這種周而復始的交替工作完成數據的寫入與讀取,其端口程序如下:














評論