目录

  • 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的比较
CPLD和FPGA的比较

应用

1.电路设计中FPGA的应用

连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石。事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识。在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗。

2.产品设计

把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建"首发团队"的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个未来的发展热点和机遇。

分类

FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。通常的分类方法是:

将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。

将以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。

两者关系

早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。

CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。

CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。

尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:

① CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。

② CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。

③ 在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。

④ FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。

⑤ CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。

⑥ CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。

⑦ 在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。

⑧ CPLD保密性好,FPGA保密性差。

⑨ 一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。