题解 | #使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器#

使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

http://www.nowcoder.com/practice/dcfa838e43de4744bc976abee96dc566

4-16对于3-8逻辑是:3-8有一块有输入,4-16就有输入(GS为逻辑或),3-8两块都没输入,4-16才没输入(EO为逻辑与),Y的选择按照优先编码器的规则,先判断高位,再判断低位。

`timescale 1ns/1ns
module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);

assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];

assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
         
endmodule

module encoder_164(
   input      [15:0]      A   ,
   input                  EI  ,
   
   output wire [3:0]      L   ,
   output wire            GS  ,
   output wire            EO    
);
    wire [2 : 0] Y0;
    wire [2 : 0] Y1;
    wire GS0;
    wire GS1;
    wire EO0;
    wire EO1;
    
    encoder_83 en0(
        .I(A[7 : 0]),
        .EI(EI),
        .Y(Y0),
        .GS(GS0),
        .EO(EO0)
    );
    encoder_83 en1(
        .I(A[15 : 8]),
        .EI(EI),
        .Y(Y1),
        .GS(GS1),
        .EO(EO1)
    );
    
    assign L = GS1 ? {1'b1, Y1} : GS0 ? {1'b0, Y0} : 4'b0000;
    assign GS = GS1 | GS0;
    assign EO = EO0 & EO1;
    
    
endmodule
全部评论
帅的
点赞 回复 分享
发布于 04-30 21:44 辽宁

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
评论
12
收藏
分享
牛客网
牛客企业服务