99在线精品免费视频九九视-99在线精品视频-99在线精品视频免费观里-99在线精品视频在线观看-99在线免费播放

【案例】LCD入門案例-動態(tài)矩形

  發(fā)布時(shí)間:2023-10-18  |    作者:管理員  |  瀏覽量:740

本文為明德?lián)P原創(chuàng)文章,轉(zhuǎn)載請注明出處!

1.1 總體設(shè)計(jì)

1.1.1 概述

液晶顯示器是一-種通過液晶和色彩過濾器過濾光源,在平面面板上產(chǎn)生圖像的數(shù)字顯示器。LCD 的構(gòu)造是在兩片平行的玻璃基板當(dāng)中放置液晶盒,下基板玻璃上設(shè)置薄膜晶體管,.上基板玻璃上設(shè)置彩色濾光片,通過薄膜晶體管上的信號與電壓改變來控制液晶分子的轉(zhuǎn)動方向,從而達(dá)到控制每個(gè)像素點(diǎn)偏振光出射與否而達(dá)到顯示目的。與傳統(tǒng)的陰極射線管相比,LCD具有占用空間小,低功耗,低輻射,無閃爍,降低視覺疲勞等優(yōu)點(diǎn)。現(xiàn)在LCD已漸替代CRT成為主流,價(jià)格也已經(jīng)下降了很多,并已充分的普及。

本設(shè)計(jì)的主要任務(wù)是基于FPGALCD顯示控制器設(shè)計(jì),兼顧程序的易用性,方便此后模塊的移植和應(yīng)用。采用VHDL硬件描述語言在QUARTUS II軟件平臺上實(shí)現(xiàn)FPGA對LCD的控制,在LCD模塊上實(shí)現(xiàn)任意彩色圖片的顯示,與此同時(shí)還須實(shí)現(xiàn)實(shí)時(shí)刷新數(shù)據(jù)的功能。這將有助于采用FPGA的系列產(chǎn)品的開發(fā),特別是需要用到LCD而采用FPGA的產(chǎn)品的開發(fā)。不但縮短了FPGA的開發(fā)周期,也使更多采用FPGA設(shè)計(jì)的產(chǎn)品上出現(xiàn)LCD,增加了人機(jī)之間的交互性。

1.1.2 設(shè)計(jì)目標(biāo)

此設(shè)計(jì)通過fpga給lcd發(fā)送圖片信息,然后直接在LCD顯示矩形動畫,矩形的寬從2變化到600,矩形的高從2變化到400

 

1.1.3信號列表

  

信號名

  

接口方向

定義

clk_50m

輸入

系統(tǒng)時(shí)鐘

rst_n

輸入

低電平復(fù)位信號

lcd_hsync

輸出

行同步信號

lcd_vsync

輸出

場同步信號

lcd_de

輸出

行和場同時(shí)顯示時(shí)序段

  

有效顯示數(shù)據(jù)段信號

lcd_rgb

輸出

顯示顏色RGB

  

[23:16]:表示的是R[7:0]

  

[15:8]:表示的是G[7:0]

  

[7:0]:表示的是B[7:0]

lcd_dclk

輸出

像素時(shí)鐘信號



1.1.4 設(shè)計(jì)思路

 

設(shè)計(jì)行顯示時(shí)序段和場顯示時(shí)序段,來確定矩形邊框的寬度,根據(jù)各種顏色的數(shù)值來確定lcd顯示屏顯示出的邊框顏色

行時(shí)鐘計(jì)數(shù)器cnt_hys:用來計(jì)算行同步信號的幀長,加一條件是1,結(jié)束條件為數(shù)到1056個(gè)像素就結(jié)束

場時(shí)鐘計(jì)數(shù)器cnt_vys:用來計(jì)算場同步信號的幀長,加一條件是場信號每數(shù)到1056個(gè)像素(即為一行結(jié)束的時(shí)刻),結(jié)束條件為數(shù)到525行就結(jié)束

 

1.1.5參考代碼

a. 

module mdyLcdDispDynaRect(

b. 

c. 

    clk_50m     ,  

d. 

e. 

    rst_n       ,

f. 

g. 

 

h. 

i. 

    lcd_hsync   ,

j. 

k. 

    lcd_vsync   ,

l. 

m. 

    lcd_de      ,

n. 

o. 

 

p. 

q. 

 

r. 

s. 

    lcd_rgb     ,

t. 

u. 

    lcd_dclk   

v. 

w. 

      

x. 

y. 

);

z. 

aa. 

 

ab. 

ac. 

    input               clk_50m     ;  

ad. 

ae. 

    input               rst_n       ;

af. 

ag. 

    output              lcd_hsync   ;

ah. 

ai. 

    output              lcd_vsync   ;

aj. 

ak. 

    output              lcd_de      ;

al. 

am. 

 

an. 

ao. 

    output  [23:0]      lcd_rgb     ;

ap. 

aq. 

    output              lcd_dclk    ;

ar. 

as. 

      

at. 

au. 

 

av. 

aw. 

    reg      [30:0]        h        ;

ax. 

ay. 

        reg      [30:0]        v        ;

az. 

ba. 

         

bb. 

bc. 

    reg                 lcd_hsync   ;

bd. 

be. 

    reg                 lcd_vsync   ;

bf. 

bg. 

 

bh. 

bi. 

    reg     [23:0]      lcd_rgb     ;

bj. 

bk. 

 

bl. 

bm. 

 

bn. 

bo. 

    parameter     LINE_PR   =  1056 ;      

bp. 

bq. 

    parameter     FRAME_PER =   525 ;           

br. 

bs. 

 

bt. 

bu. 

 

bv. 

bw. 

    parameter     H_SYNC    =    20 ;      

bx. 

by. 

    parameter     V_SYNC    =    10 ;              

bz. 

ca. 

 

cb. 

cc. 

    parameter     HDE_START =    46 ;

cd. 

ce. 

    parameter     HDE_END   =   846 ;

cf. 

cg. 

    parameter     VDE_START =    23 ;

ch. 

ci. 

    parameter     VDE_END   =   503 ;

cj. 

ck. 

 

cl. 

cm. 

   

cn. 

co. 

 

cp. 

cq. 

    reg    [12:0]     cnt_hsy       ;

cr. 

cs. 

    reg    [12:0]     cnt_vsy       ;

ct. 

cu. 

    reg               hsync_de      ;

cv. 

cw. 

    reg               vsync_de      ;

cx. 

cy. 

 

cz. 

da. 

    wire              display_area  ;

db. 

dc. 

    wire              e_area        ;

dd. 

de. 

    wire              add_cnt_hsy   ;

df. 

dg. 

    wire              end_cnt_hsy   ;

dh. 

di. 

    wire              add_cnt_vsy   ;

dj. 

dk. 

    wire              end_cnt_vsy   ;

dl. 

dm. 

    reg [ 7:0]        cnt0          ;

dn. 

do. 

    wire              add_cnt0      ;

dp. 

dq. 

    wire              end_cnt0      ;

dr. 

ds. 

    reg  [15:0]       cnt1          ;

dt. 

du. 

    wire              add_cnt1      ;

dv. 

dw. 

    wire              end_cnt1      ;

dx. 

dy. 

 

dz. 

ea. 

 

eb. 

ec. 

    assign clk       = clk_50m              ;

ed. 

ee. 

    assign lcd_dclk  = ~ clk_50m            ;

ef. 

eg. 

    assign lcd_de    = hsync_de & vsync_de  ;

eh. 

ei. 

   

ej. 

ek. 

   

el. 

em. 

 

en. 

eo. 

 

ep. 

eq. 

    always @ (posedge clk or negedge rst_n)begin

er. 

es. 

            if(!rst_n)begin

et. 

eu. 

                cnt_hsy <= 0;

ev. 

ew. 

            end

ex. 

ey. 

            else if(add_cnt_hsy)begin

ez. 

fa. 

                if(end_cnt_hsy)

fb. 

fc. 

                    cnt_hsy <= 0;

fd. 

fe. 

                else

ff. 

fg. 

                    cnt_hsy <= cnt_hsy + 1;

fh. 

fi. 

            end

fj. 

fk. 

    end

fl. 

fm. 

   

fn. 

fo. 

    assign add_cnt_hsy = 1;

fp. 

fq. 

    assign end_cnt_hsy = add_cnt_hsy && cnt_hsy == LINE_PR -1;

fr. 

fs. 

   

ft. 

fu. 

 

fv. 

fw. 

    always @ (posedge clk or negedge rst_n)begin

fx. 

fy. 

        if(!rst_n)begin

fz. 

ga. 

            cnt_vsy <= 0;

gb. 

gc. 

        end

gd. 

ge. 

        else if(add_cnt_vsy)begin

gf. 

gg. 

            if(end_cnt_vsy)

gh. 

gi. 

                cnt_vsy <= 0;

gj. 

gk. 

            else

gl. 

gm. 

                cnt_vsy <= cnt_vsy + 1;

gn. 

go. 

        end

gp. 

gq. 

    end

gr. 

gs. 

   

gt. 

gu. 

    assign add_cnt_vsy = end_cnt_hsy;

gv. 

gw. 

    assign end_cnt_vsy = add_cnt_vsy && cnt_vsy == FRAME_PER - 1;

gx. 

gy. 

         

gz. 

ha. 

 

hb. 

hc. 

    always @ (posedge clk or negedge rst_n)begin

hd. 

he. 

        if(!rst_n)begin

hf. 

hg. 

            lcd_hsync <= 1'b0 ;

hh. 

hi. 

        end

hj. 

hk. 

        else if(end_cnt_hsy)begin

hl. 

hm. 

            lcd_hsync <= 1'b0;

hn. 

ho. 

        end

hp. 

hq. 

        else if(add_cnt_hsy && cnt_hsy == H_SYNC-1 )begin

hr. 

hs. 

            lcd_hsync <= 1'b1;

ht. 

hu. 

        end

hv. 

hw. 

    end

hx. 

hy. 

 

hz. 

ia. 

    always @ (posedge clk or negedge rst_n)begin

ib. 

ic. 

        if(!rst_n)begin

id. 

ie. 

            hsync_de <= 1'b0;

if. 

ig. 

        end

ih. 

ii. 

        else if(add_cnt_hsy && cnt_hsy == HDE_START-1)begin

ij. 

ik. 

            hsync_de <= 1'b1;

il. 

im. 

        end

in. 

io. 

        else if(add_cnt_hsy && cnt_hsy == HDE_END-1)begin

ip. 

iq. 

            hsync_de <= 1'b0;

ir. 

is. 

        end

it. 

iu. 

    end

iv. 

iw. 

 

ix. 

iy. 

         

iz. 

ja. 

    always @ (posedge clk or negedge rst_n)begin

jb. 

jc. 

        if(!rst_n)begin

jd. 

je. 

            lcd_vsync <= 1'b0 ;

jf. 

jg. 

        end

jh. 

ji. 

                  else if(add_cnt_vsy && cnt_vsy == V_SYNC-1 )begin

jj. 

jk. 

            lcd_vsync <= 1'b1;

jl. 

jm. 

        end

jn. 

jo. 

        else if(end_cnt_vsy)begin

jp. 

jq. 

            lcd_vsync <= 1'b0;

jr. 

js. 

        end

jt. 

ju. 

 

jv. 

jw. 

    end

jx. 

jy. 

 

jz. 

ka. 

         

kb. 

kc. 

    always @ (posedge clk or negedge rst_n)begin

kd. 

ke. 

        if(!rst_n)begin

kf. 

kg. 

            vsync_de <= 1'b0;

kh. 

ki. 

        end

kj. 

kk. 

        else if(add_cnt_vsy && cnt_vsy == VDE_START-1)begin

kl. 

km. 

            vsync_de <= 1'b1;

kn. 

ko. 

        end

kp. 

kq. 

        else if(add_cnt_vsy && cnt_vsy ==VDE_END-1)begin

kr. 

ks. 

            vsync_de <= 1'b0;

kt. 

ku. 

        end

kv. 

kw. 

    end

kx. 

ky. 

 

kz. 

la. 

 

lb. 

lc. 

    assign   display_area = hsync_de && vsync_de;

ld. 

le. 

 

lf. 

lg. 

 

lh. 

li. 

    assign   blue_area = (cnt_hsy >= HDE_START + 400-h) && (cnt_hsy<HDE_START+400+h) &&

lj. 

lk. 

                         (cnt_vsy >= VDE_START + 240-v) && (cnt_vsy<VDE_START+240+v) ;

ll. 

lm. 

 

ln. 

lo. 

                     

lp. 

lq. 

 

lr. 

ls. 

        always  @(posedge clk or negedge rst_n)begin

lt. 

lu. 

        if(rst_n==1'b0)begin

lv. 

lw. 

            h<=1;

lx. 

ly. 

        end

lz. 

ma. 

        else if(end_cnt_vsy && h<300)begin

mb. 

mc. 

            h<=h+2;

md. 

me. 

        end

mf. 

mg. 

    end

mh. 

mi. 

 

mj. 

mk. 

    always  @(posedge clk or negedge rst_n)begin

ml. 

mm. 

        if(rst_n==1'b0)begin

mn. 

mo. 

            v<=1;

mp. 

mq. 

        end

mr. 

ms. 

        else if(end_cnt_vsy && v<200)begin

mt. 

mu. 

            v<=v+1;

mv. 

mw. 

        end

mx. 

my. 

    end

mz. 

na. 

 

nb. 

nc. 

 

nd. 

ne. 

    always @ (posedge clk or negedge rst_n)begin

nf. 

ng. 

        if(!rst_n)begin

nh. 

ni. 

                                lcd_rgb <= 0;

nj. 

nk. 

        end

nl. 

nm. 

        else if(display_area)begin

nn. 

no. 

            if(blue_area)begin

np. 

nq. 

                lcd_rgb <= 24'h00_00_ff ;

nr. 

ns. 

            end

nt. 

nu. 

            else begin

nv. 

nw. 

                lcd_rgb <= 24'hff_ff_ff ;

nx. 

ny. 

            end

nz. 

oa. 

        end

ob. 

oc. 

        else begin

od. 

oe. 

            lcd_rgb <= 0;

of. 

og. 

        end

oh. 

oi. 

    end

oj. 

ok. 

 

ol. 

om. 

 

on. 

oo. 

 

op. 

oq. 

endmodule

or. 

os. 

 

ot. 

復(fù)制代碼



1.2 效果和總結(jié)

本案例我們設(shè)計(jì)了藍(lán)色的矩形,藍(lán)色矩形的場信號是從2行變到400行、行信號是從2個(gè)像素變到600個(gè)像素;

在這個(gè)設(shè)計(jì)案例中,至簡設(shè)計(jì)法和明德?lián)P計(jì)數(shù)器模板發(fā)揮了至關(guān)重要的作用,使我能夠快速準(zhǔn)確完成設(shè)計(jì)。希望有興趣的同學(xué)可以運(yùn)用至簡設(shè)計(jì)法和明德?lián)P模板嘗試一下拓展設(shè)計(jì)哦。

 

設(shè)計(jì)教學(xué)視頻工程源代碼,請到明德?lián)P論壇(www.fpgabbs.cn)學(xué)習(xí):http://www.fpgabbs.cn/thread-1156-1-1.html




溫馨提示:明德?lián)P2023推出了全新課程——邏輯設(shè)計(jì)基本功修煉課,降低學(xué)習(xí)FPGA門檻的同時(shí),增加了學(xué)習(xí)的趣味性,并組織了考試贏積分活動

http://www.cqqtmy.cn/ffkc/415.html

(點(diǎn)擊→了解課程詳情?)感興趣請聯(lián)系易老師:13112063618(微信同步)



本文TAG:

Copyright ? 2012-2023 版權(quán)所有:深圳明德?lián)P科技教育有限公司

主站蜘蛛池模板: 性色生活片 | 99色在线视频 | 99久久爱re热6在播放 | 小明永久免费 | 亚洲二区在线 | 国产精品久久视频 | 日本不卡在线视频高清免费 | 国产高清第一页 | 成人亚洲国产综合精品91 | 手机日韩理论片在线播放 | 男女晚上爱爱的视频在线观看 | 国产成人精品女人不卡在线 | 国产精品吹潮在线播放 | 国产乱码精品一区二区三区四川人 | 扒开双腿猛进入jk校视频 | 久草视频福利在线 | 久久中文字幕网站篠田优 | 亚洲伦理一二三四 | 性xxxxxxx18老师 | 毛片在线看免费版 | 欧美黑人粗硬大在线看 | 精品你懂的 | 大尺度做爰床戏呻吟免费观 | 普通话对白国产情侣自啪 | 大学生久久香蕉国产线看观看 | 亚洲精品国产精品一区二区 | 久久精品免费全国观看国产 | 久久影院中文字幕 | 国产激情一区二区三区成人91 | 色综合网站国产麻豆 | 男女全黄做爰视频免费看 | 99精品一区二区三区 | 911精品国产91久久久久 | 青青国产成人久久激情911 | 久久视热这只是精品222 | 免费一级欧美大片在线观看 | www.黄色大片 | 五月天婷婷在线视频 | 一级片在线免费看 | 日本大片在线观看 | 国内免费视频成人精品 |