|
|
同じ回路をたくさん並べることは良くある話で、極端に言えばメモリなんか1bitの記憶回路が容量の分だけずらりと並ぶわけですにゃー。
そう言う場合、verilogではモジュールとインスタンスという形で対応しますにゃ。
module neko(A, B, C, clk);
input A;
input B[7:0];
output C;
input clk;
(以下、回路記述続く)
endmodule
としてモジュールの内部回路の定義を書いておいて、下のようにインスタンスを並べますにゃー。
neko tama(.A(a), .B(ba), .C(C[0]), .clk(clk));
neko siro(.A(a), .B(bb), .C(C[1]), .clk(clk));
neko momo(.A(a), .B(bc), .C(C[2]), .clk(clk));
neko mie(.A(a), .B(bd), .C(C[3]), .clk(clk));
tama, siro, momo, mieというインスタンス名を持つ、中身が同じで入力ポートBに違う信号が入る回路が4つ合成されますにゃ。Cは出力のつもりで4bitがそれぞれのインスタンスから1bitずつ出てくる感じにゃ。
まあ実際にはこんな無秩序なインスタンス名にすることはありませんけどにゃー。Cの桁に合わせてneko0, neko1みたいに番号振るとかにゃ。
てゆーか、Visual Studio 2008 ヤダー! にゃ。
|
|