study:fpga:20241031-001:index
基於Lattice FPGA XO2 完成電梯TFT LCD顯示屏的驅動方案 (2024-10-31)
Local Backup
本方案採用FPGA作為驅動屏幕的裝置,有下列幾項優點:
1, 適合各種不同TFT-LCD的介面規格,諸如 並口 RGB 888/ BT656/ BT709 /LVDS /MIPI DSI 等市場規格上常用的介面
2, 支持不同分辨率的屏,可以從320×240 ,640×480 , 800×600 , 1280×720, 1024x 800, 1920×1080 ,640×480 , 800×600 , 1280×720, 1024x 800, 1920×1080 等
3, 支持不同禎率的要求,如 30禎/60/60禎 等等
4, 支持字褲與圖形編碼,在許多應用中,可以自由定義英數字及中文繁體簡體和特殊符號等,可以顯示在屏幕上,並給予不同顏色與底圖的算法,當需要文字與底圖疊加的功能要求也能輕易做到
5, 方案簡單,由於採用邏輯編碼,不容易死機,,不會像MCU一樣容易跑飛而當機或花屏
6, 升級容易,只要在FPGA的邏輯容量範圍內,可以隨意改變邏輯編排,方便增加功能與提升性能,不需要額外的電路輔助
簡單易用的邏輯編成軟體綜合佈局佈線工具
搭建 top module:
module top (
output wire reset_lcd,
//lvds pin
output wire LVDS_CLK,
output wire [3:0] LVDS_DATA );
* 這裡調用有用到的各IP模塊
*. .(此處請自由發揮)
*.
endmodule
搭建WPI 提供的IP:
delay_rst delay1(
.clk(osc_38),
.rst_n(rst_n),
.reset_lcd(reset_lcd)
);
sync_gen gen1(
.r(r),
.g(g),
.b(b),
.DE(DE),
.Vsync(Vsync),
.Hsync(Hsync),
.clk(clk),
.rst_n(rst_n)
)
lvdstx lvdstx_inst0 (
.clk_s(osc_38 ),
.reset(1'b0 ),
.clk(pll_166 ),
.dataout0(tx0_a ),
.dataout1(tx0_b ),
.dataout2(tx0_c ),
.dataout3(tx0_d ),
.sclk( ),
.tx_ready( ),
//lvds pin
.clkout(LVDS_CLK ),
.dout(LVDS_DATA )
);

IP1

IP2

IP3
搭建原廠 提供的IP:
defparam OSCH_inst.NOM_FREQ = "38";
OSCH OSCH_inst(
.STDBY(1'b0),
.OSC(osc_38),
.SEDSTDBY()
); //synthesis syn_black_box
pll pll_inst (
.CLKI(osc_38 ),
.CLKOP(pll_166 ),
.CLKOS(pll_47 ),
.CLKOS2(pll_spi ),
.CLKOS3(pll_100 )
);

IP4

IP5
使用綜合佈局佈線工具:

綜合佈局佈線
下載燒錄程序到FPGA板子:

下載代碼到FPGA
恭喜你!現在就可以看到顯示畫面囉!!

成功的畫面
study/fpga/20241031-001/index.txt · Last modified: 2024/10/31 17:42 (external edit)