第1章 引言

1.1 数字集成电路的分类

尽管本书的目的是讨论如何利用在片可编程系统(System On Programmable Chip, SOPC)解决方案, 使用Nios Ⅱ软核处理器系统实现要求的设计功能, 但是考察一下可供选择的各种器件对数字系统的设计者来说还是有益的, 因为它有助于我们更好地理解所有可供选择的方案。同时我们也可以意识到虽然描述数字系统和数字电路的方法和用来实现这些方法的技术在不断变化, 但是作为理论基础的基本原理并没有改变。

1.1.1 标准逻辑器件

标准逻辑器件在集成度方面属于中小规模集成电路。它包括各种逻辑门、触发器、译码器、多路选择器、寄存器和计数器等器件。标准逻辑器件有3种主要类型:TTL、CMOS和ECL。TTL是一种成熟的技术, 新的系统设计已经很少采用TTL逻辑器件, 但是正在运行的系统中仍然包含这种器件。CMOS器件是当前最流行的标准逻辑器件, 它的优点是功耗低。ECL器件主要用于高速系统中。

作为传统数字系统设计中使用的主要器件, 标准逻辑器件已经使用了40多年。标准逻辑器件的产量很大, 生产成本低廉, 价格便宜。当我们的设计不是很复杂时, 这些器件仍然是有用的。标准逻辑器件对于研究数字系统基本构成模块的工作原理具有重要的意义, 它在许多基础的理论和实验教学课程中仍然占据重要的位置。《数字电路逻辑设计》课程目前仍然以标准逻辑器件为主进行讲授。

由于标准逻辑器件集成度较低, 因此采用它们设计数字系统需要较多的器件, 这就使得电路连线复杂, 系统的可靠性降低。由于用户无法修改这类器件的功能, 要修改系统设计就必须通过对电路的重新设计和组装来实现, 因此设计的灵活性很低。

1.1.2 微处理器

数字技术已经进入众多的技术领域, 其中数字计算机是最著名的, 也是应用最广泛的。尽管计算机影响了人类生活的许多方面, 但是许多人并不能准确地说出它的主要特点。简单地说, 计算机是一个能完成信号的算术运算、逻辑运算和比较判断的数字系统。

微型计算机(PC)是最常见的计算机, 它由一些数字集成电路芯片组成, 这些芯片包括微处理器芯片、存储器, 以及输入/输出接口等。在大多数情况下, 凡是人能干的, 计算机都能干, 而且计算机还能干得更快更精确。尽管事实上计算机每次只能完成所有计算中的一步, 但是计算机完成每一步的速度非常快, 它的高速度弥补了它的低效率。

微处理器依靠所运行的软件(程序)来完成工作。这个软件是人们给微处理器的一组完整的指令, 指令告诉微处理器其操作的每一步应该干什么。这些指令以二进制代码的形式存储在存储器中, 微处理器从存储器中一次读取一条指令代码, 并完成由指令代码指定的操作。

通过编写软件可以控制微处理器完成不同的工作, 这个特点使得设计的灵活性得到了提高。当修改系统设计时, 设计者只需要改变软件, 不需要或者较少需要修改电路连线。由于微处理器一次只能执行一条指令, 因此它的主要局限性是工作速度。采用硬件方案设计的数字系统总是比采用软件方案设计的数字系统的工作速度快。

1.1.3 可编程逻辑器件

微处理器的每一条汇编指令对应一个电路模块, 可编程逻辑器件可以认为是对标准逻辑器件的直接升级。它在一块芯片内部集成了非常多的逻辑门和触发器, 使得一块可编程逻辑器件芯片具有了实现一个应用系统的逻辑资源, 从而减少了系统中使用器件的数量, 提高了系统的可靠性。芯片内部的逻辑资源的连接不需要手工进行, 与微处理器一样, 用户只需要编写设计文件即可, 从而使得设计灵活性得到了提高。

可编程逻辑器件在下载设计文件后, 在它的内部将形成对应的硬件电路, 这些电路是可以同时工作的。例如, 向两个数码管传送显示代码, 这时可以同时进行, 而在微处理器中,这个工作是逐个传送的。可编程逻辑器件内部电路模块中信号传输的时间延迟只来源于硬件电路产生的时间延迟, 不存在指令读取和执行产生的时间延迟。上述工作特点使得可编程逻辑器件的工作速度比微处理器芯片快。

可编程逻辑器件的开发设计语言有许多种, 其中VHDL和Verilog HDL这两种硬件描述语言已经获得较为广泛的应用, 并且成为IEEE的标准。以VHDL为例, 创建VHDL的最初目标是用于标准文档的建立和系统功能的模拟, 基本想法是在高层次上描述系统或元件的行为。到了20世纪90年代初, 人们发现VHDL不仅可以作为系统模拟的建模工具, 而且可以作为电路和系统的设计工具, 即可以利用软件工具把VHDL源代码转换为基本逻辑元件的连接关系。

VHDL没有得到可编程逻辑器件开发软件的全面支持。例如, Altera公司的Quartus Ⅱ可编程逻辑器件开发软件不支持浮点类型数据, 不支持乘法和除法算术运算等。这些不足限制了可编程逻辑器件的应用。不支持浮点类型数据减小了所处理信号的动态范围, 不支持乘、除法算术运算使得一些信号处理功能不容易实现。在这方面, 微处理器开发中大量使用的C语言具有明显的优势。