内容简介
《现代数字系统设计/新世纪计算机类专业规划教材》从系统角度出发,介绍了利用EDA技术,自上而下地设计数字系统的基本方法和技巧。其主要内容包括:第1章,数字系统设计概述;第2章,数字系统的建模和结构;第3章,数字系统的算法描述;第4章,数字系统的VHDL语言描述;第5章,数字系统设计的基本步骤和有关设计技巧;第6章,典型EDA开发工具介绍;第7章,仿真、逻辑综合和下载;第8章,数字系统检测与可检测性设计;第9章,SOC和硬件/软件协同设计技术;第10章,数字系统设计实例。书中列举了众多实例,从工程实际出发,讨论了许多工程设计中遇到的棘手问题,例如,如何消除冒险现象,降低系统功耗,提高系统速度等。
《现代数字系统设计/新世纪计算机类专业规划教材》简明扼要,内容新颖,是一本面向21世纪的革新教材。它可以作为大学本科和研究生的教科书,也可以作为从事电子电路设计的工程人员的参考书。
内页插图
目录
第1章 数字系统设计概述
1.1 数字系统发展概述
1.1.1 数字系统和集成电路技术发展简史
1.1.2 数字系统与SOC设计技术
1.1.3 数字系统设计和EDA
1.2 数字系统设计方法
1.2.1 数字系统设计描述
1.2.2 设计过程
1.2.3 设计方法
1.2.4 硬件描述语言的特点
第2章 数字系统的建模和结构
2.1 设计与模型
2.2 数字系统的模型
2.3 数字系统的结构
第3章 数字系统的算法描述
3.1 数字系统算法流程图描述
3.1.1 算法流程图的符号及其描述方法
3.1.2 算法流程图描述数字系统实例
3.2 状态机及算法状态机图描述
3.2.1 状态机分类及其特点
3.2.2 算法状态机流程图的符号及其描述方法
3.2.3 算法状态机图描述实例
3.2.4 算法流程图至状态图的变换方法
3.2.5 状态图至算法状态机图的变换方法
3.2.6 C语言流程图至算法状态机图的变换
第4章 数字系统的VHDL语言描述
4.1 VIDL语言描述数字系统的基本方法
4.1.1 VHDL语言描述电路的基本方法
4.1.2 常数、变量、信号所描述的对象
4.1.3 数据类型
4.1.4 运算操作符
4.1.5 属性(ATTRBUTE)描述
4.2 VHDL语言的基本设计单元
4.2.1 VHDL语言的基本设计单元构成
4.2.2 构造体的子结构描述
4.2.3 库、包集合及配置
4.3 VHDL语言构造体的描述方式
4.3.1 构造体的行为描述方式
4.3.2 构造体的寄存器传输(RTL)描述方式
4.3.3 构造体的结构描述方式
4.4 VHDL语言的主要描述语句
4.4.1 顺序描述语句
4.4.2 并发描述语句
4.5 基本逻辑电路设计实例
4.5.1 组合逻辑电路设计
4.5.2 时序电路设计
第5章 数字系统设计的基本步骤和有关技巧.
5.1 数字系统设计的一般步骤
5.1.1 系统需求分析
5.1.2 算法设计
5.1.3 算法描述
5.1.4 系统结构选择
5.1.5 系统具体设计
5.1.6 系统仿真与验证
5.2 数字系统并发处理的设计
5.2.1 并发处理的基本概念
5.2.2 并发处理的基本方法
5.3 数字系统的算法描述
5.3.1 简化CPU的功能要求
5.3.2 CPU的行为描述
5.3.3 CPU的状态机描述
5.3.4 CPU的VHDL语言描述(RTL描述)
5.4 系统结构的选择和设计
5.4.1 数字系统的基本结构
5.4.2 数字系统模块划分的原则
5.4.3 系统模块之间的连接
5.4.4 系统模块之间的通信
5.4.5 数字系统结构的选择
5.5 数字系统优化的基本方法
5.5.1 相同电路的处理
5.5.2 改变运算顺序优化电路
5.5.3 尽量进行常数运算
5.5.4 使用相同的运算电路
5.5.5 优化的必要性及其工程实际意义
5.6 数字系统设计中的几个工程实际问题
5.6.1 提高系统工作速度的方法
5.6.2 缩小电路规模和降低功耗的方法
5.6.3 系统误操作成因及其消除方法
5.6.4 非同步信号的控制方法
5.6.5 典型状态机状态编码的选择
第6章 典型EDA开发工具介绍
6.1 简介
6.2 MAX+Plus Ⅱ使用说明
6.2.1 MAX+Plus Ⅱ概况
6.2.2 建立和编辑一个VHDL语言的工程文件
6.2.3 VHDL语言程序的编译
6.2.4 VHDL语言程序的仿真
6.3 Active-HDL使用说明
6.3.1 Active-HDL概况
6.3.2 建立一个新的设计项目
6.3.3 文件的编译及结构管理
6.3.4 设计文件波形仿真
6.3.5 生成测试平台并单步跟踪文件
第7章 仿真、逻辑综合和下载
7.1 数字系统的仿真
7.1.1 仿真输入信息的产生
7.1.2 仿真模块的编写
7.1.3 仿真△
7.1.4 不同级别的仿真要求
7.2 数字系统的逻辑综合
7.2.1 RTL描述至未优化的布尔描述的转换
7.2.2 布尔优化描述
7.2.3 门级映射
7.3 数字系统的下载
7.3.1 下载前的准备
7.3.2 配置
第8章 数字系统检测与可检测性设计
8.1 组合逻辑检测
8.2 时序电路检测
8.3 扫描检测
8.4 边界扫描
8.5 内置自测试
第9章 SOC和硬件/软件协同设计技术
9.1 硬件/软件(HW/SW)协同设计概述
9.1.1 硬件/软件协同设计方法学
9.1.2 数字系统的设计流程
9.2 SOC的开发应用及IP技术
9.2.1 SOC的开发应用
9.2.2 IP核的开发应用
9.2.3 SOC的设计方法
9.3 可编程单片系统(SOPC)及其设计工具
9.3.1 SOPC概述
9.3.2 Altera的SOPC解决方案
9.3.3 Quartus Ⅱ设计软件
9.3.4 Sopc Builder自动设计工具
第10章数字系统设计实例
10.1 uART串行接口芯片设计实例
10.1.1 UART引脚及内部结构
10.1.2 串行数据传送格式及控制字和状态字
10.1.3 UART芯片功能算法流程图描述
10.1.4 UART芯片的算法状态机图描述
10.1.5 UART芯片的VHDL语言描述
lO.1.6 UART芯片的仿真
10.2 洗衣机洗涤控制电路设计实例
10.2.1 洗衣机洗涤控制电路的性能要求
10.2.2 洗衣机洗涤控制电路的结构
10.2.3 洗衣机洗涤控制电路的算法状态机图描述
10.2.4 洗衣机洗涤控制电路的VHDL语言描述
习题与思考题
参考文献
前言/序言
随着计算机技术和微电子技术的发展,ASIC(Application Specific Integrated Circuit)设计或单片系统(System on a Chip)设计已成为当前电子电路设计的重要课题。为适应这一新的技术发展变化,所有从事电子电路设计的工程技术人员,在专业知识上必须上一个新的台阶,即从利用中、小规模的集成电路芯片构成系统向单片系统设计过渡;从用人工画电原理图的设计方法向形式化电路描述(用HDL语言描述)和电子设计自动化(Electronic DesignAutomation)设计方法过渡;从自下而上(Bottom Up)设计方法向自上而下(Top Down)设计方法过渡。由于当前的ASIC顶层设计已可以做到与底层工艺设计无关,这样,电子电路系统设计就可以从ASIC设计技术中分离出来,形成一门相对独立的学科,这门学科就是现代电子设计技术。现代数字系统设计是该学科的一个重要分支,其内容主要包括:逻辑代数;硬件描述语言(Hardware Descryiption Language);组合电路和时序电路设计:数字系统设计方法及相关技术;数字系统硬件/软件协同设计(Hardware/Software Co-design);数字系统的检测等。为顺应这种技术发展的变化,使学生在本科学习期间初步掌握现代数字系统设计的基本方法和技术,我们修改了原“数字逻辑电路”课程的内容,将其扩充成两门课程:“数字系统设计基础”(包括原“数字逻辑电路”课程的内容)和“现代数字系统设计”;也可以扩充成三门课程:“数字逻辑电路”、“硬件描述语言与EDA设计”、“现代数字系统设计”。本教材是“现代数字系统设计”的新编教材,它是《数字系统设计基础》的后续教材。
本教材从系统角度出发,介绍了利用现代电子电路设计技术-EDA技术,自上而下地设计数字系统的方法和技巧,使读者能更好地适应21世纪日新月异的电子电路设计发展的要求。
本教材第1章、第2章、第9章由徐君国、殷伟凤编写,第3章、第4章、第5章、第7章、第8章、第10章由侯伯亨、刘高平、殷伟风编写,第6章由刘高平、李国胜编写。本教材在编写过程中引用了诸多学者和专家的著作和论文中的研究成果,在这里向他们表示衷心的感谢。同时得到了浙江万里学院教务处及屠处长的关心和支持,也得到了西安电子科技大学出版社领导、编辑及有关人员的大力支持和帮助。在这里一并向他们表示衷心的感谢。
本教材的编写是面向21世纪进行教学内容和教材改革的一次尝试,其中所涉及到的某些观点和内容安排肯定会有不成熟或有待于进一步完善的地方。由于编者水平有限,错误和不当之处在所难免,殷切希望广大读者给予批评指正。
编者
2003年9月1日于浙江万里学院
信号的逻辑王国:现代数字系统设计中的智慧之舞 在信息爆炸的时代,我们无时无刻不被数字信号所包围。从智能手机的便捷操作,到高性能计算机的强大运算,再到人工智能的深度学习,这一切的背后,都离不开对数字信号的精妙设计与控制。本书旨在揭示数字系统设计的核心奥秘,带领读者深入探索逻辑电路的广阔天地,理解如何将抽象的逻辑概念转化为驱动现代科技发展的坚实基石。 第一章:数字世界的基石——数制与编码 数字系统的核心在于“数”。本章将从最基础的数制系统讲起,深入剖析二进制、八进制、十进制和十六进制之间的转换原理,揭示它们在计算机内部的普遍应用。您将了解到,为什么计算机独钟情于0和1,以及这些看似简单的二进制数如何承载着无比丰富的信息。 随后,我们将探讨各种编码方式,包括无符号数、带符号数的表示(如原码、反码、补码)以及BCD码、ASCII码等字符编码。理解这些编码的内在逻辑,对于准确地存储、传输和处理数据至关重要。我们将通过大量实例,让您直观地感受不同编码方式的优势与劣势,并学会如何在实际设计中选择最合适的编码方案。 第二章:逻辑之舞——逻辑门与布尔代数 数字系统的基本构建单元是逻辑门,它们是执行逻辑运算的电子器件。本章将系统介绍与门、或门、非门、与非门、或非门、异或门和同或门等基本逻辑门的功能和符号表示。我们将通过真值表和波形图,直观地展示这些逻辑门的输入与输出关系。 在此基础上,我们将引入布尔代数这一强大的数学工具。布尔代数是描述和分析数字电路的语言,它为我们提供了化简逻辑表达式、优化电路设计的理论基础。您将学习到布尔代数的基本公理、定理以及常用的化简方法,如卡诺图(Karnaugh Map)和奎恩-麦克拉斯基(Quine-McCluskey)算法。通过对这些方法的熟练掌握,您将能够将复杂的逻辑功能转化为最精简、最高效的逻辑电路。 第三章:组合逻辑电路设计——瞬息万变的响应 组合逻辑电路由逻辑门组成,其输出仅取决于当前的输入状态,不受过去输入的影响。本章将深入讲解各类组合逻辑电路的设计方法,包括: 编码器与译码器: 如何将一种形式的编码转换为另一种形式,例如将键盘输入的按键信号转换为计算机可识别的二进制代码,或将二进制地址信号转换为特定的设备选择信号。 多路选择器(Multiplexer)与多路分配器(Demultiplexer): 如何根据控制信号选择一路输入数据传输到输出,或将一路输入数据分发到不同的输出,它们在数据选择、信号路由等方面发挥着关键作用。 加法器、减法器与比较器: 实现基本的算术运算和逻辑比较功能,是构成算术逻辑单元(ALU)的核心部件。我们将从半加器、全加器讲起,逐步构建出多位二进制加法器和减法器,并讨论进位传播等关键问题。 其他的组合逻辑电路: 如奇偶校验电路、代码转换器等,它们在数据完整性校验和不同代码系统间的转换中不可或缺。 本章强调从需求分析到逻辑功能描述,再到具体电路实现的完整设计流程,并通过实际案例展示如何将理论知识应用于解决具体问题。 第四章:时序逻辑电路设计——记忆与状态的延续 与组合逻辑电路不同,时序逻辑电路的输出不仅取决于当前的输入,还与电路过去的状态有关,即具有“记忆”功能。本章将重点介绍时序逻辑电路的基本单元和设计方法: 触发器(Flip-Flop): 这是构成时序逻辑电路最基本的存储单元,能够存储一位二进制信息。我们将详细讲解SR触发器、JK触发器、D触发器和T触发器的工作原理、状态转换图和状态表,并讨论主从触发器等改进型触发器。 寄存器(Register): 由多个触发器组成,用于存储多位二进制数据,是CPU中存储器和数据通路的重要组成部分。我们将介绍移位寄存器和并行寄存器的结构与应用。 计数器(Counter): 能够按照预设的顺序自动改变状态,实现对脉冲信号的计数。我们将学习同步计数器和异步计数器的设计,以及它们在分频、定时和序列发生器等方面的应用。 有限状态机(Finite State Machine, FSM): 是描述和设计复杂时序逻辑电路的强大模型。我们将区分摩尔(Moore)型和米利(Mealy)型有限状态机,学习如何根据状态图和状态表设计相应的时序逻辑电路。 本章将带领您理解时序逻辑电路如何构建具有记忆和状态转移功能的系统,为后续更复杂的数字系统设计奠定基础。 第五章:半导体存储器——信息的殿堂 在数字系统中,信息的存储至关重要。本章将深入探讨各种半导体存储器的结构、工作原理和应用: 随机存储器(RAM): 包括静态RAM(SRAM)和动态RAM(DRAM)。我们将分析它们的电路结构,理解为何SRAM速度快但成本高,而DRAM存储密度大但需要刷新。 只读存储器(ROM): 包括掩膜ROM(MROM)、可编程ROM(PROM)、可擦写可编程ROM(EPROM)和电可擦可编程ROM(EEPROM)以及闪存(Flash Memory)。我们将讨论它们的读写特性,以及在固件存储、查找表等方面的应用。 存储器的组织与接口: 如何将多个存储芯片组合成更大的存储系统,以及如何与CPU进行数据交互。 本章将帮助您理解不同类型存储器的优劣势,以及在系统设计中如何根据性能、容量和成本需求进行选择。 第六章:微处理器与微控制器——数字系统的核心 微处理器(CPU)是数字系统的“大脑”,而微控制器(MCU)则是在微处理器基础上集成外设的嵌入式系统核心。本章将: 剖析微处理器的基本结构: 包括算术逻辑单元(ALU)、控制器单元(CU)、寄存器组和总线接口。我们将简要介绍指令集架构(ISA)的概念,了解CPU如何执行指令。 介绍微控制器的组成: 除了CPU核心,还包括各种I/O接口、定时器、中断控制器、ADC/DAC等。我们将分析微控制器在嵌入式系统设计中的核心作用。 了解总线系统: 包括地址总线、数据总线和控制总线,它们是CPU与存储器及外设之间进行信息交换的通道。 本章将为您打开通往计算机系统硬件设计的大门,理解CPU和MCU如何协调工作,驱动复杂的数字应用。 第七章:数字信号处理基础——从连续到离散的转化 数字信号处理(DSP)是现代数字系统设计的关键分支。本章将介绍DSP的基本概念和常用技术: 采样定理(Nyquist-Shannon Sampling Theorem): 理解为何需要以至少两倍于最高频率的采样率进行采样,才能无损地将模拟信号转换为数字信号。 数字滤波: 包括FIR(有限冲击响应)滤波器和IIR(无限冲击响应)滤波器。我们将介绍它们的数学模型和设计方法,以及在信号去噪、增强等方面的应用。 离散傅里叶变换(DFT)与快速傅里叶变换(FFT): 如何将时域信号转换为频域信号,从而分析信号的频率成分。FFT算法的引入将极大提高计算效率。 本章将为您揭示数字信号处理的魅力,让您理解如何用数字技术处理和分析现实世界中的模拟信号。 第八章:可编程逻辑器件(PLD)与硬件描述语言(HDL)——现代设计的利器 进入二十一世纪,可编程逻辑器件(PLD)已经成为实现数字系统设计的首选方案。本章将重点介绍: PLD的种类: 包括CPLD(复杂可编程逻辑器件)和FPGA(现场可编程门阵列)。我们将深入分析它们的内部结构、编程方式和应用场景。 硬件描述语言(HDL): 如Verilog和VHDL。我们将介绍HDL作为一种高级语言,如何描述数字电路的行为和结构。通过HDL,我们可以抽象地设计复杂的数字逻辑,然后由工具链自动综合生成硬件电路。 HDL的设计流程: 包括代码编写、仿真验证、综合、布局布线以及下载到PLD器件。我们将强调仿真在设计流程中的重要性,确保设计的正确性。 本章将带领您掌握现代数字系统设计的核心工具,学会用HDL语言描述您的设计理念,并将其转化为实际运行的硬件。 第九章:数字系统设计实践——从概念到实现的飞跃 理论学习需要实践的检验。本章将通过一系列具有代表性的数字系统设计案例,巩固和深化前面所学的知识: 简单的计算器设计: 结合组合逻辑和时序逻辑,设计一个能够进行基本算术运算的计算器。 数字时钟设计: 利用计数器和时序逻辑,实现一个能够显示时间、设置闹钟功能的数字时钟。 交通灯控制器设计: 运用有限状态机,设计一个能够模拟真实交通灯运行规律的控制器。 简单的ADC/DAC接口设计: 学习如何将模拟信号转换为数字信号,或将数字信号转换为模拟信号,实现数字与模拟世界的交互。 每一个案例都将遵循从需求分析、功能划分、模块设计、HDL实现到仿真验证的完整流程,让您亲身感受设计一个完整数字系统的乐趣与挑战。 第十章:数字系统测试与验证——确保可靠性的基石 一款成功的数字系统,其可靠性至关重要。本章将聚焦于数字系统的测试与验证方法: 测试的重要性与挑战: 为什么需要进行严格的测试,以及数字系统测试面临的复杂性。 功能测试: 根据设计规格,验证系统是否能正确实现各项功能。 时序测试: 确保电路在预定的时钟频率下能够稳定运行,避免时序违例。 故障诊断与修复: 学习如何定位和修复电路中的错误。 验证方法: 包括静态时序分析(STA)、形式验证和验证平台的设计。 本章将强调“验证先行”的理念,教会您如何系统地测试和验证您的设计,从而提高产品的质量和可靠性。 结语 数字系统设计是一个充满挑战与创造力的领域,它构成了我们数字世界赖以生存的基础。本书力求以清晰的逻辑、严谨的理论和丰富的实践案例,引领您穿越数字信号的层层迷雾,掌握现代数字系统设计的精髓。无论您是初学者还是希望深化理解的工程师,都能从中获得宝贵的知识和启发,为在这个日新月异的数字时代中,构建更智能、更高效的未来贡献力量。