列表

详情


VL1. 四选一多路器

描述


制作一个四选一的多路选择器,要求输出定义上为线网类型

状态转换:

d0    11
d1    10
d2    01
d3    00


信号示意图:

波形示意图:


输入描述

输入信号   d1,d2,d3,d4 sel
类型 wire



输出描述

输出信号 mux_out
类型  wire

原站题解

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
    reg [1:0] mux_out_tmp;
    always@(*) begin
        case(sel)
            2'b00: mux_out_tmp = d3;
            2'b01: mux_out_tmp = d2;
            2'b10: mux_out_tmp = d1;
            2'b11: mux_out_tmp = d0;
            default: mux_out_tmp = d3;
        endcase
    end
    
    assign mux_out = mux_out_tmp;

//*************code***********//
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
//assign mux_out = (sel == 2'b00) ? d3 :((sel == 2'b01) ? d2 : (sel == 2'b10) ? d1 : d0);
reg [1:0] mux_out_reg;
always @(*)
begin
    case(sel)
        2'b00:mux_out_reg = d3;
        2'b01:mux_out_reg = d2;
        2'b10:mux_out_reg = d1;
        2'b11:mux_out_reg = d0;
        default: mux_out_reg =d0;
    endcase
end 
assign mux_out = mux_out_reg;
//*************code***********//
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//

reg [1:0] mux_out_tmp;
    always@(*) begin
        case(sel)
            2'b00: mux_out_tmp = d3;
            2'b01: mux_out_tmp = d2;
            2'b10: mux_out_tmp = d1;
            2'b11: mux_out_tmp = d0;
            default: mux_out_tmp = d3;
        endcase
    end
     
    assign mux_out = mux_out_tmp;                 

//*************code***********//
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
    reg [1:0]  tmp;
    always @(*) begin
        case(sel)
            2'b00: tmp = d3;
            2'b01: tmp = d2;
            2'b10: tmp = d1;
            default: tmp = d0;
        endcase  
    end
    assign mux_out = tmp;
               
//*************code***********//
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
    reg [1:0] tmp;
    always @(*) begin
        case(sel)
            2'b00: tmp=d3;
            2'b01: tmp=d2;
            2'b10: tmp=d1;
            2'b11: tmp=d0;
            default: tmp=2'b00;
        endcase
    end
    assign mux_out = tmp;

//*************code***********//
endmodule

上一题