FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台pdf下载pdf下载

FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台百度网盘pdf下载

作者:
简介:本篇主要提供FPGA现代数字系统设计——基于Xilinx可编程逻辑器件与Vivado平台pdf下载
出版社:清华大学出版社
出版时间:2019-03
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

内容简介

本书是以Xilinx公司全可编程FPGA和SoC为基础,针对新的设计工具软件——Vivado介绍FPGA设计理论与设计方法。
全书分为8章,包括现代数字系统设计技术概论、可编程逻辑器件、Verilog HDL硬件描述语言、Vivado设计流程、数字系统的设计与综合、基于FPGA的DSP系统设计、Zynq嵌入式系统设计技术和EGO1综合性设计项目举例。各章都安排了针对性强的已验证过的设计实例,并附有Verilog HDL手册、EGO1开发板资料,供师生在教学中选用。
本书可作为高等院校电子、通信、自动化、计算机等专业本科教学参考书,也可作为信息类专业研究生和数字系统设计人员的参考书。

作者简介

孟宪元 清华大学电子工程系教授,长期从事EDA相关技术和课程教学和科研工作,具有超过20年的FPGA技术研究和项目开发经历,亲历了FPGA技术的发展历程,积累了丰富实践经验,曾出版《新一代FPGA设计套件Vivado应用指南》等畅销教材。

目录

目录




第1章现代数字系统设计概论

1.1概述

1.2数字系统的层次化结构

1.2.1开关电路级的基础——CMOS反相器

1.2.2逻辑级的门电路

1.2.3寄存器传输级的有限状态机

1.2.4数字系统的系统级构成

1.2.5复杂系统的算法级设计

1.3数字系统设计的描述方法

1.3.1原理图设计

1.3.2程序设计法

1.3.3IP模块的使用

1.3.4基于模型的设计技术

1.3.5高层次综合——HLS设计

1.3.6脚本设计技术

1.4IP技术

1.4.1IP知识产权模块

1.4.2IP模块的种类与应用

1.4.3片上系统和IP核复用

1.5全可编程FPGA/SoC实现智能化系统

1.5.1软件智能化和硬件最佳化

1.5.2在线可重构技术

1.5.3可重配置加速堆栈

本章小结

习题

第2章可编程逻辑器件

2.1概述

2.1.1可编程逻辑器件概述

2.1.2可编程逻辑器件分类

2.2CPLD的结构和工作原理

2.2.1简单可编程逻辑器件原理

2.2.2CPLD的结构和工作原理

2.3FPGA的结构和工作原理

2.3.1SRAM查找表类型

2.3.2反熔丝多路开关类型

2.4逻辑级FPGA的结构和工作原理

2.4.1可编程逻辑

2.4.2可编程互连线

2.4.3可编程I/O

2.5系统级FPGA的结构和工作原理

2.5.1片上存储器及接口

2.5.2数字时钟管理

2.5.3时钟资源

2.5.4系统级I/O

2.6平台级FPGA的结构和工作原理

2.6.1DSP模块

2.6.2高速串行接口

2.7全可编程FPGA的特性和结构

2.7.1采用统一的7系列架构

2.7.2高性能和低功耗结合的工艺

2.8ASIC架构的UltraScale系列

2.8.1UltraScale架构

2.8.2SSI互连技术

2.9FPGA的配置

2.9.1编程原理简介

2.9.2编程模式

2.9.3典型的配置电路

2.9.4编程流程

2.9.5部分重配置

本章小结

习题

第3章Verilog硬件描述语言

3.1硬件描述语言概述

3.1.1硬件描述语言特点

3.1.2层次化设计

3.2Verilog HDL程序的基本结构

3.2.1模块结构分析

3.2.2模块的实例化

3.3Verilog HDL词法、数据类型和运算符

3.3.1词法约定

3.3.2数据类型

3.3.3运算符

3.4Verilog HDL行为语句

3.4.1赋值语句

3.4.2顺序块和并行块语句

3.4.3结构说明语句

3.4.4条件语句

3.4.5循环语句

3.4.6系统任务和系统函数

3.4.7编译预处理命令

3.4.8Verilog HDL可综合设计

3.5Verilog HDL设计举例

3.5.1组合电路设计

3.5.2时序电路设计

3.5.3数字系统设计

3.5.4数码管扫描显示电路

3.5.5LED通用异步收发电路设计

3.6Testbench文件与设计

本章小结

习题

第4章Vivado设计工具

4.1Vivado工具概述

4.1.1单一的、共享的、可扩展的数据模型

4.1.2标准化XDC约束文件——SDC

4.1.3多维度分析布局器

4.1.4IP封装器、集成器和目录

4.1.5Vivado HLS

4.1.6其他特性

4.1.7TCL特性

4.1.8Vivado按键流程执行设计项目

4.2Vivado设计流程

4.2.1创建工程

4.2.2功能仿真

4.2.3RTL级分析

4.2.4综合设计

4.2.5分配引脚和时序

4.2.6设计实现

4.2.7生成bit文件

4.2.8下载

4.3产生IP集成器子系统设计

4.3.1产生IP集成器模块设计

4.3.2定制IP

4.3.3完成子系统设计

4.3.4产生IP输出产品

4.3.5例示IP到设计中

4.4硬件诊断

4.4.1设计诊断概述

4.4.2Vivado逻辑诊断IP核

4.4.3HDL例示法添加ILA核

4.4.4系统内诊断uart_led设计

4.4.5网表插入法添加诊断核

4.4.6添加VIO诊断核

本章小结

习题

第5章数字系统的高级设计与综合

5.1Verilog编程风格

5.1.1逻辑推理

5.1.2陷阱

5.1.3设计组织

5.1.4针对Xilinx FPGA的HDL编码

5.2综合优化

5.2.1速度与面积

5.2.2资源共享

5.2.3流水线、重新定时和寄存器平衡

5.2.4有限状态机编译

5.3数字系统的同步设计

5.3.1同步设计基本原理

5.3.2建立和保持时间

5.3.3时序例外约束

5.3.4同步设计中的异步问题

5.4数字系统的综合

5.4.1数字系统综合概述

5.4.2系统级综合

5.4.3高级综合

5.4.4寄存器传输级综合

5.4.5逻辑级综合

本章小结

习题

第6章FPGA DSP系统设计

6.1DSP基础

6.1.1DSP的基本概念

6.1.2FPGA实现DSP的特点

6.2DSP硬核的结构与使用

6.2.1输入和输出端口

6.2.2DSP48E1模块的操作

6.2.3输入端口逻辑电路

6.2.4输出端口逻辑

6.3FPGA设计DSP技术

6.3.1浮点数与定点数的表示与转换

6.3.2采样周期的设置

6.3.3System Generator模块

6.3.4Black Box模块

6.3.5ModelSim模块

6.3.6Gateway In模块和Gateway Out模块

6.3.7Concat模块、Convert模块、Reinterpret模块和Slice模块

6.3.8模块通用属性

6.4DSP48实现MAC

6.4.1利用Xilinx Blockset设计12×8 MAC

6.4.2利用Simulink仿真12×8 MAC

6.4.3利用System Generator Block产生代码

6.4.4实现12×8 MAC设计

6.4.5硬件协同仿真校验设计

6.5设计FIR滤波器

6.5.1产生FIR滤波器的系数

6.5.2输入FIR滤波器系数

6.5.3在Simulink中仿真FIR滤波器

6.5.4实现FIR滤波器

6.5.5连接演示板,通过Simulink仿真设计

6.6设计MAC FIR滤波器

6.6.1分析系数

6.6.2添加控制逻辑并参数化

6.6.3添加双口RAM

6.6.4在数据端口添加填充位和去填充位

6.6.5完成MAC FIR设计

6.6.6用各种信源测试设计

6.6.7执行硬件在环路校验

6.7Vivado HLS

6.7.1高级综合的调度和装配

6.7.2数据通道+控制器架构

6.7.3理解Vivado HLS

6.7.4高级综合的优化方法

本章小结

习题

第7章嵌入式系统Zynq设计

7.1Zynq概述

7.2Zynq设计入门

7.2.1Vivado工程创建

7.2.2由Vivado创建Zynq嵌入式系统

7.2.3SDK应用程序编写

7.3Zynq嵌入式系统调试方法

7.3.1Vivado硬件调试

7.3.2使用SDK进行Zynq调试

7.4调试Linux应用

7.4.1产生SDK软件工作空间

7.4.2启动超级终端

7.4.3添加和诊断软件应用

本章小结

习题

第8章综合设计实例

8.1实例一: 基于VGA接口的设计实例

8.1.1设计任务

8.1.2原理分析与系统方案

8.2实例二: PS/2键盘编解码演示系统

8.2.1设计任务

8.2.2原理分析与系统方案

8.2.3设计实现

8.3实例三: 实现SOPC系统

8.3.1设计任务和方案

8.3.2实验步骤

8.3.3实验调试设备

本章小结

习题

附录AEGO1用户手册

附录BVerilog HDL(IEEE 13642001)关键词表及说明

参考文献


精彩书摘

第3章

Verilog硬件描述语言





硬件描述语言(Hardware Description Language,HDL)是一种国际上流行的描述数字电路和系统的语言,可以在EDA工具的支持下,快速实现设计者的设计意图。
常用的硬件描述语言有Verilog HDL和VHDL两种。本章介绍Verilog语言的语法和使用规则。
3.1硬件描述语言概述
Verilog HDL是由GDA(Gateway Design Automation)公司的Philip R.Moorby于1983年首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出商用仿真器VerilogXL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,Verilog HDL成为该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,成立OVI(Open Verilog International)组织,并推动Verilog HDL的发展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL13641995,2001年发布了Verilog HDL13642001,目前已发布Verilog HDL 2003。
VHDL是VHSIC Hardware Description Language的缩写,其中VHSIC是Very High Speed Integrated Circuit的缩写,美国国防部为解决项目的多个承包人的信息交换困难和设计维修困难的问题,提出了VHDL构想,由TI、IBM和INTERMETRICS公司完成,并于1987年作为IEEE标准,即IEEE std 10761987[LRM87],后来又进行一些修改,成为新的标准版本,即IEEE std 10761993[LRM93]。
VHDL和Verilog HDL这两种语言的主要功能差别并不大,它们的描述能力也类似,相比于Verilog HDL,只是VHDL的系统描述能力稍强,而Verilog HDL的底层描述能力则更强。
3.1.1硬件描述语言特点
硬件描述语言(HDL)有不同于其他软件语言的特点:
(1) 功能的灵活性。HDL支持设计者从开关、门级、RTL、行为级等不同抽象层次对电路进行描述,并支持不同抽象层次描述的电路组合为一个电路模型,HDL支持系统的层次化设计,支持元件库和功能模块的可重用设计。用HDL设计数字电路系统是一种贯穿于设计、仿真和综合的方法。
(2) HDL支持高层次的设计抽象,可应用于设计复杂的数字电路系统。HDL设计和传统的原理图输入方法的关系如同高级语言和汇编语言。原理图输入的可控性好、实现效率高,比较直观,但在设计大规模CPLD/FPGA时显得很烦琐,有时甚至无法理解。而设计者使用HDL进行设计,可以在非常抽象的层次上对电路进行描述,将烦琐的实现细节交由EDA工具辅助完成,实现“自顶向下”的层次化设计,缩短开发周期。
(3) HDL设计可不依赖厂商和器件,移植性好。设计者在设计时,只需在寄存器传输级(RTL级)对电路系统的功能和结构用HDL进行描述,电路系统如需实现在不同器件上,也不用重复设计,只需选择相应FPGA/CPLD芯片的综合、布局布线的库函数,由相应的设计工具对设计描述进行重新转换即可。
3.1.2层次化设计
随着现代控制、通信等电子行业的发展,数字电路复杂度也越来越高。集成电路制造业和EDA工具的快速发展,使复杂数字系统的设计实现成为可能。复杂系统的设计必然要使用层次化、结构化的设计方法,其设计思想就是“自顶向下”,即“化繁为简,逐步实现”,在数字系统的功能指标和端口基础上,将系统分解成多个子模块构成,然后对各个子模块作进一步分解,直到将模块分解到适中的实现复杂度或者可使用的EDA元件库中已有的基本元件实现为止,在设计的后期将各子模块组合起来构成一个系统。自顶向下设计示意图如图31所示。



图31自顶向下设计示意图


本章介绍Verilog语言,将按照“先框架,再细节”的模式,即先介绍Verilog HDL程序的基本结构,然后介绍常用的语法,最后进行一些数字系统设计练习。
3.2Verilog HDL程序的基本结构
Verilog语言作为一种用于设计数字系统的工具,可以完成以下功能:
(1) 描述数字系统的逻辑功能;
(2) 描述多个数字系统模块之间的连接,组合成为一个系统;
(3) 建立测试激励信号文件,在仿真环境中,对设计好的系统进行调试验证。
根据对电路描述的抽象程度不同,Verilog语言描述有四个层次的模型类型:
(1) 行为级或算法级: 这是Verilog语言支持的最高抽象级别,设计者关注算法的实现,不关心具体的硬件实现细节,几乎可以使用Verilog语言提供的所有语句;
(2) 寄存器传输级(RTL): 通过描述模块内部状态转移的情况来表征该逻辑单元的功能,设计者关注数据的处理及其如何在线网上、寄存器间的传递;
(3) 门级: 调用已设计好的逻辑门基本单元(原语),如与门、或门、异或门等,描述逻辑门之间的连接,以实现逻辑功能;
(4) 开关级: 这是Verilog语言支持的最低抽象层次,通过描述器件中的晶体管、存储节点及其互连来设计模块。
上述四个抽象级别的特性、描述方法和相关的问题在表31中给出。


表31Verilog HDL的抽象等级



模型特性描述说明

行为级


功能模型利用两类过程语句表征:

(1) initial语句: 常用于建立行为(仿真)模型,只运行一次;

(2) always: 用于行为描述和RTL级编码,可持续运行。

具体内容见3.4节不是所有的行为模型都是可综合的

例:
always (A or B or C or D or Sel)

begin

case (Sel)

2`b00: Z = A;

2`b01: Z = B;

2`b10: Z = C;

2`b11: Z = D;

default: Z = 1`bx;

endcase

end
注意case语句与ifelse if语句的区别
RTL级

前言/序言

前言
由Xilinx公司发明的FPGA技术,按照摩尔定律已经历了30多年的发展历程,它的可编程特性使其成为电子产品设计和验证不可或缺的手段,在数字信号处理(DSP)系统和嵌入式系统等设计领域也得到日益广泛的应用。为了适应迅速发展的技术进步,培养出符合新时代要求的合格人才,近年来大学教育利用FPGA的可编程特性进行了广泛的探索,也取得了令人瞩目的成果,例如得到教育部认可的口袋实验板,以及贯穿式教育和工程实训等教改措施。
根据近期在多个大学进行数字系统和嵌入式系统工程实训的经历,结合国家对新型人才培养的要求,以及根据读者对利用FPGA设计现代数字系统的需求,选取目前流行的FPGA器件、设计工具和设计语言编写了此书。本书选用Xilinx公司7系列全可编程FPGA和SoC,2017x最新版本的Vivado设计工具,以及在许多大学得到广泛应用的依元素公司开发的EGO1开发板,作为学生的口袋实验板随身携带,不仅可以使设计项目在FPGA硬件上运行,也可以通过实验验证、理解和运用所学知识。
Verilog HDL是设计者们喜爱的语言,与VHDL相比,更节省代码,更接近C语言,适合有C语言基础的读者学习,因此被业界广泛使用,也为本书所采用。
全书共8章。
第1章介绍现代数字系统设计概论,包括现代数字系统层次化的设计概念、多种描述方法和IP、SoC概念。本章使初学者对现代数字系统设计有一个整体的认识。
第2章介绍历代FPGA器件的结构特点、硬件资源和配置方法,为进一步的设计和优化奠定必要的器件基础。
第3章介绍Verilog HDL的基本语法和设计实例,是全书的设计语言基础教程。
第4章介绍Vivado工具编程、仿真、综合和实现的设计流程,以及测试诊断工具和IP集成工具等。
第5章是比较深入的高级设计与综合技术,包括Verilog HDL的编程风格、综合优化、同步设计、高级综合与系统综合。本章是完成较复杂数字系统设计的重要设计知识与设计技巧。
第6章介绍在FPGA内实现DSP的方法,在FPGA内建DSP是现代DSP技术的最重要的发展方向。本章介绍在FPGA构建DSP的基本方法和System Generator设计工具,给出使用System Generator设计工具设计FIR数字滤波器的完整设计过程。
第7章介绍Zynq嵌入式系统设计技术,包括Zynq嵌入式处理器结构、AXI4总线,利用IP模块在Vivado构建硬件,在SDK中编写软件,协同开发流程。
第8章给出三个综合设计实例。
为了方便读者,本书编写了Verilog HDL手册、EGO1开发板资料和参考文献供查阅。
本书保留原书如下三个特点:
一是内容完整,包含设计理论、器件知识、设计语言、基本设计工具,还包括高级设计与综合技术、FPGA内构建DSP的设计方法、SOPC设计方法和综合设计实例。为初学者提供了完整的学习内容和丰富的参考资料。
二是注重读者的认识规律,由浅入深,循序渐进,既有深入的内容,又使初学者能很快入门; 既有数字技术的理论知识,又有指导实践的实验实例。
三是书中涉及的所有程序均已经过调试,在教学过程中可以放心地使用和验证。
当然,现代数字系统设计涉及很广泛和深入的知识,不可能在一门课程中全部解决。我们希望能帮助初学者尽快入门,但更深入的研究和专门的设计知识需要在后续课程和设计实践中不断积累和完善。现代数字系统设计对理论和实践的综合要求都是比较高的,建议使用本教材的老师在介绍基本的设计基础后,尽量安排学生通过实验来发现和解决更多的问题,以提高实践能力。
本书是采用Vivado 2017版本的FPGA教材。选用本书作为教材的高校教师可以到网站http://eelements.readthedocs.io/zh/ego1_v2.1/EGO1.html#id12获取实验的详细资料及演示资料(需获准)。
本书由孟宪元和钱伟康教授共同完成编写和审稿。
由于FPGA技术发展迅速,设计工具的版本每年都有若干次更新,作者水平有限,编写时间仓促,书中的疏漏之处请读者予以指正。
感谢清华大学出版社对本书的出版给予的关心和支持!
孟宪元
2019年2月