基于FPGA和硬件描述語言Verilog的液晶顯示控制器的設(shè)計(jì)
2 設(shè)計(jì)與實(shí)現(xiàn)
2.1 液晶控制器總體設(shè)計(jì)
本設(shè)計(jì)的液晶顯示器刷新頻率為70Hz,每一幀周期為14.28ms,每一行周期為60μs,時(shí)鐘信號CP的頻率為2 MHz,將一行數(shù)據(jù)輸入列移位寄存器的時(shí)間為40μs,因此每一行設(shè)計(jì)了20μs的空白時(shí)間。
液晶控制器系統(tǒng)原理如圖2所示。時(shí)鐘模塊采用Xilinx公司的Coregen IP工具定制,數(shù)字時(shí)鐘管理器DCM模塊將FPGA 50 MHz時(shí)鐘信號CLK_IN 25分頻為2 MHz控制器時(shí)鐘信號CLK。DCM采用了數(shù)字延遲鎖相環(huán)技術(shù)來消除時(shí)鐘相位的位移,提供比自行分頻更穩(wěn)定的時(shí)鐘信號,以滿足控制系統(tǒng)要求。CONTROLLER模塊為LCM提供滿足圖l所示時(shí)序要求的控制信號CP、LP、FLM、M、DISPOFF,并且同步產(chǎn)生SRAM的讀地址ADDRA[14:0]。
SRAM為內(nèi)存模塊。為了提高輸入LCD的數(shù)據(jù)流速度.設(shè)計(jì)了32K×4位的艤端口內(nèi)存,可同時(shí)實(shí)現(xiàn)讀/寫,并實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)化,由上位機(jī)MCU輸入的8位數(shù)據(jù)轉(zhuǎn)為輸入LCM列驅(qū)動器的4位數(shù)據(jù);B端口由MCU_INTERFACE與上位機(jī)MCU連接,由MCU微控制器將顯示數(shù)據(jù)寫入內(nèi)存SRAM。其中,ADDRB[13:0]控制16K×8位的寫地址,DINB[7:O]為寫入數(shù)據(jù),WEB為寫有效控制,CLKB為寫時(shí)鐘;A端口由CONTROLLER模塊控制讀地址ADDRA[14:0],讀時(shí)鐘CLKA由系統(tǒng)時(shí)鐘信號CLK控制,DOUTA[3:0]將數(shù)據(jù)寫入LCM列驅(qū)動器。2.2 控制模塊設(shè)計(jì)
應(yīng)用狀態(tài)機(jī)的方法,用Verilog硬件描述語言設(shè)計(jì)控制模塊CONTROLLER。CLK為2 MHz輸入時(shí)鐘信號。LP和內(nèi)部控制信號DEN由狀態(tài)機(jī)1控制產(chǎn)生,F(xiàn)LM由狀態(tài)機(jī)2控制產(chǎn)生,M由狀態(tài)機(jī)3控制產(chǎn)生,CP信號和ADDRA[14:0]根據(jù)CLK和DEN信號控制得到。狀態(tài)機(jī)1有3個(gè)狀態(tài):狀態(tài)1,LP為O,DEN為1,持續(xù)80個(gè)CLK脈沖后轉(zhuǎn)向狀態(tài)2;狀態(tài)2,LP為l,DEN為0,持續(xù)1個(gè)CLK脈沖后轉(zhuǎn)向狀態(tài)3;狀態(tài)3,LP為O,DEN為O,持續(xù)39個(gè)CLK脈沖后轉(zhuǎn)向狀態(tài)1。狀態(tài)機(jī)2有2個(gè)狀態(tài):狀態(tài)1,F(xiàn)LM為l,持續(xù)1個(gè)LP周期時(shí)間,即120個(gè)CLK脈沖;狀態(tài)2,F(xiàn)LM為O,持續(xù)剩下的239個(gè)LP周期,即28 680個(gè)CLK脈沖。狀態(tài)機(jī)3有2個(gè)狀態(tài),狀態(tài)l,M為1。持續(xù)1個(gè)FLM周期時(shí)間,即28800個(gè)CLK脈沖;狀態(tài)2,M為0,也持續(xù)1個(gè)FLM周期時(shí)間。CP信號和ADDRA由于含有空白信號,所以由內(nèi)部控制信號DEN和時(shí)鐘信號CLK得到。以下為設(shè)計(jì)的源代碼初始化部分:
/Script> 3 仿真、下載測試分析
評論