《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于MCU+FPGA的LED大屏幕控制系統的設計
一種基于MCU+FPGA的LED大屏幕控制系統的設計
摘要: 引言只要在現在的市場上走一圈就會發現,大部分的中小規模LED顯示系統,采用的是傳統的單片機作為主控芯片。但是內部資源較少、運行速度較慢的單片機,很難滿足LED大屏幕的顯示屏,因為系統要求數據傳輸量大,掃描速度要快。以FPGA作為控制器,一方面,FPGA采用軟件編程實現硬件功能,可以有效提高運行速度;另一方面,它的引腳資源豐富,可擴展性強。因此,用單片FPGA和簡單的外圍電路就可以實現大屏幕LED顯示屏的控制,具有集成度高、穩定性好、設計靈活和效率高等優點。1系統總體結構LED大屏幕顯示系統由上位機(PC機)、單片機系統、FPGA控制器、LED顯示屏的行列驅動電路等模塊組成,如圖1所示。上位機負責漢字、字符等數據的采集與發送。單片機系統與上位機之間以異步串行通信工作方式,通過串行端口從上位機獲得已完成格式轉換的待顯示的圖形點陣數據,并將其存入EEPROM存儲器。之后通過FPGA控制器,將存儲器的顯示數據還原到LED顯示屏。掃描控制電路采用可編程邏輯芯片CycloneEP1C6,利用VHDL語言編程實現,采用1/16掃描方式,刷新頻率在60Hz以上。本文著重介紹256×1024的單色圖文顯示屏的FPGA控制模塊。
Abstract:
Key words :

  引言

  只要在現在的市場上走一圈就會發現,大部分的中小規模 LED 顯示系統,采用的是傳統的單片機作為主控芯片。但是內部資源較少、運行速度較慢的單片機,很難滿足LED大屏幕的顯示屏,因為系統要求數據傳輸量大,掃描速度要快。以FPGA作為控制器,一方面,FPGA采用軟件編程實現硬件功能,可以有效提高運行速度;另一方面,它的引腳資源豐富,可擴展性強。因此,用單片FPGA和簡單的外圍電路就可以實現大屏幕LED顯示屏的控制,具有集成度高、穩定性好、設計靈活和效率高等優點。

  1  系統總體結構

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

系統總體結構框圖

  圖1  系統總體結構框圖

  2  LED顯示屏基本工作原理

  對大屏幕LED顯示屏來說,列顯示數據通常采用的是串行傳輸方式,行采用1/16的掃描方式。圖2為16×32點陣屏單元模塊的基本結構,列驅動電路采用4個74HC595級聯而成。在移位脈沖SRCLK的作用下,串行數據從74HC595的數據端口SER一位一位地輸入,當一行的所有32列數據傳送完后,輸出鎖存信號RCLK并選通行信號Y0,則第1行的各列數據就可按要求顯示。按同樣的方法顯示其余各行,當16行數據掃描一遍(即完成一個周期)后,再從第1行開始下一個周期的掃描。只要掃描的周期小于20 ms,顯示屏就不閃爍。

16×32點陣屏基本結構

  圖2  16×32點陣屏基本結構

  256×1024大屏幕顯示屏由16×32個的16×32點陣屏級聯而成。為了縮短控制系統到屏體的信號傳輸時間,將顯示數據分為16個區,每個區由16×1024點陣組成,每行數據為1024/8=128字節,顯示屏的像素信號由LED顯示屏的右側向左側傳輸移位,把16個分區的數據存在同一塊存儲器。一屏的顯示數據為32 KB,要準確讀出16個分區的數據,其存儲器的讀地址由16位組成,由于數據只有32 KB,因此最高可置為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接口及數據讀寫模塊、讀地址發生器、譯碼器、行地址發生器、數據鎖存器組、移位寄存器組、脈沖發生器等模塊組成。

 FPGA控制模塊總體結構框圖

  圖3  FPGA控制模塊總體結構框圖

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

  3.2  單片機與FPGA接口及數據讀寫模塊

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

單片機與FPGA接口及數據讀寫模塊結構框圖

  圖4  單片機與FPGA接口及數據讀寫模塊結構框圖

數據讀寫狀態轉換圖

  圖5  數據讀寫狀態轉換圖

  該模塊采用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狀態。通過這種周而復始的交替工作完成數據的寫入與讀取,其端口程序如下:

  ENTITY WRITEREAD_SEL IS

  PORT(

  REST:IN STD_LOGIC;

  CLK:IN STD_LOGIC;

  E:IN STD_LOGIC; 單片機寫入標記

  WR:IN STD_LOGIC;單片機寫控制信號

  ADDR_WR:IN STD_LOGIC_VECTOR(15 DOWNTO 0);單片機寫地址信號

  ADDR_RD:IN STD_LOGIC_VECTOR(15 DOWNTO 0);讀地址信號

  DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);單片機寫入數據

  READ_END:IN STD_LOGIC;讀一屏數據結束標記

  D1,D2:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);SRAM數據

  AD1,AD2:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);SRAM地址

  WR1,WR2:OUT STD_LOGIC;SRAM的寫控制信號

  OE1,OE2:OUT STD_LOGIC; SRAM的讀控制信號

  DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));輸出數據

  END ENTITY WRITEREAD_SEL;

  3.3  讀地址發生器

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

  ENTITY addressIS

  PORT(

  RDCLK:IN STD_LOGIC;讀地址時鐘信號

  CLR,ADDR_EN:IN STD_LOGIC;清零及使能控制信號

  READ_END:OUT STD_LOGIC;一屏數據讀完信號

  ADDR_RD:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));產生的讀地址信號

  END ENTITY address;

  3.4  譯碼器

  譯碼器模塊主要是產生16路的分區信號(低電平有效)分別控制16個鎖存器,把16個分區的顯示數據分別鎖存在相應的鎖存器中。

  3.5  數據鎖存器組及移位寄存器組模塊

  數據鎖存器組模塊由16個8位鎖存器組成鎖存器組,鎖存16個分區的數據。移位寄存器組模塊由16個8位移位寄存器組成,把各路鎖存器中8位并行數據轉換成同時輸出的16路串行數據,驅動LED顯示屏,實現數據的并串轉換。

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

并串轉換元件符號圖

  圖6  并串轉換元件符號圖

  3.6  脈沖發生器

  系統采用1/16的掃描方式,把數據分為16分區,16分區數據同時傳送。假設刷新的頻率為60 Hz(即周期為16.67 ms),每一行顯示的時間約為16.67 ms/16=1.04 ms。每行有1024位,則移位脈沖周期為1.04/1024=102 μs,即移位頻率為0.983 MHz以上才能滿足要求。由于移位脈沖是數據讀取模塊時鐘的2分頻,因此系統的時鐘至少1.97 MHz以上,本系統采用50 MHz時鐘源。其時序圖如圖7所示。

時鐘產生時序圖

圖7  時鐘產生時序圖

  其中,RDCLK為FPGA讀取數據時鐘;SCLK是串行輸出的移位時鐘,是RDCLK的2分頻;LOAD是數據鎖存信號,每次讀完16個分區中的某個字節數據DATA后產生鎖存信號,數據鎖存在數據鎖存器組中,其時鐘是RDCLK的16分頻。

  4  FPGA控制模塊的仿真測試

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

FPGA控制模塊仿真圖
 

  圖8  FPGA控制模塊仿真圖

  5 結語

  FPGA是在線可編程芯片,可以根據不同的用戶要求進行不同的編程, 縮短了系統的開發周期并節約了硬件的開發成本。本文以FPGA為主芯片,較完整地設計了大屏幕LED單色圖文顯示屏控制系統。隨著LED顯示屏技術的發展,FPGA與ARM或DSP等芯片的組合,必將在雙色顯示屏和彩色顯示屏領域獲得廣泛的應用。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产欧美日韩亚洲 | 男女扒开双腿猛进入免费网站 | 色三级大全高清视频在线观看 | 免费精品一区二区三区在线观看 | 亚洲一区 在线播放 | 一区二区三区免费视频 www | 极品精品国产超清自在线观看 | 亚洲第一区香蕉_国产a | 在线另类 | 国产日韩一区二区三区在线观看 | 久久中文字幕日韩精品 | 久久免费99精品久久久久久 | 99久久精品久久久久久清纯 | 三级全黄视频 | 一级美女片 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | 在线观看免费国产 | 特级淫片欧美高清视频蜜桃 | 欧美 亚洲 丝袜 清纯 中文 | 禁止18周岁进入免费网站观看 | 国产成人欧美一区二区三区的 | 日韩在线一区二区三区视频 | 手机看片成人 | 在线看毛片网站 | 成人免费观看一区二区 | 久久久香蕉| 成人欧美一区二区三区视频 | 最新理论三级中文在线观看 | 免费久草| 91免费视频版 | 人碰人碰人成人免费视频 | 亚洲a级 | 国产精品日本一区二区不卡视频 | 黄网址在线看 | 美女扒开腿被男人猛视频 | 国产精品欧美视频另类专区 | 一级毛片大全 | 全部免费的毛片视频观看 | 国产成人精品免费午夜 | 国产高清无专砖区2021 | 国产一级一级 |