HDLBits学习------Problem 60~64

参考链接:HDLBits导学


Problem 60 : 2-to-1 multiplexer (Mux2to1)

        问题:本题中需要实现一个 2 选 1 选择器,sel 信号作为选择信号,当 sel = 1 时选择 b,反之选择 a

        解决:

module top_module( 
    input a, b, sel,
    output out ); 
	
assign out = sel ?  b : a;

endmodule

Problem 61 : 2-to-1 bus multiplexer (Mux2to1v)

        问题:本题中需要实现一个 2 选 1 选择器,sel 信号作为选择信号,当 sel = 1 时选择 b,反之选择 a

        解决:

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );
	
assign out = sel ? b : a;

endmodule

Problem 62 : 9-to-1 multiplexer (Mux9to1v)

        问题:本题中需要实现一个 9 选 1 选择器,sel 信号作为选择信号,当 sel = 0 时选择 a,sel = 1 时选择 b,以此类推。sel 信号位宽为 4bit,当 sel 大于 8 时,输出 16'hffff

        解决:

module top_module( 
    input [15:0] a, b, c, d, e, f, g, h, i,
    input [3:0] sel,
    output [15:0] out );
	
always @(*) begin
	case(sel)
		4'd0:out = a;
		4'd1:out = b;
		4'd2:out = c;
		4'd3:out = d;
		4'd4:out = e;
		4'd5:out = f;
		4'd6:out = g;
		4'd7:out = h;
		4'd8:out = i;
		default:out = 16'hffff;
	endcase
end

endmodule

Problem 63 : 256-to-1 multiplexer (Mux256to1)       

        问题:本题中需要实现一个 256 选 1 选择器,sel 信号作为选择信号,当 sel = 0 时选择 in[0],sel = 1 时选择 in[1],以此类推

        解决:

module top_module( 
    input [255:0] in,
    input [7:0] sel,
    output out );

assign out = in[sel];

//参考大佬写法
//assign out = in >> sel;

endmodule

Problem 64 : 256-to-1 4-bit multiplexer (Mux256to1v)

        问题:本题中需要实现一个 256 选 1 选择器,sel 信号作为选择信号,当 sel = 0 时选择 in[3:0],sel = 1 时选择 in[7:4],以此类推。同上一题的区别在于,位宽从 1 位变到了 4 位

        解决:

module top_module( 
    input [1023:0] in,
    input [7:0] sel,
    output [3:0] out );

    //参考大佬写法
    assign out = {in[sel*4+3], in[sel*4+2], in[sel*4+1], in[sel*4+0]};

    //用上一题的写法会报错
    //assign out = in[(sel+1)*4:sel*4];
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值