内容简介
本书基于台湾友晶科技DE0开发板实验平台,介绍了Altera Quartus Ⅱ EDA软件及Nios Ⅱ EDS嵌入式设计软件的基本应用。全书共6章:第1章介绍了台湾友晶科技DE0开发板、硬件描述语言及基本的EDA设计方法及相关工具软件;第2章介绍了基于FPGA的嵌入式开发工具Nios Ⅱ-Eclipse,并给出了详细的设计实例;第3章为EDA初级实验项目及其实现方法;第4章为EDA中级实验项目及其实现方法;第5章为EDA提高实验项目及其实现方法;第6章为EDA实验项目推荐等。
本书对于EDA技术的介绍比较全面,结构安排由浅入深,可作为电子工程、通信工程、自动控制、电子科学与技术、电气信息工程、微电子等专业专科、本科及研究生数字电路与EDA相关课程的实验教材及课程设计的参考书,还可作为电子类设计大赛学生的设计参考书,或相关工程技术人员的参考书。
目录
第1章 EDA硬件开发平台与开发工具
1.1 硬件开发平台简介
1.1.1 Cyclone Ⅲ FPGA简介
1.1.2 台湾友晶科技DE0 FPGA开发板
1.1.3 台湾友晶科技DE0开发板的应用
1.2 硬件描述语言
1.2.1 VHDL简介
1.2.2 Verilog HDL关键语法
1.2.3 HDL的编程技术
1.3 Quartus Ⅱ 13.0 EDA软件应用
1.3.1 创建新工程
1.3.2 建立原理图编辑文件
1.3.3 建立文本编辑文件
1.3.4 建立存储器编辑文件
1.3.5 设计实例
1.3.6 项目综合
1.3.7 Quartus Ⅱ编译器选项设置
1.3.8 引脚分配
1.3.9 项目编译结果分析
1.3.10 项目程序下载编程
1.4 ModelSim-Altera 10.1d简介
1.4.1 ModelSim软件架构
1.4.2 ModelSim软件仿真应用实例
1.5 FPGA调试工具SignalTap Ⅱ应用
1.5.1 在设计中嵌入SignalTap Ⅱ逻辑分析仪
1.5.2 使用SignalTap Ⅱ进行编程调试
1.5.3 查看SignalTap Ⅱ调试波形
第2章 基于FPGA的嵌入式开发工具
2.1 Qsys系统开发工具
2.1.1 Qsys与SOPC简介
2.1.2 Qsys系统主要界面
2.2 Nios Ⅱ嵌入式软核及开发工具介绍
2.2.1 Nios Ⅱ嵌入式处理器
2.2.2 Nios Ⅱ嵌入式处理器软硬件开发流程
2.3 FPGA嵌入式系统设计实例
2.3.1 实例系统软硬件需求分析与设计规划
2.3.2 实例系统硬件部分设计
2.3.3 实例系统Nios Ⅱ嵌入式软件设计
第3章 EDA初级实验
3.1 流水灯实验
3.1.1 实验要求
3.1.2 实验基本要求的设计示例
3.2 计时器实验
3.2.1 实验要求
3.2.2 实验基本要求的设计示例
3.3 单稳态触发器实验
3.3.1 实验要求
3.3.2 实验基本要求的设计示例
3.4 脉宽调制(PWM)实验
3.4.1 实验要求
3.4.2 实验基本要求的设计示例
3.5 直接数字频率合成(DDS)波形发生器实验
3.5.1 实验要求
3.5.2 实验基本要求的设计示例
第4章 EDA中级实验
4.1 呼吸流水灯实验
4.1.1 实验要求
4.1.2 实验基本要求的设计示例
4.2 通用异步串行收发(UART)实验
4.2.1 实验要求
4.2.2 实验基本要求的设计示例
第5章 EDA提高实验
5.1 VGA视频信号产生实验
5.1.1 设计原理
5.1.2 VGA同步信号产生
5.1.3 字符的视频显示设计
5.1.4 跳动的矩形块视频显示设计
5.2 Qsys用户自定制外设实验
5.2.1 Qsys用户自定制元件说明
5.2.2 Qsys自定义资源库组件实例-DDS信号产生模块
5.3 PS/2键盘接口的FPGA设计
5.3.1 PS/2连接器接口
5.3.2 键盘扫描编码介绍
5.3.3 PS/2串行数据传输
5.3.4 用FPGA实现PS/2键盘接口通信的VHDL设计
5.3.5 PS/2设计实例
第6章 EDA实验项目推荐
6.1 自动售货机控制系统设计
6.1.1 设计要求
6.1.2 设计分析
6.2 PS/2键盘接口控制器设计
6.2.1 设计要求
6.2.2 设计分析
6.3 VGA图像显示控制系统设计
6.3.1 设计要求
6.3.2 设计分析
6.4 基于FPGA的电梯控制系统设计
6.4.1 设计要求
6.4.2 设计分析
6.5 洗衣机洗涤控制系统设计
6.5.1 设计要求
6.5.2 设计分析
6.6 基于FPGA的多路数据采集系统设计
6.6.1 设计要求
6.6.2 设计分析
6.7 综合设计报告参考格式
6.7.1 报告封面格式
6.7.2 报告正文格式
6.7.3 报告附录格式
6.7.4 报告的其他部分格式
附录
附录1 Verilog HDL中常用运算符
附录2 VHDL中常用运算符
附录3 DE0开发板引脚分配表
附录4 DE0开发板原理图
参考文献
前言/序言
西安电子科技大学国家电工电子教学基地(国家级教学实验中心)EDA实验室创建于1997年,在创建之初就得到了Altera公司、Xilinx公司等可编程器件厂商的大力支持。为了适应新技术的发展,2006年EDA实验室正式挂牌为“西电—AlteraEDA/SOPC联合实验室及培训中心”,EDA实验室的校级选修课“高密度在系统可编程技术及应用”课程作为电子工程学院所有专业学生的必修课,更名为“数字电路与EDA实验”。每年有上千名学生在EDA实验室学习FPGA设计技术,有近10位教师负责不同专业学生的授课。经过多年的授课实践及教学讨论,为了进一步规范该课程的教学内容,我们特编写了本书。本书也是学校教材立项重点建设教材。
本书内容编排如下:
第1章介绍了EDA设计的硬件开发平台与开发工具。本书所有设计实例工程都基于台湾友晶科技的DE0开发板,因此本章介绍了DE0开发板的主要资源及CylconeⅢFPGA。本章还介绍了VHDL和Verilog基本编程结构和语法,QuartusⅡEDA软件的完整设计过程,并给出了一个完整的DDS信号发生器设计实例。ModelSim-Altera仿真工具以及SignalTapⅡ嵌入式逻辑分析仪FPGA调试工具也在本章中给出了简单的介绍。第2章介绍了基于FPGA的嵌入式开发工具,包括Qsys系统综合工具,NiosⅡ嵌入式软核及其开发软件NiosⅡ-Eclipse,最后给出了一个完整的基于NiosⅡ控制的DDS信号发生器实例。第3章为EDA初级实验,给出了5个完整的实验设计。第4章为EDA中级实验,给出了2个完整的中级难度实验。第5章为EDA提高实验,给出了3个具有一定难度的设计实验。第6章给出了6个推荐的EDA实验项目,其中只给出了设计要求及简单的设计分析;同时给出了EDA综合设计报告的参考格式,供读者在编写综合设计报告时参考。附录部分给出了VHDL和Verilog编程中常用的逻辑符号,以及台湾友晶科技DE0开发板的FPGA引脚分配表和原理图。本书中DDS设计实例贯穿始终,从最基本的DDS信号产生原理图设计到作为软核NiosⅡ处理器外设的Qsys自定制外设控制,读者可以根据实例体会整个AlteraEDA工具的设计思想和流程。
任爱锋编写了本书的第1、2、5、6章和附录,并负责统筹全稿;袁晓光编写了第3、4章。西安电子科技大学的孙肖子教授在百忙之中审阅了全书并提出了许多宝贵的建议和修改意见,在此表示诚挚的谢意。此外,实验中心的王爽教授、周佳社教授对本书的编排给予了大力支持和帮助,在此一并表示感谢。
由于编者水平有限,书中难免有疏漏和不妥之处,恳请读者批评指正。
编者
2017年3月15日
《精通数字逻辑设计:理论、工具与实践》 内容概述: 本书旨在为读者提供一个全面而深入的数字逻辑设计学习体验,涵盖从最基础的布尔代数原理到复杂的现场可编程门阵列(FPGA)和专用集成电路(ASIC)设计流程。全书围绕“理论、工具与实践”三个核心维度展开,力求打通理论知识与工程实践之间的鸿沟,帮助读者掌握现代数字电路设计所需的关键技能。 第一部分:数字逻辑设计基础理论 本部分将系统梳理数字逻辑设计的基石,为后续深入学习奠定坚实的基础。 绪论: 介绍数字电路的起源、发展历程及其在现代科技中的重要地位。阐述数字逻辑设计的核心思想,即用离散的、有限的状态来表示和处理信息,并展望未来数字电路设计的趋势。 数制与编码: 详细讲解二进制、十进制、十六进制等常用数制及其相互转换。深入探讨各种编码方式,包括格雷码、BCD码、ASCII码等,以及它们在数据表示中的应用。 布尔代数与逻辑门: 这是数字逻辑设计的核心。我们将从布尔代数的基本公理和定理入手,讲解逻辑与、逻辑或、逻辑非、逻辑与非、逻辑或非、异或等基本逻辑运算。在此基础上,详细介绍基本逻辑门(AND, OR, NOT, NAND, NOR, XOR, XNOR)的功能、真值表、逻辑符号和集成电路实现。 组合逻辑电路设计: 学习如何使用卡诺图(Karnaugh Map)、布尔代数化简法等方法来优化和简化逻辑函数。掌握组合逻辑电路的基本构建模块,如加法器(半加器、全加器)、减法器、比较器、编码器、译码器、数据选择器(Multiplexer)、数据分配器(Demultiplexer)等,并深入分析它们的设计原理和应用场景。 时序逻辑电路设计: 引入时间维度的概念,讲解触发器(Flip-Flop)的基本原理,包括SR触发器、JK触发器、D触发器、T触发器,以及它们的时钟控制、状态转移图和时序图。在此基础上,设计和分析寄存器(Register)、移位寄存器(Shift Register)、计数器(Counter,如同步计数器、异步计数器、环形计数器、约翰逊计数器)等基本时序电路。 有限状态机(FSM)设计: 学习如何使用摩尔(Moore)型和米利(Mealy)型有限状态机模型来描述和设计复杂的控制器。掌握状态图、状态表和状态编码的设计方法,并将其应用于实际的控制逻辑设计中。 半导体存储器: 介绍存储器的基本概念,包括随机存取存储器(RAM)和只读存储器(ROM)。深入讲解SRAM、DRAM、PROM、EPROM、EEPROM、Flash Memory等不同类型的存储器的工作原理、结构和应用。 数字电路时序分析: 讲解时钟信号、时钟频率、时钟周期、建立时间(Setup Time)、保持时间(Hold Time)等关键时序参数。分析亚稳态(Metastability)的产生原因及其解决方法。理解时序约束在实际电路设计中的重要性。 第二部分:EDA工具与硬件描述语言(HDL) 本部分将聚焦于现代数字电路设计中不可或缺的电子设计自动化(EDA)工具和硬件描述语言(HDL)。 EDA工具概述: 介绍EDA工具在数字设计流程中的作用,包括仿真、综合、布局布线、验证等关键环节。详细介绍常用的EDA工具套件,如Xilinx Vivado、Intel Quartus Prime等,以及它们提供的功能模块。 Verilog HDL入门: 学习Verilog HDL的基本语法和设计结构。掌握模块(Module)的定义、端口(Port)声明、信号(Wire, Reg)类型、运算符、赋值语句(Blocking, Non-blocking)、条件语句(if-else, case)、循环语句(for, while)等。 Verilog HDL高级应用: 学习如何使用Verilog HDL描述组合逻辑和时序逻辑电路。掌握生成器(Generate)语句、任务(Task)和函数(Function)的使用。深入理解如何通过Verilog HDL模型进行行为级仿真,验证设计的功能正确性。 VHDL入门(可选/对比): (若篇幅允许或为提供更广阔视野)简要介绍VHDL语言的特点和基本语法,与Verilog HDL进行对比,说明两种语言在设计风格上的差异及其适用场景。 逻辑综合: 讲解逻辑综合的概念和目标,即将HDL代码转换为门级网表(Netlist)。介绍综合工具的工作原理,以及如何优化综合结果以满足时序、面积和功耗等约束。 仿真与验证: 强调仿真在数字设计流程中的关键作用。学习如何编写测试平台(Testbench)来激励被测设计(DUT)并检查其输出。介绍不同类型的仿真,如行为级仿真、门级仿真。讲解覆盖率(Coverage)的概念及其重要性。 第三部分:FPGA与ASIC设计实践 本部分将引导读者将理论知识和EDA工具的应用转化为实际的硬件设计。 FPGA体系结构与工作原理: 介绍FPGA(现场可编程门阵列)的基本结构,包括查找表(LUT)、触发器、可编程互连资源、DSP块、Block RAM等。讲解FPGA的工作流程,即从HDL代码到最终在FPGA芯片上实现的过程。 FPGA设计流程: 详细讲解使用EDA工具进行FPGA设计的完整流程,包括项目创建、HDL代码编写、仿真验证、综合、适配(Place & Route)、时序分析、比特流生成以及下载到FPGA板进行硬件调试。 常用FPGA设计实例: 通过一系列具体实例,指导读者动手实践。例如: LED闪烁控制:实现简单的时序控制,学习基本IO操作。 按键消抖与状态机控制:设计带有输入处理和状态切换的复杂控制器。 UART串口通信:实现数据串行传输,学习协议的实现。 SPI/I2C总线接口:掌握与外部器件的通信接口设计。 简单CPU核的设计与实现(可选,根据篇幅和难度):引导读者理解CPU的基本结构和指令执行流程。 ASIC设计流程简介(对比FPGA): 简要介绍ASIC(专用集成电路)的设计流程,包括前端设计(RTL设计、仿真、综合)和后端设计(物理综合、布局布线、版图设计、制造)。对比FPGA和ASIC在设计成本、性能、功耗、灵活性等方面的优劣,帮助读者理解何时选择哪种设计方案。 调试与优化: 讲解在硬件实现过程中遇到的常见问题,如时序违例、逻辑错误、功耗过高等,并提供相应的调试方法和优化策略。介绍板级调试工具,如逻辑分析仪、示波器在硬件验证中的应用。 高级主题(可选): 根据读者的需求和兴趣,可拓展介绍一些高级主题,例如: 低功耗设计技术。 时钟管理和PLL/MMCM的使用。 中断控制器设计。 IP核的使用和设计。 SoC(System-on-Chip)设计概念。 本书特点: 理论与实践紧密结合: 每一章的理论讲解都配以相应的EDA工具操作指南和实例,确保读者在学习理论的同时,能够立即动手实践,加深理解。 循序渐进的学习路径: 从基础概念入手,逐步深入到复杂的系统设计,适合不同层次的读者。 强调动手能力培养: 提供大量设计实例,鼓励读者通过编写HDL代码、运行仿真、实现硬件等方式,真正掌握数字逻辑设计的技能。 覆盖现代设计流程: 重点介绍以HDL为中心的EDA工具链,使读者能够快速适应当前数字电路设计的行业标准。 注重工程思维: 强调设计中的权衡,如性能与功耗、面积与速度的折衷,培养读者的工程实践能力。 目标读者: 本书适合于高等院校电子工程、计算机科学、自动化等相关专业的本科生、研究生,以及从事数字电路设计、FPGA开发、ASIC设计的工程师和技术爱好者。对于希望系统学习数字逻辑设计理论和实践技能的初学者,本书也将是一个理想的学习资源。 阅读本书,您将能够: 深刻理解数字逻辑电路的基本原理。 熟练掌握Verilog HDL等硬件描述语言。 掌握使用主流EDA工具进行数字电路设计、仿真和验证的方法。 独立完成中小型FPGA设计项目。 为进一步学习更复杂的数字系统设计打下坚实基础。