Bootstrap

FPGA的学习:TFT_LCD液晶屏字符显示

整个系统框图如图所示:
在这里插入图片描述
其中需要三个子模块:时钟产生模块、tft_pic模块、tft_ctrl模块。
框图分别如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时序图如下图所示:
在这里插入图片描述
在这里插入图片描述
tft_pic以及tft_ctrl模块如下:

`timescale  1ns/1ns
module  tft_pic
(
    input   wire            tft_clk_33m  ,   //输入工作时钟,频率33MHz
    input   wire            sys_rst_n   ,   //输入复位信号,低电平有效
    input   wire    [10:0]   pix_x       ,   //输入TFT有效显示区域像素点X轴坐标
    input   wire    [10:0]   pix_y       ,   //输入TFT有效显示区域像素点Y轴坐标

    output  reg     [15:0]  pix_data        //输出像素点色彩信息

);

//********************************************************************//
//****************** Parameter and Internal Signal *******************//
//********************************************************************//

parameter   H_VALID =   11'd800 ,   //行有效数据
            V_VALID =   11'd480 ;   //场有效数据

parameter   CHAR_B_H=   10'd272 ,   //字符开始X轴坐标
            CHAR_B_V=   10'd208 ;   //字符开始Y轴坐标

parameter   CHAR_W  =   10'd256 ,   //字符宽度
            CHAR_H  =   10'd64  ;   //字符高度

parameter   BLACK   =   16'h0000,   //黑色
            GOLDEN  =   16'hFEC0;   //金色

//wire  define
wire    [10:0]   char_x  ;   //字符显示X轴坐标
wire    [10:0]   char_y  ;   //字符显示Y轴坐标

//reg   define
reg     [255:0] char    [63:0]  ;   //字符数据

//********************************************************************//
//***************************** Main Code ****************************//
//********************************************************************//

//字符显示坐标
assign  char_x  =   (((pix_x >= CHAR_B_H) && (pix_x < (CHAR_B_H + CHAR_W)))
                    && ((pix_y >= CHAR_B_V) && (pix_y < (CHAR_B_V + CHAR_H))))
                    ? (pix_x - CHAR_B_H) : 11'h3FF;
assign  char_y  =   (((pix_x >= CHAR_B_H) && (pix_x < (CHAR_B_H + CHAR_W)))
                    && ((pix_y >= CHAR_B_V) && (pix_y < (CHAR_B_V + CHAR_H))))
                    ? (pix_y - CHAR_B_V) : 11'h3FF;

//char:字符数据
always@(posedge tft_clk_33m)
    begin
        char[0]     <=  256'h0000000000000000000000000000000000000000000000000000000000000000;
        char[1]     <=  256'h0000000000000000000000000000000000000000000000000000000000000000;
        char[2]     <=  256'h0000000000000000000000000000000000000000000000000000000000000000;
        char[3]     <=  256'h0000000000000000000000000000000000000000000000000000000000000000;
        char[4]     <=  256'h00000000003C0000000000000000000000000000000070000000000000000000;
        char[5]     <=  256'h0000000E003E00000000000000000000000000000000F0000000000000000000;
        char[6]     <=  256'h000000FF001F00000000000000000000000000000001F0000000000000400000;
        char[7]     <=  256'h000007FF000F00000000000000000000000010000001F8000000000000E00000;
        char[8]     <=  256'h00007FFE000F000000000000000000000003FE000001F8000000000000F
;