50.TFT_LCD液晶屏驱动设计与验证(3)

(1)数据生成模块Verilog代码:

复制代码
module data_gen(
    input   [9:0]   hang        ,
    input   [9:0]   lie         ,
    input           clk_33M     ,
    input           reset_n     ,
    
    output  reg     [23:0]  data    
);
//定义最大行、列
    parameter HANG_MAX  = 800   ;
    parameter LIE_MAX   = 480   ;
    
//定义颜色
    parameter RED       =   24'hff0000;
    parameter ORANGE    =   24'hffcc66;
    parameter YELLOW    =   24'hffff00;
    parameter GREEN     =   24'h33cc33;
    parameter CYAN      =   24'h00ffcc;
    parameter BLUE      =   24'h3333ff;
    parameter PUPPLE    =   24'hcc00cc;
    parameter BLACK     =   24'h000000;
    parameter WHITE     =   24'hffffff;
    parameter GRAY      =   24'hb2b2b2;

//数据生成设计
    always@(posedge clk_33M or negedge reset_n)
        if(!reset_n)
            data <= BLACK   ;
        else if((hang >= 1) && (hang <= HANG_MAX/10))
            data <= RED     ;
        else if((hang > HANG_MAX/10) && (hang <= (HANG_MAX/10) * 2))
            data <= ORANGE  ;
        else if((hang > (HANG_MAX/10) * 2) && (hang <= (HANG_MAX/10) * 3))
            data <= YELLOW  ;
        else if((hang > (HANG_MAX/10) * 3) && (hang <= (HANG_MAX/10) * 4))
            data <= GREEN  ;
        else if((hang > (HANG_MAX/10) * 4) && (hang <= (HANG_MAX/10) * 5))
            data <= CYAN  ;
        else if((hang > (HANG_MAX/10) * 5) && (hang <= (HANG_MAX/10) * 6))
            data <= BLUE  ;
        else if((hang > (HANG_MAX/10) * 6) && (hang <= (HANG_MAX/10) * 7))
            data <= PUPPLE  ;
        else if((hang > (HANG_MAX/10) * 7) && (hang <= (HANG_MAX/10) * 8))
            data <= BLACK  ;
        else if((hang > (HANG_MAX/10) * 8) && (hang <= (HANG_MAX/10) * 9))
            data <= WHITE  ;
        else if((hang > (HANG_MAX/10) * 9) && (hang <= HANG_MAX))
            data <= GRAY   ;
        else
            data <= BLACK  ;
            
endmodule

(2)仿真文件:

复制代码
`timescale 1ns / 1ps

module data_gen_tb;

reg             clk         ;
reg             reset_n     ;

wire    [23:0]  data        ;
wire    [23:0]  data_in     ;
    
wire            locked      ;
wire            clk_33M     ;

wire    [9:0]   hang        ;
wire    [9:0]   lie         ;    
wire            hsync       ;   
wire            vsync       ;
wire    [23:0]  rgb_tft     ;
wire            tft_bl      ;
wire            tft_clk     ;
wire            tft_DE      ;

initial clk = 1'd1;
always #10 clk = ~clk;

initial begin
        reset_n <= 1'd0;
        #15;
        reset_n <= 1'd1;
        #20_000_000;
        $stop;
end

assign data_in = data  ;

PLL_33M     PLL_33M_inst
(

    .clk_33M        (clk_33M    ), 

    .resetn         (reset_n    ), 
    .locked         (locked     ), 
    .clk_in1        (clk        )
);

tft_ctrl    tft_ctrl_inst
(
    .clk_33M         (clk_33M   ),
    .reset_n         (locked    ),
    .data_in         (data_in   ),

    .hang            (hang      ),
    .lie             (lie       ),
    .hsync           (hsync     ),
    .vsync           (vsync     ),
    .rgb_tft         (rgb_tft   ),
    .tft_bl          (tft_bl    ),
    .tft_clk         (tft_clk   ),
    .tft_DE          (tft_DE    )
);

data_gen    data_gen_inst
(
    .hang        (hang),
    .lie         (lie),
    .clk_33M     (clk_33M),
    .reset_n     (locked),

    .data        (data)
);

endmodule

(3)仿真波形:

相关推荐
乌恩大侠7 小时前
【OAI】 USRP 在conf文件中的配置,RU选项
fpga开发
qq_小单车1 天前
xilinx-DNA
fpga开发·xilinx
Flamingˢ1 天前
FPGA中的嵌入式块存储器RAM:从原理到实现的完整指南
fpga开发
Flamingˢ1 天前
FPGA中的存储器模型:从IP核到ROM的深度解析与应用实例
网络协议·tcp/ip·fpga开发
FPGA小c鸡2 天前
【FPGA深度学习加速】RNN与LSTM硬件加速完全指南:从算法原理到硬件实现
rnn·深度学习·fpga开发
Aaron15882 天前
通信灵敏度计算与雷达灵敏度计算对比分析
网络·人工智能·深度学习·算法·fpga开发·信息与通信·信号处理
博览鸿蒙2 天前
IC 和 FPGA,到底区别在哪?
fpga开发
思尔芯S2C2 天前
FPGA原型验证实战:如何应对外设连接问题
fpga开发·risc-v·soc设计·prototyping·原型验证
Flamingˢ2 天前
FPGA实战:VGA成像原理、时序详解与Verilog控制器设计与验证
fpga开发
FPGA_小田老师2 天前
xilinx原语:OSERDES2(并串转换器)原语详解
fpga开发·lvds·xilinx原语·oserdese·并串转换