没有合适的资源?快使用搜索试试~ 我知道了~
首页2022版米联科ZYNQ FPGA基础教程:深度解析与应用
2022版米联科ZYNQ FPGA基础教程:深度解析与应用
需积分: 5 3 下载量 184 浏览量
更新于2024-06-18
收藏 27MB PDF 举报
米联科2022版ZYNQ教程是一份针对ZYNQ7000系列FPGA的基础课程,由常州一二三电子科技有限公司和常州米联客电子科技有限公司联合提供。ZYNQ是一种集成式FPGA(Field-Programmable Gate Array)与嵌入式处理单元(Cortex-A9或更高性能)的SoC(System on Chip)解决方案,由Xilinx公司开发并引领业界。 该教程的版本历经多次更新,从2016年的第一版到2022年的第五版,持续反映了技术的演进和教学内容的精细化。学习者可以通过微信扫码注册米联客技术论坛,获取更多的免费资源和支持。教程强调了FPGA编程的重要性,虽然硬件编程相对硬件设计而言可能更为直接,但其应用深度取决于对特定专业领域的理解和行业背景知识。 课程的核心内容涵盖了FPGA的基础知识,包括逻辑门设计、配置过程、高级特性如IP核(知识产权核)的使用,以及如何利用ZYNQ的异构架构进行高效设计。随着ZYNQ的发展,它不仅提供了基本的逻辑功能,还支持高速通信接口和单芯片集成的ARM+FPGA设计,这使得FPGA在诸如通信、嵌入式系统、数据中心等领域有广泛应用潜力。 对于想要深入学习和从事FPGA开发的人来说,米联科2022版ZYNQ教程是一个理想的起点,它不仅教授技术技能,还引导学生思考如何将FPGA技术与实际业务场景相结合,实现技术与业务的深度融合。通过这个课程,学员能够掌握从入门到实践的全流程知识,为未来的FPGA职业生涯打下坚实基础。
资源详情
资源推荐
常州一二三/常州米联客电子科技有限公司 米联客(MILIANKE)www.uisrc.com ZYNQ 7000 FPGA Base Course(2022)
16
LUT 本质上就是一个 RAM。它把数据事先写入 RAM 后, 每当输入一个信号就等于输入一个地址进行查表,
找出地址对应的内容,然后输出。FPGA 不仅内部的逻辑功能可以通过软件编写,FPGA 的 IO 功能也可以根据硬件
电路需求重新分配定义。对于硬件电路板设计工程师,只要掌握了 FPGA 的硬件特性,可以在不需要和软件工程师
进行复杂的沟通前提下就可以完成对硬件的设计。然后软件工程师,通过软件定义 FPGA 的外设功能引脚。
所以可以把 FPGA 就是通过程序可以实现不同的逻辑功能的芯片,而且这种方式不同于 CPU 的指令调度方式。
下一个问题中,我们讨论 FPGA 和 CPU 的对比。
1.2.2FPGA 的优缺点
FPGA 有很多优点,比如并行处理能力强,速度快,由于 FPGA 硬件是可编程的特点,在一些 ASIC 芯片还没
出现的领域或者行业,FPGA 具有通过编程快速达到方案预期的好处,也可以在一些不知道去研发专用 ASIC 电路
的领域,或者最佳的成本优势。比如通信、安防、医疗、工业、军事、航天领域,FPGA 都是这些行业的明星,而
且高端的 FPGA 技术几乎被国外技术垄断。另外和 PC 以及 GPU 相比,FPGA 的综合功耗更低。
FPGA 的缺点:
1)、从成本角度,FPGA 不适合一些量非常大的领域使用,量非常大的领域一般有专用的 ASIC 芯片供应。所
以如果量大,建议读者先去考虑是否有专用的 ASIC 芯片可以解决方案。
2)、从开发难度来说,FPGA 需要很强的专业背景,以及基础的底层通信协议的编写能力,使用 FPGA 没有库
函数给你调用的,所以基本上一切的接口都要自己去写,如果一些标准的 IP 或者公司自己的 IP,也要掌握接口的
时序调用。
3) debug 困难,FPGA 的有一套自己的 debug 方式,可以通过 RTL 的仿真,初步验证自己的代码逻辑是否正确,
常州一二三/常州米联客电子科技有限公司 米联客(MILIANKE)www.uisrc.com ZYNQ 7000 FPGA Base Course(2022)
17
然后通过板级验证,证明在指定的 FPGA 芯片上看是否运行正确。而且有一些潜在的 bug 可能无法发现,需要大量
的测试和验证。所以选择成熟的 FPGA 芯片以及成熟的 EDA 开发软件非常重要,否则入坑了,不容易出来。
4) 编译时间特别长,这是非常不幸的,即便是用目前最好的电脑,用的也是目前这个星球上最好的 EDA 开发
工具,依然非常慢,对于一个中等规模的项目开发,FPGA 的编译时间可能在 20~30 分钟左右,一天 8 小时的工作
时间,没多少次编译就要下班了,所以加班是经常的事情。
1.2.3FPGA 的应用领域
FPGA 广泛应用于通信、安防、医疗、工业、军事、航天领域。这些领域,当然不是全部要使用 FPGA,而是
一些方面不会有现成的 ASIC 芯片供应,说白了就是量不够大,但是对成本又不是非常敏感的行业。没错,基本上
用 FPGA 的公司都是很有钱的公司,如果你是 FPGA 从业者,你的就业面基本上就是去一些大型的通信公司,或者
研究所。比如华为的通信设备,很多都需要用到 FPGA 做通信使用,海康威视的设备很多需要用 FPGA 做图像加速
处理、阿里云的云服务器也有用 FPGA 加速的,工业领域的通信、运动控制、工业摄像头等非常大量的使用 FPGA,
军事领域的导弹,雷达等,也都是需要用到 FPGA 去采集高速的 AD 信号,并且做并行加速,通常来说,美国的芯
片是禁售给军工企业的。
目前新兴的领域比如加速运算,FPGA 方案和 GPU 方案也是各有千秋,而且从长远看,笔者也是更看好 FPGA
的技术,因为 FPGA 的并行算法能力,可以突破摩尔定律的影响。GPU 不可能无限制提高主频的,但是 FPGA 可
以通过增加逻辑门的数量,提高并行处理的速度,从而获得更高的性能。并且在一些专业的加速算法,深度算法领
域,FPGA 具备更好的功耗,更低的功耗就意味着更低的使用成本。
1.2.4 是否有必要学习 FPGA
前面分析的内容,已经初步告诉你是否要学习 FPGA 了。除了以上的分析,还有一定的机缘。如果机缘让你遇
到 FPGA,请好好把握,FPGA 是非常有趣的事物,需要学习的知识非常多,并且具备很大的挑战。如果对于一个
学生,已经掌握了单片机,你可以选择一条往 ARM 方向,LINUX 方向的发展路径,也可以选择一条往 FPGA 的通
信、并行加速发展方向;但是不管如何,都需要你有专业背景,也就是把你专业领域的东西,通过这些先进的技术
可以发挥作用。如果你是一个工程师,如果你们的公司要求你掌握 FPGA,你就的去学习 FPGA,如果你是工程师,
你已经厌倦了 ARM 或者 LINUX 的枯燥,你更喜欢 FPGA 的并行处理能力,对 FPGA 的并行加速方案非常痴迷,
你可以选择学习 FPGA。如果你犹豫不绝,毅力不够鉴定,还是不知道自己学习 FPGA 的目的,那就不要学习 FPGA.
1.2.5 学习 FPGA 的困难
每个领域对于不会的人来说,都是难的,但是对于高手来说都是不难的。所以这个难是相对的,是相对于初学
者的。
1)、你所认识的身边学习 FPGA 的人少,FPGA 的圈子小,所以你要由做独行侠的心里准备。
2)、软件安装和使用超级复杂,一各软件都要 20G 以上,这还不算安装一堆软件,别人搞 STM32 的安装一个
200 多 M 的 MDK 就可以了。
3)、学习成本高,学习成本不仅仅包括硬件的投入,低端的硬件,学习的内容有限,打基础没问题,真要去公
司露几手,是不行的,FPGA 做的都是一些高尖端的领域,必须由几手绝活才可以吹牛。另外就是时间投入,由于
很多需要基础学习,比如一个 I2C,一个 UART 通信都要靠自己敲入每行代码,这是多痛苦 事情,别人搞 STM32
的以一条库函数就搞定了,你作为一个初学者,可能一个 I2C 或者一个 UART 写了 1 周,2 周都没写稳定。
4)、大量的接口协议需要学习,比如 AXI4 总线,光通信、PCIE 通信、接口协议不是证明你 FPGA 技术是否多
高的,但是没有接口协议,你的自己写的控制代码,或者算法,无法借用别人已经做好的功能模块。
5)、需要会时序分析,自己每写的一行代码都要精确知道,在某一个时刻发生了什么,别人 STM32 库函数调
用那要计算花费了多少时间,具体哪一个时刻执行了什么呢?你可能因为一个时序的代码没有精准控制,导致你花
费了几天调试才找到问题。
常州一二三/常州米联客电子科技有限公司 米联客(MILIANKE)www.uisrc.com ZYNQ 7000 FPGA Base Course(2022)
18
6)、需要会看英文手册,而且会大量的无效信息中提取有用的信息,搞 FPGA 由中文的教程那是你的福音,更
多时候需要肯英文文档,关键很多时候还没理解透彻
7)、全能通,你需要会 C/C++,你需要比 STM32 学者更强,需要掌握 microblaze SOC 使用,现在出现的 ZYNQ
以及 MPSOC,你还需要会 ARM 会 LINUX 底层驱动的开发,调试上位机
8)、硬件分析能力,有些硬件工程师设计的硬件有问题,你还要帮忙分析测试硬件问题
9)、初学者写的代码问题很大,FPGA 编译时间很长,你会经常需要加班
10)、有一台非常强大的电脑,配置当下最好的 CPU,单核主频越高越好,内存越大越好,所以对于手头紧张的
学生来说,还是要节省开销,配个好点电脑的,尽量不要因为硬件的问题浪费宝贵的时间。遥想笔者上学期间的穷
苦潦倒,FPGA 真是有点玩不起的。可以参考以下参数配置。
1.2.6 方法与捷径
方法与捷径是就是如何花费更少的时间达到最佳的结果。
1)、如果你学习过 C 或者其他嵌入式编程的最佳了,有点基础总比没有基础的小白好
2)、FPGA 编程语言选择 verilog 好了,虽然 VHDL 也是 FPGA 的编程语言,你能看懂 VHDL 就可以了,因为
现在学习 verilog 编程语言的人多,数据也多,参考资料就多了。
3)、选择一款国内开发板,国内的开发板产业已经相对完善,适合初学者使用,配套的中文教程容易阅读,配
套的例子一般也容易上手。但是国内的开发板还存在以下问题:,资料的更新比不上国外的,一些新的技术没有在
教程中体现,当你完成基础的学习后,还是最好去学习国外的资料,一些 FPGA 最新的技术国内开发板厂家需要一
定延迟才会更新,如果你总是满足于开发包板学到的内容,你得技术肯定不是最先进的,肯定也不是领先的。
4)、多加 QQ 群,多和别人交流,活跃的气氛有利于带动一些技术大牛和你分享他们的技术经验。
1.3
总结
虽然我们米联客的主要盈利手段还是售卖 FPGA 开发板,但是我们的教程尽量不出现广告,还是纯粹探讨技术,
笔者以一个 FPGA 爱好者,开发者的角度给大家分享自己的经验和米联客团队掌握的 FPGA 技术,希望能给读者在
未来的 FPGA 从业之路起到积极的帮助,也希望大家可以更多和米联客团队分享自己的学习经验。我们米联客团队
的成长离不开广大读者的参与,我们的技术分享也离不开广大 FPGA 开发者的分享。
常州一二三/常州米联客电子科技有限公司 米联客(MILIANKE)www.uisrc.com ZYNQ 7000 FPGA Base Course(2022)
19
02 解密 XILINX FPGA 基本单元 CLB
2.1 概述
FPGA 是一个非常神奇的芯片,是无所不能的芯片,掌握 FPGA 就是宝剑在手,但是宝剑在手的人,却不一定
做可以天下无敌,因为宝剑只是一把好剑,关键的还是得有会用宝剑的人。比如你拿着宝剑去切猪肉,肯定比不上
卖猪肉的剁刀。所以我们得先了解 FPGA,才能更有利于我们正确使用 FPGA,发挥 FPGA 的作用。
对于不少 FPGA 工程师来说,虽然会采用相关的 FPGA 编程语言和工具对 FPGA 编程开发。但是忽略了对 FPGA
底层的硬件知识的了解,在 FPGA 的编程之路上,可能会遇到很多自己搞不清楚的疑问。其实,我们并不需要花费
太多时间去了解 FPGA 的内部的硬件结构,而是重点分析 FPGA 的 CLB 资源、BRAM、时钟资源、IO 资源。
由于 CLB 资源对我们学习 FPGA 的基本编程有很大关系,所以本文重点介绍 CLB 资源。CLB 是 FPGA 的基本
逻辑单元,我们可以把 CLB 理解为 FPGA 的细胞单元。每个 CLB 里面包括了 2 个 Slices,每个 Slice 又是由 4 个 LUT(查
找表),8 个寄存器以及一些逻辑门组成。掌握这些基本单元的功能应用,以及功能特性,可以为我们未来对采取代码
编程的时候,更好的实现代码和硬件的最佳配合。
2.2
认识
FPGA
的容量
很多人搞了很久的 FPGA 都没搞清楚 FPGA 的容量是什么概念,这是一件非常可笑的事情,你说你是一个 FPGA
程序员,连 FPGA 的资源概念都搞不清楚,如何才能正确选型 FPGA 呢?当我们选型的时候,我们需要评估 FPGA
的资源。下表是来自于 XILINX 官方文档关于资源的描述。如果你看到这个表格还不能明白其中的含义,那么下面
的内容你一定不要错过,作为一个专业的 FPGA 开发者,你是必须要知道的内容。
上表中给出的是 K7 系列 FPGA 的资源概述,我们和别人交流 FPGA 资源的时候,或者选型 FPGA 的时候需要
重点考虑以上资源。接下来,笔者对其中重点的资源进行介绍。
2.2.1Slices 单元
一个 CLB 包括了 2 个 Slices,但是我们通常描述 FPGA 资源的时候不会说有多少 CLB。Slices 是构成 CLB 的
基本单元。所以知道 Slices 的数量就可以知道 FPGA 的“大概”逻辑资源容量了。”大概”?,为什么不是精确的数量,
作为技术工程师,听到这种不确定的描述,心真的非常不爽。但是上表给出的还真实一个概述,不够精确,所以我
们需要进一步分析。
一个 Slice 等于 4 个 6 输入 LUT+8 个触发器(flip-flop)+算数运算逻辑,每个 Slice 的 4 个触发器(虽然有 8 个
flip-flop,但是每个 LUT 分配一个 flip-flop)可以配置成锁存器,这样会有 4 个触发器(flip-flop)未被使用。
对于 CLB 来说,里面的 Slice 居然还不是长一样,有 2 中类型的 Slice。一种是 SLICEL,另外一种是 SLICEM。
SLICEM 的功能更强大,SLICEM 可以当作分布式 RAM 或者 ROM,或者实现移位寄存器。
常州一二三/常州米联客电子科技有限公司 米联客(MILIANKE)www.uisrc.com ZYNQ 7000 FPGA Base Course(2022)
20
2.2.2Distributed RAM
上表中,Max Distributed RAM 就是由 SLICEM 数量决定的。我们再看下一张表:
对于 XILINX 7 系列的 FPGA 来说,SLICEM 约占三分一的 Slices。上表中我们可以看到精确的数据。比如对于
7K325T 的 FPGA,有 16000 个 SLICEM 那么,16000X4X64bit=4096Kb 的 distributed RAM 或者 2000kb 的 Shift Register。
2.2.3Logic Cells
我们经常说到 FPGA 容量是多少,FPGA 器件的容量通常用逻辑单元来衡量,这在逻辑上等同于经典的 4 输入
LUT 和触发器。 7 系列 FPGA 逻辑单元和 6 输入 LUT 的数量之比为 1.6:1,这是相对于经典的 4 输入 LUT 而言
得出的。所以,逻辑单元和 Slice 的数量比是 6.4:1。我们在前面第一张表格
仍然以 XC7K325T 为例子,50950X6.4=326080。通过计算可以看到 Slices 的数量对应的逻辑单元的数量,这个
计算就是等效计算,因为传统的 CPLD 是逻辑门电路,而现在的 FPGA 是以查找表的方式实现了逻辑门的等效功能。
2.3 认识 FPGA Slice 的功能
每个 slice 包含:
•四个逻辑函数生成器(查找表)
•8 个存储单元
•多功能多路复选器
• 快速进位逻辑
FPGA 的逻辑、算术和 ROM 功能就是靠 Slice 实现,其中 slice 又分 SLICEL 和 SLICEM,SLICEM 的功能更强
大,除了具备 SLICEL 的所有功能,还能实现分布式 RAM、ROM 和实现移位逻辑。
剩余449页未读,继续阅读
追梦成长
- 粉丝: 8
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最优条件下三次B样条小波边缘检测算子研究
- 深入解析:wav文件格式结构
- JIRA系统配置指南:代理与SSL设置
- 入门必备:电阻电容识别全解析
- U盘制作启动盘:详细教程解决无光驱装系统难题
- Eclipse快捷键大全:提升开发效率的必备秘籍
- C++ Primer Plus中文版:深入学习C++编程必备
- Eclipse常用快捷键汇总与操作指南
- JavaScript作用域解析与面向对象基础
- 软通动力Java笔试题解析
- 自定义标签配置与使用指南
- Android Intent深度解析:组件通信与广播机制
- 增强MyEclipse代码提示功能设置教程
- x86下VMware环境中Openwrt编译与LuCI集成指南
- S3C2440A嵌入式终端电源管理系统设计探讨
- Intel DTCP-IP技术在数字家庭中的内容保护
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功