目录

  • 1 数字电路中的数和编码
    • 1.1 十进制数的二进制编码
      • 1.1.1 有权码和无权码
    • 1.2 格雷码
      • 1.2.1 8421BCD码的运算
    • 1.3 用补码表示负数
  • 2 数字逻辑基础
    • 2.1 逻辑变量和逻辑系统
      • 2.1.1 基本逻辑运算
      • 2.1.2 布尔代数公理及其他常用逻辑运算
      • 2.1.3 真值表
    • 2.2 逻辑代数的基本定律
      • 2.2.1 布尔代数的常用公式
      • 2.2.2 布尔代数的三个规则
    • 2.3 逻辑函数的标准表达式
      • 2.3.1 逻辑函数的最小项表达式
      • 2.3.2 逻辑函数的最大项表达式
      • 2.3.3 最小项表达式和最大项表达式的关系
      • 2.3.4 非标准表达式到标准表达式的转换
      • 2.3.5 任意项及其表示
    • 2.4 代数法化简逻辑函数
    • 2.5 卡诺图法化简逻辑函数
      • 2.5.1 逻辑函数的卡诺图表示
      • 2.5.2 卡诺图化简的步骤及举例
  • 3 组合逻辑电路
    • 3.1 组合逻辑电路的特点
    • 3.2 组合逻辑电路的分析
      • 3.2.1 组合逻辑电路的分析步骤
      • 3.2.2 组合逻辑电路分析举例
    • 3.3 组合逻辑电路的设计
      • 3.3.1 组合逻辑电路的设计步骤
      • 3.3.2 组合逻辑电路的实现方式
      • 3.3.3 组合逻辑电路设计举例
    • 3.4 中规模组合逻辑电路
      • 3.4.1 加法器和减法器
      • 3.4.2 编码器
      • 3.4.3 译码器
      • 3.4.4 数据选择器
      • 3.4.5 数值比较器
    • 3.5 中规模组合电路用于逻辑设计
      • 3.5.1 译码电路用作函数发生器
      • 3.5.2 用数据选择器作函数发生器
      • 3.5.3 用全加器作为数码转化器
    • 3.6 组合逻辑电路的竞争与冒险
      • 3.6.1 冒险的分类
      • 3.6.2 冒险的识别和消除
  • 4 集成触发器
    • 4.1 时序逻辑电路的特点
    • 4.2 触发器的基本特性
    • 4.3 触发器的记忆作用
    • 4.4 电位型触发器
      • 4.4.1 基本RS触发器
      • 4.4.2 可控RS触发器
      • 4.4.3 其他可控触发器
      • 4.4.4 可控电位型触发器的局限性
      • 4.4.5 电位型触发器的应用:锁存器
    • 4.5 钟控型触发器
      • 4.5.1 主从触发器
      • 4.5.2 边沿触发器
    • 4.6 触发器的逻辑符号
    • 4.7 CMOS触发器
      • 4.7.1 带使能端D触发器
      • 4.7.2 CMOS主从D触发器
      • 4.7.3 CMOS JK触发器
    • 4.8 触发器的转换
    • 4.9 集成触发器的时间参数
    • 4.10 钟控触发器构成的常用时序电路
      • 4.10.1 寄存器
      • 4.10.2 移位寄存器
      • 4.10.3 计数器
  • 5 时序逻辑电路
    • 5.1 时序电路的分类和描述
      • 5.1.1 时序电路的分类
      • 5.1.2 时序电路的描述
    • 5.2 同步时序电路的分析
      • 5.2.1 同步时序电路的一般框图
      • 5.2.2 序列信号发生器
    • 5.3 移位寄存器构成的时序电路
      • 5.3.1 环形计数器
      • 5.3.2 扭环形计数器
    • 5.4 常用时序电路的设计
      • 5.4.1 计数器的设计
      • 5.4.2 序列信号发生器的设计
      • 5.4.3 M序列发生器
    • 5.5 异步计数器
    • 5.6 中规模时序集成电路
      • 5.6.1 中规模同步计数器
      • 5.6.2 中规模计数器的应用
      • 5.6.3 中规模计数器的级联
      • 5.6.4 中规模移位寄存器
    • 5.7 计数器用于逻辑设计
    • 5.8 一般时序电路的分析
      • 5.8.1 一般时序电路的分析过程和特点举例
    • 5.9 一般时序电路的设计
      • 5.9.1 状态表的建立
      • 5.9.2 状态表的简化
      • 5.9.3 状态分配
  • 6 大规模数字集成电路
    • 6.1 大规模数字集成电路的概述
    • 6.2 存储器
      • 6.2.1 存储器的分类
      • 6.2.2 ROM作为逻辑器件
      • 6.2.3 存储器容量的扩展
    • 6.3 可编程逻辑阵列
    • 6.4 可编程阵列逻辑
    • 6.5 通用阵列逻辑
    • 6.6 复杂可编程逻辑器件
    • 6.7 现场可编程门阵列
    • 6.8 CPLD和FPGA的比较
格雷码


格雷码为典型的无权码,雷码的编码规则是相邻的两代码之间只有一位二进制位不同,每位并没有权值,对应的十进制数是规定的,并不是如8421码能算出来的。

典型的二进制格雷码因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中。法国电讯工程师波特(Jean-Maurice-Émile Baudot,18450911-19030328)在1880年曾用过的波特码相当于它的一种变形。1941年George Stibitz设计的一种8元二进制机械计数器正好符合格雷码计数器的计数规律。格雷码(Gray code)曾用过Grey Code、葛莱码、葛兰码、格莱码、戈莱码、循环码、二进制反射码、最小差错码等名字,它们有的是错误的,有的易与其它名称混淆,建议不再使用它们。

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。

格雷码(Gray Code)曾用过Grey Code、葛莱码、格莱码、戈莱码、循环码、反射二进制码、最小差错码等名字,它们有的不对,有的易与其它名称混淆,建议不要再使用这些曾用名。

格雷码的特点

格雷码属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于风向的转角位移量-数字量的转换中,当风向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。

格雷码是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。

由于格雷码是一种变权码,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。

典型格雷码是一种采用绝对编码方式的准权码,其权的绝对值为2^i-1(设最低位i=1)。

格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同。