FPGA-TFT(VGA)驱动代码分享
来源:互联网 发布:淘宝运费模板怎么写 编辑:程序博客网 时间:2024/05/16 12:12
module TFT(
clk9M, /*TFT系统时钟输入*/
rst_n, /*系统复位*/
data_in, /*16位待显示数据输入*/
hcount, /*TFT行扫描计数器 525*/
vcount, /*TFT场扫描计数器 286*/
tft_rgb, /*TFT数据输入 5/6/5*/
tft_hs, /*TFT行同步信号*/
tft_vs, /*TFT场同步信号*/
tft_clk, /*TFT像素时钟*/
tft_de, /*TFT数据使能*/
tft_pwm /*TFT背光控制*/
);
/*输入端口定义*/
input clk9M; /*TFT系统时钟输入*/
input rst_n; /*系统复位*/
input[15:0]data_in; /*16位待显示数据输入*/
/*输出端口定义*/
output[9:0]hcount; /*TFT行计数器525*//*一行已扫描点数*/
output[9:0]vcount; /*TFT场计数器286*//*一场已扫描行数*/
output[15:0]tft_rgb;/*TFT数据输入 5/6/5*/
outputtft_hs; /*TFT行同步信号*/
outputtft_vs; /*TFT场同步信号*/
outputtft_clk; /*TFT像素时钟*/
outputtft_de; /*TFT数据使能*/
outputtft_pwm; /*TFT背光控制*/
/*内部寄存器定义*/
reg[9:0]hcount_r; /*行扫描计数器*/
reg[9:0]vcount_r; /*场扫描计数器*/
/*内部连线定义*/
wirehcount_ov; /*行扫描计数完成标志*/
wirevcount_ov; /*场扫描计数完成标志*/
wire dat_ack; /*有效显示标定*/
/*TFT行场扫描时序*/
parametertft_hs_end = 10'd40, /*行消隐结束*/
hdat_begin = 10'd42, /*行数据开始*/
hdat_end =10'd522, /*行数据结束*/
hpixel_end = 10'd524, /*行扫描结束*/
tft_vs_end = 10'd9, /*场消隐结束*/
vdat_begin = 10'd11, /*场数据开始*/
vdat_end =10'd283, /*场数据结束*/
vline_end = 10'd285; /*场扫描结束*/
assign hcount= hcount_r - hdat_begin; /*一行已扫描点数*/
assign vcount= vcount_r - vdat_begin; /*一场已扫描行数*/
assigntft_clk = clk9M; /*TFT像素时钟9M*/
assign tft_de = dat_ack; /*TFT使能等于有效区标定*/
assigntft_pwm = rst_n; /*TFT背光设置*/
/*TFT驱动->行扫描*/
always@(posedgeclk9M,negedge rst_n)begin
if(!rst_n)begin /*如果复位*/
hcount_r<= 10'd0; /*行扫描计数器清零*/
end
elseif(hcount_ov)begin /*如果行扫描完成*/
hcount_r<= 10'd0; /*行扫描计数器清零*/
end
elsebegin /*如果没复位行扫描也没结束*/
hcount_r<= hcount_r + 1'b1; /*行扫描计数器自加*/
end
end
assignhcount_ov = (hcount_r == hpixel_end); /*判断行扫描是否完成*/
/*TFT驱动->场扫描*/
always@(posedgeclk9M,negedge rst_n)begin
if(!rst_n)begin /*如果复位*/
vcount_r<= 10'd0; /*场扫描计数器清零*/
end
elseif(hcount_ov)begin /*如果行扫描完成*/
if(vcount_ov)begin /*如果场扫描完成*/
vcount_r<= 10'd0; /*场扫描计数器清零*/
end
elsebegin /*如果行扫描完成同时场扫描没完成*/
vcount_r<= vcount_r + 1'b1; /*场扫描计数器自加*/
end
end
else begin /*如果行扫描没完成*/
vcount_r<= vcount_r; /*场扫描计数器等待行扫描完成*/
end
end
assignvcount_ov = (vcount_r == vline_end); /*判断场扫描是否完成*/
/*如果行和场扫描计数器在图像有效显示区域时序范围内则数据使能信号有效*/
assigndat_ack = ((hcount_r >= hdat_begin)&&(hcount_r <=hdat_end))&&
((vcount_r >= vdat_begin)&&(vcount_r<= vdat_end));
/*行同步信号在行同步头扫描完成后有效*/
assign tft_hs= (hcount_r > tft_hs_end);
/*场同步信号在场同步头扫描完成后有效*/
assign tft_vs= (vcount_r > tft_vs_end);
/*二选一多路器 如果dat_ack有效输入图片信息否则输入0*/
assigntft_rgb = (dat_ack)?data_in:16'h0000;
endmodule
- FPGA-TFT(VGA)驱动代码分享
- FPGA VHDL 驱动群创 TFT LCD AT070TN92
- FPGA 学习笔记(十一) VGA驱动的实现
- FPGA串口发送代码分享
- FPGA串口接收代码分享
- VGA驱动
- FPGA的VGA显示
- 关于FPGA驱动TFT屏渐变显示出现条纹的问题解决
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十七:TFT模块 - 显示
- 转载:什么是QVGA?什么是VGA?什么是TFT?
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--VGA驱动(十)
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--VGA驱动(十)
- 如何驱动TFT LCD
- 关于MCU驱动TFT
- TFT液晶屏驱动移植
- TFT LCD驱动
- stm32 驱动 TFT LCD
- esp32驱动spi TFT
- Python入门与进阶学习笔记之分支、循环、条件与枚举
- 钉钉生成jspapi token出现IP地址不在白名单的解决办法
- 常用css样式
- Java8,第 5 部分
- 命名管道(FIFO)
- FPGA-TFT(VGA)驱动代码分享
- MySQL存储过程
- 从放弃迅雷和IDM到自己开发下载工具
- 可参考建议js仿模块写法(有利结构清晰,不真是模块)
- VmWear安装报错
- DenseNet-阅读理解-笔记
- 3.Ubuntu 等镜像文件SD烧写系统以及启动U盘内存编变小解决方案
- Python3 使用SVM--Lasso等,训练模型,画出auc曲线
- 模板类 error LNK2019: 无法解析的外部符号