ZYNQ7020(黑金)純verilog驅(qū)動4.3寸RGB接口TFT液晶屏(AN430)顯示彩條
簡介
像素(Pixel):像素是指由圖像的小方格組成的,這些小方快都有一個明確的位置和被分配的色彩數(shù)值,小方格顏色和位置就決定該圖像所呈現(xiàn)出來的樣子。
分辨率(Resolution):是屏幕圖像的精密度,是指顯示器所能顯示的像素有多少。
像素格式(Pixel Format):將RGB三種顏色進行量化,每種顏色用8Bit表示,RGB共需要24位,即RGB888格式。
LCD屏幕的接口有RGB、MCU、LVDS、MIPI等。
時序
對于顯示屏來說,是在不斷的進行像素刷新的,從左往右一行一行的刷新,一行刷新完后接著刷新下一行,整個過程就是從左往右,從上往下進行刷新的。在刷新的過程中每個像素點都賦予不同的顏色,一直刷新到最后一行最后一列時,一幀圖像也就顯示出來了,然后再重頭開始重復刷新。
每個不同尺寸的顯示器都有自己對應的有效顯示區(qū)域(Addressable Video)和無效顯示區(qū)域(Border)。像素的刷新過程是從無效區(qū)域的左上角開始刷新到右下角結(jié)束。比如4.3寸屏的真正有效區(qū)域為480*272,其余的都是無效區(qū)域,但它們會占用刷新時間。
驅(qū)動TFT顯示屏的關(guān)鍵是正確分析其水平和垂直掃描時序,何時輸出的圖像才有效。由下面兩張圖可以很明顯的分析
下圖中的HSync為行同步信號,它有效時,開始一行的刷新;VSync為場同步信號,它有效時表示一幀刷新的開始。Back Porch:后沿,F(xiàn)ront Porch:前沿。
行掃描時序如下,場掃描時序同理,只是對應數(shù)值不同。
分析
通過下面的4.3寸屏的管腳圖可知,我們設計的顯示屏驅(qū)動模塊的端口數(shù)為LCD_RGB、LCD_DCLK、LCD_HSYNC、LCD_VSYNC和LCD_DE。SPI開頭的端口是觸摸用的,這里只是顯示功能可不用管。
可針對行時序和場時序分別使用一個計數(shù)器,行時序的計數(shù)器范圍為0——524,場時序范圍為0——285。
頂層文件,需要注的是480*272顯示屏的驅(qū)動時鐘是9Mhz,而我們給的系統(tǒng)時鐘是100Mhz,所以需要用到clk_wiz IP核:
module lcd_test(
input clk ,
input rst_n ,
output [7:0] lcd_r ,
output [7:0] lcd_g ,
output [7:0] lcd_b ,
output lcd_dclk ,
output lcd_vsync ,
output lcd_hsync ,
output lcd_de
);
clk_wiz_0 clk_wiz_inst
(
// Clock out ports
.clk_out1(lcd_dclk), // output clk_out1
// Status and control signals
.reset(!rst_n ), // input reset
// Clock in ports
.clk_in1(clk));
lcd_driver lcd_driver_inst
(
.clk (lcd_dclk ),
.rst_n (rst_n ),
.lcd_r (lcd_r ),
.lcd_g (lcd_g ),
.lcd_b (lcd_b ),
.lcd_vsync (lcd_vsync ),
.lcd_hsync (lcd_hsync ),
.lcd_de (lcd_de )
);
endmodule
約束文件,根據(jù)J11擴展口和4.3寸TFT顯示屏管腳圖一一對應分配即可:
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_b[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_g[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {lcd_r[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports lcd_clk]
set_property IOSTANDARD LVCMOS33 [get_ports lcd_de]
set_property IOSTANDARD LVCMOS33 [get_ports lcd_hsync]
set_property IOSTANDARD LVCMOS33 [get_ports lcd_vsync]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property PACKAGE_PIN J18 [get_ports {lcd_r[7]}]
set_property PACKAGE_PIN H18 [get_ports {lcd_r[6]}]
set_property PACKAGE_PIN G19 [get_ports {lcd_r[5]}]
set_property PACKAGE_PIN G20 [get_ports {lcd_r[4]}]
set_property PACKAGE_PIN F19 [get_ports {lcd_r[3]}]
set_property PACKAGE_PIN F20 [get_ports {lcd_r[2]}]
set_property PACKAGE_PIN F16 [get_ports {lcd_r[1]}]
set_property PACKAGE_PIN F17 [get_ports {lcd_r[0]}]
set_property PACKAGE_PIN K19 [get_ports {lcd_g[7]}]
set_property PACKAGE_PIN J19 [get_ports {lcd_g[6]}]
set_property PACKAGE_PIN K17 [get_ports {lcd_g[5]}]
set_property PACKAGE_PIN K18 [get_ports {lcd_g[4]}]
set_property PACKAGE_PIN M19 [get_ports {lcd_g[3]}]
set_property PACKAGE_PIN M20 [get_ports {lcd_g[2]}]
set_property PACKAGE_PIN L19 [get_ports {lcd_g[1]}]
set_property PACKAGE_PIN L20 [get_ports {lcd_g[0]}]
set_property PACKAGE_PIN D19 [get_ports {lcd_b[7]}]
set_property PACKAGE_PIN D20 [get_ports {lcd_b[6]}]
set_property PACKAGE_PIN M17 [get_ports {lcd_b[5]}]
set_property PACKAGE_PIN M18 [get_ports {lcd_b[4]}]
set_property PACKAGE_PIN L16 [get_ports {lcd_b[3]}]
set_property PACKAGE_PIN L17 [get_ports {lcd_b[2]}]
set_property PACKAGE_PIN J20 [get_ports {lcd_b[1]}]
set_property PACKAGE_PIN H20 [get_ports {lcd_b[0]}]
set_property PACKAGE_PIN E19 [get_ports lcd_clk]
set_property PACKAGE_PIN G17 [get_ports lcd_de]
set_property PACKAGE_PIN E18 [get_ports lcd_hsync]
set_property PACKAGE_PIN G18 [get_ports lcd_vsync]
set_property PACKAGE_PIN U18 [get_ports clk]
set_property PACKAGE_PIN L15 [get_ports rst_n]
ZYNQ7020標準J11擴展口管腳:文章來源:http://www.zghlxwxcb.cn/news/detail-462633.html
4.3寸TFT液晶屏的對應的管腳接口原理圖:
測試結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-462633.html
到了這里,關(guān)于ZYNQ7020(黑金)純verilog驅(qū)動4.3寸RGB接口TFT液晶屏(AN430)顯示彩條的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!