8位宽,2对1多路复用器verilog模块

8位宽,2对1多路复用器verilog模块,verilog,system-verilog,Verilog,System Verilog,我很难理解这个问题。我应该使用verilog为8位宽的2对1多路复用器创建一个模块 问题是: 编写一个verilog模块,使用8条赋值语句描述电路。使用DE2板上的SW[17]作为s输入,开关[7:0]作为X输入,开关[15:8]作为Y输入。将SW开关连接至红灯LED,并将M输出至绿灯LED[7:0] 我的代码: Module example(M, X, Y, S) input[15:0] SW; input SW[17]; output [7:0] LEDR;

我很难理解这个问题。我应该使用verilog为8位宽的2对1多路复用器创建一个模块

问题是:

编写一个verilog模块,使用8条赋值语句描述电路。使用DE2板上的SW[17]作为s输入,开关[7:0]作为X输入,开关[15:8]作为Y输入。将SW开关连接至红灯LED,并将M输出至绿灯LED[7:0]

我的代码:

Module example(M, X, Y, S)

    input[15:0] SW;
    input SW[17];

    output [7:0] LEDR;
    output [7:0] LEDG;
    output [7:0] M;

    wire [7:0] X = SW[7:0];
    wire [7:0] Y = SW[15:8];
    wire S = SW[17]

    assign M[0] = X[0] & ~S | Y[8] & S;
    assign M[1] = X[1] & ~S | Y[9] & S;
    assign M[2] = X[2] & ~S | Y[10] & S;
    assign M[3] = X[3] & ~S | Y[11] & S;
    assign M[4] = X[4] & ~S | Y[12] & S;
    assign M[5] = X[5] & ~S | Y[13] & S;
    assign M[6] = X[6] & ~S | Y[14] & S;
    assign M[7] = X[7] & ~S | Y[15] & S;

Endmodule

我不明白我应该如何将m分配给绿色LEDG[7:0],因为我已经将每个m分配给了那些条件语句!有人知道如何解决这个问题吗?

虽然有多种方法可以做到这一点,但我建议制作一个包装模块,其中包含板I/o作为输入和输出,并在其中实例化MUX:

module top(input [17:0]  SW,
           output [15:0] LEDR,
           output [7:0]  LEDG);

  example ex(.M(LEDG), .s(SW[17]), .X(SW[7:0]), .Y(SW[15:8]));

  assign LEDR[7:0] = X;
  assign LEDR[15:8] = Y;

endmodule

[insert your mux module minus the board i/o here]

如果无法使用上述解决方案,可以在QuartusII中查找如何使用Pin Planner(我假设您在提示符中使用的是DE2引用)。

NB:
module
/
endmodule
以小写字母开头。