差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
programming_fpga_w_verilog [2021/09/09 13:28]
gongyusu [1. 逻辑]
programming_fpga_w_verilog [2021/09/11 18:53] (当前版本)
gongyusu
行 9: 行 9:
 #### 逻辑门 #### 逻辑门
 逻辑门有输入和输出,这些数字输入和输出可以是“高”或者“低”, 无论是输入端还是输出端,所谓的“低”指的是接近于0V(地)的电压,而“高”一般是超过提供给该逻辑器件的供电电压一半以上的电压,给FPGA提供的电压一般为1.8V、3.3V或着5V中的一个,多数的FPGA的工作电压范围有一定的冗余度,有些FPGA允许在一个器件中存在多个逻辑电压. 逻辑门有输入和输出,这些数字输入和输出可以是“高”或者“低”, 无论是输入端还是输出端,所谓的“低”指的是接近于0V(地)的电压,而“高”一般是超过提供给该逻辑器件的供电电压一半以上的电压,给FPGA提供的电压一般为1.8V、3.3V或着5V中的一个,多数的FPGA的工作电压范围有一定的冗余度,有些FPGA允许在一个器件中存在多个逻辑电压.
 +  - [[https://​www.electronicshub.org/​introduction-to-logic-gates/​|数字门介绍]]
  
-##### 非门(NOT Gate) 
-最简单的门就是非门(有时又被成为反相门),它有一个输入和一个输出,如果输入为高电平,输出则为低电平,反之亦然。图1.1 为一个非门的原理图符号,表1.1 为其真值表(列出针对各种输入类型得到的输出结果) 
-{{drawio>​notgatesymbol.png}} <WRAP centeralign>​图1.1 一个非门</​WRAP>​ 
  
-\\ +  - [[not_gate|非门 - NOT Gate]] 
-为描述逻辑门或一组逻辑如何工作,我们一般使用“真值表”,它指定了针对不同的输入信号以及输出信号的组合,经过该逻辑以后的输出值。对于一个非门,表1.1即为其真值表。H(1)和L(或0)用以表示“高”电平和“低”电平。+  - [[and_gate|与门 - AND Gate]] 
 +  - [[or_gate|或门 ​- OR Gate]] 
 +  - [[nand_gate|与非门 ​- NAND Gate]] 
 +  - [[nor_gate|非门 - NOR Gate]]
  
-{{drawio>​notgatetruetable.png}}<​WRAP centeralign>​表1.1 一个非门的真值表</​WRAP>​ 
-如果你将一个非门的输出连接到另一个非门的输入端,输出的结果将为输入的信号。 
-{{drawio>​notnotgate.png}}<​WRAP centeralign>​ 图1.2 两个非门串联 </​WRAP>​ 
- 
-##### 与门(AND Gate) 
- 
-顾名思义,一个与门如果其所有的输入端都为高电平的时候,其输出为高电平。图1.3 为2输入与门的符号,表1.2为与门的真值表。 
- 
- 
-##### 或门(OR Gate) 
-或门的任何一个输入端为高电平,其输出端都会变为高。图1.4为一个双输入或门的符号,表1.3为其真值表。 
-{{drawio>​orgatesymbol.png}}<​WRAP centeralign>​图1.4 一个或门</​WRAP>​ 
-{{drawio>​orgatetruetable.png}}<​WRAP centeralign>​表1.3 一个或门的真值表</​WRAP>​ 
- 
- 
-{{drawio>​andgatesymbol.png}}<​WRAP centeralign>​图1.3 一个与门</​WRAP>​ 
-{{drawio>​andgatetruetable.png}}<​WRAP centeralign>​表1.2 一个与门的真值表</​WRAP>​ 
- 
-##### 与非门(NAND Gate)和或非门(NOR Gate) 
-图1.1中非门符号的输出端一个小圆圈表示门的反相功能,一个与非门(与后非)就是一个与门再加一个输出端的反相器构成;或非门为一个或门再加一个输出端的反相器构成。图1.5显示了这两种门的符号,表1.4和表1.5分别为这两种门的真值表。 
-{{drawio>​nandgatesymbol.png}} <WRAP centeralign>​图1.5 一个“与非门”和“或非门”</​WRAP>​ 
-{{drawio>​nandgatetruetables.png}} <WRAP centeralign>​表1.4 一个“与非门”的真值表</​WRAP>​ 
-{{drawio>​norgatetruetables.png}}<​WRAP centeralign>​表1.5 一个“或非门”的真值表</​WRAP>​ 
 与非门和或非门都是非常通用的门,因为只需要反相它们的输入端或输出端就可以构成其它任何一种门,另外你可以用与非门或着或非门构成非门,只需要将两个输入信号连接在一起就可以。例如图1.6中你可以用3个或非门构成一个与门。 与非门和或非门都是非常通用的门,因为只需要反相它们的输入端或输出端就可以构成其它任何一种门,另外你可以用与非门或着或非门构成非门,只需要将两个输入信号连接在一起就可以。例如图1.6中你可以用3个或非门构成一个与门。
 {{drawio>​3norgate2nand.png}} <WRAP centeralign>​图1.6 用3个“或非门”构成一个“与门”</​WRAP>​ {{drawio>​3norgate2nand.png}} <WRAP centeralign>​图1.6 用3个“或非门”构成一个“与门”</​WRAP>​
 +De Morgan定律
  
-De Morgan定律 
 图1.6的设计利用了逻辑定律中的De Morgan定律 - 将两个输入端“与”后的结果进行取反,和先将两个输入端进行取反以后再“或”得到的结果是一样的。在图1.6中,两个输入端信号先被由“或非门”构成的“非门”取反以后进行“或”操作,再对输出的结果取反。 图1.6的设计利用了逻辑定律中的De Morgan定律 - 将两个输入端“与”后的结果进行取反,和先将两个输入端进行取反以后再“或”得到的结果是一样的。在图1.6中,两个输入端信号先被由“或非门”构成的“非门”取反以后进行“或”操作,再对输出的结果取反。
 {{drawio>​usenortomakeandtruetable.png}}<​WRAP centeralign>​表1.6 用多个异或门构成一个与门的真值表</​WRAP>​ {{drawio>​usenortomakeandtruetable.png}}<​WRAP centeralign>​表1.6 用多个异或门构成一个与门的真值表</​WRAP>​
  
-  ​异或门XOR Gate) +  ​- [[xor_gate|异或门 ​XOR Gate]]
-前面讲到的“或门”是一种包容性的或,两个输入端A、B只要任何一个为高电平或者两个都为高电平,其输出端就为高电平。但也存在这样一种排斥性的“或”,称之为异或,只有其输入端的电平不同(无论哪个信号是高还是低),其输出端才为高电平。异或门非常有用,可以用来比较输入信号。 +
-图1.7 展示了如何使用4个与非门构成一个异或门。 +
-{{drawio>​xorgatesymbol.png}}<​WRAP centeralign>​图1.7 用4个与非门构成一个异或门</​WRAP>​ +
-{{drawio>​xorgatetruetable.png}}<​WRAP centeralign>​表1.7 异或门的真值表</​WRAP>​+
  
 #### 二进制 #### 二进制
行 60: 行 34:
 #### 用逻辑实现的“加法” #### 用逻辑实现的“加法”
 你可以用逻辑门来对二进制数进行运算,因为二进制数只是用“位”(bit)表示的数值,你可以用逻辑针对任何数值进行运算。图1.8展示了如何用逻辑门进行一个二进制加。 你可以用逻辑门来对二进制数进行运算,因为二进制数只是用“位”(bit)表示的数值,你可以用逻辑针对任何数值进行运算。图1.8展示了如何用逻辑门进行一个二进制加。
-{{drawio>​asinglebitadder.png}}<​WRAP centeralign>​图1.8 一个一位加法器</​WRAP>​+{{drawio>​asinglebitadder.png}}<​WRAP centeralign>​图1.8 一个1位加法器</​WRAP>​ 
 +{{drawio>​asinglebitaddertruetable.png}}<​WRAP centeralign>​表1.9 ​个1位加法器的真值表</​WRAP>​ 
 +从表中可以看出,如果输入端A和B都是0,加法的结果位0, 如果其中一个输入为1,加法的结果为1,然后如果两个输入端都为1,加法的位本身就变成了0,但我们希望将进位输出的1放到下一位,在二进制中,1+1位0,并一个进位(或十进制的2) 
 +这就意味着,如果我们同时加多于一位的数值,下一个加法的部分将有3个输入(A、B和进位输入),这就需要三个位的加法,图1.9展示了计入进位以后的加法。 
 +{{drawio>​asinglebitadderwithcarryin.png}}<​WRAP centeralign>​图1.9 一个带有进位输入端的1位加法器</​WRAP>​ 
 +你也许永远不会用这种方式通过多个门来构建一个加法器,因为有现成的加法器芯片可以用于你的设计,在这里你能够看到加法器是如何通过门电路构成的。 
 +如果我们有8级这样的电路,就可以实现2个字节的加法操作,每一个计算机的中央处理器(CPU)都有这种用逻辑门搭建的硬件加法器,一个32位的处理器可以同时处理32位的数值,一个64位的机器能够通过64个图1.9的方式同时将64位数字加起来。
  
 #### 触发器 ​ - Set-Reset触发器 #### 触发器 ​ - Set-Reset触发器