数字电路【逻辑函数】

逻辑代数

在学习完二进制原码补码反码之后,就可以进入了对逻辑代数的学习。

逻辑代数首先是一种对二进制进行逻辑运算的代数,它的取值只有0和1两种,基本的计算方式有与,或,非,可以用逻辑函数式表达为Y = A · B(与) Y = A + B(或) Y = A'(非)。

基于与或非可以得到逻辑代数的常用公式和一些运算律,如下:

  • 交换律:A + B = B + A A · B = B · A
  • 结合律:(A + B) + C = A + (B + C) (A · B) · C = A · (B · C)
  • 分配律:A · (B + C) = A · B + A · C A + B · C = (A + B) · (A + C)
  • 互补律:A + A' = 1 A · A' = 0
  • 重叠律:A · A = A A + A = A
  • 还原律:(A')' = A
  • 德摩根律:(A + B)' = A' · B' (A · B)' = A' + B'
  • 01律:A + 0 = A A · 1 = A A + 1 = 1 A · 0 = 0
    进一步还可以推导一些重要的常用公式,如:
  • A + A · B = (A + 1) · (A + B),这里使用了逻辑加法对逻辑乘法的分配律,直观上更像是反向倒推
  • A + A' · B = (A + A') · (A + B) = A + B,这里同样使用了分配律,直观上是加法对乘法的分配
  • A · B + A' · C + B · C = A · B + A' · C + B · C · (A + A') = A · B + A' · C + A · B · C + A' · B · C = A · B · (1 + C) + A' · C · (1 + B) = A · B + A' · C,这里的思路是如果直接提取因式会导致很复杂,观察三个因式可以发现问题的核心在于A和A'找不到与它们相对应的因式,而B · C中又没有A和A',于是可以考虑通过乘一个A + A'的方式来化简。同样的方式就可以解决A · B + A' · C + B · C · D = A · B + A' · C,由于逻辑代数具备代入律,所以可以总结出不论第三个项是BC还是BCD,只要没有A和A'就都是可以去除的。

逻辑代数的定理

  1. 代入定理,因为在一个逻辑式中,每个变量的取值只可能是0或者1,而一个逻辑式的结果也只可能是0或者1,于是对于一个逻辑式中的变量,总是可以替换成一个复杂的逻辑式。
  2. 反演定理,将A替换为A',A'替换为A,+ 替换为 ·,· 替换为 +,0替换为1,1替换为0即可,主要用于对一个代数式Y求它的反Y',但是这里需要遵循两个规定:第一是替换后的优先级不能发生改变,也就是说原来是括号内的依然优先级更高,原来是 · 替换为 + 后需要加上括号保证优先级,原来是 + 的替换为 · 则不用加,这是因为 · 优先级高于 + ,第二则是不属于单个变量的取反符号应当保留。
  3. 对偶定理,这个相较于反演定理只少了替换变量取反符这一步,并且如果Y1 = Y2,设它们的对偶是Y1D和Y2D,则也必然有Y1D = Y2D

逻辑函数的表示方法

逻辑函数可以用:真值表,逻辑函数式,逻辑图以及波形图表示,

其中真值表转为逻辑函数式需要从真值表中取出Y=1的一些变量组合,然后将取1的标记为A取0的标记为A',然后将各个式子求和就可以得到逻辑函数式,

反之逻辑函数式转为真值表只需要将n个变量所有的可能组合列出,然后分别计算对应的代数结果即可,

逻辑函数式转逻辑图需要按照优先级连接,优先级高的子式对应的逻辑门输出的结果作为优先级的的子式对应的逻辑门的输入,

反之从逻辑图写逻辑函数式也是相似的方法,

波形图则主要与真值表相互转换,也较为直观。

最小项和最大项

首先从定义上说,如果有n个变量组成一个式子m,并且该式子是这n个变量的原式或取反通过求积获得的,且每个变量的原式或反式仅出现一次,那么称其为一个最小项,

如果找到一串取值a = (a1,a2...an) ∈ (0,1)^n,使得m(a)等于1,那么这个a向量对应的二进制串就可以记为该最小项的编号,例如AB'C就可以记为m5,

很显然n个变量的最小项一共有2^n个,

并且对于最小项有:

  1. 在输入变量的任何一个取值下必然有且仅有一个最小项为1
  2. 所有最小项的和为1
  3. 任意两个最小项之积为0
  4. 如果两个最小项只相差一个变量,那么它们的和可以消去该变量

最大项与最小项的定义刚好相反,要求这n个组成的M是通过求和取得的,并且存在一种取值使M = 0,同样记录这个取值的二进制数为其编号,

于是很容易有 Mi = mi',

另外对于最大项有:

  1. 在输入变量的任何一个取值下必然有且仅有一个最大项为0
  2. 所有最大项的积为0
  3. 任意两个最大项之和为1
  4. 如果两个最大项只相差一个变量,那么它们的积可以消去该变量

于是我们可以将一个式子Y = f(A,B,C,..)表示成这些变量的最小项之和或者最大项之积,对于最小项之和可以通过乘(A + A')的方式补全缺少的变量,对于最大项之积则是加上(AA')

如果对于一个式子Y,要求它如何用与或非的形式表达(或非门连接两个与门),由于所有最小项的和为1,而Y可以表达为一些最小项的和,又因为Y + Y' = 1,所以Y'就等于那些不属于Y的最小项的和,而 Y = (Y')',所以可以对Y'求反来得到对应的与或非的表达方式。

如果要求完全用或非门构成电路则可以先获得与或非的表达,然后对内部使用与门的部分调用反演来得到一个完全或非的式子,

如果要求完全用与非门构成电路则直接用德摩根律去慢慢调整即可。

posted @ 2026-08-15 16:36  lf123z  阅读(2)  评论(0)    收藏  举报