⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)

【案(àn)例】LCD入(rù)門(mén)案(àn)例-動(dòng)态矩形

發(fà)布(bù)时(shí)間(jiān):2023-04-13   作者(zhě):admin 浏覽量(liàng):
本(běn)文(wén)为(wèi)明(míng)德揚原創文(wén)章(zhāng),轉(zhuǎn)载請注明(míng)出(chū)处

1.1 總(zǒng)體(tǐ)設計(jì)

1.1.1 概述

液晶顯示器是(shì)一(yī)-種(zhǒng)通(tòng)过(guò)液晶和(hé)色(sè)彩过(guò)濾器过(guò)濾光(guāng)源,在(zài)平面(miàn)面(miàn)板上(shàng)産生(shēng)图(tú)像的(de)數字(zì)顯示器。LCD 的(de)構造是(shì)在(zài)两(liǎng)片(piàn)平行的(de)玻璃基板當中(zhōng)放(fàng)置液晶盒,下(xià)基板玻璃上(shàng)設置薄膜晶體(tǐ)管(guǎn),.上(shàng)基板玻璃上(shàng)設置彩色(sè)濾光(guāng)片(piàn),通(tòng)过(guò)薄膜晶體(tǐ)管(guǎn)上(shàng)的(de)信(xìn)号(hào)與(yǔ)電(diàn)壓改變(biàn)来(lái)控制液晶分(fēn)子的(de)轉(zhuǎn)動(dòng)方(fāng)向(xiàng),從而(ér)达(dá)到(dào)控制每个(gè)像素點(diǎn)偏振光(guāng)出(chū)射與(yǔ)否而(ér)达(dá)到(dào)顯示目的(de)。與(yǔ)傳統的(de)陰极(jí)射線(xiàn)管(guǎn)相比,LCD具有(yǒu)占用(yòng)空間(jiān)小,低功耗,低輻射,无閃爍,降低視覺疲勞等优點(diǎn)。現(xiàn)在(zài)LCD已漸替代(dài)CRT成(chéng)为(wèi)主(zhǔ)流,價格也(yě)已經(jīng)下(xià)降了(le)很多(duō),并已充分(fēn)的(de)普及(jí)。

本(běn)設計(jì)的(de)主(zhǔ)要(yào)任务是(shì)基于(yú)FPGA的(de)LCD顯示控制器設計(jì),兼顧程序的(de)易用(yòng)性(xìng),方(fāng)便此(cǐ)後(hòu)模块(kuài)的(de)移植和(hé)應(yìng)用(yòng)。采用(yòng)VHDL硬(yìng)件(jiàn)描述語(yǔ)言在(zài)QUARTUS II软(ruǎn)件(jiàn)平台(tái)上(shàng)实現(xiàn)FPGA对(duì)LCD的(de)控制,在(zài)LCD模块(kuài)上(shàng)实現(xiàn)任意(yì)彩色(sè)图(tú)片(piàn)的(de)顯示,與(yǔ)此(cǐ)同(tóng)时(shí)還(huán)須实現(xiàn)实时(shí)刷新數據(jù)的(de)功能(néng)。这(zhè)将有(yǒu)助于(yú)采用(yòng)FPGA的(de)系(xì)列産品的(de)開(kāi)發(fà),特(tè)别是(shì)需要(yào)用(yòng)到(dào)LCD而(ér)采用(yòng)FPGA的(de)産品的(de)開(kāi)發(fà)。不(bù)但縮短(duǎn)了(le)FPGA的(de)開(kāi)發(fà)周期(qī),也(yě)使更(gèng)多(duō)采用(yòng)FPGA設計(jì)的(de)産品上(shàng)出(chū)現(xiàn)LCD,增加了(le)人(rén)機(jī)之間(jiān)的(de)交互性(xìng)。


1.1.2 設計(jì)目标(biāo)

此(cǐ)設計(jì)通(tòng)过(guò)fpga給(gěi)lcd發(fà)送图(tú)片(piàn)信(xìn)息,然後(hòu)直(zhí)接在(zài)LCD顯示矩形動(dòng)画(huà),矩形的(de)宽(kuān)從2變(biàn)化(huà)到(dào)600,矩形的(de)高(gāo)從2變(biàn)化(huà)到(dào)400


1.1.3信(xìn)号(hào)列表(biǎo)
  
信(xìn)号(hào)名
  
接口(kǒu)方(fāng)向(xiàng)
定(dìng)義
clk_50m
輸入(rù)
系(xì)統时(shí)鐘(zhōng)
rst_n
輸入(rù)
低電(diàn)平複位信(xìn)号(hào)
lcd_hsync
輸出(chū)
行同(tóng)步信(xìn)号(hào)
lcd_vsync
輸出(chū)
场同(tóng)步信(xìn)号(hào)
lcd_de
輸出(chū)
行和(hé)场同(tóng)时(shí)顯示时(shí)序段(duàn)
  
有(yǒu)效顯示數據(jù)段(duàn)信(xìn)号(hào)
lcd_rgb
輸出(chū)
顯示顔色(sè)RGB
  
[23:16]:表(biǎo)示的(de)是(shì)R[7:0]
  
[15:8]:表(biǎo)示的(de)是(shì)G[7:0]
  
[7:0]:表(biǎo)示的(de)是(shì)B[7:0]
lcd_dclk
輸出(chū)
像素时(shí)鐘(zhōng)信(xìn)号(hào)


1.1.4 設計(jì)思(sī)路(lù)

設計(jì)行顯示时(shí)序段(duàn)和(hé)场顯示时(shí)序段(duàn),来(lái)确定(dìng)矩形邊(biān)框的(de)宽(kuān)度(dù),根(gēn)據(jù)各(gè)種(zhǒng)顔色(sè)的(de)數值来(lái)确定(dìng)lcd顯示屏顯示出(chū)的(de)邊(biān)框顔色(sè)
行时(shí)鐘(zhōng)計(jì)數器cnt_hys:用(yòng)来(lái)計(jì)算行同(tóng)步信(xìn)号(hào)的(de)幀长,加一(yī)条(tiáo)件(jiàn)是(shì)1,結束(shù)条(tiáo)件(jiàn)为(wèi)數到(dào)1056个(gè)像素就(jiù)結束(shù)

场时(shí)鐘(zhōng)計(jì)數器cnt_vys:用(yòng)来(lái)計(jì)算场同(tóng)步信(xìn)号(hào)的(de)幀长,加一(yī)条(tiáo)件(jiàn)是(shì)场信(xìn)号(hào)每數到(dào)1056个(gè)像素(即为(wèi)一(yī)行結束(shù)的(de)时(shí)刻),結束(shù)条(tiáo)件(jiàn)为(wèi)數到(dào)525行就(jiù)結束(shù)


1.1.5參考代(dài)碼
    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
複制代(dài)碼


1.2 效果(guǒ)和(hé)總(zǒng)結
本(běn)案(àn)例我(wǒ)们(men)設計(jì)了(le)藍(lán)色(sè)的(de)矩形,藍(lán)色(sè)矩形的(de)场信(xìn)号(hào)是(shì)從2行變(biàn)到(dào)400行、行信(xìn)号(hào)是(shì)從2个(gè)像素變(biàn)到(dào)600个(gè)像素;

在(zài)这(zhè)个(gè)設計(jì)案(àn)例中(zhōng),至(zhì)簡設計(jì)法和(hé)明(míng)德揚計(jì)數器模板發(fà)揮了(le)至(zhì)關(guān)重(zhòng)要(yào)的(de)作用(yòng),使我(wǒ)能(néng)够快(kuài)速準确完成(chéng)設計(jì)。希望有(yǒu)興趣的(de)同(tóng)学可(kě)以(yǐ)運用(yòng)至(zhì)簡設計(jì)法和(hé)明(míng)德揚模板嘗試一(yī)下(xià)拓展(zhǎn)設計(jì)哦。


設計(jì)教学視頻和(hé)工程源代(dài)碼,請到(dào)明(míng)德揚論壇(www.fpgabbs.cn)学習:http://www.fpgabbs.cn/thread-1156-1-1.html

上(shàng)一(yī)篇(piān):【案(àn)例】 SDRAM读(dú)写控制器
   拓展(zhǎn)閱读(dú)
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨