一種基于MCU+FPGA的LED大屏幕控制系統(tǒng)的設計
該模塊采用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)楦唠娖?,?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/FPGA">FPGA從SRAM2中讀完數(shù)據(jù)、結(jié)束信號READ_END為低電平時,進入ST1狀態(tài)。
在ST1狀態(tài)下,若沒有新的數(shù)據(jù)寫入則E保持高電平,FPGA讀取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)楦唠娖剑擣PGA一屏數(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)榈碗娖剑擣PGA一屏數(shù)據(jù)讀完后READ_END為低電平時,重新進入ST0狀態(tài)。通過這種周而復始的交替工作完成數(shù)據(jù)的寫入與讀取,其端口程序如下:
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);勃駁テ機寫入數(shù)據(jù)
READ_END:IN STD_LOGIC;勃捕烈黃潦據(jù)結(jié)束標記
D1,D2:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);勃SRAM數(shù)據(jù)
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));勃彩涑鍪據(jù)
END ENTITY WRITEREAD_SEL;
3.3 讀地址發(fā)生器
讀地址發(fā)生器主要產(chǎn)生外部緩存器SRAM1(SRAM2)的讀地址信號,使系統(tǒng)能正確地從存儲器中讀取相應的顯示數(shù)據(jù)。其地址最高位為0,其余地址分別為行地址(hang[30])、列地址(lie[60])、分區(qū)地址(qu[30])15位有效地址信號。在16個脈沖周期內(nèi)讀出在SRAM1(SRAM2)中的16字節(jié)數(shù)據(jù),其部分VHDL源程序如下:
ENTITY addressIS
PORT(
RDCLK:IN STD_LOGIC;勃捕戀刂肥敝有藕
CLR,ADDR_EN:IN STD_LOGIC;勃睬辶慵笆鼓蕓刂菩藕
READ_END:OUT STD_LOGIC;勃慘黃潦據(jù)讀完信號
ADDR_RD:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));勃膊生的讀地址信號
END ENTITY address;
評論