HDLBits刷题Day15(Karnaugh Map to Circuit)

3.1.4Karnaugh Map to Circuit
3.1.4.1 3-variable
问题陈述:

实现下面卡诺图描述的电路。
在这里插入图片描述
在编码之前尝试简化 k-map。尝试和积和积和形式。我们无法检查您是否有 k-map 的最佳简化。但是我们可以检查你的归约是否等价,我们可以检查你是否可以将 k-map 转换为电路。

请添加图片描述

卡诺图化简如下:
F=a+b+c
Verilog代码:

module top_module(
    input a,
    input b,
    input c,
    output out  ); 
	assign out=a||b||c;
endmodule

3.1.4.2 4-variable
问题陈述:

实现下面卡诺图描述的电路。
在这里插入图片描述

这里是引用

卡诺图化简如下:
F=~b& ~c + ~a& ~d +b& c&d+a&c&d

Verilog代码:

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
	assign out=~b&~c|~a&~d|b&c&d|a&c&d;
endmodule

3.1.4.3 4-variable
问题陈述:

实现下面卡诺图描述的电路。
在这里插入图片描述

在这里插入图片描述

卡诺图化简如下:
out=a+~b &c

Verilog代码:

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
	assign out=a|~b&c;
endmodule

3.1.4.4 4-variable
问题陈述:

实现下面卡诺图描述的电路。
在这里插入图片描述

请添加图片描述

Verilog代码:

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

3.1.4.5 Minimum SOP and POS
问题陈述:

具有四个输入(a、b、c、d)的单输出数字系统在输入上出现 2、7 或 15 时生成逻辑 1,当输入上出现 0、1、4、5、6 、9、10、13 或 14时生成逻辑 0 出现。数字 3、8、11 和 12 的输入条件在此系统中永远不会出现。例如,7 对应于 a、b、c、d 分别设置为 0、1、1、1。

确定最小SOP形式的输出out_sop,以及最小POS形式的输出out_pos。

Verilog代码:

module top_module (
    input a,
    input b,
    input c,
    input d,
    output out_sop,
    output out_pos
); 
	assign out_sop=c&d||~b&c&~a;
    assign out_pos=c&(~a|d)&(~b|~c|d);
endmodule

3.1.4.6 Karnaugh map
问题陈述:

考虑下面卡诺图中所示 的函数f 。
在这里插入图片描述
实现这个功能。d是不关心,这意味着您可以选择输出任何方便的值。

在这里插入图片描述

卡诺图化简如下:
F=~ x[1]&x[3]+x[2]&~x[3]&x[4]

Verilog代码:

module top_module (
    input [4:1] x, 
    output f );
    assign f=~x[1]&x[3]|x[1]&x[2]&x[4];
endmodule

3.1.4.7 Karnaugh map
问题陈述:

考虑下面卡诺图中所示的函数f 。实现这个功能。

(原始考试问题要求简化 SOP 和 POS 形式的函数。)
在这里插入图片描述

这里是引用

橙色圈起来的为一组化简,则卡诺图化简如下:
F= ~x[2]& x[3] + ~x[1] &x[3] + x[2]&x[3]&x[4]
Verilog代码:

module top_module (
    input [4:1] x,
    output f
); 
    assign f=~x[2]&~x[4]|~x[1]&x[3]|x[2]&x[3]&x[4];
endmodule

3.1.4.7 K-map implemented with a multiplexer
问题陈述:

对于下面的卡诺图,给出使用一个 4 对 1 多路复用器和尽可能多的 2 对 1 多路复用器的电路实现,但使用尽可能少。不允许使用任何其他逻辑门,并且必须使用a和b作为多路复用器选择器输入,如下面的 4 对 1 多路复用器所示。

您只实现了标记为top_module的部分,以便整个电路(包括 4 对 1 多路复用器)实现 K-map。
在这里插入图片描述
在这里插入图片描述
(存在仅使用 2 对 1 多路复用器的要求,因为原始考试问题还想测试使用 K-map 的逻辑函数简化以及如何仅使用多路复用器来合成逻辑函数。如果您希望将其视为纯粹的 Verilog 练习,您可以忽略此约束并以您希望的任何方式编写模块。)

Verilog代码:

module top_module (
    input c,
    input d,
    output [3:0] mux_in
); 
    always @(*)
        begin
            mux_in=4'b0000;
            case({c,d})
             2'b00:mux_in=4'b0100;
                2'b01:mux_in=4'b0001;
                2'b10:mux_in=4'b0101;
                2'b11:mux_in=4'b1001;
            endcase
        end
endmodule
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值