题解 | #优先编码器Ⅰ#

优先编码器Ⅰ

https://www.nowcoder.com/practice/a7068b8f4c824d6a9592f691990b21de

`timescale 1ns/1ns

module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);

reg [3:0] Y_reg;
reg       GS_reg;
reg       EO_reg;

assign Y = Y_reg;
assign GS= GS_reg;
assign EO=EO_reg;

always@(I,EI) begin
    if(EI == 1'b0) begin
        Y_reg <= 3'b000;
        GS_reg <= 1'b0;
        EO_reg <= 1'b0;
    end
    else 
    casez(I)
        8'b0000_0000:begin
            Y_reg <= 3'b000;
            GS_reg<= 1'b0;
            EO_reg<= 1'b1;
        end

        8'b1???_????:begin
            Y_reg <= 3'b111;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end  

        8'b01??_????:begin
            Y_reg <= 3'b110;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b001?_????:begin
            Y_reg <= 3'b101;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b0001_????:begin
            Y_reg <= 3'b100;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b0000_1???:begin
            Y_reg <= 3'b011;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b0000_01??:begin
            Y_reg <= 3'b010;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b0000_001?:begin
            Y_reg <= 3'b001;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end

        8'b0000_0001:begin
            Y_reg <= 3'b000;
            GS_reg<= 1'b1;
            EO_reg<= 1'b0;
        end         

    endcase
end

endmodule

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务