この信号は、別の信号 Start = 0 になるまでゼロでなければなりません。どうすればこれを達成できますか? 関連するコードは次のとおりです。
din<=0;
wait until falling_edge(start);
for i in 0 to 63 loop
wait until clk = '1' and clk'event;
if i = 0 then
Start <= '1','0' after clk_period;
end if;
if (i < 24) then
din <= 255;
elsif (i > 40) then
din <= 255;
else
din <= 0;
end if;
end loop;
wait;
start の立ち下がりまで din = 0 にすればいいと思ったのですが、start の立ち上がりで止まってしまいます。start = 0 のときに din 値の読み取りを開始したいと考えています。その前は din = 0 です。
ここに写真があります:
編集:実際には、正しい信号値で開始するようにしましたが、dout 値には常に必要のない中間値があります。この場合は 78450 です。これがテストベンチ コードに関係していることはわかっていますが、正しい時間に正しい値を計算することはできません。中間値を取り除くために、以下のコードにどのような変更を加えることができますか?
din<=0;
for i in 0 to 63 loop
wait until clk = '1' and clk'event;
if i = 0 then
Start <= '1','0' after clk_period;
elsif (i < 24) then
din <= 255;
elsif (i > 40) then
din <= 255;
else
din <= 0;
end if;
end loop;