biaogreat 发表于 2011-11-10 09:17:39

verilog函数、任务调用

verlog中的函数或者任务能否像C语言中的函数一样包含以下头文件调用???

asma 发表于 2011-11-10 09:44:54

你调用一次,就生成个硬件。

biaogreat 发表于 2011-11-10 11:42:07

晕,编程不能模块化

Nuker 发表于 2011-11-10 13:07:34

那你就用VHDL吧,VHDL每次调用子模块都要先申明COMPONENT的,而LIBRARY就相当于头文件。
Verilog用`define和`include也可以做到的。

biaogreat 发表于 2011-11-11 07:56:39

是不是调用一次,就生成个硬件???能否个我个例子,谢谢!!!

Nuker 发表于 2011-11-11 11:59:00

// 模块名称: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

biaogreat 发表于 2011-11-11 16:17:58

能否用包含文件呢? 谢谢指点!!

Nuker 发表于 2011-11-12 01:26:53

比方说,将

// 模块名称: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

Tomas_Yung 发表于 2011-11-12 10:11:17

原来可以这样玩,学习了!

89712568 发表于 2011-12-8 17:36:03

这样用写程序条理性会好很多哦。学习了

wjf0509 发表于 2011-12-13 18:00:38

在同一个工程中不用包含好像也行

daixizheng 发表于 2011-12-13 18:09:44

其实 只要在同一个工程下。。。你不用包含直接调用的话。。

也可以。。。!!

jlhgold 发表于 2011-12-13 18:37:20

看看!
页: [1]
查看完整版本: verilog函数、任务调用