本书主要使用Xilinx公司的Artix��7 FPGA器件(引出自带的LVDS接口)和Cypress公司的USB 3.0控制器芯片FX3,以及一些常见的DDR3存储器、UART电路、扩展接口等,由浅入深地引导读者从板级设计、软件工具、相关驱动安装到基础的FPGA实例,从基于FPGA的UART、DDR3、USB 3.0、LVDS传输实例入手,掌握FPGA各种片内资源的应用以及接口时序的设计。
本书基于特定的FPGA开发平台,既有足够的理论知识深度进行支撑,也有丰富的例程进行实践讲解,并且穿插着笔者多年FPGA学习和开发过程中的各种经验和技巧。对于希望基于FPGA实现USB 3.0和LVDS开发的工程师,本书提供的很多实例都是很好的参考原型,可以帮助其实现快速系统原型的开发。
Contents
目录
第1章FPGA、USB与LVDS概述
1.1FPGA发展概述
1.2FPGA的优势
1.3FPGA应用领域
1.4FPGA开发流程
1.5USB接口概述
1.6LVDS接口概述
第2章实验平台板级电路详解
2.1板级电路整体架构
2.2电源电路
2.3FPGA时钟与复位电路
2.3.1FPGA时钟晶振电路
2.3.2FPGA复位电路
2.4FPGA配置电路
2.5FPGA供电电路
2.6DDR3芯片电路
2.7UART芯片电路
2.8LVDS接口电路
2.9USB 3.0控制器FX3电路
2.10其他接口电路
2.11FPGA引脚定义
第3章软件安装与配置
3.1Xilinx账户注册与Vivado软件下载
3.1.1Xilinx账户注册
3.1.2Vivado下载
3.2Vivado安装与免费License申请
3.2.1Vivado安装
3.2.2免费License申请
3.3文本编辑器Notepad++安装
3.4Vivado中使用Notepad++的关联设置
3.5串口芯片驱动安装
3.5.1驱动安装
3.5.2设备识别
3.6USB 3.0控制器FX3的SDK安装
3.7USB 3.0控制器FX3的驱动安装
3.7.1PC与开发板的USB 3.0连接
3.7.2PC与USB连接
3.7.3USB 3.0控制器FX3驱动安装
Xilinx FPGA伴你玩转USB 3.0与LVDS
第4章第一个例程与FPGA的下载配置
4.1流水灯实例
4.1.1功能概述
4.1.2新建Vivado工程
4.1.3创建工程源码、约束和仿真文件
4.1.4功能仿真
4.1.5编译
4.2Xilinx 7系列FPGA配置概述
4.2.1不同配置模式的选择
4.2.2FPGA配置比特流的大小
4.2.3FPGA加载配置方式选择
4.2.4配置引脚功能定义
4.3XADC温度监控界面
4.4bit文件的FPGA在线烧录
4.5mcs文件的QSPI Flash固化
4.5.1FPGA配置设置选项
4.5.2生成mcs文件
4.5.3下载mcs件
第5章基础外设实例
5.1拨码开关的LED控制实例
5.2PLL配置实例
5.3用户自定义IP核
5.3.1创建IP核
5.3.2移植IP核
5.3.3配置、例化IP核
5.4UART的loopback实例
5.4.1功能概述
5.4.2代码解析
5.4.3板级调试
5.5MicroBlaze的Hello World实验
5.5.1功能概述
5.5.2MicroBlaze系统IP核配置
5.5.3MicroBlaze处理器软件工程创建
5.5.4板级调试
第6章基于FPGA的DDR3存储器控制实例
6.1DDR3 IP核配置与仿真
6.1.1DDR3 IP核概述
6.1.2DDR3 IP核配置
6.1.3DDR3 IP核仿真
6.2基于在线逻辑分析仪监控的DDR3数据读/写
6.2.1功能概述
6.2.2DDR3控制器IP接口时序解析
6.2.3代码解析
6.2.4在线逻辑分析仪配置
6.2.5在线逻辑分析仪调试
6.3基于UART命令的DDR3数据读/写
6.3.1功能概述
6.3.2代码解析
6.3.3板级调试
第7章USB 3.0控制器FX3实例
7.1基于FX3内部DMA的USB传输loopback实例
7.1.1功能概述
7.1.2固件编译与固化文件生成
7.1.3硬件连接与设备识别
7.1.4FX3的USB Boot加载
7.1.5板级调试
7.2FX3的SPI Flash代码固化
7.2.1启动设置
7.2.2SPI Flash固化
7.3基于FX3内部DMA的USB数据吞吐量测试
7.3.1硬件连接
7.3.2FX3的USB Boot加载
7.3.3FX3的基本Streamer功能演示
7.4基于FX3的UVC(USB Video Class)传输协议实例
7.4.1硬件连接
7.4.2FX3的USB Boot加载
7.4.3UVC设备识别
7.5FX3固件SlaveFIFO配置修改说明
7.5.1功能概述
7.5.2GPIF Ⅱ Designer开启与工程加载
7.5.3GPIF Ⅱ接口配置与工程编译
7.5.4IDE下firmware工程加载
7.5.5IDE下firmware工程编译
7.6基于FPGA�睩X3 SlaveFIFO接口的loopback实例
7.6.1功能概述
7.6.2Firmware下载
7.6.3FPGA代码解析
7.6.4ILA在线逻辑分析仪查看接口时序
7.7基于FPGA�睩X3 SlaveFIFO接口的StreamOUT实例
7.7.1功能概述
7.7.2Firmware下载
7.7.3FPGA代码解析
7.7.4ILA在线逻辑分析仪查看接口时序
7.7.5Streamer中查看数据吞吐量
7.8基于FPGA�睩X3 SlaveFIFO接口的StreamIN实例
7.8.1功能概述
7.8.2Firmware下载
7.8.3FPGA代码解析
7.8.4ILA在线逻辑分析仪查看接口时序
7.8.5Streamer工具测试数据吞吐量
第8章LVDS收发传输实例
8.1LVDS数据收发实例
8.1.1功能概述
8.1.2bit align处理
8.1.3代码解析
8.1.4装配说明
8.1.5板级调试
8.2带CRC校验的LVDS数据收发实例
8.2.1功能概述
8.2.2CRC校验基本原理
8.2.3CRC8检验代码生成
8.2.4代码解析
8.2.5装配说明
8.2.6板级调试
参考文献
本章导读
本章通过5个基础实例,熟悉使用Xilinx FPGA对LED指示灯、拨码开关、UART外设的控制,以及使用FPGA实现PLL、MicroBlaze处理器、IP核定制等。希望通过这些例程,读者可以掌握基于Xilinx Artix��7系列FPGA器件和Vivado开发工具的使用。
5.1拨码开关的LED控制实例
本实例对应工程at7_ex02,如图5.1所示,AT7板子板载8个LED指示灯和8个拨码开关与FPGA相连。本实例所要实现的功能很简单,每个拨码开关对应控制一个LED指示灯的亮灭状态。
图5.1拨码开关与LED原理图
本实例的功能: 每个时钟周期,将最新的拨码开关输入赋值给LED指示灯,代码如下所示。
module at7(
input sys_clk_i,//外部输入50MHz时钟信号
input ext_rst_n, //外部输入复位信号,低电平有效
input[7:0] switch, //8个拨码开关输入,ON——低电平;OFF——高电平
output reg[7:0] led //8个LED指示灯亮灭控制
);
//-------------------------------------
always @(posedge sys_clk_i or negedge ext_rst_n)
if(!ext_rst_n) led <= 8'd0;
else led <= switch;
endmodule
Foreword
前言
FPGA技术在当下各种电子设计应用中越来越火热,它的成本虽然还是高高在上,但是它给电子系统带来的不可限量的速度和带宽,以其在灵活性、小型性方面的优势,越来越被各种对性能要求高、偏重定制化需求的开发者所青睐。而使用LVDS、USB接口进行高速数据传输也是很多大数据采集应用的必然选择。
因此,笔者结合实际工程项目的需求,在本书中讲述基于Xilinx Artix��7 FPGA器件+LVDS+USB 3.0的开发,通过实例讲解,相信可以帮助读者快速掌握这个原型系统,甚至将其移植到具体的项目或产品中。
本书共8章。
第1章阐释FPGA、USB和LVDS的一些基本概念和应用背景。
第2章从FPGA开发平台的电路板设计入手,介绍FPGA板级硬件电路设计要点,以及本书配套开发平台的外围电路的设计。
第3章讲述开发环境的搭建,包括Xilinx FPGA集成开发环境Vivado、文本编辑器Notepad++、下载器驱动、UART驱动、USB 3.0控制器芯片FX3对应的SDK和驱动安装,帮助读者迅速解决这些最棘手的“软”问题。
第4章以一个最基本的FPGA实例引领读者掌握一个完整的FPGA开发流程,包括FPGA的下载配置和代码固化操作。
第5章为基础外设实例,包含基本的LED流水灯、拨码开关控制、PLL配置、用户自定义IP、UART和搭建基于MicroBlaze处理器的嵌入式系统,通过这些基本的实例确保读者能够快速掌握基于Xilinx FPGA的开发。
第6章主要介绍DDR3 SDRAM的配置、仿真和板级调试。
第7章集中在USB 3.0控制器芯片FX3相关的实例上,既有单独FX3和PC的USB 3.0传输实例,也有FPGA + FX3和PC之间的USB 3.0数据传输实例。
第8章讲解如何使用FPGA实现LVDS接口应用,包括LVDS基本的收发设计以及包含CRC校验的LVDS收发设计。
吴厚航(网名:特权同学)
2017年12月于上海
Xilinx FPGA伴你玩转USB 3.0与LVD
这本书真的像一位经验丰富的导师,在我学习FPGA的过程中起到了至关重要的作用。我之前在学习USB3.0时,常常感到无从下手,协议繁多,时序复杂,总是在理论和实践之间难以找到一个有效的连接点。而这本书的出现,彻底改变了我的困境。它没有回避USB3.0的复杂性,而是以一种非常清晰、逻辑严谨的方式,将庞大的协议栈分解成一个个易于理解的部分,并辅以大量的图示和代码示例。让我印象最深刻的是,作者在讲解数据传输流程时,会详细分析每一个阶段的状态机和信号交互,这对于我理解整个流程至关重要。LVDS部分的讲解也同样出色,作者通过对比不同的LVDS应用场景,以及分析信号完整性问题,让我深刻认识到高速信号设计的重要性,并且掌握了一些实用的设计技巧。让我感到惊喜的是,书中关于电子设计与嵌入式开发实践的内容,并不是简单地罗列一些开发板和工具,而是深入探讨了整个开发流程中的一些共性问题,例如如何进行有效的模块化设计,如何进行高效的调试,以及如何优化性能等。这些内容对于提升我的工程实践能力非常有帮助。总之,这本书为我提供了一个非常全面且深入的学习平台,让我能够更自信地去挑战更复杂的FPGA项目。
评分这本书给我的感觉就像是一张精美的藏宝图,指引我深入探索FPGA的奇妙世界。在我看来,它的最大价值在于其“实践性”和“启发性”。USB3.0和LVDS这两个主题,本身就具有一定的门槛,但作者通过极其生动且易于理解的方式,将这些复杂的概念娓娓道来。我尤其欣赏书中关于信号完整性分析和优化的章节,这部分内容往往是很多书籍中容易被忽略的,但对于实际的高速接口设计至关重要。作者提供了非常具体的案例和分析方法,让我能够清晰地看到如何通过合理的PCB布局和走线来保证信号质量。而电子设计与嵌入式开发实践的部分,更是锦上添花。书中关于如何进行项目规划、如何选择合适的开发工具、以及如何进行有效的调试策略的讲解,都非常实用。我之前在做嵌入式项目时,常常会遇到一些难以解决的bug,但通过学习书中的调试技巧,我发现很多问题迎刃而解。这本书不仅仅是传授知识,更是培养一种解决问题的能力和一种工程思维。它让我明白了,真正的“玩转”FPGA,不仅仅是掌握技术,更是要将技术融会贯通,并应用于解决实际的工程问题。
评分读完这本书,我最大的感受是,它真正做到了“授人以渔”。我之前在学习FPGA的时候,常常会陷入一个误区,就是死记硬背一些API或者寄存器配置,但对底层原理却了解不深。这本书恰恰弥补了这一块的不足。它在讲解USB3.0和LVDS时,并没有仅仅停留在接口的应用层面,而是深入剖析了其背后的硬件原理和设计思想。例如,在讲解USB3.0的物理层时,作者详细介绍了信号编码、时钟恢复等关键技术,让我对高速串行接口的工作机制有了更深刻的认识。而LVDS部分的讲解,同样让我受益匪浅,关于差分信号的产生与接收,以及如何抑制共模噪声的分析,都非常有深度。更让我感到欣喜的是,这本书在电子设计与嵌入式开发实践方面的论述,也充满了智慧。作者分享了许多他在实际项目中积累的宝贵经验,例如如何进行系统级的性能评估,如何进行代码重构以提高可读性和可维护性,以及如何有效地进行团队协作等。这些内容,对于任何希望在嵌入式领域有所建树的开发者来说,都是无价之宝。这本书不仅仅是关于技术,更是关于如何成为一名优秀的工程师。
评分这本书绝对是近年来我在FPGA领域遇到的最令人兴奋的读物之一,即使你已经有一些基础,它也能给你带来意想不到的启发。我尤其喜欢作者在讲解USB3.0部分时那种抽丝剥茧般的严谨态度,每一个协议层、每一个时序细节都讲解得绘声绘色,仿佛你正坐在作者身边,由他亲自手把手地指导。让我印象深刻的是,书中不仅仅是理论堆砌,而是大量结合了实际的工程案例,从原理到实现,再到调试过程中可能遇到的各种坑,都一一列举并给出了解决方案。这对于初学者来说,简直是宝藏!我之前尝试过几本关于高速接口的书,但很多都停留在概念层面,要么就是代码片段过于晦涩难懂。这本书的优势在于,它能够将复杂的理论转化为可执行的代码,并且提供了详尽的说明,让你不仅知其然,更知其所以然。读完关于USB3.0的部分,我对高性能数据传输的理解上升了一个新的台阶,甚至开始思考如何在自己的项目中应用这些技术。而LVDS的部分,同样精彩,那些关于信号完整性、阻抗匹配的讲解,让我茅塞顿开,很多之前在实际设计中遇到的信号问题,现在都能找到根源所在。作者的文字功底也非常扎实,没有生涩难懂的专业术语,即使是初学者,也能循序渐进地理解。总而言之,这是一本能够真正帮助你“玩转”高速接口的实战指南。
评分坦白说,我一开始对这本书并没有抱太大的期望,毕竟市面上关于FPGA的书籍实在太多了,质量参差不齐。然而,当我翻开它之后,立刻就被深深吸引了。作者的叙事方式非常独特,他没有采用枯燥乏味的教科书式讲解,而是将复杂的概念融入到一个个引人入胜的故事和场景中。例如,在讲解LVDS的时候,他没有直接抛出公式和图表,而是先描绘了一个需要高速、低噪声传输的场景,然后层层深入,解释LVDS是如何在这种场景下大显身手的。这种“故事化”的讲解方式,让原本晦涩的技术变得生动有趣,也更容易被我这样的读者所理解和记忆。更重要的是,书中对实际项目开发流程的描述也非常到位,从需求分析、架构设计,到代码编写、仿真验证,再到硬件调试,每一个环节都进行了详细的阐述,并提供了大量的实用技巧和注意事项。我特别喜欢其中关于嵌入式开发实践的部分,它不仅仅是教你如何写代码,更是教你如何像一个经验丰富的工程师一样去思考和解决问题。那些关于资源优化、功耗管理、时序约束的讲解,对我来说具有极高的参考价值。通过这本书,我不仅掌握了相关的技术知识,更重要的是,培养了一种解决实际问题的思维方式。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有