FPGA:逻辑函数的卡诺图化简法

news2025/1/18 7:17:29

文章目录

    • 最小项与最小项表达式
      • 最小项的定义
      • 最小项的性质
      • 逻辑函数的最小项表达式
      • 卡诺图化简法
    • 用卡诺图表示逻辑函数
      • 卡诺图的引出
      • 两变量卡诺图
      • 三变量卡诺图
      • 四变量卡诺图
      • 已知逻辑函数真值表,画卡诺图
      • 已知逻辑函数画卡诺图
    • 用卡诺图化简逻辑函数
      • 化简的依据
      • 化简的步骤
    • 用卡诺图化简含无关项的逻辑函数
      • 什么叫无关项

最小项与最小项表达式

最小项的定义

n 个变量 X 1 X 2 … X n X_{1} X_{2} \ldots X_{n} X1X2Xn 的最小项是 n 个因子的乘积,每个变量 都以它的原变量或非变量的形式在乘积项中出现,且仅出 现一次。一般 n 个变量的最小项应有 2 n 2^{n} 2n 个。

例如, A , B 、 C 三个逻辑变量的最小项有 ( 2 3 = ) 8 \left(2^{3}=\right) 8 (23=)8 个, 即 A ˉ B ˉ C ˉ , A ˉ B ˉ C , A ˉ B C ˉ , A ˉ B C , A B ˉ C ˉ , A B ˉ C 、 A B C ˉ 、 A B C \bar{A} \bar{B} \bar{C}, \bar{A} \bar{B} C, \bar{A} B \bar{C}, \bar{A} B C, A \bar{B} \bar{C}, A \bar{B} C 、 A B \bar{C} 、 A B C AˉBˉCˉ,AˉBˉC,AˉBCˉ,AˉBC,ABˉCˉ,ABˉCABCˉABC A ˉ B 、 A B ˉ C A ˉ 、 A ( B + C ) \bar{A} B 、 A \bar{B} C \bar{A} 、 A(B+C) AˉBABˉCAˉA(B+C) 等则不是最小项。

最小项的性质

三个变量的所有最小项的真值表

对于任意一个最小项,只有一组变量取值使得它的值为1;

对于变量的任一组取值,任意两个最小项的乘积为0;

对于变量的任一组取值,全体最小项之和为1。

逻辑函数的最小项表达式

逻辑函数的最小项表达式:

L ( A B C ) = A B C + A B C ˉ + A ˉ B C + A B ˉ C L(A B C)=A B C+A B \bar{C}+\bar{A} B C+A \bar{B} C L(ABC)=ABC+ABCˉ+AˉBC+ABˉC

为“与-或”逻辑表达式;

在“与-或”式中的每个乘积项都是最小项。

示例:

L ( A , B , C ) = A B + A ˉ C L(A, B, C)=A B+\bar{A} C L(A,B,C)=AB+AˉC 化成最小项表达式。

L ( A , B , C ) = A B ( C + C ˉ ) + A ˉ ( B + B ˉ ) C = A B C + A B C ˉ + A ˉ B C + A ˉ B ˉ C = m 7 + m 6 + m 3 + m 1 = ∑ m ( 7 , 6 , 3 , 1 ) \begin{aligned} L(A, B, C) & =A B(C+\bar{C})+\bar{A}(B+\bar{B}) C \\ & =A B C+A B \bar{C}+\bar{A} B C+\bar{A} \bar{B} C \\ & =\boldsymbol{m}_{7}+\boldsymbol{m}_{6}+\boldsymbol{m}_{\mathbf{3}}+\boldsymbol{m}_{\mathbf{1}} \\ & =\sum m(7,6,3,1) \end{aligned} L(A,B,C)=AB(C+Cˉ)+Aˉ(B+Bˉ)C=ABC+ABCˉ+AˉBC+AˉBˉC=m7+m6+m3+m1=m(7,6,3,1)

示例:

L ( A , B , C ) = ( A B + A ˉ B ˉ + C ˉ ) A B ‾ ‾ L(A, B, C)=\overline{(A B+\bar{A} \bar{B}+\bar{C}) \overline{A B}} L(A,B,C)=(AB+AˉBˉ+Cˉ)AB 化成最小项表达式。
a.去掉非号 b.去括号

L ( A , B , C ) = ( A B + A ˉ B ˉ + C ˉ ) ‾ + A B = ( A B ‾ ⋅ A ˉ B ˉ ‾ ⋅ C ) + A B = ( A ˉ + B ˉ ) ( A + B ) C + A B = A ˉ B C + A B ˉ C + A B = A ˉ B C + A B ˉ C + A B ( C + C ˉ ) = A ˉ B C + A B ˉ C + A B C + A B C ˉ = m 3 + m 5 + m 7 + m 6 = ∑ m ( 3 , 5 , 6 , 7 ) \begin{array}{l} L(A, B, C)=\overline{(A B+\bar{A} \bar{B}+\bar{C})}+A B \\ =(\overline{A B} \cdot \overline{\bar{A} \bar{B}} \cdot C)+A B \\ =(\bar{A}+\bar{B})(A+B) C+A B \\ =\bar{A} B C+A \bar{B} C+A B \\ =\bar{A} B C+A \bar{B} C+A B(C+\bar{C}) \\ =\bar{A} B C+A \bar{B} C+A B C+A B \bar{C} \\ =m_{3}+m_{5}+m_{7}+m_{6}=\sum m(3,5,6,7) \\ \end{array} L(A,B,C)=(AB+AˉBˉ+Cˉ)+AB=(ABAˉBˉC)+AB=(Aˉ+Bˉ)(A+B)C+AB=AˉBC+ABˉC+AB=AˉBC+ABˉC+AB(C+Cˉ)=AˉBC+ABˉC+ABC+ABCˉ=m3+m5+m7+m6=m(3,5,6,7)

代数法化简在使用中遇到的困难:

1.逻辑代数与普通代数的公式易混淆,化简过程要求对所 有公式熟练掌握;

2.代数法化简无一套完善的方法可循,它依赖于人的经验 和灵活性;

3.用这种化简方法技巧强,较难掌握。特别是对代数化简 后得到的逻辑表达式是否是最简式判断有一定困难。

卡诺图化简法

卡诺图法可以比较简便地得到最简的逻辑表达式,但是其逻辑变量的个数受限。

用卡诺图表示逻辑函数

卡诺图的引出

卡诺图:将n变量的全部最小项都用小方块表示,并使具有逻辑相邻的最小项在几何位置上也相邻地排列起来,这样,所得到的图形叫n变量的卡诺图。

逻辑相邻的最小项:如果两个最小项只有一个变量互为反变量,那么,就称这两个最小项在逻辑上相邻。

如最小项 m 6 = A B C ˉ m_{6}=A B \bar{C} m6=ABCˉ m 7 = A B C m_{7}=A B C m7=ABC 在逻辑上相邻。

两变量卡诺图

三变量卡诺图

四变量卡诺图

卡诺图的特点:各小方格对应于各变量不同的组合,而且上下左右在几何上相邻的方格内只有一个因子有差别,这个重要特点成为卡诺图化简逻辑函数的主要依据。

已知逻辑函数真值表,画卡诺图

逻辑函数真值表

L = A ˉ B ˉ C + A ˉ B C + A B ˉ C ˉ + A B ˉ C + A B C = m 1 + m 3 + m 4 + m 5 + m 7 \begin{array}{l} L=\bar{A} \bar{B} C+\bar{A} B C+A \bar{B} \bar{C}+A \bar{B} C+A B C \\ =m_{1}+m_{3}+m_{4}+m_{5}+m_{7} \end{array} L=AˉBˉC+AˉBC+ABˉCˉ+ABˉC+ABC=m1+m3+m4+m5+m7

逻辑函数的卡诺图

已知逻辑函数画卡诺图

当逻辑函数为最小项表达式时,在卡诺图中找出和表达式中最小项对应的小方格填上1,其余的小方格填上0(有时也可用空格表示),就可以得到相应的卡诺图。任何逻辑函数都等于其卡诺图中为1的方格所对应的最小项之和。

示例:

画出下列逻辑函数的卡诺图。

L ( A , B , C , D ) = ∑ m ( 0 , 1 , 2 , 3 , 4 , 8 , 10 , 11 , 14 , 15 ) L(A, B, C, D)=\sum m(\mathbf{0}, \mathbf{1}, \mathbf{2}, \mathbf{3}, \mathbf{4}, \mathbf{8}, \mathbf{1 0}, \mathbf{1 1}, \mathbf{1 4}, \mathbf{1 5}) L(A,B,C,D)=m(0,1,2,3,4,8,10,11,14,15)

示例:

画出下式的卡诺图

L ( A , B , C , D ) = ( A ˉ + B ˉ + C ˉ + D ˉ ) ( A ˉ + B ˉ + C + D ˉ ) ( A ˉ + B + C ˉ + D ) ( A + B ˉ + C ˉ + D ) ( A + B + C + D ) \begin{aligned} L(A, B, C, D)= & (\bar{A}+\bar{B}+\bar{C}+\bar{D})(\bar{A}+\bar{B}+C+\bar{D})(\bar{A}+B+\bar{C}+D) \\ & (A+\bar{B}+\bar{C}+D)(A+B+C+D) \end{aligned} L(A,B,C,D)=(Aˉ+Bˉ+Cˉ+Dˉ)(Aˉ+Bˉ+C+Dˉ)(Aˉ+B+Cˉ+D)(A+Bˉ+Cˉ+D)(A+B+C+D)

解:

1.将逻辑函数化为最小项表达式

L ˉ = A B C D + A B C ˉ D + A B ˉ C D ˉ + A ˉ B C D ˉ + A ˉ B ˉ C ˉ D ˉ = ∑ m ( 0 , 6 , 10 , 13 , 15 ) \begin{aligned} \bar{L} & =A B C D+A B \bar{C} D+A \bar{B} C \bar{D}+\bar{A} B C \bar{D}+\bar{A} \bar{B} \bar{C} \bar{D} \\ & =\sum m(\mathbf{0 , 6 , 1 0 , 1 3 , 1 5}) \end{aligned} Lˉ=ABCD+ABCˉD+ABˉCDˉ+AˉBCDˉ+AˉBˉCˉDˉ=m(0,6,10,13,15)

2.填写卡诺图

相应的小方格内填写0(反逻辑),其余填写1.

示例:

已知 L = ABCD + B,画出卡诺图。

解:

容易发现利用吸收律 L = B , 即B 等于1的方格填1,其他方格填0。

用卡诺图化简逻辑函数

化简的依据

  • $ \bar{A} \bar{B} \bar{C} D+\bar{A} \bar{B} C D=\bar{A} \bar{B} D $
  • $ \bar{A} B \bar{C} D+\bar{A} B C D=\bar{A} B D $
  • $ \bar{A} \bar{B} D+\bar{A} B D=\bar{A} D $
  • $ A \bar{B} D+A B D=A D $
  • $ \bar{A} D+A D=D $

化简的步骤

用卡诺图化简逻辑函数的步骤如下:

(1)将逻辑函数写成最小项表达式;

(2)按最小项表达式填卡诺图,凡式中包含了的最小项,其对应方格填1,其余方格填0;

(3)合并最小项,即将相邻的1方格圈成一组(包围圈),每一组含 2 n 2^n 2n个方格,对应每个包围圈写成一个新的乘积项;

(4)将所有包围圈对应的乘积项相加。

画包围圈时应遵循的原则:

(1)包围圈内的方格数一定是 2 n 2^n 2n个,且包围圈必须呈矩形;

(2)循环相邻特性包括上下底相邻,左右边相邻和四角相邻;

(3)同一方格可以被不同的包围圈重复包围多次,但新增的包围圈中一定要有原有包围圈未曾包围的方格;

(4)一个包围圈的方格数要尽可能多,包围圈的数目要可能少。

示例:

用卡诺图法化简下列逻辑函数

L ( A , B , C , D ) = ∑ m ( 0 , 2 , 5 , 7 , 8 , 10 , 13 , 15 ) L(A, B, C, D)=\sum m(0,2,5,7,8,10,13,15) L(A,B,C,D)=m(0,2,5,7,8,10,13,15)

解:

(1) 由L 画出卡诺图。

(2) 画包围圈合并最小项,得最简与-或表达式

L ( A , B , C , D ) = ∑ m ( 0 ∼ 3 , 5 ∼ 7 , 8 ∼ 11 , 13 ∼ 15 ) L(A, B, C, D)=\sum m(0 \sim 3,5 \sim 7,8 \sim 11,13 \sim 15) L(A,B,C,D)=m(03,57,811,1315)

$L=D+C+\bar{B} \$

$\bar{L}=B \bar{C} \bar{D} \$

L = D + C + B ˉ L=D+C+\bar{B} L=D+C+Bˉ

用卡诺图化简含无关项的逻辑函数

什么叫无关项

在真值表内对应于变量的某些取值下,函数的值可以是任意的,或者这些变量的取值根本不会出现,这些变量取值所对应的最小项称为无关项或任意项。

在含有无关项逻辑函数的卡诺图化简中,它的值可以取0或取1,具体取什么值,可以根据使函数尽量得到简化而定。

示例:

要求设计一个逻辑电路,能够判断1位十进制数是奇数还是偶数,当十进制数为奇数时,电路输出为1,当十进制数为偶数时,电路输出为0。

解:

(1)列出真值表

(2)画出卡诺图

(3) 卡诺图化简 L = D

参考文献:

  1. Verilog HDL与FPGA数字系统设计,罗杰,机械工业出版社,2015年04月
  2. Verilog HDL与CPLD/FPGA项目开发教程(第2版), 聂章龙, 机械工业出版社, 2015年12月
  3. Verilog HDL数字设计与综合(第2版), Samir Palnitkar著,夏宇闻等译, 电子工业出版社, 2015年08月
  4. Verilog HDL入门(第3版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019年03月

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hexo + Butterfly 侧边栏公众号

原文链接 :Hexo Butterfly 侧边栏公众号 推荐阅读 基于 Hexo 从零开始搭建个人博客(一): 环境准备基于 Hexo 从零开始搭建个人博客(二): 项目初识基于 Hexo 从零开始搭建个人博客(三): 主题安…

Lichee_RV学习系列--stream移植

Lichee_RV学习系列文章目录 Lichee_RV学习系列—认识Lichee Rv Dock、环境搭建和编译第一个程序 Lichee_RV学习系列—移植dhrystone 文章目录Lichee_RV学习系列文章目录一、stream简介二、源码下载三、文件移植1、makefile文件编译makefile文件移植四、运行结果五、移植过程中…

【尚硅谷】Java数据结构与算法笔记08 - 查找算法

文章目录一、查找算法介绍二、线性查找算法三、二分查找算法3.1 思路分析3.2 代码实现四、插值查找算法4.1 思路分析4.2 代码实现4.3 注意事项五、斐波那契(黄金分割法)查找算法5.1 思路分析5.2 原理讲解5.3 代码实现一、查找算法介绍 在 java 中, 我们…

C++多线程入门及基础知识

什么是C多线程 线程即操作系统进行CPU任务调度的最小单位。C的多线程并发,简单理解的话就是,将任务的不同功能交由多个函数实现,创建多个线程,每个线程执行一个函数,一个任务就同时由不同线程执行。 什么时候使用多…

微信小程序:骨架屏的实现方法

骨架屏是为了展示一个页面骨架而不含有实际的页面内容,从渲染效率上来讲,骨架屏它并不能使首屏渲染加快。由于骨架屏的一些使用又向用户渲染了额外的一些内容,这些内容是额外添加的、本来是不需要渲染的,它反而从整体上加长了首屏…

Windows 虚拟磁盘驱动开发(采用原始办法实现类似Storport框架的相同功能)

其实以前讲述windows平台下的磁盘驱动的开发挺多,而且时间也是非常早。以下连接:https://blog.csdn.net/fanxiushu/article/details/9903123?spm1001.2014.3001.5501https://blog.csdn.net/fanxiushu/article/details/11713357?spm1001.2014.3001.5501…

游戏开发 状态同步

【状态同步】1、将所有的操作发送给Server(T1),由Server计算(T2),并返回结果(T3)。权威服务器架构能够防止很多的作弊,但是直接用这种方法会让游戏的响应变得迟缓。如果 …

three games 之 桌球

接下来介绍一些 Vue4 中的一些进阶使用,希望对大家有所帮助,谢谢。 如果文中有不对、疑惑的地方,欢迎在评论区留言指正🌻 一、项目结构 Vuex 并不限制你的代码结构。但是,它规定了一些需要遵守的规则: …

移动硬盘怎么分区?

硬盘分区指的是硬盘上被划分出来的区块,可用于分类存储各种数据。而我们日常购买的移动硬盘通常来说分为两种,一种是买回来已分好区的,还有一种是未经过分区的。如果移动硬盘没有经过分区,那么在将它连接到电脑的USB接口时&#x…

android四大组件之四-BroadCast实现原理分析

前言: 一开始的目标是解决各种各样的ANR问题的,但是我们知道,ANR总体上分有四种类型,这四种ANR类型有三种是和四大组件相对应的,所以,如果想了解ANR发生的根因,对安卓四大组件的实现原理必须要…

伙伴云与飞书、金山办公一同入选亿欧2022中国数字化企业服务商TOP50

近日,由中关村国家自主创新示范区展示中心、中关村会展与服务产业联盟与亿欧联合举办的SHOWTECH2022-WIM 创新者年会”在京顺利召开,会上,亿欧网重磅发布《2022世界创新奖榜单》。伙伴云凭借10年来为企业数字化转型赋能的成功经验和卓越贡献&…

数据结构学习-队列

坚持看完,结尾有思维导图总结 这里写目录标题队列的定义于性质如何实现队列的功能初始化队列入队列出队列队列的销毁队列取队头数据队列取队尾数据判断队列是否为空判断队列长度总结队列的定义于性质 队列是一种数据结构,他储存数据的方式就和排队一样 …

二十六、Kubernetes中Horizontal Pod Autoscaler(HPA)控制器详解

1、概述 在kubernetes中,有很多类型的pod控制器,每种都有自己的适合的场景,常见的有下面这些: ReplicationController:比较原始的pod控制器,已经被废弃,由ReplicaSet替代 ReplicaSet&#xff…

年终盘点(三)丨2022计讯物联团队不负韶华,奋力前行

光阴荏苒,时光悄然,成长的齿轮不断转动。2022年,计讯人在挑战中创造不凡,2023年,计讯人在希望中迎接新未来。 回首过去,计讯物联团队不断壮大,在奋勇前行中以坚持书写拼搏,在知难而…

记好这24个ES6方法,用于解决实际开发的JS问题

本文主要介绍24中es6方法&#xff0c;这些方法都挺实用的&#xff0c;本本请记好&#xff0c;时不时翻出来看看。 1.如何隐藏所有指定的元素 1 const hide (el) > Array.from(el).forEach(e > (e.style.display none)); 2 3 // 事例:隐藏页面上所有<img>元素? …

echarts——实现 面积图+柱状图+折线图等——基础积累

因为到年底了&#xff0c;很多项目组都开始做年终汇报&#xff0c;年终汇报的展示形式最常见的就是看板。 样式美观&#xff0c;可以放到电视机或者大屏上&#xff0c;通过图表的形式进行展示&#xff0c;简单明了&#xff0c;通俗易懂。 直接上最终效果图&#xff1a;是一个…

【C++】打开C++的大门

目录前言1.什么是C2.C的发展史3.C关键字&#xff08;C98&#xff09;4.命名空间4.1命名冲突4.2命名空间定义4.3命名空间使用5.输入输出6.缺省参数6.1缺省参数的概念6.2缺省参数分类7.函数重载7.1函数重载概念7.2C函数重载的原理——名字修改8.引用8.1引用的概念8.2引用特性8.3常…

ArcGIS基础实验操作100例--实验94计算栅格图层总和值

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验94 计算栅格图层总和值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;…

【观察】软硬件底层创新“开花结果”,亚马逊云科技的沉淀与释放

2006年&#xff0c;亚马逊云科技推出了Amazon Web Services&#xff0c;正式“开创”出了云计算市场。同年8月&#xff0c;Amazon Elastic Compute Cloud (EC2) 开放了 beta 测试&#xff0c;启动了云上计算的创新和革命。从此&#xff0c;亚马逊云科技在云计算软硬件底层技术创…

软件测试复习03:动态测试——黑盒测试

作者&#xff1a;非妃是公主 专栏&#xff1a;《软件测试》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录等价划分法边值分析法错误推测法因果图法示例习题等价划分法 等价类&#xff1a;一个几何&#xf…