在一個 .V 檔案裡面,可以有很多個 module,但是 Top Module 只會有一個,所以檔名必須以 Top Module.v 來命名來辨別 Top Module。
為甚麼會需要引用模組呢?
因為通常一個大模組往往會已由許多小模組所組成的,這樣便有以下好處:
將模組的埠與其他模組連接的方法有兩種,分別是:
1.依照要引用之模組的埠列「順序」(in order)來連接,也就是如果要引用的模組是:
module test(
clkSys,
rst_n
);
..
...
....
endmodule
那麼引用時括號內的順序就會對應到該模組括號內的順序,例如:
reg clk;
reg reset_n;
test U0(clk, reset_n);//module instantiation
那麼這個模組的 {clk, reset_n} 就會接到 test 模組的 {clkSys, rst_n}
2.依「指定名稱」(by name)的方法來連接,會以 " .該模組腳位(此模組腳位) " 來引用,例如:
reg clk;
reg reset_n;
//module instantiation
test U0(
.clk(clk),
.reset_n(reset_n)
);
這樣也會是一樣的效果~~
而不管是哪一種引用法引用時都要給模組命名,像這邊就是命名為 "U0"
對於一個較大的電路來說,可能接腳會非常的多,此時如果以 in order 的方式來連接,這個時候就算邊看邊打也相當不方便且容易犯錯,所以通常我們會以 by name 的方法來連接來避免不必要的失誤。