今回は、verilogHDLとVHDLのテストベンチを記述する際に、ほぼ必須となるクロック生成回路の記述方法をまとめてみます。
クロックを生成する方法は様々ありますが、verilogではalways文を用いて記述し、VHDLではシミュレーションを停止させる式のないprocess文を記述することが最も簡単でわかりやすいと思います。
まずverilogでinitial文でクロック回路を記述すると、下記のようになりとてもめんどくさいです。
initial begin
CLK = 1’b0;
#50 CLK = 1’b1;
#50 CLK = 1’b0;
#50 CLK = 1’b1;
…
#50 finish
end
と、力業もありますが途方もないです。
そこでalways文を使うと下記のようにとても簡単に書くことができます。
always begin
CLK = 1’b0;
#50 CLK = 1’b1;
#50
end
このようにverilogではalways文を使うことで一瞬で記述できてしまいます。回路設計で記述するときのalways文では( )の中に信号を記載しました。それに対し、クロック生成時は空白にします。そうすることで永久にalways文の中の動作を実行させるという意味になります。
続いてVHDLですが、always文同様にprocess文+falseという記述で力業の記述ができますが(大変なので例は割愛します)、verilog同様に永久に動作させる記述方法があるので下記にまとめます。
process begin
CLK <= ‘0’;
wait for 50;
CLK <= ‘1’;
wait for 50;
end process;
これでVHDLのテストベンチにおけるクロック生成回路は完成です。とても単純でわかりやすいです。
次回はverilogとVHDLのモジュールやテストベンチの構文比較もまとめておこう。
コメント