微风启航 https://bbs.21ic.com/?517067 [收藏] [复制] [RSS] 记载自己在电子开发中的点点滴滴,愿与电子爱好者共同交流学习,分享经验

日志

TFT液晶屏测试程序

已有 1267 次阅读2012-6-26 11:55 |个人分类:FPGA|系统分类:EDA/PLD

TFT液晶屏测试程序


该程序实现在一个800*600TFT液晶屏上显示彩条。





module testTFT(clk,rst_n,


               //data


               data_R,data_G,data_B,


               //control


               hsync,vsync,ena,TxCLK


               );


 


input clk;


input rst_n;


 


output[5:0] data_R;//


output[5:0] data_G;//绿


output[5:0] data_B;//


 


output hsync;//行同步


output vsync;//帧同步


output TxCLK;//数据发送时钟


output ena;//数据使能


 


reg[5:0] data_R;


reg[5:0] data_G;


reg[5:0] data_B;


 


reg Tx;


reg Hs;


reg Vs;


reg En;


reg[19:0] counter;


 


wire TxCLK = Tx | clk ;


wire hsync = Hs | ((counter%900>=3) && (counter%900<=12) && (counter<=540002))? 1 : 0;


wire vsync = Vs | ((counter >=3) && (counter <=902)) ? 1 : 0;


wire ena = En | ((((counter%900>=0) && (counter%900<=50)) || ((counter%900>=851) && (counter%900<=899))) || (counter >=540002)) ? 0 : 1;


 


//serial counter


//采用32.768MHz的晶振,计数的结果为每帧16ms


always @(posedge clk or negedge rst_n)


  if(!rst_n) counter <=0;


  else if(counter ==555555) counter <=0;


  else counter <=counter +1;


always @(posedge clk or negedge rst_n)


begin


  if(!rst_n) begin Tx=1;Hs=1;Vs=1;En=1; end


  else if((counter>=3 ) && (counter<180002))


  begin data_R=6'b111111;


        data_G=6'b111111;


        data_B=6'b000000;


        Tx=0;Hs=0;Vs=0;En=0;


  end


  else if((counter>=180002 ) && (counter<360002))


  begin data_R=6'b111111;


        data_G=6'b000000;


        data_B=6'b111111;


        Tx=0;Hs=0;Vs=0;En=0;


  end


  else


  begin data_R=6'b000000;


        data_G=6'b111111;


        data_B=6'b111111;


        Tx=0;Hs=0;Vs=0;En=0;


  end


 


end


endmodule


关于FPGA“程序”,有人觉得FPGA用语言写的不叫程序,叫代码,因为这是硬件,并行执行的。个人觉得那种说法有点偏执,就像有人纠结于是否只有研究生学历才能做FPGA开发一样。做研发很多时候都是看个人的综合能力,什么学历出身之类的都是浮云。很多人用FPGA并不是用来实现一些复杂的功能,正如很多人用C语言也不是用来做算法一样,所以该怎么做就怎么做。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)