function 找第一个1,bitmap

2020-08-07  本文已影响0人  Poisson_Lee

https://github.com/bmartini/verilog-arbiter/blob/master/src/arbiter.v

    // Find First 1 - Start from MSB and count downwards, returns 0 when no
    // bit set
    function [SEL_WIDTH-1:0] ff1 (
        input [NUM_PORTS-1:0] in
    );
        reg     set;
        integer i;

        begin
            set = 1'b0;
            ff1 = 'b0;

            for (i = 0; i < NUM_PORTS; i = i + 1) begin
                if (in[i] & ~set) begin
                    set = 1'b1;
                    ff1 = i[0 +: SEL_WIDTH];
                end
            end
        end
    endfunction

上一篇 下一篇

猜你喜欢

热点阅读