猜你喜欢
Xilinx Vivado数字设计权威指南:从数字逻辑、Verilog HDL、嵌入式系统到图像处理

Xilinx Vivado数字设计权威指南:从数字逻辑、Verilog HDL、嵌入式系统到图像处理

书籍作者:何宾 ISBN:9787121364952
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3666
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以Xilinx公司的Vivado 2018集成开发环境作为复杂数字系统设计的平台,以基础的数字逻辑和数字电路知识为起点,以Xilinx 7系列可编程逻辑器件和Verilog HDL为载体,详细介绍了数字系统中基本逻辑单元RTL描述方法。在此基础上,实现了复杂数字系统设计、数模混合系统设计和基于Cortex-M1处理器软核的片上嵌入式系统设计。全书共10章,内容主要包括数字逻辑基础、数字逻辑电路、可编程逻辑器件原理、Vivado集成开发环境设计流程、Verilog HDL语言规范、基本数字逻辑单元Verilog HDL描述、复杂数字系统设计和实现、数模混合系统设计、片上嵌入式系统的构建和实现,以及图像采集、处理系统的构建和实现。本书适合于需要系统掌握Verilog HDL和Vivado集成开发环境基本设计流程的初学者,同时也适用于需要掌握ARM嵌入式系统软件和硬件设计方法的嵌入式开发工程师。

作者简介

知名的嵌入式和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商密切合作。已经出版电子信息方面的著作共50余部,内容涵盖电路仿真、电路设计、FPGA、数字信号处理、单片机、嵌入式系统、物联网等。典型的代表作有《模拟电子系统设计指南(基础篇):从半导体、分立元件到TI集成电路的分析与实现》、《模拟电子系统设计指南(实践篇):从半导体、分立元件到TI集成电路的分析与实现》、《Xilinx Zynq-7000嵌入式系统设计与实现:基于ARM Cortex-A9双核处理器和Vivado的设计方法》、《Altium Designer 17一体化设计标准教程-从仿真原理和PCB设计到单片机系统》、《STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用》、《Xilinx FPGA数字信号处理系统设计指南:从HDL、Simulink到HLS的实现》、《可重构嵌入式系统设计与实现:基于Cypress PSoC4 BLE智能互联平台》等。

编辑推荐
适读人群 :本书适合于需要系统掌握Verilog HDL和Vivado集成开发环境基本设计流程的初学者,同时也适用于需要掌握ARM嵌入式系统软件和硬件设计方法的嵌入式开发工程师。

本书特点

? 引入EDA工具:通过使用NI公司Multisim软件所集成的SPICE工具讲解数字逻辑和数字电路的关键知识点,通过使用Xilinx公司的Vivado集成开发工具全方位地讲解Verilog HDL语法。。

? 采用*威资料:介绍数字逻辑电路基本知识点时参考了国外数字逻辑设计领域的*威书籍。在介绍Verilog HDL语法时,参考了IEEE Std 1364-2005。在介绍ARM嵌入式系统软件和硬件时,采用ARM公司专门为Xilinx FPGA开发的Cortex-M1 IP核和参考设计。

? 知识涵盖面广:本书除涉及传统数字逻辑和数字电路的内容外,还系统地讲解了可编程逻辑器件的结构和工艺、Vivado集成开发环境设计流程、Verilog HDL语法规范、复杂数字系统RTL描述和实现、数模混合系统设计与实现。为了帮助读者进一步掌握FPGA在其他领域的应用和实现方法,本书还增加了在FPGA内构建和实现Arm嵌入式系统,以及图像采集和处理系统构建的相关内容。

? 丰富的生态资源 :针对每个知识点,都提供了大量的设计实例和完整的工程设计代码,以方便读者自学。为了便于读者的学习和交流,本书配套提供了公开教学视频资源,读者可以通过爱课程网搜索“EDA原理及应用”获取课程的公开教学资源。


前言

前言



现场可编程门阵列(Field Programmable Gate Array,FPGA)越来越多地被应用在新技术中,如物联网、云计算和人工智能等。在这些应用中,FPGA主要用来对数据进行加速处理。为了应对这些应用,降低软件工程师应用FPGA的难度,Xilinx公司不断推出新的设计工具,如高级综合工具(High Level Synthesis,HLS),以降低使用FPGA实现复杂应用的难度。然而,很多软件工程师仍然觉得FPGA入门较难,这是因为他们普遍认为Verilog HDL比较抽象难懂,且FPGA的内部结构过于复杂。其实,最根本的原因是软件设计工程师常常以传统软件的思维来看待FPGA,他们普遍认为FPGA是硬件,与软件没有太多的交集,在FPGA中实现传统上由软件实现的算法模型难度较大。根据作者长期教学和科研的经验,数字逻辑和数字电路基础知识是他们入门FPGA的“绊脚石”和“拦路虎”。为了帮助广大读者能真正进入FPGA设计领域,尤其是FPGA的初学者和那些从事传统软件开发工作的工程师,作者编写了此书。该书是作者多年从事FPGA教学和科研工作的体会与总结,期望对广大初学者系统掌握FPGA的设计方法提供很好的帮助。

数字逻辑和数字电路的基本理论知识是学习FPGA的基础,不管FPGA技术今后如何发展,始终离不开数字逻辑的基本理论知识。系统深入地掌握以上知识是读者进入FPGA设计世界的基石,特别重要。所以,在编写本书时特意增加了数字逻辑基础和数字电路两章内容。作者在编写这两章内容时参考了国外大量的设计资料,以期待通过这两章内容的讲解来帮助广大读者准确地把握数字世界的本质,并且通过Multisim内集成的SPICE仿真工具对这些知识点进行了直观演示和验证。根据作者多年的教学经验,认为这些知识难点是入门FPGA的最大障碍,因此通过SPICE仿真工具给出的分析结果帮助读者扫清这些学习障碍。

Verilog HDL是本书最重要的内容之一,用于对复杂数字系统(尤其是FPGA)进行行为级和寄存器传输级建模。本书严格按照IEEE Std 1364-2005规范介绍Verilog HDL的词法和句法。在介绍这部分内容时,将Verilog HDL与复杂数字系统(尤其是FPGA)模型之间的对应关系进行系统讲解,使读者理解Verilog HDL的词法和句法在复杂数字系统行为级和寄存器传输级描述中的使用方法。

本书的一大特色是将Verilog HDL和Vivado集成开发环境进行系统化深度融合,从不同角度深度解读Verilog HDL语言的实现本质。针对Verilog HDL中的一些语法难点,书中通过Vivado集成开发环境提供的功能进行演示和说明。在此要特别指出,Vivado集成开发工具是学习Verilog HDL最好的助手,这是因为在初学者遇到Verilog HDL中不理解的地方时,可以很容易地通过Vivado集成开发工具给出的电路结构和仿真结果进行直观的说明。为了帮助读者提高灵活运用Verilog HDL构建复杂数字系统模型的能力,书中给出了大量的基本逻辑单元的寄存器传输级描述,以及一个复杂数字系统设计实例和数模混合系统设计实例。

本书的另一大特色是引入ARM为Xilinx现场可编程门阵列最新定制的Cortex-M1处理器软核。通过使用Verilog HDL构建嵌入式硬件平台和使用C语言编写硬件驱动以及实现软件应用,在现场可编程门阵列内实现了真正意义上的片上可编程嵌入式系统,这里的可编程是指使用Verilog HDL定制嵌入式系统的硬件,然后使用C语言为这个定制的嵌入式硬件平台编写软件驱动和应用,这个设计过程充分体现了在FPGA上构建嵌入式系统的灵活性和高效性,同时对广大读者系统学习ARM嵌入式的硬件和软件知识提供了很好的帮助。通过对片上嵌入式系统设计流程的详细解读,读者将进一步掌握C语言串行执行和Verilog HDL并行处理的本质特点。通过在嵌入式系统设计中合理划分软件和硬件的边界,最终实现低成本高性能的片上嵌入式系统设计。当然,对片上嵌入式系统设计过程的系统讲解也是为了帮助读者理解软件处理的灵活性和硬件处理的高效性,进而使读者进一步理解在新技术中越来越多地使用硬件(FPGA)来实现更复杂的算法的原因。

全书共9章,内容主要包括数字逻辑基础、数字逻辑电路、可编程逻辑器件原理、Vivado集成开发环境设计流程、Verilog HDL语言规范、基本数字逻辑单元Verilog HDL描述、复杂数字系统设计和实现、数模混合系统设计,以及片上嵌入式系统的构建和实现。为了便于读者自学,本书提供了所有设计实例的完整设计文件和公开教学视频,这些资源可以通过书中学习说明给出的链接地址获取。

在本书编写过程中引用和参考了许多著名学者和专家的研究成果,同时也参考了Xilinx公司的技术文档和手册。在编写本书的过程中,Xilinx多位技术专家解答了作者在设计中所遇到的各种问题,在此向他们表示衷心的感谢。在本书编写的过程中,作者的学生孟繁阳负责设计了第1章、第2章和第7章的实例并进行了验证,在此表示感谢。在本书出版的过程中,也得到了电子工业出版社编辑的帮助和指导,在此也表示深深的谢意。

由于编者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。


作者

2019年5月于北京


目录

第1章 数字逻辑基础
1.1 数字逻辑的发展史
1.2 SPICE仿真工具基础
1.2.1 SPICE的分析功能
1.2.2 SPICE的分析流程
1.3开关系统
1.3.1 0和1的概念
1.3.2 开关系统的优势
1.3.3 晶体管作为开关
1.3.4 半导体物理器件
1.3.5 半导体逻辑电路
1.3.6 逻辑电路符号
1.4 半导体数字集成电路
1.4.1 集成电路发展
1.4.2 集成电路构成
1.4.3 集成电路版图
1.5 基本逻辑门及特性
1.5.1 基本逻辑门
1.5.2 基本逻辑门集成电路
1.5.3 逻辑门电路的传输特性
1.5.4 不同逻辑门的连接
1.6 逻辑代数理论
1.6.1 逻辑代数中运算关系
1.6.2 逻辑函数表达式
1.7 逻辑表达式的化简
1.7.1 使用运算律化简逻辑表达式
1.7.2 使用卡诺图化简逻辑表达式
1.7.3 不完全指定逻辑功能的化简
1.7.4 输入变量的卡诺图表示
1.8 毛刺产生及消除
1.9 数字码制表示和转换
1.9.1 数字码制表示
1.9.2 数字码制转换
第2章 数字逻辑电路
2.1 组合逻辑电路
2.1.1 编码器
2.1.2 译码器
2.1.3 码转换器
2.1.4 多路选择器
2.1.5 数字比较器
2.1.6 加法器
2.1.7 减法器
2.1.8 加法器/减法器
2.1.9 乘法器
2.2 时序逻辑电路
2.2.1 时序逻辑电路类型
2.2.2 时序逻辑电路特点
2.2.3 基本SR锁存器
2.2.4 同步SR锁存器
2.2.5 D锁存器
2.2.6 D触发器
2.2.7 其他触发器
2.2.8 普通寄存器
2.2.9 移位寄存器
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三位计数器的设计与实现
第3章可编程逻辑器件原理
3.1可编程逻辑器件发展历史
3.2可编程逻辑器件工艺
3.3可编程逻辑器件结构
3.3.1PROM结构
3.3.2PAL结构
3.3.3PLA结构
3.4复杂可编程逻辑器件结构
3.4.1功能块
3.4.2宏单元
3.4.3快速连接开关阵列
3.4.4输入/输出块
3.5现场可编程门阵列结构
3.5.1查找表结构原理
3.5.2可配置的逻辑块
3.5.3时钟管理资源
3.5.4块存储器资源
3.5.5互联资源
3.5.6DSP切片
3.5.7输入/输出块
3.5.8XADC模块
3.6Xilinx 7系列FPGA产品
第4章Vivado集成开发环境设计流程
4.1Vivado集成开发环境
4.2创建新的设计工程
4.3创建并添加一个新的设计文件
4.4详细描述
4.4.1详细描述的原理
4.4.2详细描述的实现过程
4.5设计行为级仿真
4.6设计综合和分析
4.6.1综合过程的关键问题
4.6.2执行设计综合
4.6.3查看综合报告
4.7约束文件对话框
4.7.1约束文件
4.7.2I/O规划器的功能
4.7.3实现约束
4.8设计实现和分析
4.8.1设计实现原理
4.8.2设计实现及分析
4.9设计时序仿真
4.10生成并下载比特流文件
4.10.1FPGA配置原理
4.10.2生成比特流文件
4.10.3下载比特流文件
4.11生成并烧写PROM文件
第5章Verilog HDL规范
5.1Verilog HDL发展
5.2Verilog HDL程序结构
5.2.1模块声明
5.2.2模块端口定义
5.2.3逻辑功能定义
5.3Verilog HDL描述方式
5.3.1行为级描述
5.3.2数据流描述
5.3.3结构级描述
5.3.4开关级描述
5.4Verilog HDL要素
5.4.1注释
5.4.2间隔符
5.4.3标识符
5.4.4关键字
5.4.5系统任务和函数
5.4.6编译器指令
5.4.7运算符
5.4.8数字
5.4.9字符串
5.4.10属性
5.5Verilog HDL数据类型
5.5.1值的集合
5.5.2网络和变量
5.5.3向量
5.5.4强度
5.5.5隐含声明
5.5.6网络类型
5.5.7寄存器类型
5.5.8整型、实数型、时间型和实时时间
5.5.9数组
5.5.10参数
5.5.11Verilog HDL名字空间
5.6Verilog HDL表达式
5.6.1操作符
5.6.2操作数
5.6.3延迟表达式
5.6.4表达式的位宽
5.6.5有符号表达式
5.6.6分配和截断
5.7Verilog HDL分配
5.7.1连续分配
5.7.2过程分配
5.8Verilog HDL门级和开关级描述
5.8.1门和开关声明
5.8.2逻辑门
5.8.3输出门
5.8.4三态门
5.8.5MOS开关
5.8.6双向传输开关
5.8.7CMOS开关
5.8.8pull门
5.9Verilog HDL用户自定义原语
5.9.1UDP定义
5.9.2组合电路UDP
5.9.3电平触发的时序UDP
5.9.4边沿触发的时序UDP
5.9.5边沿和电平触发的混合行为
5.10Verilog HDL行为描述语句
5.10.1过程语句
5.10.2过程连续分配
5.10.3条件语句
5.10.4case语句
5.10.5循环语句
5.10.6过程时序控制
5.10.7语句块
5.10.8结构化的过程
5.11Verilog HDL任务和函数
5.11.1任务和函数的区别
5.11.2定义和使能任务
5.11.3禁止命名的块和任务
5.11.4声明和调用函数
5.12Verilog HDL层次化结构
5.12.1模块和模块例化
5.12.2覆盖模块参数值
5.12.3端口
5.12.4生成结构
5.12.5层次化的名字
5.12.6向上名字引用
5.12.7范围规则
5.13Verilog HDL设计配置
5.13.1配置格式
5.13.2库
5.13.3配置例子
5.14Verilog HDL指定块
5.14.1模块路径声明
5.14.2为路径分配延迟
5.14.3混合模块路径延迟和分布式延迟
5.14.4驱动布线逻辑
5.14.5脉冲过滤行为的控制
5.15Verilog HDL时序检查
5.15.1使用一个稳定窗口检查时序
5.15.2时钟和控制信号的时序检查
5.15.3边沿控制标识符
5.15.4提示符:用户定义对时序冲突的响应
5.15.5使能带有条件的时序检查
5.15.6时序检查中的矢量信号
5.15.7负时序检查
5.16Verilog HDL SDF逆向注解
5.16.1SDF注解器
5.16.2映射SDF结构到Verilog
5.16.3多个注解
5.16.4多个SDF文件
5.16.5脉冲限制注解
5.16.6SDF到Verilog延迟值映射
5.17Verilog HDL系统任务和函数
5.17.1显示任务
5.17.2文件I/O任务和函数
5.17.3时间标度任务
5.17.4仿真控制任务
5.17.5随机分析任务
5.17.6仿真时间函数
5.17.7转换函数
5.17.8概率分布函数
5.17.9命令行输入
5.17.10数学函数
5.18Verilog HDL的VCD文件
5.18.1Vivado创建四态VCD文件
5.18.2Verilog源创建四态VCD文件
5.18.3四态VCD文件格式
5.19Verilog HDL编译器指令
5.19.1`celldefine和`endcelldefine
5.19.2`default_nettype
5.19.3`define和`undef
5.19.4`ifdef、 `else、 `elsif、 `endif、 `ifndef
5.19.5`include
5.19.6`resetall
5.19.7`line
5.19.8`timescale
5.19.9`unconnected_drive和`nounconnected_drive
5.19.10`pragma
5.19.11`begin_keywords和`end_keyword
5.20Verilog HDL(IEEE 1364―2005)关键字列表
第6章基本数字逻辑单元Verilog HDL描述
6.1组合逻辑电路Verilog HDL描述
6.1.1逻辑门Verilog HDL描述
6.1.2编码器Verilog HDL描述
6.1.3译码器Verilog HDL描述
6.1.4多路选择器Verilog HDL描述
6.1.5数字比较器Verilog HDL描述
6.1.6总线缓冲器Verilog HDL描述
6.2数据运算操作Verilog HDL描述
6.2.1加法操作Verilog HDL描述
6.2.2减法操作Verilog HDL描述
6.2.3乘法操作Verilog HDL描述
6.2.4除法操作Verilog HDL描述
6.2.5算术逻辑单元Verilog HDL描述
6.3时序逻辑电路Verilog HDL描述
6.3.1触发器和锁存器Verilog HDL描述
6.3.2计数器Verilog HDL描述
6.3.3移位寄存器Verilog HDL描述
6.3.4脉冲宽度调制Verilog HDL描述
6.4存储器Verilog HDL描述
6.4.1ROM的Verilog HDL描述
6.4.2RAM的Verilog HDL描述
6.5有限自动状态机Verilog HDL描述
6.5.1FSM设计原理
6.5.2FSM的应用――序列检测器的实现
6.5.3FSM的应用――交通灯的实现
6.6算法状态机Verilog HDL描述
6.6.1算法状态机原理
6.6.2ASM到Verilog HDL的转换
第7章复杂数字系统设计和实现
7.1设计所用外设的原理
7.1.1LED驱动原理
7.1.2开关驱动原理
7.1.37段数码管驱动原理
7.1.4VGA显示器原理
7.1.5通用异步接收发送器原理
7.2系统中各个模块的功能
7.3创建新的设计工程
7.4Verilog HDL数字系统设计流程
7.4.1创建divclk1.v文件
7.4.2创建divclk2.v文件
7.4.3创建divclk3.v文件
7.4.4创建divclk4.v文件
7.4.5创建pwm_led.v文件
7.4.6创建counter4b.v文件
7.4.7创建seg7display.v文件
7.4.8创建uart.v文件
7.4.9创建显示处理文件
7.4.10创建top.v文件
7.5添加XDC约束
7.6设计下载和验证
第8章数模混合系统设计
8.1信号采集和处理的实现
8.1.1XADC模块原理
8.1.2XADC原语
8.1.31602字符LCD模块原理
8.1.4信号采集、处理和显示的实现
8.2信号发生器的实现
8.2.1DAC工作原理
8.2.2函数信号产生原理
8.2.3设计实现
第9章片上嵌入式系统的构建和实现
9.1ARM AMBA规范
9.2Cortex-M1内部结构和功能
9.2.1处理器内核及寄存器组
9.2.2Cortex-M1存储空间及映射
9.2.3系统控制寄存器
9.2.4内核存储器接口
9.2.5嵌套向量中断控制器
9.2.6总线主设备
9.2.7AHB-PPB
9.2.8调试
9.3Cortex-M1系统时钟和复位
9.4Cortex-M1嵌入式系统硬件设计
9.4.1建立新的嵌入式设计工程
9.4.2定制7段数码管IP核
9.4.3定制按键消抖IP核
9.4.4设置IP核路径
9.4.5连接IP构建嵌入式系统硬件
9.4.6对块设计进行预处理
9.5Cortex-M1指令系统
9.5.1Thumb指令集
9.5.2汇编语言格式
9.5.3寄存器访问指令――MOVE
9.5.4寄存器访问指令――LOAD
9.5.5存储器访问指令――STORE
9.5.6多个数据访问指令
9.5.7堆栈访问指令
9.5.8算术运算指令
9.5.9逻辑操作指令
9.5.10移位操作指令
9.5.11逆序操作指令
9.5.12扩展操作指令
9.5.13程序流控制指令
9.5.14存储器屏障指令
9.5.15异常相关指令
9.5.16休眠相关的指令
9.5.17其他指令
9.6Cortex-M1嵌入式系统软件设计
9.6.1建立嵌入式软件工程
9.6.2设置选项
9.6.3添加汇编文件
9.6.4添加头文件
9.6.5添加主文件
9.6.6生成HEX文件
9.7处理并验证设计
第10章图像采集、处理系统的构建和实现
10.1图像传感器的原理和驱动
10.1.1传感器结构和功能
10.1.2传感器引脚功能定义
10.1.3SCCB接口驱动时序
10.1.4SCCB接口驱动的实现
10.2Sobel算子基本原理和实现方法
10.3RGB444数据捕获原理及实现
10.4系统整体结构和子模块设计
10.4.1Vivado中的系统整体结构
10.4.2时钟发生器的配置
10.4.3片内RAM模块的配置
10.4.4VGA驱动模块
10.4.5行缓存模块