HDLBits学习笔记(61~65)

HDLBits学习笔记(61~65)

学习阶段:有问题发873727286@qq.com大家一起讨论。

题目61 Mux2to1

题干:Create a one-bit wide, 2-to-1 multiplexer. When sel=0, choose a. When sel=1, choose b.

题目大意:构建一个2选1输出选择器,当信号sel=0时,选择a输出,信号sel=1时,选择b输出。

题目分析:可以使用连续赋值语句和三目运算符。

答案:

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

题目62 Mux2to1v

题干:Create a 100-bit wide, 2-to-1 multiplexer. When sel=0, choose a. When sel=1, choose b.

题目大意:构建一个2选1输出选择器,当信号sel=0时,选择a输出,信号sel=1时,选择b输出,与上题相比,输入变成了100位。

题目分析:可以使用连续赋值语句和三目运算符。

答案:

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

题目63 Mux9to1v

题干:Create a 16-bit wide, 9-to-1 multiplexer. sel=0 chooses a, sel=1 chooses b, etc. For the unused cases (sel=9 to 15), set all output bits to ‘1’.

题目大意:构建一个9选1输出选择器,其对应关系为0->a,1->b,2->c,……,7->h,8->i,当sel为9~15时输出1。

题目分析:可以使用case语句。case是行为级建模要用在过程赋值语句中。

答案:

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'b1111_1111_1111_1111;
        endcase
    end
endmodule

题目64 Mux256to1

题干:Create a 1-bit wide, 256-to-1 multiplexer. The 256 inputs are all packed into a single 256-bit input vector. sel=0 should select in[0], sel=1 selects bits in[1], sel=2 selects bits in[2], etc.

题目大意:构建一个256选1数据选择器,当sel为0时输出in[0],sel为1时输出in[1],sel为2时输出in[2]。

题目分析:用输入sel来选择in的输出。

答案:

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

题目65 Mux256to1v

题干:Create a 4-bit wide, 256-to-1 multiplexer. The 256 4-bit inputs are all packed into a single 1024-bit input vector. sel=0 should select bits in[3:0], sel=1 selects bits in[7:4], sel=2 selects bits in[11:8], etc.

题目大意:构建一个四位宽256选1数据选择器,当sel为0时输出in[3:0],sel为1时输出in[7:4],sel为2时输出in[11:8]。

题目分析:用输入sel的计算结果来选择in的输出。

答案:

module top_module( 
    input [1023:0] in,
    input [7:0] sel,
    output [3:0] out );
    assign out = in[sel*4+:4];//从sel*4开始,选择比特序号大于sel*4的4位bit,减号同理。
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值