2016-08-24 5 views
0

インターネット上で、Verilogでmux 4:1についていくつかの例を見てきました。私は何かをしようとしましたが、出力はexpetedではありません。Verilogでmux 4:1を実行していますが、出力がexpetedではありません

enter image description here

私の質問は、私がすべきチャンスが両方にあります。これはソースです:

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

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

[email protected](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 

、これはテストベンチです:

module mux41_tb; 

reg at,bt,ct,dt; 
reg [1:0] selectt; 
wire zt; 

mux41 test(.a(at),.b(bt),.c(ct),.d(dt),.select(selectt), 
      .z(zt)); 

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

    selectt =2'b00; 
    #5 
    selectt =2'b01; 
    #5 
    selectt =2'b10; 
    #5 
    selectt =2'b11; 
    #5; 

end 

endmodule 

が、出力は以下のとおりです。コード(ソースとテストベンチ)。

Sincerylly、 NIN。

+0

dtを忘れてしまったので、モニターラインの

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

をだあなたは、物理的な使用していますボードを切り替えるマルチプレクサを選択しますか?その場合は、スイッチのバウンスによる不具合が発生する可能性があります。このような場合は、アナログまたはデジタルのデバウザーを追加する必要があります。 – Russell

+0

こんにちはrussell ..すべてではない..私はちょうどVerilogで単純なマルチプレクサIC(マルチプレクサ4:1)をシミュレートしようとしています。 – NIN

+0

FYI、 'always'ブロック内で' assign'を使うべきではありません。 – Greg

答えて

1

あなたが取得している

= XB = XC = X

あなたは、BまたはCに任意の値を与えたことはありませんので。あなたは、例えばazを割り当てるが、aat値がないため、値がないので、あなただけのxを取得しています。

D = 0111 ...

用として、それはあなたが

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

ありがとうございます。Downvote。私は、テストベンチを改善しましたし、今、これが新しい出力されます(私のポストの更新を見て) – NIN

+0

恐ろしい、今 '' at'、 'bt'、' ct'、 'dt'を与え、そしてselectt'は –

+0

Downvote値しかし、私は{selectt}に値を与えると仮定します:selectt = 2'b00; 2'b01を選択するなど。 – NIN

関連する問題