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



官方論壇
官方淘寶
官方博客
微信公眾號
點擊聯系吳工 點擊聯系周老師

【案例】LCD入門案例-動態矩形

發布時間:2023-04-13   作者:admin 瀏覽量:
本文為明德揚原創文章,轉載請注明出處

1.1 總體設計

1.1.1 概述

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

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


1.1.2 設計目標

此設計通過fpgalcd發送圖片信息,然后直接在LCD顯示矩形動畫,矩形的寬從2變化到600,矩形的高從2變化到400


1.1.3信號列表
  
信號名
  
接口方向
定義
clk_50m
輸入
系統時鐘
rst_n
輸入
低電平復位信號
lcd_hsync
輸出
行同步信號
lcd_vsync
輸出
場同步信號
lcd_de
輸出
行和場同時顯示時序段
  
有效顯示數據段信號
lcd_rgb
輸出
顯示顏色RGB
  
[23:16]:表示的是R[7:0]
  
[15:8]:表示的是G[7:0]
  
[7:0]:表示的是B[7:0]
lcd_dclk
輸出
像素時鐘信號


1.1.4 設計思路

設計行顯示時序段和場顯示時序段,來確定矩形邊框的寬度,根據各種顏色的數值來確定lcd顯示屏顯示出的邊框顏色
行時鐘計數器cnt_hys:用來計算行同步信號的幀長,加一條件是1,結束條件為數到1056個像素就結束

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


1.1.5參考代碼
    1. module mdyLcdDispDynaRect(
    2.     clk_50m     ,  
    3.     rst_n       ,

    4.     lcd_hsync   ,
    5.     lcd_vsync   ,
    6.     lcd_de      ,


    7.     lcd_rgb     ,
    8.     lcd_dclk   
    9.       
    10. );

    11.     input               clk_50m     ;  
    12.     input               rst_n       ;
    13.     output              lcd_hsync   ;
    14.     output              lcd_vsync   ;
    15.     output              lcd_de      ;

    16.     output  [23:0]      lcd_rgb     ;
    17.     output              lcd_dclk    ;
    18.       

    19.     reg      [30:0]        h        ;
    20.         reg      [30:0]        v        ;
    21.          
    22.     reg                 lcd_hsync   ;
    23.     reg                 lcd_vsync   ;

    24.     reg     [23:0]      lcd_rgb     ;


    25.     parameter     LINE_PR   =  1056 ;      
    26.     parameter     FRAME_PER =   525 ;           


    27.     parameter     H_SYNC    =    20 ;      
    28.     parameter     V_SYNC    =    10 ;              

    29.     parameter     HDE_START =    46 ;
    30.     parameter     HDE_END   =   846 ;
    31.     parameter     VDE_START =    23 ;
    32.     parameter     VDE_END   =   503 ;

    33.    

    34.     reg    [12:0]     cnt_hsy       ;
    35.     reg    [12:0]     cnt_vsy       ;
    36.     reg               hsync_de      ;
    37.     reg               vsync_de      ;

    38.     wire              display_area  ;
    39.     wire              e_area        ;
    40.     wire              add_cnt_hsy   ;
    41.     wire              end_cnt_hsy   ;
    42.     wire              add_cnt_vsy   ;
    43.     wire              end_cnt_vsy   ;
    44.     reg [ 7:0]        cnt0          ;
    45.     wire              add_cnt0      ;
    46.     wire              end_cnt0      ;
    47.     reg  [15:0]       cnt1          ;
    48.     wire              add_cnt1      ;
    49.     wire              end_cnt1      ;


    50.     assign clk       = clk_50m              ;
    51.     assign lcd_dclk  = ~ clk_50m            ;
    52.     assign lcd_de    = hsync_de & vsync_de  ;
    53.    
    54.    


    55.     always @ (posedge clk or negedge rst_n)begin
    56.             if(!rst_n)begin
    57.                 cnt_hsy <= 0;
    58.             end
    59.             else if(add_cnt_hsy)begin
    60.                 if(end_cnt_hsy)
    61.                     cnt_hsy <= 0;
    62.                 else
    63.                     cnt_hsy <= cnt_hsy + 1;
    64.             end
    65.     end
    66.    
    67.     assign add_cnt_hsy = 1;
    68.     assign end_cnt_hsy = add_cnt_hsy && cnt_hsy == LINE_PR -1;
    69.    

    70.     always @ (posedge clk or negedge rst_n)begin
    71.         if(!rst_n)begin
    72.             cnt_vsy <= 0;
    73.         end
    74.         else if(add_cnt_vsy)begin
    75.             if(end_cnt_vsy)
    76.                 cnt_vsy <= 0;
    77.             else
    78.                 cnt_vsy <= cnt_vsy + 1;
    79.         end
    80.     end
    81.    
    82.     assign add_cnt_vsy = end_cnt_hsy;
    83.     assign end_cnt_vsy = add_cnt_vsy && cnt_vsy == FRAME_PER - 1;
    84.          

    85.     always @ (posedge clk or negedge rst_n)begin
    86.         if(!rst_n)begin
    87.             lcd_hsync <= 1'b0 ;
    88.         end
    89.         else if(end_cnt_hsy)begin
    90.             lcd_hsync <= 1'b0;
    91.         end
    92.         else if(add_cnt_hsy && cnt_hsy == H_SYNC-1 )begin
    93.             lcd_hsync <= 1'b1;
    94.         end
    95.     end

    96.     always @ (posedge clk or negedge rst_n)begin
    97.         if(!rst_n)begin
    98.             hsync_de <= 1'b0;
    99.         end
    100.         else if(add_cnt_hsy && cnt_hsy == HDE_START-1)begin
    101.             hsync_de <= 1'b1;
    102.         end
    103.         else if(add_cnt_hsy && cnt_hsy == HDE_END-1)begin
    104.             hsync_de <= 1'b0;
    105.         end
    106.     end

    107.          
    108.     always @ (posedge clk or negedge rst_n)begin
    109.         if(!rst_n)begin
    110.             lcd_vsync <= 1'b0 ;
    111.         end
    112.                   else if(add_cnt_vsy && cnt_vsy == V_SYNC-1 )begin
    113.             lcd_vsync <= 1'b1;
    114.         end
    115.         else if(end_cnt_vsy)begin
    116.             lcd_vsync <= 1'b0;
    117.         end

    118.     end

    119.          
    120.     always @ (posedge clk or negedge rst_n)begin
    121.         if(!rst_n)begin
    122.             vsync_de <= 1'b0;
    123.         end
    124.         else if(add_cnt_vsy && cnt_vsy == VDE_START-1)begin
    125.             vsync_de <= 1'b1;
    126.         end
    127.         else if(add_cnt_vsy && cnt_vsy ==VDE_END-1)begin
    128.             vsync_de <= 1'b0;
    129.         end
    130.     end


    131.     assign   display_area = hsync_de && vsync_de;


    132.     assign   blue_area = (cnt_hsy >= HDE_START + 400-h) && (cnt_hsy<HDE_START+400+h) &&
    133.                          (cnt_vsy >= VDE_START + 240-v) && (cnt_vsy<VDE_START+240+v) ;

    134.                      

    135.         always  @(posedge clk or negedge rst_n)begin
    136.         if(rst_n==1'b0)begin
    137.             h<=1;
    138.         end
    139.         else if(end_cnt_vsy && h<300)begin
    140.             h<=h+2;
    141.         end
    142.     end

    143.     always  @(posedge clk or negedge rst_n)begin
    144.         if(rst_n==1'b0)begin
    145.             v<=1;
    146.         end
    147.         else if(end_cnt_vsy && v<200)begin
    148.             v<=v+1;
    149.         end
    150.     end


    151.     always @ (posedge clk or negedge rst_n)begin
    152.         if(!rst_n)begin
    153.                                 lcd_rgb <= 0;
    154.         end
    155.         else if(display_area)begin
    156.             if(blue_area)begin
    157.                 lcd_rgb <= 24'h00_00_ff ;
    158.             end
    159.             else begin
    160.                 lcd_rgb <= 24'hff_ff_ff ;
    161.             end
    162.         end
    163.         else begin
    164.             lcd_rgb <= 0;
    165.         end
    166.     end



    167. endmodule
復制代碼


1.2 效果和總結
本案例我們設計了藍色的矩形,藍色矩形的場信號是從2行變到400行、行信號是從2個像素變到600個像素;

在這個設計案例中,至簡設計法和明德揚計數器模板發揮了至關重要的作用,使我能夠快速準確完成設計。希望有興趣的同學可以運用至簡設計法和明德揚模板嘗試一下拓展設計哦。


設計教學視頻工程源代碼,請到明德揚論壇(www.fpgabbs.cn)學習:http://www.fpgabbs.cn/thread-1156-1-1.html

   拓展閱讀
主站蜘蛛池模板: 国产精品亚洲片在线观看不卡 | 国产精品亚洲一区二区三区正片 | 免费网站www7788con | 日本xxxⅹ色视频在线观看网站 | 97视频免费播放观看在线视频 | 久久久久久久久久久96av | 99久久精品国产片久人 | 国内免费视频成人精品 | 亚洲精品乱码国产精品乱码 | 国产日韩欧美亚洲综合 | 亚洲欧美日韩国产精品网 | 国产一级做a爱片久久毛片a | 亚洲人成网站在线观看播放青青 | 国产精品久久久久无码av | 国产日韩欧美中文 | 日本免费黄色 | 1000部啪啪未满十八勿入中国 | 亚洲最大激情中文字幕 | 五月天婷婷在线视频国产在线 | 91青青草视频在线观看 | 国产成人18 | 热re99久久国产精品 | 国产高清网站 | 真人毛片免费观看视频 | 国产一区二区三区四区在线 | 日韩在线免费视频观看 | 美国特黄特色的免费大片 | 久久视频精品36线视频在线观看 | 亚洲精品欧美精品一区二区 | 香港经典a毛片免费观看看 香港黄页亚洲一级 | 一级黄色欧美 | 国产免费破外女真实出血视频 | 免费午夜不卡毛片 | 黄色三级毛片 | 天天色播| 欧美日一级 | 国产精品色午夜视频免费看 | 免费一级毛片视频 | 国产成人精品第一区二区 | 久久精品亚洲热综合一本奇米 | 免费网站在线观看国产v片 免费网站成人亚洲 |