硬件安全系列 逻辑电路基础知识介绍(二)

本文介绍了逻辑电路的基础知识,包括二进制决策图(BDDs)和SAT求解的概念。BDDs是一种用于表示和操作布尔逻辑的数据结构,通过忽略节点和共用节点来简化表示。SAT求解关注于寻找布尔逻辑表达式在某些条件下成立的解决方案,主要使用CNF形式。文章探讨了如何通过逻辑约束传递和DPLL算法简化逻辑电路,并将逻辑应用于2-level和multi-level逻辑电路的转化,最后讨论了电路逻辑的最简关系寻找方法。
摘要由CSDN通过智能技术生成

前言

第二部分 逻辑表示方式以及处理算法

Boolean Representation via BDDs and SAT

BDD Binary Decision Diagrams
BDD是什么。Binary Decision Diagrams 二进制决策图

二进制决策图是表示和操作布尔逻辑的最通用和有用的数据结构之一。

那么二进制决策图长什么样呢。
在这里插入图片描述
如图所示,就是树状图,每一个分支对应一个输入的确定,从而确定输出,这也表示了所有状态下输入和输出的对应关系。但是呢,这样的表示方法在输入增加时,树状图成指数增长,所以我们显然需要一些方法来简化。

忽略节点:当某一情况下的某一输入对结果不发生影响时,我们忽略这一输入对应的两个分支。如图所示
在这里插入图片描述
共用节点:共用节点存在两种类型。第一种是由于输出一定是0或者1,我们只需要将所有分支的最终输出指向0或者1,就可以减少输出的分支。第二种是对于多个输入输出对应关系,在经过一些0/1简化后,可能存在相同状况,即从某一分支开始,之后的部分逻辑关系完全一致,我们将这一部分逻辑关系用同一个树状图表示,仅仅是前置的输入指向不同。又或者是不同对应关系在最初的部分逻辑关系中存在相同情况,我们同样可以将这一部分逻辑关系用同一个树状图表示,仅仅是输出指向不同节点。

接下来的图片分别对应第一种类型和第二种类型的两种情况
在这里插入图片描述
在这里插入图片描述
除此之外,输入判断的先后会对整个树状图的大小有极其重要的影响。

如图所示,当我们先判断a_1,a_2,a_3……,然后判断b_1,b_2,b_3….我们会发现,一直判断到b_1才会出现第一个可能的输出,然而在n次判断后,这一次判断的分支会存在2^(n+1),毫无疑问,这是一个巨大的工程量。而当我们先判断a_1b_1时,无疑会减少一个巨大的分支。
在这里插入图片描述
在这里插入图片描述

SAT satisfiability

对于一个逻辑关系,我们往往需要的是该逻辑关系成立,比如network repair中z = ! (F xor G),我们特意在最后结尾添加非运算,使得真才是我们期待的结果。这既符合现实逻辑上的关系,又符合电子逻辑关系。

所以,对一个系统来说,有时候我们并不期望得到所有的结果,只需要知道这件事情在某种条件下能够成立,我们去尽力满足这个条件即可。因此,SAT被提了出来。

在一个概念被提出之后,我们需要做的就是找到一个方法实现这个概念。首先我们提出一个表达方式CNF Conjunctive Normal Form,连接的一般方式。其形式是XXX+XXXX+XXXX,语言描述就是多个命题的和。

为什么选择和的形式呢。

因为or逻辑中有一出一,我们只需要判断或者找到其中一个命题成立,这整个逻辑就成立。除此之外,每个命题都可以转化成和的形式。AB可以转化成(A+B)这是基于双重否定消除(非非为本身)以及德摩根定律((AB) = A+B),(A+B)C 可以转化成AC+BC 这是根据分配率得到。

我们用和的形式表示所有逻辑门(为了简化表示,所以都转化成AB的形式)

z=(x) [^x +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值