veriogHDLとVHDLのテストベンチにおけるクロック生成回路の記述方法

論理回路

今回は、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のモジュールやテストベンチの構文比較もまとめておこう。

コメント

タイトルとURLをコピーしました