2017-11-14 1 views
-2

このコードは問題があります。問題はNANDとANDゲートの7ビット出力ですが、各ビットごとに別々のゲートを作ることなく単純化する方法はわかりません。私はまた、anode_1_7が何であるか、またはbufのステートメントが何であるか分かりません。私はちょうどそれらを含めるように言われました。マルチビットロジックゲート

module seven_segment_top(sw, btnc, btnl, btnr, segment, anode, anode_1_7); 
    input [3:0] sw; 
    input btnc, btnl, btnr, anode_1_7; 
    output [7:0] segment, anode; 
    wire lnot; 

    seven_segment S0(sw[3:0], segment[6:0]); 
    not(segment[7], btnc); 

    nor(anode[0], btnl, btnr); 
    nand(anode[7:1], btnl, 1'b1); 
    not(lnot, btnl); 
    and(anode[7:1], btnr, lnot); 

    buf(anode[1],anode_1_7); 
    buf(anode[2],anode_1_7); 
    buf(anode[3],anode_1_7); 
    buf(anode[4],anode_1_7); 
    buf(anode[5],anode_1_7); 
    buf(anode[6],anode_1_7); 
    buf(anode[7],anode_1_7); 
endmodule 
+0

[MCVE]含める - **何**はあなたのコードが間違っていますか?また、Verilogは0でインデックス付けされています。おそらく '1-7'ではなく' 0-6 'を使用しているはずです。 – hnefatl

+0

この割り当てに行動Verilogを使用することは禁じられていますか?それ以外の場合は、ゲートを明示的に定義するのではなく、 'assign'ステートメントを使用する必要があります。 – duskwuff

+0

ゲートインスタンスの配列を作成する構文は、フリーIEEE Std 1800-2012、28.3.4プリミティブインスタンス識別子に記述されています。しかし、あなたが達成しようとしていることを話すことは不可能です。 – toolic

答えて

0

つのオプション:

  1. 配列されたモジュールのインスタンス。一般的には使用されていませんが、IEEE1364-1995の場合は一部です。このアプローチは、単純な反復で機能します。

    nand nd[7:1] (anode[7:1], btnl, 1'b1); 
    
  2. ループを生成します。 IEEE1364-2001に追加され、一般的に使用されます。このアプローチははるかに柔軟性があり、より洗練されたコンパイル/エラボレーションコードの展開/選択に使用できます。

    genvar gidx; 
    generate 
        for (gidx=1; gidx<8; gidx=gidx+1) begin : assign_anode 
        nand(anode[gidx], btnl, 1'b1); 
        end 
    endgenerate