大侠好,欢迎来到FPGA技术江湖。本系列将带来FPGA的系统性学习,从最基本的数字 电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让 电子、信息、 通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。 系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。 数字电路中的逻辑代数基础 在数字逻辑电路中,用1位二进制数码的“0”和“1”表示一个事物的两种不同逻辑状态。例:一件事情的是和非、真和伪、有和无、好和坏,或者电路的通和断、电灯的亮和暗、门的开和关等等。这种只有两种对立逻辑状态的逻辑关系成为二值逻辑。当使用两个数码表示逻辑状态时,它们之间可以按照指定的某种因果关系进行推理计算,将这种运算称为逻辑运算。 1849年英国数学家乔治·布尔提出了逻辑运算的数学方法——布尔代数。在实际电路中就是按照二进制进行工作的,所以布尔代数在电路中的应用非常普遍。 逻辑代数中有与(AND)、或(OR)、非(NOT)三种。
图1 :与、或、非的说明(电路)模型 对于(a)电路来说,只有开关A和开关B都闭合,灯Y才可以点亮。 决定事物结果的全部条件同时成立时,结果才发生。这种因果关系成为逻辑与,也称为逻辑相乘。 对于(b)电路来说,开关A和开关B有一个闭合,灯Y就可以点亮。 决定事物结果的诸多条件中任何一个满足,结果就会发生。这种因果关系成为逻辑或,也成为逻辑相加。 对于(c)电路来说,只要条件具备了,结果就不发生了;条件不具备时,结果一定发生。这种因果关系称为逻辑非,也称为逻辑求反。 如果以A、B表示开关的状态,并以1表示开关闭合,以0表示开关断开;以Y表示指示灯的状态,并以1表示灯亮,以0表示不亮,则可以列出以0、1表示的与、或、非逻辑关系的图表。这种图表称为真值表。
图2 :与、或、非的真值表 在逻辑代数中,将与、或、非看作时逻辑变量A、B间的三种最基本的逻辑运算,并且以“· ”表示与运算(可以省略不写),以“+”表示或运算,以变量右上角的“‘”表示非运算。所以与、或、非可以写成如下表达式: 与 :Y = A · B; 或 :Y = A + B; 非 :Y = A’; 在图1中只是利用电路模型说明外部条件和结果的逻辑关系,在我们设计时,我们需要施加电压,经过某种单元,可以产生结果的电压。
图3 :施加电压经过单元得到结果电压的电路模型 实现与逻辑运算的单元电路称为与门,实现或逻辑运算的单元电路称为或门,实现非逻辑运算的单元电路称为非门(也称为反相器)。 与、或、非逻辑运算单元的常用图形符号如下:
图4 :与、或、非的常用图形符号
当A、B不同时,输出Y为1;当A、B相同时,输出Y为0,这种逻辑称为异或逻辑。 Y = A + B = A · B‘ + A’ · B; 当A、B相同时,Y等于1,A、B不同时,Y等于0,这种逻辑称为同或逻辑。 Y = A · B = A · B + A’·B’ 异或和同或互为反运算。 在对于给定的布尔代数时,可能不是最简化的,我们需要化简。常用若干公式如下:
图5 :常用若干逻辑化简公式 以逻辑变量作为输入,以运算结果作为输出,那么输入变量的取值确定之后,输出的取值便随之而定。因此,输出与输入之间是一种函数关系。这种函数关系称为逻辑函数。 下面利用一个三人表决器的电路设计来说明一些问题。此电路有三个输入(A、B、C),一个输出(Y),只有当两个及两个以上输入赞成时,Y输出赞成。 设赞成为1,不赞成为0。根据设计要求得出如下真值表:
图6 :三人表决器真值表 根据真值表中Y为1的项列出来,对应的A、B、C为1,则留下变量,为0,则留下反变量。 Y = A'BC + AB’C + ABC’ + ABC; 根据上述布尔表达式,我们得出逻辑电路图:
图7 :三人表决器的逻辑电路图 如果所有的逻辑都按照这种写法的话,那么很多的逻辑就会变的很复杂,并且会浪费很多的资源。我们考虑一下,电路既然是按照布尔表达式做出来的,那么布尔表达式能不能化简一下呢(利用图1-29中的公式)? Y = A'BC + AB’C + ABC’ + ABC; = A'BC + ABC + AB’C + ABC + ABC’+ABC; = BC(A' + A) + AC(B+B') + AB(C+C') = BC+AC+AB 上述布尔表达式所对应的逻辑电路图如下:
图8 :化简后的布尔表达式所对应的电路图 若我们不考虑中间的过程,只是考虑A、B、C与Y之间的关系,上述哪一种电路结构都是可以实现功能的。我们将上述两种电路称为等效电路。 我们可以将输入与输出之间的关系绘制出一副图,来表示它的逻辑关系。
图9 :三人表决器的波形 除了上述几种方式表示逻辑关系外,我们还可以用卡诺图来表示逻辑关系 在n变量逻辑函数中,若m为包含n个因子的乘积项,而且这n个变量均以原变量或反变量的形式在m中出现一次,则称m为该组变量的最小项。 n个变量有2^n个最小项,比如当n = 3时,此逻辑函数应有2^3 = 8个最小项。比如一个3变量的逻辑函数,它有8个最小项,分别是:A'B'C'(000), A'B'C(001), A'BC'(010), A'BC(011), AB'C'(100), AB'C(101), ABC'(110), ABC(111)。他们分别可以用m0---m7表示。 根据定义可以得出: 1. 输入变量的任何取值下有且仅有一个最小项为‘1’,其他为‘0’。 2. 任意两个最小项之积为‘0’。 3.所有最小项之和为‘1’。 4.如果两个最小项之间只有一个因子不相同,则认为它们相邻。相邻的两个最小项之和就是把不相同的因子去掉。例如:ABC + ABC' = AB(C+C') = AB。 在上述的三人表决器中,用最小项表示:Y=m3+m5+m6+m7。 卡诺图是逻辑函数的一种图形表示。一个逻辑函数的卡诺图就是将此函数的最小项表达式中的各最小项相应地填入一个方格图内,此方格图称为卡诺图。卡诺图的构造特点使卡诺图具有一个重要性质:可以从图形上直观地找出相邻最小项。两个相邻最小项可以合并为一个与项并消去一个变量。 如图:
图10 :三输入变量的卡诺图
图11 :三人表决器的卡诺图
我们可以用圆圈圈出相邻的值为‘1’的最小项,注意只能是矩阵画(2,4,8·····)。左侧红色的圈为:AB'C和ABC,所以可以化简成AC。其他两个圈可以化简称为AB和BC。化简的时候也没有必要要写出来,直接看就好了,把对应位置中有变化的哪一项直接去掉就好了。例如:红色的圈圈出的两个就只有B发生了变化,所以直接去掉,就变成了AC。 注意卡诺图的数码表示,如有两位应该是 00、01、11、10。因为卡诺图能够销项的原因是利用公式:ABC + ABC' = AB(C+C') = AB。不能是00、01、10、11,01和10是两个变量不同。 另外卡诺图在画圈时,可以认为是一个左右、上下都连接的表格,可以最左侧一个,最右侧一个,构成两个。因为它们同样满足相邻(只有一个变量不同)。 卡诺图化简的话,更直观,更简单一些。不用考虑那么多的公式。 在逻辑化简中,任何一个布尔表达式,我们都可以将其化简为与非的形式。那么就可以全部使用与非门来构成逻辑电路。此时做出的电路也是一种等效电路。 思考:如何证明与非逻辑可以实现所有的逻辑? 上述所有的分析都是基于门电路符号进行分析,那么基本的门电路是如何利用晶体管等来构成的呢?
图12 :非门的开关级原理图
图13 :与非门的开关级原理图
图14 :与门的开关级原理图 思考 :上述原理图的工作原理,画出或门的开关级原理图。
|