FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年3月25日
module glcd( cd, wr, di, rdy, d, a0, cs, e, rw, clk, nreset );
parameter T1 = 1 ;←アクセス時間の確保用の遅延時間
parameter T2 = 2 ;
parameter T3 = 1 ;
parameter T4 = 200 ;
input cd, wr ;
input [7:0] di ;
output rdy ;
output [7:0] d ;
output a0,cs, e,rw ;
input clk ;
input nreset ;
reg [2:0] stat ;
reg [7:0] timer ;
reg rdy ;
reg [7:0] d ;
reg a0, cs, e, rw ;
always @( posedge clk or negedge nreset )
begin
if( !nreset ) begin←※10
stat <= 4 ;
timer <= T4 ;
rdy <= 0 ;
d <= 0 ;
a0 <= 0 ;
cs <= 0 ;
e <= 0 ;
rw <= 1 ;
end
else begin
if ( timer != 0) timer <= timer -1 ;
else
case( stat )
0: begin
if ( wr == 1 ) ←書き込み要求待ち
stat <= 1 ;
else
rdy <= 1 ;
end
1: begin
rw <= 0 ;←※11
cs <= 1 ;
a0 <= cd ;
rdy <= 0 ;
stat <= 2 ;
timer <= T1 ;
end
2: begin←※12
e <= 1 ;
d <= di ;
stat <= 3 ;
timer <= T2 ;
end
3: begin←※13
e <= 0 ;
stat <= 4 ;
timer <= T3 ;
end
4: begin←※14
rw <= 1 ;
cs <= 0 ;
stat <= 0 ;
timer <= T4 ;
end
default: stat <= 0 ;
endcase
end
end
endmodule
parameter T1 = 1 ;←アクセス時間の確保用の遅延時間
parameter T2 = 2 ;
parameter T3 = 1 ;
parameter T4 = 200 ;
input cd, wr ;
input [7:0] di ;
output rdy ;
output [7:0] d ;
output a0,cs, e,rw ;
input clk ;
input nreset ;
reg [2:0] stat ;
reg [7:0] timer ;
reg rdy ;
reg [7:0] d ;
reg a0, cs, e, rw ;
always @( posedge clk or negedge nreset )
begin
if( !nreset ) begin←※10
stat <= 4 ;
timer <= T4 ;
rdy <= 0 ;
d <= 0 ;
a0 <= 0 ;
cs <= 0 ;
e <= 0 ;
rw <= 1 ;
end
else begin
if ( timer != 0) timer <= timer -1 ;
else
case( stat )
0: begin
if ( wr == 1 ) ←書き込み要求待ち
stat <= 1 ;
else
rdy <= 1 ;
end
1: begin
rw <= 0 ;←※11
cs <= 1 ;
a0 <= cd ;
rdy <= 0 ;
stat <= 2 ;
timer <= T1 ;
end
2: begin←※12
e <= 1 ;
d <= di ;
stat <= 3 ;
timer <= T2 ;
end
3: begin←※13
e <= 0 ;
stat <= 4 ;
timer <= T3 ;
end
4: begin←※14
rw <= 1 ;
cs <= 0 ;
stat <= 0 ;
timer <= T4 ;
end
default: stat <= 0 ;
endcase
end
end
endmodule
リスト4-1 FPGAから液晶ディスプレイ・モジュールにアクセスするためのVerilog HDL記述
注10;リセット時の各レジスタの初期化.リセット直後はstat4からスタートすることでLCDの初期化時間を確保する
注11;rw,cs,a0,を設定する.タイマをT1にセットしてこれらの信号のセットアップ時間を確保する
注12;Eを'1'にする.データ・ラインにデータを設定するタイマをT2にセットしてEの最小パルス幅を確保する
注13;Eを'0'にする.タイマをT3にセットしてrw,cs,a0,d0-d7のホールドを確保する
注14;csをネゲートする.タイマをT4にセットして最小アクセス・サイクルを確保する