题解 | #优先编码器电路①#

优先编码器电路①

https://www.nowcoder.com/practice/0594ed5303ad48a19aed90bc48839d00

`timescale 1ns/1ns

module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n   
);
//9线-4线优先编码器 注意真值表的位置
    /*
    always @(*) begin
        if(I_n[8]==0) begin
            Y_n <= 4'b0110;
        end
        else if(I_n[7]==0) begin
            Y_n <= 4'b0111;
        end
        else if(I_n[6]==0) begin
            Y_n <= 4'b1000;
        end
        else if(I_n[5]==0) begin
            Y_n <= 4'b1001;
        end
        else if(I_n[4]==0) begin
            Y_n <= 4'b1010;
        end
        else if(I_n[3]==0) begin
            Y_n <= 4'b1011;
        end
        else if(I_n[2]==0) begin
            Y_n <= 4'b1100;
        end
        else if(I_n[1]==0) begin
            Y_n <= 4'b1101;
        end
        else if(I_n[0]==0) begin
            Y_n <= 4'b1110;
        end
        else begin
            Y_n <= 4'b1111;
        end
    end  
    */

    //case、casez和casex三者都可以综合。case进行全等匹配;casez忽略?或z对应的位进行匹配;casex忽略x、?或z对应的位进行匹配
    //一般经常使用到的是casez语句,最好少用casex
    //case/casez/casex都是可综合的
    //case的描述,匹配都是从上到下进行的

    
    always @(*) begin
        casez(I_n)
            9'b11111111     : Y_n = 4'b1111;
            9'b0????????    : Y_n = 4'b0110;
            9'b10???????    : Y_n = 4'b0111;
            9'b110??????    : Y_n = 4'b1000;
            9'b1110?????    : Y_n = 4'b1001;
            9'b11110????    : Y_n = 4'b1010;
            9'b111110???    : Y_n = 4'b1011;
            9'b1111110??    : Y_n = 4'b1100;
            9'b11111110?    : Y_n = 4'b1101;
            9'b111111110    : Y_n = 4'b1110;
            default         : Y_n = 4'b1111;
        endcase
    end
    




endmodule

全部评论

相关推荐

点赞 评论 收藏
分享
05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务