理解FPGA所需的基础知识

逻辑电路基础

FPGA ( Field Programmable Gate Array,现场可编程门阵列)是一种可通过重新编程来实现用户所需逻辑电路的半导体器件。为了便于大家理解FPGA的设计和结构,我们先来简要介绍-些逻辑电路的基础知识。

逻辑代数
在逻辑代数中,所有变量的值只能取0或者1。逻辑代数是由与逻辑值(0和1)相关的逻辑与( AND)、逻辑或(OR)和逻辑非( NOT )三种运算形成的代数体系,也称为布尔代数。


如图:列出了定义逻辑与、逻辑或的二元运算以及定义逻辑非的一元运算。在这里,三种运算分别使用“.”“+”和“一”运算符号来表示。逻辑与xy是指x和y都为1时,结果为1的运算。逻辑或x+y是指x或y至少有一方为1时,结果为1的运算。逻辑非“x”是取相反逻辑值的一元运算:如果x为0则结果为1;反之,如果x为1则结果为0。

逻辑代数满足表1-2所示的定理。这里的符号“=”表示其两边的计算结果总是相等。即等价。如果对换逻辑表达式中的逻辑值逻辑运算“与”和“或”,对换后得到的新逻辑表达式与对换而的式运算顺序不变,那么新逻辑表达式就称为原逻辑表达式的对偶式辑代数中,如果某定理的逻辑表达式成立,其对偶式也成立。

逻辑与(·)逻辑或(+)逻辑非(一)
0·0=0 0·1=0 1·0=0 1·1=10+0=0 0+1=1 1+0=1 1+1=10=1 I=0
1-1

逻辑代数满足表1-2所示的定理。这里的符号“=”表示其两边的计算结果总是相等,即等价。如果对换逻辑表达式中的逻辑值0和1、逻辑运算“与”和“或”,对换后得到的新逻辑表达式与对换前的表达式运算顺序不变,那么新逻辑表达式就称为原逻辑表达式的对偶式。逻辑代数中,如果某定理的逻辑表达式成立,其对偶式也成立。

零元x·0=0,x+1=1单位元x·1=x,x+0=x
幂等律x·x=x,x+x=x补余律x·x=0,x+x=1
双重否定x=x交换律x·y=y·x ,x+y=y+x
结合律(x·y)·z=x·(y·z), (x+y)+z=x+(y+z)
分配律x·(y+z)=(x·y)+(x·z), x+(y·z)=(x+y)·(x+z)
吸收律x+(x·y)=x,x·(x+y)=x
德摩根定律(De Morgan's laws)x+y=x·y,x·y=x+y
1-2

逻辑表达式

逻辑表达式是用来描述运算过程的算式,由逻辑运算符、任意数量的逻辑变量以及必要的括号和常数值0或1组合而成。对于包含n个逻辑变量x1,x2,x3,*.,x的逻辑表达式来说,我们先在其各个逻辑变量内代人逻辑值0或1,形成任意组合(共2”组),然后依照逻辑表达式的计算步骤计算这些组合,就可以得到值为0或1的计算结果。也就是说,逻辑表达式定义了具有某种逻辑功能的逻辑函数F(x1,x2,x3,···,xn)。在没有括号的情况下,逻辑与的计算优先于逻辑或。逻辑与的运算符“。”也可省略。

任何逻辑函数都可以由逻辑表达式来描述,而且描述同一逻辑函数的逻辑表达式可以有多个。逻辑表达式的标准形式指的是通过增加表达式形式上的限制,使得一个逻辑函数只有一个逻辑表达式与之对应的情况。
逻辑表达式中,逻辑变量以原变量或反变量的形式出现。原变量和反变量统称为字面量(literal)。字面量的逻辑与(每个字面量不能出现多次)叫作与项,与项的逻辑或运算叫作积之和。包含所有字面量的与项称为最小项,由最小项构成的积之和称为标准积之和(标准积)。
将标准积的逻辑与和逻辑或对调即为标准和之积。字面量的逻辑或(每个字面量不能出现多次)叫作或项,或项的逻辑与运算叫作和之积。包含所有逻辑变量的或项称为最大项,由最大项构成的和之积称为标准和之积(标准和)。

真值表
除了逻辑表达式,逻辑函数的描述方法还包括真值表和逻辑门。针对逻辑函数所有可能的输入组合一一列出输出值,我们就可以得到真值表。对于组合逻辑电路,只要列出所有可能的输人和对应的输出值,就可以完整地描述电路功能。因此,电路功能通常使用真值表描述。输人的个数为n时,真值表的组合数为2”。真值表中,需要记人每组输人值所对应的输出值。
描述逻辑函数的逻辑表达式可以有许多个,而描述逻辑函数的真值表却是唯一的。虽然一个逻辑表达式只描述一个逻辑函数,但一个逻辑函数可以通过无数的等价逻辑表达式来描述。实现真值表所定义的功能的电路称为查找表(Look-up Table,LUT),是当前主流FPGA的基本单元。
从真值表推导逻辑表达式的形式有两种:“积之和表达式”与“和之积表达式”。在真值表输出为1的行中取输人变量的与项(最小项),然后将这些最小项相或,即可得到标准积之和表达式;相对地,在真值表输出为0的行中取输人变量的反变量的或项(最大项),然后将这些最大项相与,即可导出标准和之积表达式。图1-1中的示例展示了如何从真值表推导逻辑表达式。