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

优先编码器电路①

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

全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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