秦韵FPGA 转载或原创(十五) 高云FPGA--GW2A18C

简介

前面将了高速ADC并口adc的驱动,理论上应该讲解一下数据的存储、应用等,关于存储方面可以参考我之前的博客,比如写DDR3、写SDRAM,这里的DDR3在我调试过的板卡有双片DDR3和单片DDR3等,分别支持1:2和1:4模式,本篇文章不讲解这部分,主要讲解以下显示的内容,关于RGB接口的TFT屏幕,大家应该接触的比较多,比如4.3寸、5寸、7寸等更大的,目前我调试的位正点原子的4.3寸屏幕,给大家上一个彩条图片:
在这里插入图片描述

代码

LCD的驱动时序图就不放了,基本上就是数据使能信号、行场同步信号、背光控制信号、像素时钟、RGB565颜色数据等等信号的驱动讲解,这部分的东西可以百度搜以下,主要给大家简单讲解一下代码和过程,这个基本例程主要时彩条展示模块,驱动模块,以及PLL IP Core组成。
下面主要是DRV模块的代码:

//	命名规范: drv_xxx 为驱动模块  ctr_xxxx: 为控制模块   top_xxx:为顶层文件
module drv_tft43_m(
	input 					clk,		//这例的clk 是通过pll分频之后输出的时钟
	input 					rst_n,		//低电平复位
    output               tft43_deb,  
    output               tft43_hsync,      
    output               tft43_vsync,      
    output     reg       tft43_black,     
    output               tft43_clk,     
    output       [15:0]  tft43_rgb,    
    output     reg       tft43_reset
    );

//------------这里采用参数定义利于修改-----------------------------------
parameter  tft43_h_sync   =  11'd41;     
parameter  tft43_h_back   =  11'd2;      
parameter  tft43_h_aera   =  11'd480;    
parameter  tft43_h_tota  =  11'd525;    
   
parameter  tft43_v_sync   =  11'd10;     
parameter  tft43_v_back   =  11'd2;      
parameter  tft43_v_aera   =  11'd272;    
parameter  tft43_v_tota  =  11'd286;    
//---------------------------------------------------------------------

//主要需要控制的是行场信号的时序,关于tft屏幕的消影其他的暂时不讲解,先看代码的处理。
// ______|--------------------------|______|-------------------------------|____
//_______|------|__|-------|__|-----|______|-----|__|-----|__|-----|__|----|____

/*简单的画一下行场信号的控制时许图,不是很标准,但是可以反应时序,基本的意思是说,比如tft刷新一行场往下走一个,比如有两个计数器,h_reg,v_reg;  当h_reg== 525时,v_reg才加一个,知道v_reg == 286时,就刷新满一个屏幕了,就是上述图片看到的景象。
*/
always@ (posedge clk) begin
    if(!rst_n) 
        h_reg<= 'd0;
    else if(h_reg== tft43_h_tota  - 1'b1)
            h_reg<= 'd0;
    else
            h_reg<= h_reg+ 1'b1;           
end

always@ (posedge clk) begin
    if(!rst_n) 
        v_reg<= 'd0;
    else if(v_reg  >= tft43_v_tota  -1)
    	v_reg<= 'd0;
    else if(h_reg== tft43_h_tota  - 1)
        v_reg <= v_reg + 1;    
end

always@ (posedge clk) begin
    if(!rst_n)begin 
        tft43_reset<=0;
        tft43_black<=0;
    end
    else begin
        tft43_reset<=1;
        tft43_black<=1;
    end
end
endmodule

/*
基本的代码就在这里了,关于例程后续会公布的,主要理解以下设计思路,
关于tft43_h_aera   和tft43_v_aera 参数定义的就是tft屏幕的显示范围,比如4.3寸的屏幕就是480*270
*/

关于显示部分的内容就先暂时这么多吧,后期有需要,则会继续补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值