HDLBits从零开始——第71题到80题答案

目录

第71题:100-bit binary adder

第72题:4-digit BCD adder

第73题:3-variable

第74题:4-variable

第75题:4-variable

第76题:4-variable

第77题:Minimum SOP and POS

第78题:Karnaugh map

第79题:Karnaugh map

第80题:K-map implemented with a multiplexer


第71题:100-bit binary adder

module top_module
( 
    input   [99:0]  a, b,
    input           cin ,
    output          cout,
    output  [99:0]  sum 
);

assign  {cout,sum} = a + b + cin;

endmodule

第72题:4-digit BCD adder

module top_module 
( 
    input   [15:0]  a, b,
    input           cin ,
    output          cout,
    output  [15:0]  sum 
);

wire    cout_o [3:0];

bcd_fadd bcd_fadd_inst0
(
    .a   (a[3:0]),
    .b   (b[3:0]),
    .cin (cin),
    .cout(cout_o[0]),
    .sum (sum[3:0])
);

generate
    genvar i;
    for(i=4;i<16;i=i+4)
        begin:bcd_fadd4_inst
            bcd_fadd bcd_fadd_insti
            (
                .a   (a[i+:4]),
                .b   (b[i+:4]),
                .cin (cout_o[i/4-1]),
                .cout(cout_o[i/4]),
                .sum (sum[i+:4])
            );
        end
endgenerate

assign  cout = cout_o[3];

endmodule

第73题:3-variable

module top_module
(
    input   a   ,
    input   b   ,
    input   c   ,
    output  out  
); 

assign  out = a | b | c;

endmodule

第74题:4-variable

module top_module
(
    input   a   ,
    input   b   ,
    input   c   ,
    input   d   ,
    output  out  
); 

assign  out = ((~a)&(~d)) | ((~b)&(~c)) | (b&c&d) | (a&c&d);

endmodule

第75题:4-variable

module top_module
(
    input   a   ,
    input   b   ,
    input   c   ,
    input   d   ,
    output  out  
); 

assign  out = a | ((~b)&c);

endmodule

第76题:4-variable

module top_module
(
    input   a   ,
    input   b   ,
    input   c   ,
    input   d   ,
    output  out  
); 

assign  out = ((~a)&b&(~c)&(~d)) | (a&(~b)&(~c)&(~d)) | ((~a)&(~b)&(~c)&d) | (a&b&(~c)&d) | ((~a)&b&c&d) | (a&(~b)&c&d) | ((~a)&(~b)&c&(~d)) | (a&b&c&(~d));

endmodule

第77题:Minimum SOP and POS

module top_module 
(
    input   a       ,
    input   b       ,
    input   c       ,
    input   d       ,
    output  out_sop ,
    output  out_pos
); 

assign  out_sop = ((~a)&(~b)&c) | (c&d);
assign  out_pos = c & ((~a)|d) & ((~b)|d);

endmodule

第78题:Karnaugh map

module top_module 
(
    input   [4:1]   x, 
    output          f 
);

assign  f = x[3]&(~x[1]) | x[4]&x[2] | x[3]&x[4];

endmodule

第79题:Karnaugh map

module top_module 
(
    input   [4:1]   x,
    output          f
); 

assign  f = (~x[1]&x[3]) | (~x[2]&~x[3]&~x[4]) | (x[1]&~x[2]&~x[4]) | (x[2]&x[3]&x[4]);

endmodule

第80题:K-map implemented with a multiplexer

module top_module 
(
    input           c       ,
    input           d       ,
    output  [3:0]   mux_in
); 

assign  mux_in[0] = c ? 1 : (d?1:0);
assign  mux_in[1] = 0;
assign  mux_in[2] = d ? 0 : 1;
assign  mux_in[3] = (c&d) ? 1 :0;

endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值