我在verilog上以4:1的形式进行多路复用,但输出并不是经过考验的

时间:2016-08-24 16:53:47

标签: verilog mux

我在互联网上看到一些关于verilog的mux 4:1的例子。我试图做一些事情,但输出不是被开除的。这是来源:

function magic() {
  return [{c: 3}, {d: 4}];
}
var array = [{a:1}, {b:2}].concat(magic()).concat([{e:5}]);
console.log(array);

这是测试平台:

module mux41 (a, b, c, d,select,z);

input a,b,c,d;
input [1:0]select;
output reg z;

always@(select )
begin
case (select)
    2'b00: assign z=a;
    2'b01: assign z=b;
    2'b10: assign z=c;
    2'b11: assign z=d;
endcase
end
endmodule

但输出如下:

enter image description here

我的问题是我在两个代码(源代码和测试平台)中应该有什么机会。

Sincerylly, NIN。

1 个答案:

答案 0 :(得分:1)

你得到了

  

α= XB = XC = X

因为您从未给过a,b或c任何值。例如,您将z分配给a,但a没有值,因为at没有值,所以您只是获取x。

至于

  

d = 0111 ...

这是因为您的监控线

$monitor ("a=%d",at,"b=%b",bt,"c=%b",ct,
                "d=%b","select=%b",selectt,"z=%z",zt);

你忘了dt

$monitor ("a=%d",at,"b=%b",bt,"c=%b",ct,
                "d=%b",dt,"select=%b",selectt,"z=%z",zt);