優先編碼器使用case(1’b1)

偶然發現case的另一用法case(1’b1),這樣的寫法表示case裡的條件有先後之分,可利用此特性編寫優先編碼器,以下為4到2優先編碼器真值表。

i[3]i[2]i[1]i[0]o[1]o[0]
xxx100
xx1001
x10010
100011
4到2優先編碼器真值表

在RTL實現上,case條件中越上面的條件優先權越高(i[0] > i[1] > i[2] > i[3])。

module case1 (
    input [3:0] i,

    output reg [1:0] o
);

always @(*) begin
    case(1'b1)
        i[0]: o = 2'b00;
        i[1]: o = 2'b01;
        i[2]: o = 2'b10;
        i[3]: o = 2'b11;
        default: o = 2'bxx;
    endcase
end

endmodule

模擬如下:

4到2優先編碼器模擬

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *