HDLbits-趣题记录(1)

A priority encoder is a combinational circuit that, when given an input bit vector, outputs the position of the first 1 bit in the vector. For example, a 8-bit priority encoder given the input 8'b10010000 would output 3'd4, because bit[4] is first bit that is high.

Build a 4-bit priority encoder. For this problem, if none of the input bits are high (i.e., input is zero), output zero. Note that a 4-bit number has 16 possible combinations.

个人答案:(验证正确)

module top_module (
    input [3:0] in,
    output reg [1:0] pos  );
    
    always@(*) begin
        if(in == 4'b0)
            pos = 2'b0;
        else if(in == 4'b1000)
            pos = 2'd3;
        else if((in == 4'b100)||(in == 4'b1100))
            pos = 2'd2;
        else if (in == 4'b10 || in == 4'b110 || in == 4'b1010 || in == 4'b1110)
            pos = 2'd1;
        else 
            pos = 2'd0;
    end

endmodule

更优解:

always @(*) begin
    casez (in[3:0])
        4'bzzz1: out = 0;   // in[3:1] can be anything
        4'bzz1z: out = 1;
        4'bz1zz: out = 2;
        4'b1zzz: out = 3;
        default: out = 0;
    endcase
end

 此题可以延申到:用组合逻辑进行序列检查(待思考)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值