题解 | 用3-8译码器实现全减器

用3-8译码器实现全减器

https://www.nowcoder.com/practice/4a8f2e5058554cea9c1cb2ac8bdea0a7

`timescale 1ns/1ns

module decoder_38(
   input             E      ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output reg       Y0n    ,  
   output reg       Y1n    , 
   output reg       Y2n    , 
   output reg       Y3n    , 
   output reg       Y4n    , 
   output reg       Y5n    , 
   output reg       Y6n    , 
   output reg       Y7n    
);

always @(*)begin
   if(!E)begin
      Y0n = 1'b1;
      Y1n = 1'b1;
      Y2n = 1'b1;
      Y3n = 1'b1;
      Y4n = 1'b1;
      Y5n = 1'b1;
      Y6n = 1'b1;
      Y7n = 1'b1;
   end  
   else begin
      case({A2,A1,A0})
         3'b000 : begin
                     Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b001 : begin
                     Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b010 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b011 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b100 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b101 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b110 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
                  end 
         3'b111 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b0;
                  end 
         default: begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end
      endcase  
   end 
end    
     
endmodule

module decoder1(
   input             A     ,
   input             B     ,
   input             Ci    ,
   
   output wire       D     ,
   output wire       Co         
);

   wire     u1_E  ;
   wire     u1_A0 ;
   wire     u1_A1 ;
   wire     u1_A2 ;
   wire     u1_Y0n;  
   wire     u1_Y1n; 
   wire     u1_Y2n; 
   wire     u1_Y3n; 
   wire     u1_Y4n; 
   wire     u1_Y5n; 
   wire     u1_Y6n; 
   wire     u1_Y7n;


    assign u1_E =  1 ;
    assign u1_A0 = Ci;
    assign u1_A1 = B ;
    assign u1_A2 = A ;
// 考察最大项
// D,Co 
// 000->0,0;  0
// 001->1,1;  1
// 010->1,1;  2
// 011->0,1;  3
// 100->1,0;  4
// 101->0,0;  5
// 110->0,0;  6
// 111->1,1;  7
    assign D  = u1_Y0n&u1_Y3n&u1_Y5n&u1_Y6n;
    assign Co = u1_Y0n&u1_Y4n&u1_Y5n&u1_Y6n;  



decoder_38 u1_decoder_38(
   .E   (u1_E    ),
   .A0  (u1_A0   ),
   .A1  (u1_A1   ),
   .A2  (u1_A2   ),
   .Y0n (u1_Y0n  ),  
   .Y1n (u1_Y1n  ), 
   .Y2n (u1_Y2n  ), 
   .Y3n (u1_Y3n  ), 
   .Y4n (u1_Y4n  ), 
   .Y5n (u1_Y5n  ), 
   .Y6n (u1_Y6n  ), 
   .Y7n (u1_Y7n  ) 
);



endmodule

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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