此笔记为我学习FPGA的过程记录,其中简要记录了一些可能不太清楚或者值得记录的知识点,方便以后查阅。
如果笔记内容恰好可以帮助到你,我非常开心!
1. 什么是数字电路
生活中有两种概念,数字信号和模拟信号,模拟信号一般包括压力、气温、速度等信号,模拟量的值是可能随时间连续变化的。而数字量,是指从时间上变化都不是连续的信号, 比如电平信号。
模拟信号(左)、数字信号(右)
在IC/FPGA逻辑设计里面,一般只能处理数字信号, 当然,现在有一些高端的 FPGA集成了 AD 模块,也可以采集模拟量信号。
2. 数字进制
2.1 进制简介
数字进制格式一般包括二进制、八进制、十进制和十六进制,一般常用的为二进制、十进制和十六进制。
Verilog硬件描述语言是IC/FPGA开发的主流语言,Verilog的进制格式是如下表示的:
二进制(BIN 格式)表示如下:
4’b0101
表示4位二进制数字0101;十进制(DEC 格式)表示如下:
4’d2
表示4位十进制数字2(二进制 0010);十六进制(HEX 格式)表示如下:
4’ha
表示4位十六进制数字a(二进制 1010)。
当代码中没有指定数字的位宽与进制时,默认为32位的十进制,比如100,实际上表示的值为32’d100
。
进制之间的转换可以使用Windows自带的计算器中的程序员模式。
2.2 进制转换
我们常用的数值表达方式是十进制,但在数字电路中采用的是二进制。需要了解十进制与二进制之间的转换方法。
2.2.1 二进制转十进制
从右到左用二进制的每个数去乘以2的相应次方(次方从0开始),再将其每个数进行相加。
例如:二进制转换为十进制
则二进制对应的十进制数为。
2.2.2 十进制转二进制
使用“除2取余,逆序排列”法。
用十进制整数除2,可以得到一个商和余数;再用商去除2,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次逆序排列起来组合成二进制数。
例如:十进制转换为二进制
则十进制对应的二进制数为。
对于十进制转其他进制,采用“除(对应进制)取余,逆序排列”法。
2.2.3 有符号二进制
例如:二进制转换为十进制
无符号:
有符号:
有符号的二进制数涉及到原码、反码、补码的概念,可以参考补充知识里的链接进行学习。
在计算机内存中,整数一律采用补码的形式来存储。这意味着,当读取整数时还要采用逆向的转换,也就是将补码转换为原码。
将补码转换为原码也很简单:先减去 1,再将数值位取反即可。
例如:计算机中储存有符号二进制数采用的是补码形式,将其转换为原码分为两步:
- 先将其减去1,变为
- 其中第一位是符号位,1代表数值为负数,其余位为数值为,将数值位按位取反,得到
读数:最高位1代表值为负,其余为是二进制原码,转换为十进制为6,则这个有符号二进制数代表的值为。
2.3 补充知识
详细介绍各种进制之间的转换、小数的进制转换、独热码、BCD码、格雷码、纠错码、校验码等:
2、进制详解(整数部分) - 沐风半岛 - 博客园 (cnblogs.com)
详细介绍带符号的二进制数、原码、反码、补码等:
3、带符号的二进制数(原码、反码、补码) - 沐风半岛 - 博客园 (cnblogs.com)
对于使用补码的更深层次原因以及模算数、进位溢出的介绍:
二进制:有符号整数编码及加减法运算 // 圆方 (lumin.tech)
3. MOSFET
金属氧化物半导体场效晶体管(简称:金氧半场效应管;英语:Metal-Oxide-Semiconductor Field-Effect Transistor,缩写:MOSFET),是一种可以广泛使用在模拟电路与数字电路的场效应管。
近年来,数字电路基本上都是由MOSFET场效应管构成的。MOSFET是一种在施加电压后可以像开关一样工作的半导体器件。MOSFET有P型MOSFET和N 型MOSFET两种。
N型MOSFET的构造:
P型MOSFET的构造:
MOSFET有源极、漏极和栅极3个电极。功能上,源极、漏极和栅极分别作为电流输入、电流输出和电流控制使用。MOSFET的源极和漏极采用相同类型的半导体材料,而栅极下的通道则填入不同类型半导体材料。N型MOSFET的源极和漏极使用N型半导体,栅极下的通道使用P型半导体。P型MOSFET材料的构成与N型MOSFET相反。
下面以N型MOSFET为例说明其工作原理。在不给控制电流的栅极施加电压时,源极和漏极间填充了异种半导体材料,因此电流无法流过。当给栅极施加正电压时,源极和漏极中N型半导体材料里的自由电子被栅极吸引,使通道中充满电子,源极和漏极间的电流从而能够流动。
N型MOSFET在栅极施加电源电压(H)时电流可以流通,接地(L)时电流无法流通。反之,P型MOSFET的栅极接地时电流可以通过,施加电源电压时电流无法流过。这种持有相反特性的N 型MOSFET和P型MOSFET互补使用形成的门电路称为CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)。CMOS可以用来制作各种各样的逻辑电路。
N型MOSFET和P型MOSFET的电路符号:
将MOSFET按照下图的方式组合即可实现NOT门电路。当输入H时,N型MOSFET打开,输出为L ;当输入L时,P型MOSFET打开,输出为H。
从最简单的NOT门电路到各种逻辑门电路,都可以由MOSFET的组合进行实现。下图列出的是逻辑门电路中定义的基本逻辑门电路。逻辑门电路的电路符号称为MIL(美军标准)逻辑符号。数字电子电路通过基本逻辑电路的组合来实现各种逻辑电路功能。
4. 逻辑门
与门(AND)、或门(OR)、非门(NOT)、与非门(NAND)、或非门(NOR)、与或非门、异或门(XOR)、同或门(XNOR)
5. 锁存器(latch)
锁存器本质上是一个双稳态电路, 它可以稳定在两个不同状态并在适当的输入下切换至另一个稳态。而它处于哪个稳态就是我们要存储的信息。
下图是一种最为单纯的锁存器,其电路由一个2输入的AND门构成,并将输出与其中一个输入相接形成一条循环回路。一旦这个电路的输入A为0时,循环回路中的值就一直为0。这样就可以利用循环回路将逻辑值锁存。
5.1 D锁存器(Data Latch,D-Latch,数据锁存器)
D锁存器的电路构造如下图所示,它由4个NAND门电路构成。D锁存器中有D(Data)和E(Enable)两个输入信号,和两个输出信号。D锁存器在E为0时保持前一个数据,E为1时将输入D的数据输出到Q。是输出信号的反相信号。
D锁存器的真值表如下图所示。由于D锁存器在E为1时输入的D直接通过Q输出,所以也称为通过型锁存器。
5.2 其他锁存器
其他锁存器包括SR锁存器、JK锁存器,以及改进D锁存器的Earle锁存器等,参考:数字电路: 锁存器/触发器的构造设计 - rvalue’s blog
6. 触发器(flip-flop)
6.1 D触发器
D锁存器和NOT门组合,可以实现依据时钟信号同步并保存数据的D触发器。
D触发器的电路构成:
D触发器的电路符号:
D触发器有D(Data)和C(Clock)两个输入信号,和两个输出信号。当D触发器的C为0时,前端D锁存器输出信号D的值,后端D锁存器保持之前的数据。当C为1时,前端D锁存器保持之前的数据,后端D锁存器将前端D锁存器保持的数据直接通过输出。
D触发器的动作原理:
D触发器的波形图:
D触发器由于原理简单,构造单纯,被广泛使用在同步电路当中。
建立时间与保持时间
D触发器是由时钟信号的边沿来触发数据的存储动作的。因此,需要在时钟沿前后一段时间内将输入信号稳定下来。如果在时钟变化时输入信号也在变化,很可能无法正确存储数据。因此,为了让D触发器正确存储数据,需要有建立时间(setup time)和保持时间(hold time)两个基本条件。
建立时间是在时钟变化前必须稳定输入信号的时间,而保持时间是时钟变化后必须稳定输入信号的时间。
建立时间和保持时间的关系:
同时遵守建立时间和保持时间,就可以让D触发器正确的存储数据。
6.2 JK触发器
JK触发器与JK锁存器类似,但仅在时钟边沿响应输入。JK触发器也像D触发器一样有多种实现结构,一种理解起来比较简单的是主从结构。下面是下降沿JK触发器的电路结构:
当时钟在高电平时,左侧的主SR锁存器暂存和的结果,右侧的从SR锁存器保持的值不被修改。当时钟处于下降沿时以及低电平,左侧的主SR锁存器的输入均为高电平,本质上处于锁定状态,将下降沿时刻计算得的和结果传递给下游的从锁存器,从锁存器产生动作更新的值。
除此之外,也可以在D触发器的基础上实现JK触发器. 按照上文中JK锁存器的真值表,我们可以进行如下化简:
构造出相应的门电路算出D然后喂给D触发器就好了。
6.3 T触发器
T触发器中的T指的是toggle。它拥有输入和时钟信号输入。当触发器触发的时候, 如果,那么令。否则保持不变。以上升沿触发为例,真值表如下:
时钟 | 动作 | ||
---|---|---|---|
X | 非上升沿 | 保持 | |
0 | 上升沿 | 保持 | |
1 | 上升沿 | 翻转 |
实现上有了JK触发器之后,可以直接将T同时连接到JK触发器的J和K输入即可实现上述功能。
7. 卡诺图、逻辑代数化简法
卡诺图与逻辑代数化简法本内容包括组合逻辑电路设计中的代数化简法(基本定律、基本原则等)与卡诺图化简法(含工具软件,实际案 - 掘金 (juejin.cn)
8. 竞争与冒险
8.1 产生原因
当某一个变量经两条以上路径到达输出时,由于每条路径上的延迟时间的不同,到达终点的时间有先后,这一现象称为竞争。
在具有竞争现象的组合电路中,当某个变量发生变化时,若真值表所描述的逻辑关系遭受短暂的破坏,在输出端出现不应有的尖脉冲时(毛刺),称为冒险现象。
8.2 冒险的类型及判断
在图(b)中的1处和2处均存在竞争,但由于是与非门,在1处没有产生冒险现象,而在2处产生了冒险现象。
一个变量以原、反变量出现在函数F中时,该变量是具有竞争条件的变量。若消去其它变量(令其它变量为0或1),留下具有竞争的变量。若函数出现,则会出现负尖脉冲的冒险现象,称为“0”型冒险;若函数出现,则产生正尖脉冲的冒险现象,称为“1”型冒险。
8.3 消除冒险的方法
- 修改逻辑设计
- 增加冗余项,消除逻辑冒险
- 加选通信号,避开毛刺
- 输出端接滤波电容
冒险脉冲是窄脉冲,输出端接几百pF的电容滤除。
- 使用格雷码:例如数字电路中常用格雷码计数器取代2进制计数器,因为格雷码输出每次只有一位跳变,消除了竞争冒险发生的条件。
- 使用同步电路:同步电路信号变化发生在时钟沿,只要毛刺不在时钟沿被采样就会消除毛刺。
9. Others
还有一些其他更深入的或者与FPGA高度相关的数电知识,如:
时序:同步、异步、竞争、冒险、冒险消除、时序分析模型、跨时钟域、亚稳态
低功耗:动态功耗、静态功耗;措施:系统级(电压、存储、门控)、逻辑上
等以后用到了再来补充。
参考链接
- 【FPGA】数字电路设计基础_本关任务:用verilog描述上升沿触发的n位基本寄存器,在右侧代码窗口中补充程序-CSDN博客
- 关于二进制与十进制互转的方法(简单好学!)_2进制转10进制-CSDN博客
- 数字电路基础知识 - 知乎 (zhihu.com)
- 2、进制详解(整数部分) - 沐风半岛 - 博客园 (cnblogs.com)
- 3、带符号的二进制数(原码、反码、补码) - 沐风半岛 - 博客园 (cnblogs.com)
- 二进制:有符号整数编码及加减法运算 // 圆方 (lumin.tech)
- 八种常用逻辑门的实用知识(逻辑表达式、逻辑符号、真值表、逻辑运算规则) - 林肯公园 - 博客园 (cnblogs.com)
- 图灵社区 (ituring.com.cn)
- 数字电路: 锁存器/触发器的构造设计 - rvalue’s blog
- 金属氧化物半导体场效应管 - 维基百科,自由的百科全书 (wikipedia.org)
- 卡诺图与逻辑代数化简法本内容包括组合逻辑电路设计中的代数化简法(基本定律、基本原则等)与卡诺图化简法(含工具软件,实际案 - 掘金 (juejin.cn)
本文链接: https://hanqingjiang.com/2024/10/18/20241018_FPGA_digitalCircuit/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
