FPGA学习笔记(一)逻辑代数表达式和逻辑门电路

时间:2024-03-26 09:33:40

前言:恰逢双十一,在京东买书满一百减五十(不买立减100%^^),买了很多奇奇怪怪的书,其中就包括我这本由天野英晴主编的 《FPGA原理和结构》,是由日本各位可重构计算领域的大佬携手编写的一本书,非常有参考价值,在此我记下学习中值得记录的东西。

一、FPGA的概念(P1)

FPGA(Field Programmable Gate Array)称为现场可编程门阵列,是一种可通过重新编程来实现用户所需(自定义)逻辑电路的半导体器件

二、逻辑代数的构成(P1)

逻辑代数(又称布尔代数)变量的值为0或1,它由逻辑值(0或1)和逻辑运算(逻辑与AND · 、逻辑或OR + 、逻辑非NOT ¯ )组成。

三、逻辑代数的定理(P2)

下面/x代表x的逻辑非。由于逻辑与运算符的优先级大于逻辑或,故其符号’·'可省略。

  • 零元: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·(y+z)=x,x·(x+y)=x
  • 德摩根定律(De Morgann’s laws):/(x+y)=/x·/y,/(x·y)=/x+/y

四、逻辑表达式(P3)

  • 逻辑表达式中,同一逻辑函数可以用多个逻辑表达式进行表示,而标准逻辑表达式则是对逻辑表达式进行条件限制使得一个逻辑函数仅有一个逻辑表达式与之对应。
  • 逻辑表达式中,逻辑变量以原变量和反变量形式出现,它们被称为字面量(literal)。

关于标准积之和(标准积):

  • 字面量(每个字面量不能出现多次)的逻辑与运算(AND)称为与项(term “AND”)。
  • 与项逻辑或运算(OR)称为积之和(Sum of product)。
  • 包含所有字面量与项称为最小项(minterm)。
  • 最小项组成的积之和称为标准积之和(标准积)。

关于标准和之积(标准和):

  • 字面量(每个字面量不能出现多次)的逻辑或运算(OR)称为或项(term “OR”)。
  • 或项逻辑与运算称为和之积
  • 包含所有字面量或项称为最大项(maxterm)。
  • 最大项组成的和之积称为标准和之积(标准和)。

简单来说就是:
标准积之和的逻辑与(AND)和逻辑或(OR)对调即为标准和之积
字面量1 AND 字面量2(其中每个字面量不能重复出现)–>与项 与项1 OR 与项2–> 积之和 由最小项组成的积之和–>标准积。
字面量1 OR 字面量2(其中每个字面量不能重复出现)–>或项 或项1 AND 或项2–> 和之积 由最大项组成的和之积–>标准和。

五、真值表(P3)

  • 真值表输入参数有n个,对应组合数就要2^n个。
  • 发现真值表所定义的功能的电路称为查找表(Look-up Table,LUT),是当前主流FPGA的基本单元。
  • 真值表推导逻辑表达式的方法有两种:积之和表达式和之积表达式
    真值表输出为1的行中取输入变量的与项(最小项),然后将这些最小项相与即得到积之和表达式
    真值表输出为0的行中取输入变量的反变量的或项(最大项),然后将这些最大项相与即得到和之积表达式

下面举一个输出F=x·(/y)的例子,,可以看出两种表达式最终结果都一样,但积之和表达式直截了当,所以在计算的时候要先考虑应该选取哪种比较简便再下笔。

x y F
0 0 0
0 1 0
1 0 1
1 1 0

最小项表达式(积之和表达式)F=x·(/y)
最大项表达式(和之积表达式)F=(x+y)(x+/y)(/x+/y)=(x+x/y+xy+y/y)(/x+/y)=x(/x+/y)=x·(/y)

六、运算逻辑门(P4)

  • 逻辑电路根据是否包含记忆元件分为逻辑电路时序逻辑电路
  • 常用的运算逻辑门:与门(AND)、或门(OR)、非门(NOT)、与非门(NAND)、或非门(NOR)、异或门(EXOR)、同或门(又称异或非门,XNOR)等(如下图所示)。其中与非门用于计算逻辑与的非(/(x·y)),或非门用于计算逻辑或的否定(/(x+y))。另外还有复合门,如OR-AND-NOT(或与非门)、AND-OR-NOT(与或非门)等。
  • 任意逻辑电路都可用积之和表达式(或者和之积表达式)来描述。因此使用NOT-AND-OR组合而成的逻辑电路可以实现任何逻辑函数,这种方式被称为AND-OR逻辑电路或AND-OR阵列。实现AND-OR逻辑电路的器件有PLA(Programmable Logic Array,可编程逻辑阵列)等。

FPGA学习笔记(一)逻辑代数表达式和逻辑门电路

图一 与或非等门的表示图案

七、时序逻辑电路(P6)

  • 时序逻辑电路分为同步时序逻辑电路和异步时序逻辑电路。而FPGA电路设计通常为同步时序逻辑电路。
  • 时序逻辑电路的输出值输入值和记忆元件的状态值共同决定。这种逻辑电路分为两种,分别是米勒(Mealy)型时序逻辑电路和摩尔(Moore)型时序逻辑电路。

FPGA学习笔记(一)逻辑代数表达式和逻辑门电路

图二 米勒型时序逻辑电路

FPGA学习笔记(一)逻辑代数表达式和逻辑门电路

图三 摩尔型时序逻辑电路
  • 米勒模型的状态数量通常比摩尔模型少,因此有电路规模较小的优点,但同时由于输入会立刻反映到输出,所以逻辑元件或不等长的布线所带来的信号延迟容易会引起信号竞争,进而导致非预期的错误输出(冒险)。相反地,摩尔模型相比来说状态数量比较多且电路规模大,但是它直接使用记忆状态的输出,因此电路速度快且不容易错误输出