本文主要介绍数字电路基础知识,用最简洁的内容介绍最核心的知识。

1、数字电路是什么?

数字电路是利用电源电压的高电平和低电平分别表示1和0,进而实现信息的表达。模拟信号:随时间连续变化的信号。处理模拟信号的电路就是模拟电路。数字信号:随时间不连续变化的信号,离散变化。处理数字信号的电路就是数字电路。

2、数值表达

我们常用的数值表达方式是十进制,但在数字电路中采用的是二进制,如下图所示:

有符号二进制:

3、比特和字节

比特:二进制中的一个数字位称为 binary digit,用bit表示,常简写为“b”。

字节:1字节等于8比特,用byte表示,常简写为“B”。

4、1K 字节理解的差异

K、M、G、T 是表示大数据量时常用的单位。1K 的大小有 1000(10 的 3 次方)和 1024(2 的 10 次方)两种计数方法。

通常,衡量计算机内存和网络数据包大小时,1K 相当于 1024 比特。而在硬盘等存储器的标签上记述的尺寸或物理学中的 1K 相当于 1000。

5、反码与补码

反码 = 原码所有bit位取反

补码 = 反码+1

比如原码=0101,则反码=1010,补码=1011

6、MOSFET 的结构

目前数字电路基本上都是由 MOSFET 场效应管构成的。MOSFET 是一种在施加电压后可以像开关一样工作的半导体器件。MOSFET 有 P 型 MOSFET 和 N 型 MOSFET 两种,如下图所示。

7、逻辑运算与基本逻辑门电路

(1)逻辑运算使用 AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)三种基本运算组合来实现各种运算。

(2)CMOS 基本逻辑门电路

8、存储元件

锁存器(Latch)就是一种存储元件,具有像闩锁一样锁住并维持数据的特性,通过组合基本的逻辑门可以实现。

(1)最简单的锁存器由一个2输入的AND门组成,将一路输入与输出连接形成回路。

(2)D锁存器(Data Latch,D-Latch,数据锁存器)

结构组成:由4个NAND组成,输入信号有D(DATA)和E(ENABLE),输出信号有Q和/Q。

工作逻辑:E 为 0 时保持前一个数据,E 为 1 时将输入 D 的数据输出到 Q。E为1时输入的 D 直接通过 Q 输出。

D锁存器构成以及电路组成如下:

真值表:

(3)D触发器

D 锁存器和 NOT 门组合,可以实现依据时钟信号同步并保存数据的D 触发器。

D 触发器有 D(Data) 和 C(Clock) 两个输入信号,Q 和/Q两个输出信号。

D触发器电路组合如下图所示:

D触发器的电路符号:

工作逻辑:当 D 触 发器的 C 为 0 时,前端 D 锁存器输出信号 D 的值,后端 D 锁存器保持之前的数据。当 C 为 1 时,前端 D 锁存器保持之前的数据,后端 D 锁存器将前端 D 锁存器保持的数据直接通过 Q 输出。

D触发器由于原理和构造简单,广泛应用于同步电路。

扩展知识:《建立时间与保持时间》

D触发器是由时钟信号的边沿来触发数据的存储动作的。因此,需要在时钟沿前后一段时间内将输入信号稳定下来。如果在时钟变化时输入信号也在变化,很可能无法正确存储数据。因此,为了让 D 触发器正确存储数据,需要有建立时间(setup time)和保持时间(hold time)两个基本条件。

建立时间是在时钟变化前必须稳定输入信号的时间,而保持时间是时钟变化后必须稳定输入信号的时间。

同时遵守建立时间和保持时间,就可以让 D 触发器正确的存储数据。具体的时序图如下所示:

9、组合逻辑电路和时序逻辑电路

数字电路可以分为组逻辑合电路和时序逻辑电路两种。(1)组合逻辑电路

组合逻辑电路是指输出值仅由输入信号的状态决定的电路,不依赖于过去的输入。从电路组成上来看,只包含门电路,不包含存储元件。如下图所示就是一个组合逻辑电路。

(2)时序逻辑电路

时序逻辑电路是指输出值同时依赖于现在和过去输入信号的逻辑电路。

从电路组成上来看,时序逻辑电路等于组合逻辑电路+存储电路。

从工作逻辑上来看,输出状态必须反馈到输入端,与输入信号共同决定组合逻辑的输出。

FPGA入门到精通系列1:数字电路基础知识的更多相关文章

  1. Matlab--从入门到精通(chapter2 matlab 基础知识)

    Chapter2 Matlab 基础知识 1.基本数学运算符号 注:矩阵的右除是一般意义的除法,但是左除具有对称意义,即A./B=B.\A 2. 命令行中的常用标点 3.常见的操作命令 4.输出数据显 ...

  2. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识

    数据库从入门到精通合集(超详细,学习数据库必看) 一.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是 ...

  3. shell从入门到精通进阶之一:Shell基础知识

    1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处 ...

  4. Provisioning Services 7.6 入门到精通系列之一:PVS前期规划

    1.  Provisioning Services 产品概述 Provisioning Services (简称PVS)采用了一种与传统映像解决方案截然不同的方法,从根本上改变了硬件与依托硬件而运行的 ...

  5. ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

    @ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...

  6. redis入门到精通系列(二):redis操作的两个实践案例

    在前面一篇博客中我们已经学完了redis的五种数据类型操作,回顾一下,五种操作类型分别为:字符串类型(string).列表类型(list).散列类型(hash).集合类型(set).有序集合类型(so ...

  7. Jenkins pipeline 入门到精通系列文章

    Jenkins2 入门到精通系列文章. Jenkins2 下载与启动jenkins2 插件安装jenkins2 hellopipelinejenkins2 pipeline介绍jenkins2 jav ...

  8. 办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时)

    办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时) 乔布斯的成功离不开美轮美奂的幻灯片效果,一个成功的商务人士.部门经理也少不了各种各样的PPT幻灯片.绿色资源网给你提供了 ...

  9. NHibernate从入门到精通系列

    http://www.cnblogs.com/GoodHelper/archive/2011/02/17/1948744.html NHibernate从入门到精通系列(4)——持久对象的生命周期(上 ...

随机推荐

  1. 换行符号(\r\n)的历史

    文章来源:https://cloud.tencent.com/developer/article/1730918 \r\n与\n是有区别的. 如果要通用的则是\r\n,因为有些编辑器它不认\n &qu ...

  2. shell脚本创建身份证号

    --作者:飞翔的小胖猪 --创建时间:2021年5月16日 --修改时间:2021年5月16日 说明 运行脚本,用户手动输入信息生成身份证号.该程序的核心在于函数模块化及select的使用. 注意:该 ...

  3. android --一个简单的登录界面

    MainActivity.java package com.example.empty_project; import androidx.appcompat.app.AppCompatActivity ...

  4. 熟悉JSP教程学习

  5. mapreduce—shuffle图解

  6. JZ-008-跳台阶

    跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 题目链接: 跳台阶 代码 public class Jz08 { ...

  7. python的变量与基本数据类型

    今日内容 python多版本共存 python的注释 python的变量与常量 变量的本质 变量的命名规范 python基本数据类型 内容详细 python多版本共存 先将两个版本的python解释器 ...

  8. C# form捕捉方向键事件

    在C# Form中监听键盘输入事件本身是很简单的,但是如果是想监听键盘上的上下左右这四个方向键,实现起来有所不同.下面我就以一个Demo简单陈述一下实现过程. 一.为了让界面能够监听键盘事件,必须实现 ...

  9. PHP实现二维数组(或多维数组)转换成一维数组

    1 array_reduce函数法 用array_reduce()函数是较为快捷的方法: $result = array_reduce($user, function ($result, $value ...

  10. clang的线程安全分析模块 thread safety analysis

    介绍 Clang的线程安全分析模块是C++语言的一个扩展,能对代码中潜在的竞争条件进行警告.这种分析是完全静态的(即编译时进行),没有运行时的消耗.当前这个功能还在开发中,但它已经具备了足够的成熟度, ...