牛客网刷题记录(4)组合逻辑

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

②请使用2片该优先编码器Ⅰ及必要的逻辑电路实现16线-4线优先编码器。优先编码器Ⅰ的真值表和代码已给出。

可将优先编码器Ⅰ的代码添加到本题答案中,并例化。

    wire [2:0] y1, y2;
    wire gs1, gs2, eo;
    encoder_83 encode1(
        .I   (A[7:0]),
        .EI  (eo),
   
        .Y   (y1),
        .GS  (gs1),
        .EO  (EO)
     );
    encoder_83 encode2(
        .I   (A[15:8]),
        .EI  (EI),
   
        .Y   (y2),
        .GS  (gs2),
        .EO  (eo)
     );
    assign L[3] = gs2;
    assign L[2] = y2[2] | y1[2];
    assign L[1] = y2[1] | y1[1];
    assign L[0] = y2[0] | y1[0];
    
    assign GS = gs1 | gs2;//参考电路图

VL17 用3-8译码器实现全减器:请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。

     wire [7:0] yo;
   decoder_38 decode(
       . E      (1'b1),
       . A0     (Ci),
       . A1     (B),
       . A2     (A),
   
       .Y0n    (yo[0]),  
       .Y1n    (yo[1]),
       .Y2n    (yo[2]),
       .Y3n    (yo[3]),
       .Y4n    (yo[4]),
       .Y5n    (yo[5]),
       .Y6n    (yo[6]),
       .Y7n    (yo[7])
   );
    assign D = ~(yo[1] & yo[2] & yo[4] & yo[7]);
    assign Co = ~(yo[1] & yo[2] & yo[3] & yo[7]);

VL18 实现3-8译码器①:74HC138译码器

    assign Y0_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b000)?0:1);
    assign Y1_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b001)?0:1);
    assign Y2_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b010)?0:1);
    assign Y3_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b011)?0:1);
    assign Y4_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b100)?0:1);
    assign Y5_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b101)?0:1);
    assign Y6_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b110)?0:1);
    assign Y7_n = (E1_n | E2_n | ~E3)? 1 : (({A2, A1, A0}==3'b111)?0:1);

    assign Y0_n = ~((~E1_n & ~E2_n & E3) & ~A2 & ~A1 & ~A0);
    assign Y1_n = ~((~E1_n & ~E2_n & E3) & ~A2 & ~A1 &  A0);
    assign Y2_n = ~((~E1_n & ~E2_n & E3) & ~A2 &  A1 & ~A0);
    assign Y3_n = ~((~E1_n & ~E2_n & E3) & ~A2 &  A1 &  A0);
    assign Y4_n = ~((~E1_n & ~E2_n & E3) &  A2 & ~A1 & ~A0);
    assign Y5_n = ~((~E1_n & ~E2_n & E3) &  A2 & ~A1 &  A0);
    assign Y6_n = ~((~E1_n & ~E2_n & E3) &  A2 &  A1 & ~A0);
    assign Y7_n = ~((~E1_n & ~E2_n & E3) &  A2 &  A1 &  A0);

VL19 使用3-8译码器①实现逻辑函数:②请使用3-8译码器①和必要的逻辑门实现函数L=(~A)·C+A·B

    wire [7:0] y;
   decoder_38 decode(
       .E1_n   (1'b0),
       .E2_n   (1'b0),
       .E3     (1'b1),
       .A0     (C),
       .A1     (B),
       .A2     (A),
   
       .Y0_n   (y[0]),  
       .Y1_n   (y[1]),
       .Y2_n   (y[2]),
       .Y3_n   (y[3]),
       .Y4_n   (y[4]),
       .Y5_n   (y[5]),
       .Y6_n   (y[6]),
       .Y7_n   (y[7])
);
    assign L = ~(y[1]&y[3]&y[6]&y[7]);

VL20 数据选择器实现逻辑电路:

请使用此4选1数据选择器和必要的逻辑门实现下列表达式。

L=A∙B+A∙~C+B∙C

     data_sel exp(
        .S0     (B),
        .S1     (A),
        .D0     (0),
        .D1     (C),
        .D2     (~C),
        .D3     (1),
        
        .Y      (L)
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值