||
TFT液晶屏测试程序
该程序实现在一个800*600的TFT液晶屏上显示彩条。
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语言也不是用来做算法一样,所以该怎么做就怎么做。