とりあえず、教科書のステートマシンの記述を参考にデッドタイム生成(立ち上がり遅延)を記述してみた。
前に作った単相のPWMを相補出力化して、それぞれに作成した遅延を挟んで出力させた結果が下図。
5ステップ遅延させるつもりが6ステップ遅延したけど気にしない。調整できるし。
↓が今回作成した遅延システム。無駄が多そうだが気にしない。頭悪いから。それにVerilog始めて3日目ぐらいだし。
因みに、立ち上がり遅延に拘ったのは、どちらかの出力の立ち上がり立ち下がり両方削るのは気に入らないから。
前に作った単相のPWMを相補出力化して、それぞれに作成した遅延を挟んで出力させた結果が下図。
5ステップ遅延させるつもりが6ステップ遅延したけど気にしない。調整できるし。
↓が今回作成した遅延システム。無駄が多そうだが気にしない。頭悪いから。それにVerilog始めて3日目ぐらいだし。
module delay (SignalTap込みで今回は756LEでした。
input SIGIN, CLK,
output SIGOUT
);
reg sig;
reg [2:0] i;
reg [1:0] STATE;
initial STATE <= 0;
always @(posedge CLK)begin
case(STATE)
0:begin
sig=0;
if(SIGIN==1)STATE<=1;
end
1:begin
sig=0;
if(i<5)i=i+1;
else begin
i<=0;
STATE<=2;
end
end
2:begin
sig=1;
if(SIGIN==0)STATE=0;
end
endcase
end
assign SIGOUT=sig;
endmodule
因みに、立ち上がり遅延に拘ったのは、どちらかの出力の立ち上がり立ち下がり両方削るのは気に入らないから。