在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA:圖形 LCD 面板- 圖形

            FPGA:圖形 LCD 面板- 圖形

            作者: 時(shí)間:2024-01-15 來源:EEPW編譯 收藏

            圖形 LCD 面板 3 - 圖形

            讓我們研究一下生成圖形視頻數(shù)據(jù)的 3 種方法。

            本文引用地址:http://www.biyoush.com/article/202401/454788.htm

            柵格化位圖

            在 LCD 上顯示圖形的經(jīng)典(且簡單)方法是將光柵化位圖數(shù)據(jù)保存到 RAM 中。
            我們將在這里使用一個 blockram。

            我們在這里顯示一個 128x32 像素的小位圖(非常適合 4Kbits 塊內(nèi)存):

            // Use a blockram to hold the graphical data
            wire [7:0] BitmapData;
            blockram_8x512 RAM_bitmap(.clk(clk), .rd_adr({CounterY[4:0],CounterX[4:1]}), .data_out(BitmapData));
            
            // Let's say we need 4 bits at a time
            wire [3:0] LCD_Bitmap4 = CounterX[0] ? BitmapData[3:0] : BitmapData[7:4];
            
            // Display the data into a chessboard pattern
            wire [3:0] LCD_BitmapChessboard = (CounterY[5] ^ CounterX[5]) ? 4'b000 : LCD_Bitmap4 ^ {4{CounterY[5]}};

            上面未顯示RAM的寫入方式。最簡單的方法是將其視為ROM(RAM內(nèi)容是配置的一部分,在運(yùn)行時(shí)不會改變)。

            下面是一個微距鏡頭:

            光柵化位圖的缺點(diǎn)是需要足夠大的 RAM 來保存位圖的每個像素的狀態(tài)。 使用內(nèi)部 RAM的成本很高,因此通常使用外部RAM。

            現(xiàn)在,讓我們探索更多創(chuàng)建圖形的原始方法。

            曲線 y=F(x)

            假設(shè)我們想要顯示一個 y=F(x) 波形,就像正弦波一樣。
            這出乎意料地容易做到。 我們將“Y”值保存到一個塊函數(shù)中,并通過讀取RAM并將這些值與“CounterY”(當(dāng)前行號)進(jìn)行比較來逐行生成圖片。
            // We assume CounterX and CounterY are available:
            //  CounterX is the pixel number of the current line
            //  CounterY is the line number
            
            // We use a RAM to hold the "Y" values
            // Y=F(CounterX)
            wire [7:0] RAM_Y_value;
            blockram_8x512 RAM_FXY(.clk(clk), .rd_adr(CounterX), .data_out(RAM_Y_value));
            
            // check for equality between the "Y" values and "CounterY"
            reg grcpeq1;  
            always @(posedge clk) grcpeq1 <= (RAM_Y_value==CounterY);
            reg grcpeq2;  always @(posedge clk) grcpeq2 <= grcpeq1;
            
            // check for "greater-than" between the "Y" values and "CounterY"
            reg grcp1;  always @(posedge clk) grcp1 <= (RAM_Y_value>CounterY);
            reg grcp2;  always @(posedge clk) grcp2 <= grcp1;
            
            // display a pixel if equality, or if "CounterY" is between 2 successive "Y" values
            wire FXpix= grcpeq2 | (grcp1 ^ grcp2);

            以下是使用 F(x)=cos(x*2*pi/480)*sin(x*2*pi/480*4) 的結(jié)果:

            旋轉(zhuǎn)縮放

            Rotozoom 是顯示具有線性幾何變形的位圖的有效方法。 特別是,這允許輕松旋轉(zhuǎn)和縮放圖片。
            在下面的實(shí)現(xiàn)中,我們在屏幕上顯示一個旋轉(zhuǎn)的棋盤圖案。
            reg [15:0] X0, Y0, X1, Y1;always @(posedge clk)if(Vsync) 
            begin
                X0 <= 0;
                Y0 <= 0;
                X1 <= 0;
                Y1 <= 0;end
                else if(Hsync) 
            begin
                X0 <= X1 - 100;
                Y0 <= Y1 + 400;
                X1 <= X1 - 100;
                Y1 <= Y1 + 400;end
                elsebegin
                X0 <= X0 + 400;
                Y0 <= Y0 + 100;end
                // Display a chessboard pattern by XOR'ing the MSB of X and Y counters
            // You could also display a rotozoomed bitmap by feeding X and Y to a bitmap in a RAM
            wire rotozoom_pix = X0[15] ^ Y0[15];

            這被簡化了,因?yàn)樵隽恐凳枪潭ǖ模?00 和 100 以上)。 您可能希望在實(shí)際實(shí)現(xiàn)中改變它們。 通過改變系數(shù),您可以旋轉(zhuǎn)和縮放棋盤。

            這是與上一個波形混合的結(jié)果:

            然后,您可以將其與一些文本混合在一起......



            關(guān)鍵詞: FPGA 圖形LCD面板

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉