
本书为普通高等教育“十一五”国家级规划教材。本书阐述数字系统设计方法和可编程逻辑器件PLD的应用技术。引导读者从一般的数字功能电路设计转向数字系统设计;从传统的非定制通用集成电路的应用转向用户半定制的PLD的应用;从单纯的硬件设计转向硬件、软件高度渗透的设计方法。从而了解数字技术的新发展、新思路、新器件,拓宽软、硬件设计的知识面,提高设计能力。本书是编者在汇总了多年从事数字系统设计和PLD应用技术教学及科研成果的基础上编写的,取材丰富,概念清晰,既有较高的起点和概括,也有很好的实用和参考价值。
前 言 本书是《数字电路与逻辑设计》专业基础课后续必修或选修课程的教材,主要阐述数字 系统设计方法和PLD应用技术,目的是引导学生和读者从功能电路设计转向系统设计;由 传统的通用集成电路的应用转向可编程逻辑器件的应用;从硬件设计转向硬件、软件高度渗 透的设计,从而拓宽数字技术知识面和设计能力。 现今VLSI技术发展迅速,采用专用集成电路ASIC实现系统已成趋势。作为ASIC的一个重要分支——PLD,它在数字系统研制阶段或小批量生产中有着设计灵活、修改快捷、使用方便、研制周期短和成本较低等优越性,是一种有现实意义的系统设计途径。大部分高等院校均把PLD纳入相关课程的教学计划,为此探讨较好的设计方法和应用技术有其必要性和实用性。对于广大正在探讨和应用PLD的电子设计人员和其他科技工作者也有很好的参考价值。 随着PLD技术的进展和软件开发系统的日益完善,设计人员的主要任务已成为:如何把由文字说明的系统功能转换为逻辑描述(即算法),进而采用一定的描述工具(算法流程图、VHDL语言等)建立系统描述模型,并选择适当的PLD器件、采用相应的软件开发系统来实现待设计系统。本书正是致力于上述内容的讨论,力求提高读者的系统逻辑设计和工程设计能力。 本书分为数字系统设计和PLD应用技术两大部分,全书共7章。第1章介绍数字系统基本模型、基本结构和设计步骤,重点介绍了系统设计的基本方法。还介绍了数字系统描述的一种最常用的工具算法流程图。 第2章讨论系统的算法设计和算法结构。在介绍若干种算法设计方法时,既借鉴软件设计中的算法推导方法,又详述硬件设计中算法设计的特征。本章还详细讨论了组成系统的两大部分:数据处理单元和控制单元的设计和采用通用集成电路的实现方法。 第3章简明介绍数字系统描述工具VHDL语言的基本概念、语法特征和应用实例。使读者对VHDL有大致的了解。 第4章阐述PLD原理和应用。主要内容为简单PLD(SPLD)的原理、组成和应用,包括PROM、PLA、PAL和GAL等。本章之末给出采用GAL实现系统的实例。 在第4章的基础上,第5章介绍了高密度PLD(HDPLD)及其应用。给出了HDPLD分类方法,详述了HDPLD的组成,包括阵列扩展型CPLD、单元型CPLD、SRAM型FPGA和多路开关型FPGA等。还介绍了HDPLD的主要编程技术:isp、icr和Antifuse技术等。对各种软件开发系统进行了综述,期盼给读者较全面的HDPLD应用知识。 第6章给出了7个采用HDPLD设计数字系统的实例,这些实例由简到繁、由易到难,均来自于科研,并在教学实践中得到成功应用,有很好的参考价值。 第7章简明介绍全定制集成电路设计技术,作为引导广大读者了解全定制ASIC设计的入门知识。 本书各章有大量实例和习题,可供读者实践和思考。附录A提供PLD主要生产商的最新典型器件的介绍,包括Lattice、Altera、Xilinx和Actel公司的各种CPLD和FPGA产品。附录B是典型软件开发系统MAX+plusⅡ的简明介绍,为读者了解软件开发系统提供方便。 编者在撰写本书时,力求内容充实,重点突出,尤其注重引导初学者尽快入门,通过由浅入深、循序渐进的阐述,理论、习题与实例的紧密结合,使读者获得基本技术和技能的训练。 本书是高等院校电子类、计算机类和相关专业的本科教学的教材或参考书,也可作为研究生相关教学的参考书,同时也适用于广大的电子设计人员和科技工作者。 本书由蒋璇任主编。蒋璇、臧春华共同完成。其中第1、2、4、5章由蒋璇编写,第3、7章由臧春华编写,第6章由蒋璇、臧春华编写。 本书承西安电子科技大学傅丰林教授和北京邮电大学赵尔沅教授审阅,并提出了许多宝贵的修改意见,在此表示最衷心的感谢。 在编写本书过程中,得到了南京航空航天大学许多老师和同学的支持和帮助。国家教委电子线路教学指导小组成员、南航沈嗣昌教授自始至终全力支持,具体帮助,对全书内容不仅给予关键性的指导,而且提出了详尽的修改意见。研究生范渊、董乔忠、周小林、戎舟、李岳衡、李明等同学参加课题研究和实验,范渊和董乔忠同学还协助绘图和整理资料;曹蓉琛、钱梅雪、石烽、余慧敏等同志均给予大力协助,在此表示最诚挚的谢意。 在成书过程中,还获得Lattice、Altera、Xilinx和Actel等公司有关机构的热情支持,在此一并表示感谢。 由于编者水平所限,书中的疏漏和错误在所难免,恳请读者批评指正。 作 者 于南京航空航天大学 2000年9月
第1章 数字系统设计方法 1.1 绪言 1.1.1 数字系统的基本概念 1.1.2 数字系统的基本模型 1.1.3 数字系统的基本结构 1.2 数字系统设计的一般步骤 1.2.1 引例 1.2.2 数字系统设计的基本步骤 1.2.3 层次化设计 1.3 数字系统设计方法 1.3.1 自上而下的设计方法 1.3.2 自下而上的设计方法 1.3.3 基于关键部件的设计方法 1.3.4 信息流驱动的设计方法 1.4 数字系统的描述方法之一算法流程图 1.4.1 算法流程图的符号与规则 1.4.2 设计举例 习题1 第2章 数字系统的算法设计和硬件实现 2.1 算法设计 2.1.1 算法设计综述 2.1.2 跟踪法 2.1.3 归纳法 2.1.4 划分法 2.1.5 解析法 2.1.6 综合法 2.2 算法结构 2.2.1 顺序算法结构 2.2.2 并行算法结构 2.2.3 流水线算法结构 2.3 数据处理单元的设计 2.3.1 系统硬件实现概述 2.3.2 器件选择 2.3.3 数据处理单元设计步骤 2.3.4 数据处理单元设计实例 2.4 控制单元的设计 2.4.1 系统控制方式 2.4.2 控制器的基本结构和系统同步 2.4.3 算法状态机图(ASM图) 2.4.4 控制器的硬件逻辑设计方法 习题2 第3章 硬件描述语言VHDL和VerilogHDL 3.1 概述 3.2 VHDL及其应用 3.2.1 VHDL基本结构 3.2.2 数据对象、类型及运算符 3.2.3 顺序语句 3.2.4 并行语句 3.2.5 子程序 3.2.6 程序包与设计库 3.2.7 元件配置 3.2.8 VHDL描述实例 3.3 VerilogHDL及其应用 3.3.1 VerilogHDL基本结构 3.3.2 数据类型、运算符与表达式 3.3.3 行为描述语句 3.3.4 并行语句 3.3.5 结构描述语句 3.3.6 任务与函数 3.3.7 编译预处理 3.3.8 VerilogHDL描述实例 习题3 第4章 可编程逻辑器件PLD原理和应用 4.1 PLD概述 4.2 简单PLD原理 4.2.1 PLD的基本组成 4.2.2 PLD的编程 4.2.3 阵列结构 4.2.4 PLD中阵列的表示方法 4.3 SPLD组成和应用 4.3.1 只读存储器ROM 4.3.2 可编程逻辑阵列PLA 4.3.3 可编程阵列逻辑PAL 4.3.4 通用阵列逻辑GAL 4.3.5 GAL应用举例 4.4 采用SPLD设计数字系统 4.4.1 采用SPLD实现系统的步骤 4.4.2 设计举例 4.4.3 采用SPLD设计系统的讨论 习题4 第5章 高密度PLD及其应用 5.1 HDPLD分类 5.2 HDPLD组成 5.2.1 阵列扩展型CPLD 5.2.2 现场可编程门阵列(FPGA) 5.2.3 延迟确定型FPGA 5.2.4 多路开关型FPGA 5.3 HDPLD编程技术 5.3.1 在系统可编程技术 5.3.2 在电路配置(重构)技术 5.3.3 反熔丝(Antifuse)编程技术 5.4 HDPLD开发平台 5.4.1 HDPLD开发系统的基本工作流程 5.4.2 HDPLD开发系统的库函数 5.5 当前常用可编程逻辑器件及其开发工具 5.5.1 Lattice公司的CPLD/FPGA与开发软件 5.5.2 Altera公司的CPLD/FPGA及开发工具 5.5.3 Xilinx公司的CPLD/FPGA和开发平台 5.5.4 用于CPLD/FPGA的IP核 习题5 第6章 采用HDPLD设计数字系统实例 6.1 高速并行乘法器的设计 6.1.1 算法设计和结构选择 6.1.2 器件选择 6.1.3 设计输入 6.1.4 芯片引脚定义 6.1.5 逻辑仿真 6.1.6 目标文件产生和器件下载 6.2 十字路口交通管理器的设计 6.2.1 交通管理器的功能 6.2.2 系统算法设计 6.2.3 设计输入 6.3 九九乘法表系统的设计 6.3.1 系统功能和技术指标 6.3.2 算法设计 6.3.3 数据处理单元的实现 6.3.4 设计输入 6.3.5 系统的功能仿真 6.4 FIFO(先进先出堆栈)的设计 6.4.1 FIFO的功能 6.4.2 算法设计和逻辑框图 6.4.3 数据处理单元和控制器的设计 6.4.4 设计输入 6.4.5 用VerilogHDL进行设计 6.4.6 仿真验证 6.5 数据采集和反馈控制系统的设计 6.5.1 系统设计要求 6.5.2 设计输入 6.6 FIR有限冲激响应滤波器的设计 6.6.1 FIR结构简介 6.6.2 设计方案和算法结构 6.6.3 模块组成 6.6.4 FIR滤波器的扩展应用 6.6.5 设计输入 6.6.6 设计验证 6.7 UART接口设计 6.7.1 UART组成与帧格式 6.7.2 顶层模块的描述 6.7.3 发送模块设计 6.7.4 接收模块设计 6.7.5 仿真验证 6.8 简单处理器的设计 6.8.1 系统功能介绍 6.8.2 处理器硬件系统 6.8.3 处理器指令系统 6.8.4 处理器硬件系统的设计和实施 6.8.5 设计输入 6.8.6 系统功能仿真 习题6 第7章 可编程片上系统(SOPC) 7.1 概述 7.2 基于MicroBlaze软核的嵌入式系统 7.2.1 Xilinx的SOPC技术 7.2.2 MicroBlaze处理器结构 7.2.3 MicroBlaze信号接口 7.2.4 MicroBlaze软硬件设计流程 7.3 基于NiosⅡ软核的SOPC 7.3.1 Altera的SOPC技术 7.3.2 NiosⅡ处理器 7.3.3 Avalon总线架构 7.3.4 NiosⅡ软硬件开发流程 7.4 设计实例 7.4.1 设计要求 7.4.2 运行QuartusⅡ并新建设计工程 7.4.3 创建一个新的SOPCBuilder系统 7.4.4 在SOPCBuilder中定义NiosⅡ系统 7.4.5 在SOPCBiulder中生成NiosⅡ系统 7.4.6 将NiosⅡ系统集成到QuartusⅡ工程中 7.4.7 用NiosⅡIDE开发软件 习题7 第8章 上机实验 实验1 逻辑门实现组合电路 一、实验目的 二、实验内容 三、注意事项 实验2 数据选择器或译码器实现组合电路 一、实验目的 二、实验原理 三、实验内容 四、注意事项 实验3 码制变换器 一、实验目的 二、实验内容 三、注意事项 实验4 序列发生器 一、实验目的 二、实验原理 三、实验内容 四、注意事项 实验5 序列检测器 一、实验目的 二、实验原理 三、实验内容 实验6 控制器的设计 一、实验目的 二、实验原理 三、实验内容 实验7 脉冲分配器 一、实验目的 二、实验原理 三、实验内容 实验8 十字路口交通管理器 一、实验目的 二、实验内容 三、实验要求 实验9 UART接口设计 一、实验目的 二、实验内容 实验10 简单处理器VHDL设计的完成 一、实验目的 二、实验内容 三、实验要求 附录A HDPLD典型器件介绍 A.1 器件封装形式说明 A.2 Altera公司典型器件 A.3 Xilinx公司典型器件 A.4 Lattice公司典型器件 A.5 Actel公司典型器件 附录B PLD开发软件QuartusⅡ8.0简介 B.1 概述 B.2 用QuartusⅡ进行设计的一般过程 B.3 设计输入 B.4 编译 B.5 仿真验证 B.6 时序分析 B.7 底层图编辑 B.8 下载 B.9 “Settings”对话框 B.10 QuartusⅡ中的库元件 参考文献