HDLBits练习汇总-09-组合逻辑设计测试--卡诺图

简介: HDLBits练习汇总-09-组合逻辑设计测试--卡诺图

3变量卡诺图


实现下面卡诺图所描述的电路。

image.png

Module Declaration

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

答案:

module top_module(
    input a,
    input b,
    input c,
    output out  ); 
    assign out = ((!a & !b & !c )==1)? 0 : 1;
endmodule

4变量卡诺图1


实现下面卡诺图所描述的电路。

image.png

Module Declaration

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

答案:

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)|(!a&!b&c&!d)|(!a&b&c&!d);
    //和之积
    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);
endmodule

4变量卡诺图2


实现下面卡诺图所描述的电路。

image.png

Module Declaration

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

答案:

在实现之前,可以对卡诺图进行简化。将d的值带入,可以实现去除掉变量d变成全部是常数的卡诺图。然后化简可知

out = a |(!b&c);(积之和式子)

out = (a|!b) & (a|c);(和之积式子)

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  );
    //积之和式子
    assign out = a |(!b&c);
    //和之积式子
  //assign out = (a|!b) & (a|c);
endmodule

4变量卡诺图3


实现下面卡诺图所描述的电路。

image.png

Module Declaration

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

答案:

由卡诺图可以看出,都是在ab异或cd同或和cd异或ab同或进行取值。

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

SOP和POS


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

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

Module Declaration

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

答案:

画出卡诺图进行化简,

image.png

此时out_sop = c&d + !a&!b&c;

out_pos = c & (!b|d) & (!a|d);

所以编写代码实现功能:

module top_module (
    input a,
    input b,
    input c,
    input d,
    output out_sop,
    output out_pos
); 
    //SOP
    assign out_sop =  (c&d) | (!a&!b&c);
  //POS
    assign out_pos = c & (!b|d) & (!a|d);
endmodule

卡诺图练习1


考虑下面卡诺图中显示的函数f

image.png

实现这个功能。d是不关心的,这意味着您可以选择输出任何方便的值。

Module Declaration

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

答案:

画出卡诺图进行化简,

image.png

写出表达式进行编写代码:

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

卡诺图练习2


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

image.png

Module Declaration

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

答案:

画出卡诺图进行化简,

image.png

写出表达式进行编写代码:

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

使用数据选择器进行实现卡诺图


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

您只实现了标记为top_module的部分,以便整个电路(包括 4 对 1 多路复用器)实现 K-map。

image.png

答案:

module top_module (
    input c,
    input d,
    output [3:0] mux_in
); 
    always@(*)begin
        if({c,d}== 0)
            mux_in = 4'b0100;
        else if({c,d}== 1)
            mux_in = 4'b0001;
        else if({c,d}== 2)
            mux_in = 4'b0101;
        else
            mux_in = 4'b1001;
    end
endmodule
目录
相关文章
|
5天前
|
存储 缓存 网络协议
dpdk课程学习之练习笔记二(arp, udp协议api测试)
dpdk课程学习之练习笔记二(arp, udp协议api测试)
75 0
|
5天前
|
缓存 监控 网络协议
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk课程学习之练习笔记五(kni理解及测试)
91 0
|
11月前
|
JavaScript 前端开发 BI
JavaScript —— JSchallenger Objects 对象练习(测试一下你的 JS 对象基础)【专题三】
JavaScript —— JSchallenger Objects 对象练习(测试一下你的 JS 对象基础)【专题三】
|
11月前
|
JavaScript 前端开发 网络架构
JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】
JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】
|
11月前
|
JavaScript 前端开发 Java
JavaScript —— JSchallenger Basics 基础练习(测试一下你的 JS 基础)【专题一】
JavaScript —— JSchallenger Basics 基础练习(测试一下你的 JS 基础)【专题一】
HDLBits练习汇总-11-时序逻辑设计测试--计数器
HDLBits练习汇总-11-时序逻辑设计测试--计数器
175 0
HDLBits练习汇总-11-时序逻辑设计测试--计数器
|
异构计算
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器(二)
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器
145 0
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器(二)
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器(一)
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器
79 0
HDLBits练习汇总-10-时序逻辑设计测试--锁存器和触发器(一)
|
5天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
5天前
|
测试技术
如何管理测试用例?测试用例有什么管理工具?YesDev
该文档介绍了测试用例和测试用例库的管理。测试用例是描述软件测试方案的详细步骤,包括测试目标、环境、输入、步骤和预期结果。测试用例库用于组织和管理这些用例,强调简洁性、完整性和可维护性。管理者可以创建、删除、重命名用例库,搜索和管理用例,以及通过层级目录结构来组织用例。此外,还支持通过Excel导入和导出测试用例,以及使用脑图查看用例关系。后台管理允许配置全局别名,如用例状态、优先级和执行结果。

热门文章

最新文章