HDLBits答案(9)_卡诺图与最简SOP式
卡诺图与最简SOP式
HDLBits链接
真值表
定义
真值表是表征逻辑事件输入和输出之间全部可能状态的表格。以1表示真,0表示假。
从真值表到标准式
- SOP标准式:找出真值表中所有输出为1的表项,按照输入的情况,为1用变量表示,为0则用反变量表示,得出若干乘积项,然后求和。
- POS标准式:找出真值表中所有输出为0的表项,按照输入的情况,为1用反变量表示,为0则用原变量表示,得出若干求和项,然后求积。
举例说明
有如下真值表
A | B | C | D |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
若针对所有F=1的表项,可轻松写出SOP标准式如下:
F=ABC+ABC+ABC+ABC
若针对所有F=0的表项,可轻松写出POS标准式如下:
F=(A+B+C)(A+B+C)(A+B+C)(A+B+C)
从标准SOP式到最简SOP式
标准表达式并非最简表达式,从标准SOP式到最简SOP式为一个标准的逻辑化简的过程。
此时可以引入卡诺图,来寻找最小项的合并规律,从而可以轻易的进行化简工作,此处仅介绍系统化简法。
1、求出函数的SOP标准式
例如,对于函数:
F=ABC+ABC+D+ABCD
可写出其标准的SOP式为
2、求出函数的全部主要项
首先,将最小项按其内部包含1的个数多少进行排列、分组,可得下表:
其次,根据该表,可以发现能合并的两个最小项必定位于相邻的两组,因此从最低组开始,和相邻高位组逐个运算合并,并按乘积项中1的个数进行排列得到的新表如下:(注:1、在合并的同时,需在之前的表中用勾标注出被使用过的最小项;2、如果合并结果与之前某次一样,则无需列出。)
第三,参考前两个步骤,继续对表项合并,直至无法合并为止。之后的合并过程需注意的是“—”的位置要相同,继续合并的结果如下:
第四,上述各表中,凡是没被“√”标记的合并项,就是主要项。对于该例,主要项就是:P0=AB和P1=D。
3、求出必要项、列出化简结果
如果某一个主要项中,至少包含一个其他项不包含的最小项,则它必然是必要项。
得到主要项后再进行验证是否存在等价主要项,并将其删除。
巩固练习
题目描述1:
实现下面卡诺图所描述的电路。
Solution1:
module top_module(input a,input b,input c,output out ); assign out = ~((~a)&(~b)&(~c));
endmodule
题目描述2:
实现下面卡诺图所描述的电路。
Solution2:
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
题目描述3:
实现下面卡诺图所描述的电路。
[David说]:d可以根据化简需求自己制定为0或是1。
Solution3:
module top_module(input a,input b,input c,input d,output out ); assign out = a | (~a&~b&c);endmodule
题目描述4:
实现下面卡诺图所描述的电路。
Solution4:
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
题目描述5:
实现一个有四输入(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。
Solution5:
module top_module (input a,input b,input c,input d,output out_sop,output out_pos
); assign out_sop = c & d | ~a & ~b & c;assign out_pos = ~((~c | ~d) & (a | b | ~c));endmodule
[David说]:这道题是最大项和最小项的问题,我们常用的是最小项,也就是积之和,但是最大项也需要了解一下,一般使用最小项就好了。
题目描述6:
实现下面卡诺图所描述的电路。
Solution6:
module top_module (input [4:1] x, output f );assign f = ~x[1]&x[3] | x[2]&x[4];endmodule
题目描述7:
实现下面卡诺图所描述的电路。
Solution7:
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
题目描述8:
对于下面的卡诺图,用一个4-1多路选择器和不限的2-1多路选择器,但2-1多路选择器的使用要尽可能少。你不允许使用任何其他逻辑门,你必须使用a和b作为多路复用器选择器的输入,如下面的4- 1多路复用器所示。
Solution8:
module top_module (input c,input d,output [3:0] mux_in
);always @(*) begincase({c,d})2'b0:mux_in = 4'b0100;2'b1:mux_in = 4'b0001;2'b11:mux_in = 4'b1001;default:mux_in = 4'b0101;endcaseendendmodule
总结
- 熟悉了卡诺图和基本的计算单元
- 熟悉了卡诺图的化简方式,了解了SOP和POS的区别与联系,以及如何求得SOP最简式。
HDLBits答案(9)_卡诺图与最简SOP式相关推荐
- HDLBits答案(24)_由波形图描述电路
Build a circuit from a simulation waveform HDLBits链接 前言 今天更新HDLBits习题由波形图描述电路的部分,看图写代码. 题库 Combinati ...
- HDLBits答案(25)_编写Testbench
Verification:Writing Testbenches HDLBits链接 前言 今天更新HDLBits最后一章的习题:编写Testbench. 题库 Clock 提供了如下描述的模块: m ...
- HDLBits答案(23)_找BUG
Finding bugs in code HDLBits链接 前言 今天更新HDLBits习题部分找BUG部分,比较简单,大家看一下即可. 题库 8bit_2_1_Mux 原Code: module ...
- HDLBits答案(22)_基于有限状态机的计数器
基于有限状态机的计数器 HDLBits链接 前言 今天更新搭建更大的电路部分的习题,内容主要跟计数器和有限状态机有关. 题库 Counter with period 1000 构造一个0-999的计数 ...
- HDLBits答案(6)_硬件模块设计的思考方式
硬件模块设计的思考方式 HDLBits链接 基本的逻辑门操作 题目描述1:将输入端口in和输出端口out连接. Solution1: module top_module (input in,outpu ...
- HDLBits答案(4)_如何避免生成锁存器?
HDLBits_Verilog Language_Procedures HDLBits链接 组合逻辑的always块 [David说]: 考虑到硬件的可综合性,有两种always块是有意义的: 组合: ...
- 卡诺图在化简逻辑布尔代数上的运用
先导概念和定理 逻辑(布尔)代数: 定义略. 5个公理和8个定理:见前一篇文章.现在记下几个比较重要的: (A+B)⋅(A+Bˉ)=A(A+B)\cdot(A+\bar{B})=A(A+B)⋅(A+B ...
- 创意c语言程序设计,重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc...
重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc 还剩 56页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...
- 卡诺图的最简或与式化简
逻辑化简可以利用基本定律进行代数化简,也可以利用卡诺图进行化简,代数化简主要用的基本定律有: 交换律 分配律 结合律 01律 重叠律 摩根律 代数化简相对来说没有卡诺图化简直观, 卡诺图的经典用法是进 ...
最新文章
- EL:固氮能力主要取决于物种分类而不是土壤养分
- Sublime Text3 运行Python 出现Error:Decode error - output not utf-8
- 无锡初一计算机试题,2015年无锡市初中信息技术考查选择题.doc
- Kylin启动报错hbase-common lib not found
- “西部云安全优才计划”落地西安,为云安全高质量发展夯实才智支撑
- halcon中编程运算符_R编程中的运算符
- 手机号 验证函数 C++
- Firefox中文版与英文版转换
- 项目中的“里程碑”就是我们常说的里程碑吗?
- hdu5855二分+最大流
- 低代码和零代码火了,十大利器推荐
- MySQL的基本用法
- 简单记录下几家公司的面试经历(Java一年经验)
- 今天分享一个用Python来爬取小说的小脚本!(附源码)
- Single-stage目标检测网络YOLO相关背景知识
- UVA1595(对称轴)
- Web技术老矣,尚能Run否?| U4内核在Web开发平台的探索之路
- 浅谈数据结构-最短路径
- 关于outlook展示发件人、收件人乱码的问题
- 自动驾驶惯性传感器中的基本原理笔记
热门文章
- SAP UI5 binding, property binding and resourceBinding
- footer bar in SAP Fiori as a service
- SAP CRM BP contact detail - workAddress
- CRM订单上状态字段在UI的显示逻辑
- 如何分析request download在R3AR3显示成功执行,但是对应material没有生成的问题
- workflow initialization - GSWFWC
- 修改某个appointment已经存在的opportunity relation
- 在webclient UI page里嵌入external view
- CRM Fiori Customer report filter过滤器
- 我用ABAP做过的那些无聊的事情