首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用2x1 mux为8x1 mux编写Verilog代码?

如何使用2x1 mux为8x1 mux编写Verilog代码?
EN

Stack Overflow用户
提问于 2022-08-28 15:37:09
回答 1查看 118关注 0票数 0

我在使用2x1为8x1 mux创建Verilog代码时遇到了困难。我把我的代码放在下面:

设计规范:

代码语言:javascript
复制
    module MUX2to1(in, sel, out);
  input [1:0]in;
  input wire sel;
  output reg out;
  
  always@(*) begin 
    if (sel == 1'b0)
      out = in[0];
    else 
      out = in[1];
  end 
endmodule
 
module MUX4to1(in, sel, out);
  input [3:0]in;
  input [1:0]sel;
  output out
  
  wire [1:0] MUX_outputs;
  
  MUX2to1 M0 (in[1:0], sel[0], MUX_outputs[0]);
  MUX2to1 M1 (in[3:2], sel[0], MUX_outputs[1]);
  MUX2to1 M2 (MUX_outputs, sel[1], out;
endmodule 
              
module mux8to1(in , sel, out);
  input [7:0] in;
    input [2:0] sel;
    output out;

    wire mux[2:0];

  mux4to1 m1 (in[7:4],sel[1:0], MUX_outputs[0]);
  mux4to1   m2 (in[3:0],sel[1:0], MUX_outputs[1]);
    mux2to1 m3 (mux_1,mux_2,sel[2],out);
endmodule

Testbench

代码语言:javascript
复制
module MUX8to1_tb();
  reg [7:0] in;
  reg [1:0] sel;
  
  wire out;
  
  MUX8to1 uut (in, sel, out);
  
  initial begin 
    $dumpfile("dump.vcd");
    $dumpfile(0,in);
    $dumpfile(0,sel);
    $dumpfile(0,out);
    in = 4'b1010;
    sel = 2'b00;
   #100;
    sel = 2'b01;
   #100;
    sel = 2'b10;
    #100;
    sel = 2'b11;
    #100;
  end
endmodule 

我正在使用EDA操场来完成这项任务。如果有人能提供更简单的方法来做这件事,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2022-08-28 16:43:35

如果有人能提供更简单的方法来做这件事,请告诉我。

始终使用最高级别的抽象编写Verilog代码。在创建简单的mux时,不需要子模块。所有的设计模块都可以替换为一个模块:mux8to1

代码语言:javascript
复制
module mux8to1 (
    input [7:0] in,
    input [2:0] sel,
    output out
);
    assign out = in[sel];
endmodule

module MUX8to1_tb();
  reg [7:0] in;
  reg [2:0] sel;
  wire out;
  
  mux8to1 uut (in, sel, out);
  
  initial begin 
    $dumpfile("dump.vcd");
    $dumpvars;
    in = 8'b0000_1010;
    sel = 3'b000;
   #100;
    sel = 3'b001;
   #100;
    sel = 3'b010;
    #100;
    sel = 3'b011;
    #100;
  end
endmodule 

我还对testbench做了一些修改。与其多次调用$dumpfile,不如调用$dumpvarssel应该是一个3位的信号来匹配mux输入.

下面是在EDAPlaygraound上运行的完整代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73520024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档