差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
programming_fpga_w_verilog [2021/09/09 12:42]
gongyusu
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定律 -  
-{{drawio>​usenortomakeandtruetable.png}} 
  
-  * 异或门(XOR Gate)+图1.6的设计利用了逻辑定律中的De Morgan定律 - 将两个输入端“与”后的结果进行取反,和先将两个输入端进行取反以后再“或”得到的结果是一样的。在图1.6中,两个输入端信号先被由“或非门”构成的“非门”取反以后进行“或”操作,再对输出的结果取反。 
 +{{drawio>​usenortomakeandtruetable.png}}<​WRAP centeralign>​表1.6 用多个异或门构成一个与门的真值表</​WRAP>​
  
-{{drawio>​xorgatesymbol.png}} +  - [[xor_gate|异或门 - XOR Gate]]
-{{drawio>​xorgatetruetable.png}}+
  
 #### 二进制 #### 二进制
 +我们前面将逻辑门的输入和输出端以电压的高低来表示,我们还可以将它们用数字来表示 - 1表示高电平,0表示低电平,这样我们就可以想明白计算机是如何使用逻辑门来操作数字的了。当然,我们仅有数值0和1是不够用的。
 +在我们的生活中都是使用10进制,主要的原因是因为我们有10根手指,如果我们的老祖宗使用鼻子来计数,那就是二进制了,因为结果只有0还是1,如果要表示多于1个的数字,你可以用多个二进制数值(bit - binary digit)来表示。
 +{{drawio>​binarydecimalnumbers.png}}<​WRAP centeralign>​表1.8 用二进制和十进制表示的数字0到7</​WRAP>​
 +
 #### 用逻辑实现的“加法” #### 用逻辑实现的“加法”
 +你可以用逻辑门来对二进制数进行运算,因为二进制数只是用“位”(bit)表示的数值,你可以用逻辑针对任何数值进行运算。图1.8展示了如何用逻辑门进行一个二进制加。
 +{{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触发器
 +
 +
 #### 移位寄存器 #### 移位寄存器
 +
 +
 #### 二进制计数器 #### 二进制计数器
 +
 #### 总结 #### 总结