编辑推荐
特权同学FPGA全新力作,面向FPGA/CPLD初学者,实例丰富,深入浅出,带您轻松入门!
配套资源丰富,可通过网站论坛和书友会与作者互动,为您的后续学习提供强有力的资源!
Altera公司大学计划中国区经理 作序推荐!
内容简介
《电子设计与嵌入式开发实践丛书:FPGA设计实战演练(逻辑篇)》面向广大的FPGA/CPLD初学者,从零基础开始讲述FPGA/CPLD以及相关的基础知识,并以一个支持各种入门、进阶的子母板形式的学习套件为实验平台,针对Altera公司的Cyclone Ⅲ器件量身打造的24个应用实例贯穿其中。实例讲解深入浅出,不仅有基本的Verilog语法讲解,也有设计思路和背景知识的详细描述; 开发工具(Quartus Ⅱ+ModelSim)的使用更是手把手、图文并茂地展示给读者。
《电子设计与嵌入式开发实践丛书:FPGA设计实战演练(逻辑篇)》内容由浅入深,很适合广大可编程逻辑器件的初学者作为入门和进阶的教材,也适合作为电子信息、计算机等专业本科生、研究生以及具有一定电子专业知识背景的电子工程师的参考用书。
内页插图
目录
第1章 概念扫盲
1.1 FPGA简单入门
1.2 FPGA应用领域
1.3 FPGA的优势
1.4 开发流程
思考
第2章 逻辑设计基础
2.1 0和1——精彩世界由此开始
2.2 表面现象揭秘——逻辑关系
2.3 内里本质探索——器件结构
思考
第3章 实验平台板级设计
3.1 FPGA板级电路设计五要素
3.1.1 能量供应——电源电路
3.1.2 心脏跳动——时钟电路
3.1.3 状态初始——复位电路
3.1.4 灵活定制——配置电路
3.1.5 自由扩展——外设电路
3.2 FPGA核心板设计
3.2.1 读懂器件手册
3.2.2 核心板电路设计架构
3.2.3 电源电路设计
3.2.4 时钟和复位电路设计
3.2.5 配置电路设计
3.2.6 SDRAM电路设计
3.2.7 引脚分配规划和扩展I/O电路
3.3 扩展子板设计
3.3.1 基本外设子板
3.3.2 LCD显示驱动子板
3.3.3 VGA显示驱动子板
3.3.4 USB和UART串口子板
3.3.5 超声波与视频采集子板
思考
第4章 开发工具简介
4.1 软件下载和license申请
4.2 QuartusⅡ的安装
4.3 ModelSim-Altera的安装
4.4 USB-Blaster的驱动安装
思考
第5章 Verilog语法概述
5.1 语法学习的经验之谈
5.2 可综合的语法子集
5.3 代码风格与书写规范
思考
第6章 入门实例
6.1 分频计数之LED闪烁
6.1.1 功能概述
6.1.2 设计说明
6.1.3 源码解析
6.1.4 板级调试
6.2 分频计数之蜂鸣器
6.2.1 功能概述
6.2.2 设计说明
6.2.3 源码解析
6.2.4 板级调试
6.3 流水灯控制
6.3.1 功能概述
6.3.2 设计说明
6.3.3 源码解析
6.3.4 板级调试
6.4 模式流水灯
6.4.1 功能概述
6.4.2 设计说明
6.4.3 源码解析
6.4.4 板级调试
6.5 数码管显示驱动
6.5.1 功能概述
6.5.2 设计说明
6.5.3 源码解析
6.5.4 板级调试
6.6 LCD显示驱动
6.6.1 功能概述
6.6.2 设计说明
6.6.3 源码解析
6.6.4 板级调试
6.7 LCD的32级红色显示
6.7.1 功能概述
6.7.2 设计说明
6.7.3 源码解析
6.7.4 板级调试
6.8 VGA/SVGA显示驱动
6.8.1 功能概述
6.8.2 设计说明
6.8.3 源码解析
6.8.4 板级调试
6.9 超声波测距数据采集
6.9.1 功能概述
6.9.2 设计说明
6.9.3 源码解析
6.9.4 板级调试
6.10 倒车雷达
6.10.1 功能概述
6.10.2 设计说明
6.10.3 源码解析
6.10.4 板级调试
6.11 UART串口收发测试
6.11.1 功能概述
6.11.2 设计说明
6.11.3 源码解析
6.11.4 板级调试
第7章 片内资源应用
7.1 PLL配置
7.1.1 功能概述
7.1.2 源码解析
7.1.3 板级调试
7.2 片内存储器应用之ROM
7.2.1 功能概述
7.2.2 设计说明
7.2.3 源码解析
7.2.4 板级调试
7.3 片内存储器应用之单口RAM
7.3.1 功能概述
7.3.2 设计说明
7.3.3 源码解析
7.3.4 板级调试
7.4 片内存储器应用之移位寄存器
7.4.1 功能概述
7.4.2 设计说明
7.4.3 源码解析
7.4.4 板级调试
7.5 片内存储器应用之FIFO
7.5.1 功能概述
7.5.2 设计说明
7.5.3 源码解析
7.5.4 板级调试
7.6 基于FPGA内嵌RAM的LCD字符显示
7.6.1 功能概述
7.6.2 设计说明
7.6.3 源码解析
7.6.4 板级调试
思考
第8章 时序设计实例
8.1 时序分析基础
8.1.1 基本的时序分析理论
8.1.2 时钟、建立时间和保持时间
8.1.3 基本时序路径
8.1.4 reg2reg路径的时序分析
8.2 VGA驱动接口时序设计
8.3 CMOS摄像头接口时序设计
第9章 设计仿真
9.1 仿真验证概述
……
第10章 在线调试实例
第11章 视频图像采集设计
参考文献
前言/序言
FPGA技术在当前的电子设计领域越来越火热,它的成本虽然还是高高在上,但是它给电子系统所带来的不可限量的速度和带宽,及其在灵活性、小型性方面的优势,越来越被各种对性能要求高、偏重定制化需求的开发者所青睐。因此,越来越多的电子工程师和电子专业在校学生希望能够掌握这门技术。而一门电子技能,单凭几本初级入门图书是很难掌握的。笔者结合自身的学习经历,为广大学习者量身打造了子母板形式的FPGA硬件开发学习平台。基于这个平台,配套本书的各种基础概念阐释和例程讲解,相信可以帮助读者快速地掌握这一门新技术。
本书面向广大的FPGA/CPLD初学者,从零基础开始讲述FPGA/CPLD以及相关的基础知识,并以一个支持各种入门、进阶的子母板形式的学习套件为实验平台,针对Altera公司的Cyclone Ⅲ器件量身打造的24个应用实例贯穿其中。实例讲解深入浅出,不仅有基本的Verilog语法讲解,也有设计思路和背景知识的详细描述; 开发工具(Quartus Ⅱ+ModelSim)的使用更是手把手图文并茂地展示给大家。
全书共11章。
第1章是基础中的基础,讲述可编程器件的一些基本概念、主要应用领域、相比于传统技术的优势以及开发流程。
第2章从最基础的0和1开始回顾数字电路的基础,深入探讨读者所关心的可编程器件的内部架构和原理。
第3章对后续例程中将要使用到的硬件开发学习平台进行介绍,深入详细地剖析整个实验平台的硬件板级设计。
第4章讲述开发环境的搭建,解决读者在学习上遇到的最棘手的“软”问题。
第5章是HDL语言基础,介绍使用最广泛的Verilog语言的基本语法及优良的代码书写规范和风格。
第6章手把手地带领读者完成11个最基本的入门实例。
第7章用6个实例来熟悉FPGA除了逻辑资源以外的其他丰富资源,如PLL和可配置为ROM、RAM、FIFO的内嵌存储器资源。
第8章用2个实例着重时序设计的应用解析。
第9章是设计仿真概述。
第10章用4个实例来展示FPGA的一些灵活、实用的在线调试手段。
第11章是一个完整的视频图像采集工程实例。
本书有对基础理论知识专门的讲解,也有非常详细的实例演练和讲解,更多的是在实践中传递实用的设计技巧和方法。书中内容由浅入深,很适合广大可编程逻辑器件的初学者作为入门和进阶的教材,也适合作为电子信息、计算机等专业本科生、研究生以及具有一定电子专业知识背景的电子工程师的参考用书。
在此要感谢广大的FPGA/CPLD爱好者们,你们的学习热情是我编写此书的源动力。感谢就职于骏龙科技的“师弟”张亚峰一直以来给予的技术支持。另外,也要特别感谢著名电子网站EDN China的王志华和Tina,ChinaAET的杨晖、曾超宇、乐卫平、陈颖莹和贾志梅,电子发烧友的高美笛和钱姗姗,你们为广大网友们提供了一个非常友好的交流互动平台。
最后,要向我的家人致敬,你们是我前进路上最坚强的后盾,尤其要感谢我的妻子一直以来所给予我的鼓励和支持。身为一名基督徒,我同时也要感谢那些或在网络上,或在家庭聚会中相互扶持、相互鼓励的兄弟姊妹们,我的人生因你们变得愈加平安、满足和喜乐,这是我能够一直积极向上、精力充沛地面对工作和生活的秘诀。
FPGA设计实战演练(逻辑篇)
吴厚航(特权同学)
2014年10月于上海
FPGA设计实战演练:逻辑篇 内容概述: 本丛书旨在为读者提供一套系统、深入的FPGA(Field-Programmable Gate Array,现场可编程门阵列)逻辑设计学习体验。本书作为“电子设计与嵌入式开发实践丛书”的开篇之作,聚焦于FPGA最核心的逻辑设计层面,力求通过大量的实践案例和详实的讲解,帮助读者从零开始,逐步掌握FPGA的逻辑电路构建、时序控制、状态机设计、数据通路搭建等关键技术。本书摒弃了枯燥的理论堆砌,将重点放在“如何做”以及“为什么这样做”,通过实实在在的动手操作,让读者深刻理解FPGA设计的原理和流程。 核心内容解读: 第一部分:FPGA基础与入门 FPGA架构与工作原理: 深入剖析FPGA的核心组成部分,包括查找表(LUT)、触发器(Flip-Flop)、布线资源、IO模块等。解释FPGA如何通过配置实现不同逻辑功能的灵活性,并与ASIC(Application-Specific Integrated Circuit,专用集成电路)进行对比,阐述FPGA在原型验证、小批量生产以及快速迭代开发中的优势。 开发环境搭建与基本操作: 指导读者安装并熟悉主流的FPGA开发工具链,例如Xilinx Vivado或Intel Quartus Prime。从创建工程、编写HDL(Hardware Description Language,硬件描述语言)代码、综合(Synthesis)、实现(Implementation)、仿真(Simulation)到生成比特流(Bitstream)并下载到开发板,详细演示整个设计流程,让读者快速上手。 HDL语言入门(Verilog/VHDL): 针对初学者,本书将重点介绍业界主流的两种硬件描述语言——Verilog和VHDL。通过一系列由浅入深的示例,讲解其基本语法、数据类型、运算符、结构化建模(行为级、寄存器传输级RTL、门级)等概念。特别强调HDL在描述硬件时的思维方式,以及如何将抽象的逻辑需求转化为具体的硬件结构。 时序逻辑与组合逻辑: 清晰区分时序逻辑和组合逻辑。讲解触发器、时钟、复位等时序逻辑的基本单元,以及如何利用它们构建具有记忆功能的电路。深入探讨组合逻辑的特性,如无状态性、输出仅取决于当前输入等,并通过实例展示如何设计基本的逻辑门、加法器、多路选择器等组合逻辑电路。 第二部分:核心逻辑设计技术 状态机(Finite State Machine, FSM)设计: FSM是数字逻辑设计中的基石,本书将详细讲解Moore型和Mealy型状态机的设计方法。通过一系列经典的FSM设计实例,如交通灯控制器、串行数据接收器、按键消抖器等,演示如何定义状态、状态转移条件、输出逻辑,并将其转化为HDL代码。重点强调状态机设计的规范性和避免潜在的时序问题。 数据通路(Datapath)与控制器(Controller)设计: 深入讲解数据通路和控制器分离的设计理念。数据通路负责数据的存储、运算和传输,而控制器则负责协调数据通路的动作。通过设计一个简单的ALU(Arithmetic Logic Unit,算术逻辑单元)控制器和数据通路,展示如何将复杂的计算任务分解为可管理的逻辑模块,并实现高效的数据流动。 同步与异步设计: 阐述同步设计和异步设计各自的优缺点。重点讲解同步设计的优势,如易于控制、鲁棒性强,并详细介绍如何利用时钟域(Clock Domain)管理、时钟同步技术(如二段式触发器、FIFO)来避免跨时钟域(CDC, Clock Domain Crossing)带来的亚稳态(Metastability)问题。 计数器与定时器设计: 介绍各种类型的计数器,包括同步计数器、异步计数器、可预置计数器、模N计数器等。讲解定时器的原理,以及如何利用计数器实现精确的延时和周期控制。通过实际应用场景,如PWM(Pulse Width Modulation,脉冲宽度调制)信号生成,展示计数器和定时器的强大功能。 移位寄存器与缓存(FIFO): 深入讲解移位寄存器的结构和应用,包括串入串出、串入并出、并入串出、并入并出等模式。重点介绍FIFO(First-In, First-Out)的设计和应用,讲解其读写指针、空满标志等关键逻辑,以及在数据缓冲、速率匹配等场景下的重要作用。 第三部分:高级逻辑设计与实践 总线协议与接口设计: 介绍常见的总线协议,如AXI(Advanced eXtensible Interface)、AHB(Advanced High-performance Bus)等,并讲解如何设计满足这些协议的接口逻辑。通过设计一个简单的AXI Lite从设备接口,让读者理解总线通信的基本流程和握手信号。 IP核(Intellectual Property Core)的使用与定制: 介绍IP核的概念,以及如何在开发工具中查找、实例化和配置预先设计好的IP核,例如DDR控制器、PCIe控制器、DSP模块等。讲解如何根据自身需求对IP核进行一定的定制,以满足特定的性能和功能要求。 FPGA片上调试技术: 介绍FPGA内部调试的常用方法,包括ILA(Integrated Logic Analyzer)和VIO(Virtual Input/Output)等在线逻辑分析工具。演示如何使用这些工具来监控FPGA内部信号、捕获异常数据、定位设计错误,大大提高调试效率。 性能优化与资源利用: 讲解如何通过代码优化、算法改进、流水线(Pipelining)技术等手段来提升FPGA设计的性能(如时钟频率)和资源利用率。分析常见的性能瓶颈,并提供相应的解决方案。 Verilog/VHDL代码风格与最佳实践: 总结并分享编写高质量、可读性强、易于维护的HDL代码的最佳实践。包括命名规范、模块化设计、注释使用、避免常见的陷阱等,帮助读者养成良好的编码习惯。 本书特色: 实践驱动: 全书贯穿大量具体的FPGA设计实例,从简单的逻辑门到复杂的控制器,均配有完整的HDL代码、详细的仿真波形和实验指导。 案例丰富: 覆盖了从基础数字逻辑到常见的通信接口、数据处理等多个应用领域,贴近实际工程需求。 深入浅出: 概念讲解清晰易懂,逐步深入,避免了过于深奥的理论推导,侧重于读者动手能力的培养。 工具融合: 紧密结合主流FPGA开发工具,确保读者在学习理论的同时,能够熟练运用工具完成设计。 循序渐进: 内容组织合理,由易到难,适合不同基础的读者。初学者可以从基础篇开始,有经验的工程师也可以从中找到提升和借鉴之处。 读者对象: 对FPGA设计感兴趣的电子工程、计算机科学等专业的学生。 从事嵌入式系统开发、数字电路设计、硬件加速等工作的工程师。 希望深入理解FPGA内部逻辑工作原理的硬件开发人员。 任何希望通过实践掌握FPGA逻辑设计核心技术的读者。 通过学习本书,读者将能够独立完成FPGA逻辑级别的设计,并为后续更高级的系统级设计、嵌入式软件开发以及硬件加速等领域打下坚实的基础。本书不仅仅是一本技术手册,更是一次引导读者踏上FPGA设计实践之路的精心策划的旅程。