/*用模块实现
module top_module (input x, input y, output z);
wire z1;
wire z2;
wire z3;
wire z4;
IA IA1(
.x(x),
.y(y),
.z(z1)
);
IB IB1(
.x(x),
.y(y),
.z(z2)
);
IA IA2(
.x(x),
.y(y),
.z(z3)
);
IB IB2(
.x(x),
.y(y),
.z(z4)
);
assign z = (z1 || z2) ^ (z3 && z4);
endmodule
//上一节的A算式模块
module IA (
input x,
input y,
output z
);
assign z = (x ^ y) & x;
endmodule
//上一节的B算式模块
module IB (
input x,
input y,
output z
);
assign z = (x == y);
endmodule
*/
//以下用任务实现
module top_module (input x, input y, output z);
wire z1;
wire z2;
wire z3;
wire z4;
task IA; //任务要用分号
input x,y;
output z;
z = (x ^ y) & x; //任务内不用assign语句
endtask
task IB; //任务要用分号
input x;
input y;
output z;
z = (x == y);
endtask
always@ (*)
begin
IA(x,y,z1);//调用任务后将值赋给z1
IB(x,y,z2);
IA(x,y,z3);
IB(x,y,z4);
end
assign z = (z1 || z2) ^ (z3 && z4);
endmodule
Mt2015 q4
于 2022-04-07 23:08:55 首次发布