verilog 中的寄存器可以表示为数字吗?
Can a register in verilog be reprenented as a number?
我是verilog的新手,谁能告诉我如何写代码来满足下面的要求?
• 设计一个三输入一输出的组合电路。
• 当输入的二进制值大于 2 时,输出为 1。
• 否则输出为 0。
这是您想要的模块示例,我们假设 in1 是最低有效位,in3 是最高有效位
module question (
in1,
in2,
in3,
out
);
input in1, in2, in3;
output out;
wire[2:0] concat;
assign concat = {in3, in2, in1};
assign out = (concat > 3'b010) ? 1'b1 : 1'b0;
endmodule
这就是它的测试平台
module tb ();
reg in1, in2, in3;
wire out;
question DUT (.in1(in1), .in2(in2), .in3(in3), .out(out));
initial begin
in3 = 0 ; in2 = 0; in1 = 0; #1
in3 = 0 ; in2 = 0; in1 = 1; #1
in3 = 0 ; in2 = 1; in1 = 0; #1
in3 = 0 ; in2 = 1; in1 = 1; #1
in3 = 1 ; in2 = 0; in1 = 0; #1
in3 = 1 ; in2 = 0; in1 = 1; #1
in3 = 1 ; in2 = 1; in1 = 0; #1
in3 = 1 ; in2 = 1; in1 = 1; #1
end
endmodule
我是verilog的新手,谁能告诉我如何写代码来满足下面的要求?
• 设计一个三输入一输出的组合电路。 • 当输入的二进制值大于 2 时,输出为 1。 • 否则输出为 0。
这是您想要的模块示例,我们假设 in1 是最低有效位,in3 是最高有效位
module question (
in1,
in2,
in3,
out
);
input in1, in2, in3;
output out;
wire[2:0] concat;
assign concat = {in3, in2, in1};
assign out = (concat > 3'b010) ? 1'b1 : 1'b0;
endmodule
这就是它的测试平台
module tb ();
reg in1, in2, in3;
wire out;
question DUT (.in1(in1), .in2(in2), .in3(in3), .out(out));
initial begin
in3 = 0 ; in2 = 0; in1 = 0; #1
in3 = 0 ; in2 = 0; in1 = 1; #1
in3 = 0 ; in2 = 1; in1 = 0; #1
in3 = 0 ; in2 = 1; in1 = 1; #1
in3 = 1 ; in2 = 0; in1 = 0; #1
in3 = 1 ; in2 = 0; in1 = 1; #1
in3 = 1 ; in2 = 1; in1 = 0; #1
in3 = 1 ; in2 = 1; in1 = 1; #1
end
endmodule