機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
CPLD的雙屏結(jié)構(gòu)液晶控制器的研究與設(shè)計(jì)
CPLD的雙屏結(jié)構(gòu)液晶控制器的研究與設(shè)計(jì)
 更新時(shí)間:2008-7-27 16:55:56  點(diǎn)擊數(shù):3
【字體: 字體顏色
可編程邏輯器件CPLD體積小功能強(qiáng)大, Verilog HDL語言簡練,設(shè)計(jì)思想、電路結(jié)構(gòu)和邏輯關(guān)系清晰,本文著重介紹使用Verilog設(shè)計(jì)CPLD實(shí)現(xiàn)雙屏顯示液晶控制器的功能。
關(guān)鍵詞: Verilog  CPLD  液晶控制器

1.引言

  隨著集成電路技術(shù)的發(fā)展, 在現(xiàn)代電子設(shè)計(jì)中,可編程邏輯器件的運(yùn)用越來越多,原因在于其規(guī)模大,體積小,功能強(qiáng),價(jià)格便宜。CPLD可擦寫上萬次,使得硬件設(shè)計(jì)像軟件設(shè)計(jì)一樣靈活方便。Verilog HDL語言作為硬件描述語言有其獨(dú)特的優(yōu)勢:在門級(jí)描述的底層,描述的設(shè)計(jì)思想、電路結(jié)構(gòu)和邏輯關(guān)系清晰明了,設(shè)計(jì)語言簡練、易學(xué)易用,模塊化分層結(jié)構(gòu)在大規(guī)模設(shè)計(jì)時(shí)具有優(yōu)勢。如果使用Verilog把控制功能集成在一片CPLD芯片里,整個(gè)電路將會(huì)變得更簡潔、實(shí)用。

2.液晶控制器原理

    液晶控制器用于單片機(jī)和液晶屏的接口,一方面不斷地把顯存的數(shù)據(jù)刷新到液晶屏上,另一方面控制單片機(jī)對(duì)顯存數(shù)據(jù)的更新。

    雙屏結(jié)構(gòu)液晶控制器內(nèi)部主要的計(jì)數(shù)器,分別是4bit時(shí)鐘同步字符計(jì)數(shù)器、行計(jì)數(shù)器和幀計(jì)數(shù)器,它們在系統(tǒng)時(shí)鐘FCLK的控制下同時(shí)計(jì)數(shù),主要是用來產(chǎn)生行同步信號(hào)LP 和幀同步信號(hào)FP ,分別用來控制液晶屏換行和換頁。液晶屏就是在這三個(gè)信號(hào)的控制下反復(fù)地把顯存里的數(shù)據(jù)刷新到屏幕上。

    本設(shè)計(jì)采用Altera 公司生產(chǎn)的EPM7128SCPLD芯片來實(shí)現(xiàn)LCD 控制器以及它的外圍邏輯時(shí)序的全部功能,使用的液晶屏為640×480雙屏顯示結(jié)構(gòu),即上半屏和下半屏同時(shí)顯示,RAM為一片SRM20512LLTM78(62512)。 

  液晶屏刷新速度的計(jì)算公式為FFRP = FCLK/ ( Hn×Nx )。

    其中,FFRP為液晶屏顯示幀掃描頻率,一般要大于70 Hz ,Hn為一行顯示的4bit同步字符數(shù)640/4=160,Nx為一屏幀掃描的行數(shù)480/2=240,FCLK為系統(tǒng)的工作時(shí)鐘頻率,采用晶振提供頻率11.05926MHz,將其四分頻得到2.764815MHz即可作為系統(tǒng)時(shí)鐘FCLK。

    系統(tǒng)構(gòu)成如下圖所示:

3.實(shí)現(xiàn)過程

1)  液晶刷新時(shí)序產(chǎn)生

    此部分主要產(chǎn)生行同步和幀同步信號(hào),完成行和幀同步。

    由于雙屏結(jié)構(gòu)液晶屏以4bit為單位上下同時(shí)顯示,可以在CPLD內(nèi)定義兩個(gè)寄存器,行含4bit字符寄存器scp_reg,值為640/4=160, 幀含行寄存器lp_reg,值為480/2=240。字符時(shí)鐘同步計(jì)數(shù)器scp_count為4bit字符的計(jì)數(shù)器,在系統(tǒng)時(shí)鐘scp_clk作用下計(jì)數(shù)加一,與行含字符寄存器內(nèi)容比較,若等,表示一行結(jié)束,開始下一行,scp_count清零,行計(jì)數(shù)器lp_count加一,lp_flag置一,產(chǎn)生行同步信號(hào)LP。行計(jì)數(shù)器lp_count與幀含行寄存器內(nèi)容比較,若等,表示一幀結(jié)束,開始下一幀,scp_count, lp_count 清零,fp_flag置一,產(chǎn)生幀同步信號(hào)FP。實(shí)現(xiàn)的程序如下:

    always@(posedge scp_clk)

       begin

       scp_count=scp_count+1;

    if(scp_count==scp_reg)

begin

       lp_count=lp_count+1;

    lp_flag=1;

    scp_count=0;

    if(lp_count==lp_reg)

           begin

     fp_flag=1;

    lp_count=0;

       scp_count=0;

           end

    else fp_flag=0;

      end

       else lp_flag=0;

    end

    操作lcd時(shí),scp_reg=160,lp_reg=240。仿真時(shí)取scp_reg=3,lp_reg=4,如下:

2)  單片機(jī)寫數(shù)據(jù)至RAM

    此部分為單片機(jī)通過CPLD更新RAM數(shù)據(jù)。

    單片機(jī)寫信號(hào)WR有效,CPLD判斷數(shù)據(jù)線上內(nèi)容為指令還是數(shù)據(jù),若為指令,則將DB內(nèi)容存入指令寄存器CMDREG,若為數(shù)據(jù),判斷指令寄存器CMDREG內(nèi)容以指示狀態(tài)。若CMDREG為8’h00或8’h02,表示DB為低或高八位地址,分別存入低高八位地址寄存器addl和addh,若為8’h04,表示DB為要寫入RAM的數(shù)據(jù),存入數(shù)據(jù)寄存器ioreg。

CMDREG

DB內(nèi)容

8’h00

低八位地址

8’h02

高八位地址

8’h04

數(shù)據(jù)

if(a0==1)  cmdreg=db;

else  begin

        if(cmdreg==8'h00)      addl=db;

        else if(cmdreg==8'h02)

                begin

                addh=db;

                p={addh,addl};

             end

        else if(cmdreg==8'h04)       ioreg=db;

     end

3)  顯存的數(shù)據(jù)刷新到液晶屏

    此部分完成RAM數(shù)據(jù)到LCD的正確映射。

    RAM存儲(chǔ)和LCD對(duì)應(yīng)關(guān)系如下圖所示:

    正確的將RAM中的數(shù)據(jù)送入LCD,使液晶屏上下半屏隨著時(shí)鐘同時(shí)顯示,必須理清RAM存儲(chǔ)和LCD顯示間的地址關(guān)系。LCD為640×480,所以下半屏起始地址對(duì)應(yīng)的內(nèi)容應(yīng)為640×240/8=19200,即RAM0x4b00中的內(nèi)容。

    由于4bit字符同步時(shí)鐘scp_clk內(nèi)含四個(gè)周期computerclk,可以在computerclk的二三周期,分別將RAM地址0x0000的內(nèi)容AB和0x4b00的內(nèi)容EF傳至八位寄存器reg1和reg2,在余下的第四周期,將reg1和reg2的高四位即A和E傳至上下半屏數(shù)據(jù)寄存器ud_reg和ld_reg,lcd將同時(shí)顯示上半屏A下半屏E。下一個(gè)scp_clk時(shí),只需將reg1和reg2的低四位即B和F傳至ud_reg和ld_reg,則lcd將同時(shí)顯示上半屏B下半屏F。以后每兩個(gè)scp_clk,RAM地址加一,同樣的方式取數(shù)據(jù)刷新lcd。

    仿真圖中藍(lán)線指示為RAM地址加一后上述一個(gè)循環(huán)的開始。

4)  數(shù)據(jù)選擇器

    單片機(jī)對(duì)RAM數(shù)據(jù)的更新,CPLD刷新LCD對(duì)RAM的讀取,可以通過一個(gè)二選一數(shù)據(jù)選擇器完成。

    當(dāng)單片機(jī)寫時(shí),置選擇信號(hào)sel為1,存放MCU操作的地址寄存器addl、addh和數(shù)據(jù)寄存器ioreg與RAM地址數(shù)據(jù)總線連接,完成MCU對(duì)RAM數(shù)據(jù)的更新;當(dāng)sel為0,刷新液晶屏的地址寄存器q和數(shù)據(jù)寄存器ud_reg、ld_reg與RAM地址數(shù)據(jù)總線連接,刷新LCD。

4.結(jié)束語

    以上主要介紹了Verilog HDL設(shè)計(jì)CPLD作為液晶控制器的幾個(gè)基本部分,經(jīng)過驗(yàn)證,所設(shè)計(jì)控制器在單片機(jī)作用下正確完成液晶的顯示。本設(shè)計(jì)創(chuàng)新點(diǎn)在于控制器設(shè)計(jì)使用硬件描述語言Verilog而非傳統(tǒng)設(shè)計(jì)方法設(shè)計(jì),易于理解,易于維護(hù),調(diào)試電路速度快,有許多易于掌握的仿真綜合布局布線工具。若使用其他液晶屏,只需修改程序中相關(guān)參數(shù),更多功能的擴(kuò)充,也只需增添CPLD中的模塊即可實(shí)現(xiàn)。

  • 上一篇: FPGA的高速可變周期脈沖發(fā)生器的設(shè)計(jì)
  • 下一篇: CPLD響高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1