verilog函数、任务调用
verlog中的函数或者任务能否像C语言中的函数一样包含以下头文件调用??? 你调用一次,就生成个硬件。 晕,编程不能模块化 那你就用VHDL吧,VHDL每次调用子模块都要先申明COMPONENT的,而LIBRARY就相当于头文件。Verilog用`define和`include也可以做到的。 是不是调用一次,就生成个硬件???能否个我个例子,谢谢!!! // 模块名称:INV
// 模块功能:反相器
module INV (
input i,
output o
);
assign o = !i;
endmodule
// 模块名称:TOP
// 模块功能:反相器调用
// 结构:
// INV INV INV INV INV
// |\w1|\w2|\w3|\w4|\
// <in>--i o-----i o-----i o-----i o-----i o--<out>
// |/ |/ |/ |/ |/
// U1 U2 U3 U4 U5
module TOP (
input in,
output out
);
wire w1,w2,w3,w4;
// 调用INV,名称为U1
INV U1 ( .i(in), .o(w1) );
// 调用INV,名称为U2
INV U2 ( .i(w1), .o(w2) );
// 调用INV,名称为U3
INV U3 ( .i(w2), .o(w3) );
// 调用INV,名称为U4
INV U4 ( .i(w3), .o(w4) );
// 调用INV,名称为U5
INV U5 ( .i(w4), .o(out) );
endmodule 能否用包含文件呢? 谢谢指点!! 比方说,将
// 模块名称:INV
// 模块功能:反相器
module INV (
input i,
output o
);
assign o = !i;
endmodule
单独存成一个文件INV.v,然后在TOP.v中include进来:
// 模块名称:TOP
// 模块功能:反相器调用
// 结构:
// INV INV INV INV INV
// |\w1|\w2|\w3|\w4|\
// <in>--i o-----i o-----i o-----i o-----i o--<out>
// |/ |/ |/ |/ |/
// U1 U2 U3 U4 U5
`include "INV.v"
//
module TOP (
input in,
output out
);
wire w1,w2,w3,w4;
// 调用INV,名称为U1
INV U1 ( .i(in), .o(w1) );
// 调用INV,名称为U2
INV U2 ( .i(w1), .o(w2) );
// 调用INV,名称为U3
INV U3 ( .i(w2), .o(w3) );
// 调用INV,名称为U4
INV U4 ( .i(w3), .o(w4) );
// 调用INV,名称为U5
INV U5 ( .i(w4), .o(out) );
endmodule 原来可以这样玩,学习了! 这样用写程序条理性会好很多哦。学习了 在同一个工程中不用包含好像也行 其实 只要在同一个工程下。。。你不用包含直接调用的话。。
也可以。。。!! 看看!
页:
[1]