2023-02-24 12:22:46

fpga开发手册

Kintex 7 FPGA 系列

安心设计

AMD 郑重承诺支持长产品生命周期。我们很高兴正式宣布,对所有 7 系列 FPGA 和自适应 SoC 的支持将至少延长至 2035 年。这其中包括我们的成本优化型 Spartan™-7 和 Artix-7™ FPGA、我们的整个 Zynq™-7000 SoC 产品组合,以及 Kintex™-7 与 Virtex™-7 FPGA。所有速率和温度等级均包含在内。

入行10年后,我总结了这份FPGA学习路线 - 知乎

最近我收到很多同学的提问,让我介绍一下FPGA怎么学习、怎么进阶,有什么推荐的材料或者学习资源。

在给我留言和私信的朋友里,有在校的大学生,需要学FPGA做数电实验、参加竞赛、进实验室,或者只求水过这门课就可以。还有很多研究生或者博士生,想要用FPGA来进行算法加速,或者从事和FPGA相关的研究,但是有点不知道如何下手。此外还有很多想转专业的朋友,他们想把FPGA或者数字芯片设计作为未来的职业发展方向。所以我们可以看到,其实每个人的背景、学习的目的和方法、以及学习的时间和资源都不尽相同。

那么,有没有一个共通的学习路线,能够指引我们尽快入门FPGA学习呢?通过这几周的梳理,我发现不管我们的背景或者动机怎样,这个学习路线还是比较清晰的,而且很多内容的学习也是有很多的共通之处的。

在这篇文章里,我会主要介绍入门FPGA的学习路线

。如果你刚刚开始学习FPGA,或者想要学习FPGA,那么这篇文章肯定会对你有所帮助。如果你已经学习一段时间了,那么这里介绍的学习路线应该会让你少走一些弯路。如果你是一个FPGA高手,也欢迎在评论里分享你的学习经验,说不定就能帮助很多希望学习这个内容的朋友们。

FPGA入门阶段的学习,知识点其实是最多也最杂的,很多人就是看到这部分要学这么多有的没的,就直接弃坑了。但是这个阶段其实非常重要,因为它会为你今后进阶打下坚实的基础。那么我们就来看看这个阶段到底有哪些内容。

总体来说,我把这个学习路线大致分成了四个部分,分别是:编程语言、基础知识、开发工具和动手实验

。对于每个部分,我都会介绍和总结一些入门的时候应该掌握的知识点和套路,我也会介绍和推荐一些书籍和学习资料,希望能对你的学习有所帮助。

FPGA入门学习第一部分:硬件编程语言

FPGA的编程语言,是我们必须掌握的内容。和软件开发使用的C、C++、Java等“高级”语言不同,FPGA开发使用的语言叫硬件描述语言HDL,或者寄存器传输级语言RTL,下文中我们统称RTL。

对于初学者,这里我们先不讨论高层次综合的内容,也就是用C语言或者python编程FPGA。关于高层次综合的内容,可以看我之前的文章

《高层次综合:解锁FPGA广泛应用的最后一块拼图》

。但是至少从目前各个公司的FPGA岗位的需求来看,RTL的代码能力还是必须的。

主流的硬件描述语言有VHDL和Verilog,还有一个叫SystemVerilog。VHDL和Verilog各有优缺点,比如VHDL的语法更加严谨,Verilog更加灵活,比较像C语言。对比VHDL和Verilog谁好谁坏不是这篇文章的重点,入门的话建议先熟练掌握一个就可以。

从我个人的角度来看,推荐先学习Verilog,特别是如果你有一定的C语言基础,那么应该会比较好上手

。等你积累一定开发经验之后,可以考虑再看一下VHDL。因为有可能在实际项目里,一些模块是Verilog写的,另外一些是VHDL写的。所以即使写的不溜,也最好能大概看懂用VHDL写的设计。

不管你学习什么语言,

主要的学习内容都有三大部分,第一是语法,第二是如何用这个语言做电路设计,第三是如何用这个语言做验证

关于Verilog语法的书有无数本,但其实内容都大同小异,所以不用太纠结看哪本书,找一本评价好的就好。比较有名的有《Verilog数字系统设计教程》,或者《Verilog HDL高级数字设计》。但是不管你选哪本书,建议你花时间认真看一遍Verilog语法,不需要死记硬背,但应该对每条语法的基本用法和功能做到心中有数。

Verilog的语法,可以分为可综合(Synthesizable)和不可综合(Non-synthesizable)两部分

。可综合就是指这部分语句可以生成对应的硬件电路。如果你的时间有限,一开始我们可以先看可以综合的Verilog语法,这个其实不多,常用的大概只有十来条语句。掌握之后我们再看用来主要用来写仿真和验证的那些不可综合的Verilog语句。

配合Verilog的学习,

我强烈推荐一个刷题的网站,叫HDLBits

。这里面有很多由浅入深的基础性的练习,非常适合初学者学习,强烈建议大家把这里面的题目做一遍。从做题的角度来看,其实学习Verilog和学习Python、C++或者Java等高级语言没什么区别,都需要代码量的积累,以提升熟练度。所以如果你学习的时间特别有限,可以先做这里的题目,遇到知识点之后,再去反查你的Verilog书,这样通过实践来学习。

使用RTL进行逻辑设计,主要有组合电路和时序电路两部分。组合电路里包括各种门电路、多路选择器、算术运算电路比如加法乘法、有符号数无符号数等等。时序电路里包括寄存器、时钟和复位的同步异步、计数器、移位等等,特别是状态机,都应该熟练掌握。这些在HDLbits那个网站里都有很多对应的题目。

RTL的验证,初学者主要掌握怎么搭建测试平台以及编写简单的测试用例就可以。验证这个东西可以很复杂,比如业界广泛使用的UVM、或者之前介绍过的

形式化方法

等等。我在验证这个领域花了将近三年的时间学习,仍然有很多欠缺的地方。所以对于初学者来说,这些内容在我们入门的时候不需要掌握。在下一篇文章里,我们再详细说说这些进阶的验证方法学。

初学者学习RTL最大的难点,也是最普遍的问题,就是喜欢用软件编程的思维来考虑硬件

。其实,软件编程大都是顺序执行的,但是硬件编程大都是并行执行的,这是一个很大的思维方式的转变。这就需要我们在学习的Verilog的时候一定要多想想对应的电路,比如在Verilog里写一个for循环,它综合出来是什么样的电路结构;或者if else与case语句,生成的电路有什么区别等等,都是值得我们思考和总结的知识点。

学习一段时间之后,如果能做到对于一个给定的逻辑功能,我们能想象出来它的电路结构,然后能够用Verilog实现,并且能写一些简单的仿真环境和测试用例,那么就说明RTL语言这部分学的很通透了。

对于Verilog掌握比较熟练的朋友,我比较推荐大家转向SystemVerilog

。事实上,很多业界的大公司其实都在使用的SystemVerilog作为主要的开发语言。

SystemVerilog可以看成是Verilog的超集,它向下兼容Verilog,但是加入了很多Verilog不支持、但非常有用的特性,比如自定义类型、结构体联合体,还有接口等等。此外还有一些用于仿真验证的特性,比如业界常用的用来做验证的随机约束和UVM,都是基于SystemVerilog实现的。同时,它也简化了很多Verilog里的一些语法表达,比如你不用纠结一个信号究竟是wire还是reg,在SystemVerilog里可以直接用logic表示,诸如此类的还有很多,我就不一一列举了。

我目前不太推荐初学者0基础自学SystemVerilog,主要原因是我没找到很好的中文入门资料。但是如果你学校或者培训班在教SystemVerilog,那样最好,可以一步到位。我一直在看的一本书叫《SystemVerilog硬件设计及建模》,我是10年前买的,它是非常好的一本工具书。但是请注意,它不是SystemVerilog的教材,所以如果你刚入门,看这本书肯定会懵逼。等你学完Verilog,再看这本书,就很容易转到SystemVerilog了。

还有另外一本书,叫《SystemVerilog验证 – 测试平台编写指南》,这个绿皮书也非常有名,它主要介绍的是电路验证的相关内容,比如面向对象、功能覆盖率、随机化、断言等等,想做验证的同学必看,购买链接我放在文末,但是刚开始入门的同学可以先不用看。

学习编程语言的时候,还有一个很重要的内容就是仿真工具。这里比较常用的是Mentor的Modelsim,还有Synopsis的VCS,又是一个二选一,其实哪个都可以。我用的比较多的是Modelsim。业界使用的其实是Modelsim的高级版Questasim,这个和初学者也关系不大。

此外呢,一般FPGA开发工具会自带一个轻量级的仿真工具,网上也有一些开源的验证工具,比如iverilog,还有一些网页工具,比如EDAplayground。这些大家可以根据自己的实际情况,如果没有Modelsim或者VCS的license,可以考虑使用这些开源工具看看。

FPGA入门学习第二部分:基础知识

说完了编程语言,我们再来看看入门FPGA的第二部分内容:基础知识。这里主要有专业基础课和FPGA相关的专业知识两部分。

专业基础课不多说了,都是大学电子类专业的必修课:电路、数电、计算机体系结构、接口、数字信号处理等等。对于那些想转专业搞数字芯片或者FPGA的朋友,优先看数电,其他的内容应该根据你想从事的专业领域有目的的看。

和FPGA相关的专业知识,包括FPGA芯片的基础结构,以及它的一些基本单元的结构,比如查找表、逻辑单元、逻辑块、DSP、存储器等等。这部分内容,推荐看FPGA官方的文档,当然很多教FPGA的书里也都会有这方面的内容,接下来我们会说。

FPGA结构示意图

还有很重要的一部分,就是了解FPGA的开发流程,

主要包含了设计、仿真、综合、映射、布局布线,时序收敛,映像下载和硬件调试等步骤

。这里面还有很多小的环节,比如时序和面积的约束、各个阶段的仿真等等。我们至少应该知道,为什么需要这些步骤,每个步骤都完成了什么功能。

FPGA入门学习第三部分:开发工具

FPGA开发工具的使用也是入门FPGA必须要掌握的内容。目前,最主流的FPGA开发软件有两个,就是赛灵思/AMD的Vivado,还有英特尔的Quartus。这里又来一个二选一,大家要根据自身情况去选择,比如你们学校教的是谁家的FPGA,或者你用谁家的开发板,或者你手头有谁家的license之类的。在入门阶段,我建议专注于一个平台,没必要两个都学。一个搞通了另外一个其实换汤不换药。

学习FPGA开发工具的目的主要有3点。

第一,熟悉前面说的FPGA开发流程

。比如:怎么创建工程,怎么添加文件,怎么跑一系列编译的流程,怎么加入时序约束,怎么分配管脚,然后怎么把生成的FPGA映像加载到开发板上运行。

第二,就是熟悉一些常用的IP的用法

。在FPGA项目中,我们会用到很多不同的IP核,比如PLL、FIFO、存储器等等,这能帮助我们提升设计的效率和性能,避免重复造轮子。所以我们应该学会怎么配置和调用这些常用的IP。此外还有复杂一些的包括软核处理器NIOS,还有一些通信用的IP比如以太网控制器、PCIe、DDR控制器等等。一开始学习的时候一般不需要看,进阶的时候再看也来得及。

第三,就是学习一些常见的硬件调试和时序分析的方法,比如怎么看最大频率,当时序不收敛的时候怎么进行分析和修改设计,怎么用signaltap做一些简单的硬件测试等等。

使用SignalTap进行硬件测试

这部分的学习,建议大家对照教材或者参考书进行,此外,我强烈建议大家配合着开发板进行学习,这就是下面要说的FPGA入门路线的第四点:动手实验。

FPGA入门学习第四部分:动手实验

学习硬件不摸板子,就像纸上谈兵。所以最好结合开发板和参考书的实验例程,从头到尾走几遍前面说的流程。现在市面上这类书也有很多,其实内容也比较类似,比较经典的实验有流水灯、按键、数码管、红绿灯、一些常见总线的通信、一些数据和信号处理的实验等等。

我当年看的是特权同学的书,相信很多同学也看过。我当时没买他的开发板,我用的是学校的板子。现在这些开发板在某宝上有很多,如果你要买的话,我认为不用买太贵的,基本功能有就可以了。绝大部分板子我都没用过,我就不做具体推荐了。如果你看好了哪个板子但是不确定合不合适,可以在下面留言或者私信我。

FPGA入门学习:知识点小结

这篇文章给大家梳理了一下入门FPGA的学习路线和知识点,主要有四点,就是编程语言、开发工具,基础知识和实际的硬件实验操作。如果你掌握了这些,其实就已经为更高阶段的学习打下一个比较坚实的基础了。

当然这些内容说起来容易,实际还是需要大家花时间下功夫去学习和钻研。事实上不管是学习FPGA,还是学习其他任何东西,从来都是一份耕耘一分收获。除了学习这些专业的内容以外,我们更是在努力变的自律,也在培养和锻炼自己不断学习的能力、面对挑战的勇气,以及在挫折和困难中不断前行的韧劲。我相信付出肯定会有收获,明天的你也肯定会感激自己今天的努力。我祝愿大家能够享受这个学习的过程,我也希望能和大家一起,不断通过努力变成更好的自己。

(注:本文仅代表作者个人观点,与任职单位无关。)

下面这期视频包含了本文的部分内容,欢迎观看:

我的个人主页:

关注公众号“老石谈芯”,看更多原创芯文、芯情、芯事

有关芯片与FPGA技术的深度解读,并与老石一对一交流,欢迎加入知识星球:“老石谈芯-进阶版”,一个关乎技术与观点的互动社区。

7系列FPGA数据手册:概述------中文翻译版_KSY至上主义者的博客-CSDN博客_fpga手册怎么看

7系列FPGA数据手册:概述------中文翻译版

总体介绍

Xilinx®7系列FPGA包括四个系列(Spartan®,Artix®-7,Kintex®-7,Virtex®-7),能够满足系统全部范围的要求,价格低廉,尺寸小,对成本敏感,超高端的连接带宽,逻辑容量及信号处理能力的大量应用,满足了系统对高性能的要求。7系列的FPGA包括:

Spartan®-7系列:价格低廉,供电电源低,I/O性能高。可提供低成本,非常小的外形尺寸封装,以实现最小的PCB占地面积。

Artix®-7系列:针对需要串行收发器以及高DSP和逻辑吞吐量的低功耗应用进行了优化。为高吞吐量、成本敏感型应用提供最低的总物料成本。

Kintex®-7系列:针对最佳性价比进行了优化,与上一代产品相比提高了两倍,支持新一代的FPGA。

Virtex®-7系列:针对最高系统性能和容量进行了优化,系统性能提高了两倍。通过硅堆叠技术(SSI)实现的最高性能器件。

7系列FPGA采用最先进的高性能、低功耗(HPL)、28nm、高k金属栅(HKMG)工艺技术,I/O带宽为2.9TB/s,逻辑单元容量为200万个,DSP定点运算性能为5.3TMAC/s,[其中Virtex-7系列的DSP处理能力为5,335 GMAC/s(GMAC/s:每秒10亿次乘加运算)],实现了无与伦比的性能提升,同时功耗比前一代器件低50%,为ASSP(Application Specific Standard Parts 专用标准产品)和ASIC提供了完全可编程的替代方案。

7系列FPGA功能摘要

先进的高性能FPGA逻辑,基于可配置为分布式内存的实6输入查找表(LUT)技术;

36KB双端口块RAM 内置FIFO逻辑,用于片上数据缓冲;

高性能SelectIOTM技术,支持高达1866Mb/s的DDR3接口;

内置多千兆收发器实现高速串行连接,最高可达600Mb/s。

针对6.6Gb/s至28.05Gb/s的速率,提供特殊的低功耗模式,并对芯片间的接口做了优化。

用户可配置模拟接口(XADC),集成12位1Msps带片上热传感器和电源传感器的模数转换器;

带有25×18乘法器、48位累加器和前值加法器的DSP片可实现高性能滤波,包括优化的对称系数滤波;

强大的时钟管理模块(CMT),结合锁相环(PLL)和混合模式时钟管理器(MMCM),可实现高精度和低抖动;

利用MicroBlazeTM处理器快速部署嵌入式处理器;

适用于PCI Express®(PCIe)的集成块,最多可支持×8 Gen3端点和根端口设计;

多种配置选项,包括支持商用存储器、带HMAV/SHA-256(加密算法)身份验证的256位AES(Advanced Encryption Standard高级加密标准)加密,内置SEU检测和纠正。

低成本、线耦合、裸芯倒片封装和高信号完整性倒片封装,可在同一封装系列的产品之间轻松移植。所有封装均提供无铅封装和精选含铅封装选项;

专为高性能和低功耗而设计,具有28nm、HKMG、HPL工艺、1.0V核心电压工艺技术和0.9V电压选项,可实现更低功耗。

表1:7系列FPGA比较

注释:

以分布式RAM形式提供额外内存。

峰值DSP性能是基于对称滤波器实现的。

MicroBlaze CPU的峰值性能是基于微控制器预置来实现的。

Spartan-7系列FPGA功能摘要

表2:按型号划分的Spartan-7 FPGA功能摘要

注释:

1.每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。

2.每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。

3.Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。

4.每一个CMT包含一个MMCM和一个PLL。

5.不包括配置库0。

表3 Spartan-7 FPGA封装组合及最大I/O数

注释:

1.HR=高范围I/O,支持1.2V到3.3V的I/O电压。

Artix-7系列FPGA功能摘要

表四:按型号划分的Artix-7 FPGA功能摘要

注释:

每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。

每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。

Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。

每一个CMT包含一个MMCM和一个PLL。

Artix-7系列FPGA接口块用作PCIe时,最多支持x4 Gen 2。

不包括配置库0。

此数字不包括GTP收发器。

表五:Artix-7 FPGA封装组合及最大I/O数

1.所有列出的封装均为无铅封装(SBG、FBG、FFG、除了15)。一些封装在有铅选项中可用。

2.FGG484和FBG484引脚兼容。

3.FGG676和FBG676引脚兼容。

4.CP、CS、FT、FG封装的GTP收发器支持最高6.25Gb/s的数据速率。

5.HR=高范围I/O,支持1.2V到3.3V的I/O电压。

Kintex-7系列FPGA功能摘要

表六:按型号划分的Kintex-7 FPGA功能摘要

1.每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。

2.每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。

3.Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。

4.每一个CMT包含一个MMCM和一个PLL。

5.Kintex-7系列FPGA接口块用作PCIe时,最多支持x8 Gen 2。

6.不包括配置库0。

7.此数字不包括GTX收发器。

表七:Kintex-7 FPGA封装组合及最大I/O数

注释:

1.所有列出的封装均为无铅封装(FBG、FFG、除了15)。一些封装在有铅选项中可用。

2.FBG676和FFG676引脚兼容。

3.FFG900和FBG900引脚兼容。

4.FB封装下的GTX收发器支持以下最大数据速率:FBG484:10.3Gb/s;FBG676和FBG900:6.6Gb/s。详细信息可以参考Kintex-7 FPGA数据手册:直流和交流开关特性(DS182)

5. HR=高范围I/O,支持1.2V到3.3V的I/O电压。

6.HP=高性能I/O,支持1.2V到1.8V的I/O电压。

Virtex-7系列FPGA功能摘要

表8:Virtex-7 FPGA功能摘要

注释:

1.每个7系列FPGA包含4个LUT和8个触发器;只有某些片可以将它们的LUT用作分布式RAM或SRL(移位寄存器)。

2.每个DSP片包括一个前置加法器、一个25×18乘法器、一个加法器和一个累加器。

3.Block RAM的大小基本上为36KB;每个BRAM也可以用作两个独立的18KB Blocks。

4.每一个CMT包含一个MMCM和一个PLL。

5.Virtex-7系列FPGA接口块用作PCIe时,最多支持x8 Gen 2。Virtex-7 XT和Virtex-7 HT接口块支持x8 Gen 3,XC7VX485T除外,它支持x8 Gen 2。

6.不包括配置库0。

7.此数字不包括GTX、GTH、GTZ收发器。

8.超逻辑域(SLR)是使用SSI技术FPGA的组成部分。Virtex-7 HT利用SSI技术将SLR和28.05Gb/s的收发器连接起来。

表9:Virtex-7 FPGA封装组合及最大I/O数

注释:

1.所有列出的封装均为无铅封装(FFG、FLG、FHG除了15)。一些封装在有铅选项中可用。

2.FFG1761和FHG1761引脚兼容。

3. HR=高范围I/O,支持1.2V到3.3V的I/O电压。

4.HP=高性能I/O,支持1.2V到1.8V的I/O电压。

表10:Virtex-7 FPGA封装组合及最大I/O数

注释:

1.所有列出的封装均为无铅封装(FFG、FLG除了15)。一些封装在有铅选项中可用。

2.FFG1926和FLG1926引脚兼容。

3.FFG1928和FLG1928引脚兼容。

4.FFG1930和FLG1930引脚兼容。

5.HP=高性能I/O,支持1.2V到1.8V的I/O电压。

表11: Virtex-7 FPGA封装组合及最大I/O数

1.所有列出的封装均为无铅封装,除了15。一些封装在有铅选项中可用。

2.HP=高性能I/O,支持1.2V到1.8V的I/O电压。

堆叠式硅互联(SSI)技术

Xilinx利用SSI技术解决了与创建高容量FPGA相关的许多挑战。SSI技术使得多个超逻辑域(SLR)能够组合在无源插入器层上,使用业界领先的成熟制造和组装技术,来创建具有超过一万个SLR内连接的单个FPGA,来提供超低延迟和低功耗的超高带宽连接。Virtex-7 FPGA中使用了两种类型的SLR:Virtex-7 T中使用的是逻辑密集型SLR;Virtex-7 XT和Virtex-7 HT中使用的是DSP/Block RAM/多收发器型SLR。与传统制造方法相比,SSI技术能够生产更高性能的FPGA,使有史以来最大容量和最高性能的FPGA能够更快地投产,风险也更小。数千条超长线路(SLL)布线资源和跨越SLR的超高性能时钟线路确保设计能够无缝跨越这些高密度的可编程逻辑器件。

CLBs, Slices, and LUTs

CLB架构的一些主要功能包括:

实6输入查找表

LUT中的内存功能

寄存器和移位寄存器功能

7系列FPGA中的LUT既可以配置为一个输出的6输入LUT(64位ROM),也可以配置为两个独立输出但地址或逻辑输入相同的5输入LUT(32位ROM)。每片8个触发器中的4个(每个LUT一个)可以选择性的配置成为锁存器。

25%-50%的slice还可以将它们的LUT用作分布式64位RAM或者32位的移位寄存器(SRL32),或者两个16位的SRL16。现代综合工具利用了这些高效的逻辑、算术和存储器功能。

时钟管理

时钟管理体系结构的一些主要亮点包括:

用于低时滞分布的高速缓冲器和布线。

频率合成及移相。

产生低抖动时钟和抖动滤波。

每个7系列FPGA都有多达24个时钟管理片(CMT),每个片由一个混合模式时钟管理器(MMCM)和一个锁相环(PLL)组成。

混合模式时钟管理器与锁相环

MMCM和PLL有许多特性。两者都可用作宽频率范围的频率合成器和输入时钟的抖动滤波器。在这两个组件的中心是一个压控振荡器(VCO),根据从相位频率检测器(PFD)接收到的输入电压来加快或减慢振荡频率。

有三组可编程分频器:D、M和O。预分频器D(通过配置,然后通过DRP来编程)降低输入频率,反馈给传统锁相环相位/频率比较器的一个输入。反馈分频器M(可通过配置,然后通过DRP编程)充当乘法器,因为它在反馈给相位比较器的另一个输入之前对压控振荡器输出频率进行分频。必须合适地选择D和M,来将压控振荡器保持在指定的频率范围内。

压控振荡器有8个等距输出相位(0°、 45°、 90°、135°、180°、225°、270°和315°)。每一个都可以选择驱动其中一个输出分频器(六个用于锁相环,O0至O5,七个用于MMCM,O0至O6),每个都可以通过配置来编程,来除以1至128之间的任何整数。

MMCM和PLL有三种输入抖动滤波器选项:低带宽、高带宽或者优化模式。低带宽模式的抖动衰减最好,但相位偏移最小。高带宽模式具有最佳相位偏移,但不具有最佳抖动衰减。优化模式允许工具找到最佳的设置。

MMCM附加的可编程功能

MMCM可以在反馈回路(充当乘法器)或者一个输出路径中有一个小数计数器。小数计数器允许1/8的非整数增量,因此可以将频率合成能力提高8倍。

MMCM还可以根据压控振荡器频率,以小增量提供固定或者动态相移。在1600MHz条件下,相移时序增量为11.2ps。

时钟分配

每个7系列FPGA都提供六种不同类型的时钟线路(BUFG、BUFR、BUFIO、BUFH、BUFMR和高性能时钟),以满足高扇出、短传播延迟和极低偏差的不同时钟的要求。

全局时钟线

在每个7系列FPGA(XC7S6和XC7S15除外)中,32条全局时钟线具有最高的扇出,可以达到每个触发器的时钟、时钟使能、置位/复位端口及许多逻辑电路的输入端口。在由水平时钟缓冲器(BUFH)驱动的任何时钟区域内有12条全局时钟线。每个BUFH可以独立地使能/禁用,从而允许在一个区域内关闭时钟,从而提供对那些时钟区域消耗功率的细粒度控制。全局时钟线可以由全局缓冲器驱动,全局缓冲器还可以执行无故障多路复用和时钟使能功能。全局时钟通常由CMT驱动,这可以完全消除基本时钟的分布延迟。

区域时钟

区域时钟可以驱动其区域内的所有时钟目的地。区域定义为:I/O数量为50,CLB数量为50,芯片宽度为一半的区域。7系列FPGA有2到24个区域。每个区域都有4个时钟,每个区域时钟缓冲器可以由四个支持时钟的输入引脚中的任何一个来驱动,其频率可以选择1到8之间的任意整数。

I/O时钟

I/O时钟通常特别快,仅服务于I/O逻辑和串行/解串器电路,这部分将在I/O逻辑章节讲述。7系列器件MMCM和I/O之间有之间连接的通路,来实现低抖动、高性能接口。

Block RAM

Block RAM的一些主要功能包括:

双端口36KB数据块RAM,端口宽度最高可达72.

可编程的FIFO逻辑

内置可选纠错电路

每个7系列FPGA都有5到1880个双端口数据块RAM,每个存储36KB。每个块RAM都有两个完全独立的端口,除了共享数据,其他什么都不共享。

同步操作

每次存储器访问(读或写)都由时钟控制。所有输入、数据、地址、时钟使能和写入使能都被锁存。时钟到来之前,所有的动作都是无效的。输入地址始终计时,保留数据直到下一次操作。可选的输出数据流水线寄存器允许更高的时钟速率,但代价是额外的延迟周期。

在写入操作期间,数据输出可以反映先前存储的数据。新写入的数据、或者可以保持不变

可编程数据宽度

每个端口可以配置为32K×1、16K×2、8K×4、4K×9(或8)、2K×18(或16)、1K×36(或32)或512×72(或64)。两个端口可以没有任何限制地具有不同的长宽比。每个块RAM可以分为两个完全独立的18KbRAM,每个块RAM可以配置为16K×1到512×36之间的任意长宽比。

只有在简单双端口模式(SDP)下才能访问大于18位(18kb RAM)或36位(36kb RAM)的数据宽度。在该模式下,一个端口用于读操作,另一个端口用于写操作。在SDP模式下,一侧(读取或写入)可以可变,而另一侧固定为32/36或64/72。

双端口36kbRAM的两侧宽度可以可变。

两个相邻的36kb 块RAM可以配置为一个级联的64K×1双端口RAM,不需要任何额外的逻辑。

错误检测和纠正

每个64位宽的块RAM可以生成、存储和利用8比特额外的汉明码,并在读取过程中执行单比特纠错和双比特纠错。在写入或读取外部64位至72位宽的存储器时,也可以使用ECC逻辑。

FIFO控制器

用于单时钟(同步)或双时钟(异步或多速率)操作的内置FIFO控制器递增内部地址,并提供四个握手标志:full, empty, almost full and almost empty。Almost full和almost empty标志可自由编程 。与块RAM类似,FIFO的宽度和深度是可编程的,但写入端口和读取端口始终具有相同的宽度。

First word fall through 模式在第一个读取操作之前将第一个写入的数据输出,在第一个数据被读出之后,标准模式与First word fall through模式没有什么区别。

Digital Signal Processing—DSP slice

DSP功能的一些亮点包括:

25×18二进制补码乘法器/累加器,高分辨率(48位)信号处理器。

优化对称滤波器应用的节电前置加法器。

高级功能:可选的流水线、可选的ALU和用于级联的专用总线。

DSP应用中使用的许多二进制乘法器和累加器,最好在专用的DSP片中实现。所有7系列的FPGA都有许多专用、全定制、低功耗的DSP芯片,在保持系统设计灵活性的同时,兼顾高速和小型化。

每个DSP芯片基本上由一个专用的25×18位二进制补码乘法器和一个48位累加器组成,两者的工作频率都高达741MHz。乘法器可以动态旁路,两个48位输入可馈送单指令多数据(SIMD)算术单元(双24位加/减/累加或4个12位加/减/累加),或可生成两个操作数的十个不同逻辑函数中的任何一个逻辑单元。

DSP包括一个额外的前置加法器,通常用于对称滤波器。这种前置加法器提高了密集型封装设计的性能,将DSP片的数量减少了高达50%。DSP还包括一个48位宽的模式检测器,可用于收敛或对称舍入。当与逻辑单元结合使用时,模式检测器还可以实现96位宽的逻辑功能。

DSP slice提供广泛的流水线和扩展功能,可提高数字信号处理以外的许多应用的速度和效率,例如宽动态总线移位器、内存地址生成器、宽总线多路复用器和内存映射I/O寄存器堆。累加器还可以用作同步加减计数器。

输入/输出

输入输出功能的一些亮点包括:

高性能SelectIO技术,支持1866Mb/s DDR3。

封装内的高频去耦电容器可增强信号的完整性。

数字控制阻抗,可为最低功耗、高速I/O操作提供三种状态。

I/O引脚的数量因型号和封装大小而异。每个I/O都是可配置的,并且符合许多的I/O标准。除了电源引脚和专用配置引脚外,所有其他封装的引脚都具有相同的I/O性能,仅受某些分组规则的限制。7系列FPGA中的I/O分为高范围(HR)和高性能(HP)。HR I/O提供最大范围的电压支持,从1.2V到3.3V。HP I/O针对1.2V到1.8V的最高性能操作做了优化。

7系列FPGA中的HR和HP I/O引脚按组进行分组,每50个引脚一组。每一组都有一个共同的V_CCO输出电源,该电源还为某些输入缓冲器供电。一些单端输入缓冲器需要内部产生或外部施加的参考电压V_REF。每一组有两个V_REF引脚,而且一组中只能有一个V_REF电压值。

Xilinx 7系列FPGA采用多种封装类型来满足客户需求,包括可实现最低成本的小型引线键合封装;传统高性能倒装芯片封装;以及平衡最小外形尺寸和高性能的裸片倒装芯片封装。在倒装芯片封装中,硅器件使用高性能倒装芯片工艺连接到封装基板上。受控ESR离散去耦合电容器安装在封装基板上,在输出同时切换的条件下,优化信号的完整性。

I/O电气特性

单端输出采用传统的CMOS推挽输出结构,将高电平驱动到V_CCO,将低电平驱动到地,并且可以置于高阻态。系统设计者可以指定转换速率和输出强度。输入始终处于活跃状态,但在输出处于活跃状态时通常会被忽略。每个引脚都有可选的一个弱上拉电阻和一个弱下拉电阻。

大多数信号引脚对可以配置为差分输入对或输出对。差分输入引脚对可以选择使用100 的端电阻。所有7系列器件均支持LVDS以外的差分标准:RSD、BLVD、差分SSTL和差分HSTL。

每一个I/O都支持内存I/O标准,例如单端和差分HSTL以及单端和差分SSTL。对于DDR3接口应用,SSTL I/O标准最高可支持1866Mb/s的数据速率。

三态数控阻抗和低功耗I/O特性

三态数字控制阻抗(T_DCI)可以控制输出驱动阻抗(串联终端),或者可以为V_CCO提供输入信号的并行终端,或者为V_CCO/2提供Split(戴维南)终端。这样,用户就可以使用T_DCI消除信号的片外端接。除了节省电路板空间外,端子在输出模式或三态时自动关闭,与片外端子相比可节省相当大的功耗。I/O还具有IBUF和IDELAY的低功耗模式,特别是在用于实现存储器接口时,可进一步节省能量。

I/O逻辑

输入输出延迟

所有输入输出均可配置成组合逻辑或者寄存器。所有输入输出均支持双倍数据数率(DDR)。所有的输入和某些输出可以分别延迟最多32个增量,分别为78ps、52ps或39ps。这样的延迟被实现为IDELAY和ODELAY。延迟步进值可以通过配置设置,也可以在使用时递增或递减。

ISERDES和OSERDES

许多应用将高速位串行I/O与器件内部较慢的并行操作结合在一起。这需要I/O结构内的串行器和解串行器。每个I/O引脚都有一个8位IOSERDES(ISERDED和OSERDES),能够执行可编程宽度为2、3、4、5、6、7、或8位的串并或并串转换。通过从两个相邻引脚(默认来自差分I/O)级联两个IOSERDE,还可以支持10位和14位的更宽宽度转换。ISERDES具有特殊的过采样模式,能够对基于1.25Gb/sLVDS I/O的SGMII接口等应用进行异步数据恢复。

低功耗G比特收发器

低功耗G比特收发器的一些亮点包括:

根据系列的不同,高性能收发器最高可支持6.6Gb/s(GTP)、12.5Gb/s(GTX)、13.1Gb/s(GTH)、28.05Gb/s(GTZ)的线速,实现了首个适用于400G的单一器件。

针对芯片到芯片接口优化的低功耗模式 。

适用于长距离或背板应用的高级传输预加重和后加重,接收机线性均衡(CTLE)和判决反馈均衡(DFE)。在接收机均衡和片上眼睛扫描时自动适应,轻松进行串行链路调谐。

超高速串行数据传输到光模块、在同一PCB板上的IC之间、通过背板或者通过更长的距离传输变得越来越流行,并且对于使客户线卡能够扩展到100Gb/s和更高的400Gb/s变得越来越重要。它需要专门的专用 片上电路和差分I/O,能够在如此高的数据速率下处理信号完整性问题。

7系列FPGA中的收发器数量从Artix-7系列中的多达16个收发器电路、Kintex-7系列中的多达32个收发器电路以及Virtex-7系列中的多达96个收发器电路不等。每个串行收发器都有发送器和接收器组成。各种7系列串行收发器使用环形振荡器和电容电感谐振回路的组合,或者在GTZ情况下使用单个电容电感谐振回路结构,以实现灵活性和性能的完美结合,同时实现了IP核在同一系列的可移植性。不同的7系列型号支持不同的高端数据速率。GTP的运行速度高达6.6 Gb/s,GTX的运行速度高达12.5 Gb/s,GTH的运行速度高达13.1 Gb/s,GTZ的运行速度高达28.05 Gb/s。使用基于FPGA逻辑的过采样可以实现较低的数据速率。串行发生器和接收器有独立的电路,使用先进的PLL架构,将输入的参考频率乘以某些可编程数字,最高可达100,从而成为位串行时钟。每个收发器具有大量用户可定义的特征和参数。所有这些都可以在器件配置过程中定义,也可以在操作过程中进行修改。

发送器

发送器基本上是一个转换比为16、20、 32、 40 、64或80的并串转换器。此外,GTZ发送器支持高达160位的数据宽度。这允许设计者在高性能设计中在数据路劲宽度和时序裕度之间进行权衡。这些发送器输出用单通道差分输出信号驱动PC板。TXOUTCLK是经过适当分割的串行数据时钟,可直接用于锁存来自内部逻辑的并行数据。传入的并行数据通过可选的FIFO馈送,并具有对8B/10B,64B/66B或64B/67B编码方案的额外硬件支持,以提供足够数量的转换。位串行输出信号用差分信号驱动两个封装引脚。该输出信号对具有可编程的信号摆幅以及可编程的前后加重,来补偿PC板的损耗和其他互连特性。对于较短的通道,可以减小摆幅以降低功耗。

接收器

接收器基本上市串并转换器,将传入的位串行信号转换为并行字流,每个字16、 20、 32 、40、 64或80位。此外,GTZ接收器支持高达160位的数据宽度。这允许FPGA设计者在内部数据路径宽度和逻辑时序裕度之间进行权衡。接收器接收传入的差分数据流,将其通过可编程线性和判断反馈均衡器馈送(以补偿PC板和其他互连特性),并使用参考时钟输入来初始换时钟识别。不需要单独的时钟线路。数据模式使用不归零(NRZ)编码,并且可选地使用所选编码方案来保证足够的数据转换。然后使用RXUSRCLK时钟将并行数据传输到FPGA逻辑。对于较短的通道,收发器提供了一种特殊的低功耗模式(LPM),可将功耗降低约30%。

带外信号传输

收发器提供带外信号(OOB)传输,通常用于在高速串行数据传输处于非活跃状态时将低速信号从发送器发送到接收器。这通常在链路处于断电状态或尚未初始化时执行。这使PCIe和SATA/SAS应用程序收益。

用于PCI Express设计的集成接口模块

PCIe集成块的亮点包括:

符合具有端点和根端口功能的PCIe基本规范2.1或3.0(取决于那个系列)。

支持Gen1(2.5 Gb/s)、Gen2(5 Gb/s)和Gen3(8 Gb/s),具体取决于器件系列。

-高级配置选项、高级错误报告(AER)和端到端CRC(ECRC)高级错误报告和ECRC功能。

多功能和单根I/O虚拟化(SR-IOV)支持通过软件逻辑包装实现。或者嵌入到集成块中,具体取决于器件系列。

所有Artix-7、KINTEX-7和Virtex-7器件至少包括一个用于PCIe技术的集成块,可配置为符合PCI e基本规范修订版2.1或3.0的端点或根端口。

根端口可用于构建兼容根联合体的基础,允许通过PCIe协议进行自定义FPGA到FPGA通信,以及将ASSP端点设备(如以太网控制器或光纤通道HBA)连接到FPGA。

此模块可根据系统设计要求进行配置,可在2.5 Gb/s、5.0 Gb/s和8.0 Gb/s数据速率下运行1、2、4或8通道。对于高性能应用,块的高级缓冲技术提供了最高1024字节的灵活最大有效载荷大小。集成块与集成高速收发器接口连接以实现串行连接,并与块RAM连接以进行数据缓冲。这些元素的结合,实现了PCIe协议的物理层、数据链路层和事务层。

Xilinx提供了一个轻量级、可配置。易于使用的LogicCORETMIP封装器,它将各种构建块(PCIe集成块、收发器、块RAM和时钟资源)绑定到一个端点或根端口解决方案中。系统设计人员可以控制许多可配置参数:通道宽度、最大有效载荷大小、FPGA逻辑接口速度、参考时钟频率以及基址寄存器解码和滤波器。

Xilinx位集成块提供了两个包装器:AXI4-Stream和AXI4(内存映射)。请注意,传统的TRN/Local Link在用于PCIe集成块的7系列设备中不可用。AXI4-Stream专为集成块的现有用户设计,支持从TRN轻松移植到AXI-Stream。AXI4(内存映射)是为Xilinx Platform Studio/EDK设计流和基于MicroBlazeTM处理器的设计而设计的。

有关PCIe设计解决方案的更多信息和文档,请访问

http://www.xilinx.com/products/technology/pci-express.html

配置

有许多高级的配置功能,包括:

高速SPI和BPI(并行或非)配置

内置多重启动和安全更新功能

采用HMAC/SHA-256身份验证的256位AES加密

内置SEU检测和校正功能

部分重构

Xilinx7系列FPGA将其自定义配置存储在SRAM类型的内置锁存器中。配置位多达450Mb,具体取决于器件大小和用户设计实现选项。配置存储是易失的,每当FPGA通电时都必须重新加载。还可以随时通过将PROGRAM_B引脚拉低来重新加载该存储。有几种加载配置的方法和数据格式可用,通过三个模式选择引脚来决定。

SPI接口(×1、×2和×4模式)和BPI接口(并行或非×8和×16)是配置FPGA的两种常用方法。用户可以将SPI或BPI Flash直接连接到FPGA,FPGA的内部配置逻辑从Flash中读取位流并进行自我配置。FPGA可动态自动检测总线宽度,无需任何外部控制或开关。SPI支持总线宽度为×1、×2和×4,BPI支持的总线宽度为×8和×16。较宽的总线提高了配置速度,并减少了FPGA在通电后启动所需的时间。并非所有的器件封装组合都支持某些配置选项,如BPI。有关详细信息,请参阅

UG470

在主模式下,FPGA可以从内部生成的时钟驱动配置时钟,或者对于更高速度的配置,FPGA可以使用外部配置时钟源。这允许利用主模式的易用特性进行高速配置。FPGA还支持高达32位宽的从机模式,这对于处理器驱动配置特别有用。

FPGA能够使用SPI或BPI Flash使用不同的映像对自身进行重新配置,不需要外部控制器。在数据传输任何错误的情况下,FPGA可以重新加载其原始设计,从而确保在过程结束时FPGA能够正常运行。这对于在最终产品上市前更新设计特别有用。客户可以将他们的产品与早期版本的设计一起上市,从而更快地将他们的产品推向市场。此功能允许客户在产品已在现场的情况下,使其最终客户获得最新的设计。动态重新配置端口(DRP)使系统设计人员可以轻松访问MMCM、PLL、XDC、收发器和PCIe集成块等的配置和状态寄存器。DRP的行为类似于一组内存映射寄存器,访问和修改特定于块的配置位以及状态和控制寄存器。

加密、回读和部分重配置

在所有7系列FPGA(XC7S6和XC7S15除外)中,包含敏感客户IP的FPGA位流可以通过256位AES加密和HMAC/SHA-256身份验证进行保护,以防止未经授权的复制设计。FPGA在配置过程中使用内部存储上午256位密钥动态执行解密。该密钥可以驻留在电池后备RAM或非易失性eFuse位中。

大多数配置数据都可以回读,而不会影响系统的运行。通常,要么配置全,要么就不配置,但7系列FPGA支持部分重新配置。这是一个极其强大和灵活的功能,允许用户更改FPGA的部分,而其他部分保持不变。用户可以对这些部分进行时间分割,以便在较小的设备中容纳更多的IP,从而节省成本和功耗。在某些设计中适用的情况下,部分重新配置可以极大地提高FPGA的通用性。

XADC(数模转换器)

XADC架构的亮点包括:

双12位1MSPS模数转换器(ADC)。

多达17个且用户可配置的模拟输入。

片上或者外部基准电压选项。

片上温度(最大误差±4(_ ^∘)C)和电源(最大误差±1%)传感器。

通过JTAG连续对ADC测量的结果进行访问。

所有的Xilinx7系列FPGA(除了XC7S6和XC7S15)都集成了一种名为XADC的新型灵活模拟接口。当与7系列FPGA的可编程逻辑功能相结合时,XADC可以满足广泛的数据采集和监控要求。更多信息,请访问:

http://www.xilinx.com/ams

XADC包含两个12位1MSPS ADC,带有独立的跟踪和保持放大器、一个片内模拟多路复用器(最多可支持17个外部模拟输入通道)以及片内热传感器和电源传感器。两个ADC可以配置为同时对两个外部输入模拟通道进行采样。跟踪和保持放大器支持一系列模拟输入信号类型,包括单极性、双极性和差分。在1MSPS采样速率下,模拟输入可以支持至少500KHz的信号带宽。使用具有专用模拟输入的外部模拟多路复用器模式可以支持更高的模拟带宽(

参见UG480

)。

XADC可选择使用片内基准电压源电路(±1%),因此无需任何外部有源元件即可对温度和供电进行基本的片内监控。要实现ADC的全部12位性能,建议使用外部1.25V基准电压源芯片。

如果XADC未在设计中实例化,则默认情况下它会将所有片上传感器的输出数字化。最新的测量结果(包括最大和最小读数)存储在专用寄存器中,以便随时通过JTAG接口访问。用户定义的报警阈值,可以自动指示超温事件和不可接受的电源变化。用户指定的阈值(如100(_ ^∘)C)可用于启动自动断电。

7 Series FPGA Ordering Information

表12所示为不同器件系列提供的速度和温度等级。有些器件可能不适用于所有速度和温度级别。

图1所示为Spartan-7系列FPGA的命名规则。有关器件标记的更详细说明,请参阅UG475,7系列FPGA封装和引脚布局中的封装标记章节。

图2所示为Artix-7、Kintex-7和Virtex-7系列FPGA的命名规则,适用于所有封装,包括无铅封装。有关器件标记的更详细说明,请参阅

UG475

FPGA从入门到精通(小白零基础速学)明德扬【FPGA至简设计原理与应用】自学FPGA必备教程-手把手教你学FPGA编程配套开发板_哔哩哔哩_bilibili

目前明德扬有推出本课程配套习题训练库,微信小程序即可刷题学习了,需要的加评论区小助理V免费刷题配套开发板连接:https://item.taobao.com/item.htm?spm=2013.1.w4004-21309587407.2.59501abfWyPLa1&id=600332006337本套FPGA视频教程适合零基础的学员,基础进阶、工作者提高的课程。本视频讲解FPGA简介,开发流程,Quartus开发环境,并从多个案例系统讲解FPGA代码设计,仿真流程,上板验证效果等。如果您是非计算机专业,想转行FPGA开发,或者您想FPGA基础更扎实,此课程将是你无二的选择。

收起

硬件定制/开发-百工联网

服务过的客户:

中铁,北京昌平区政府,中海油,海尔,北京某设备有限公司,北京某设备公司

ALINX 芯驿电子科技(上海)有限公司

Copyright © 芯驿电子科技(上海)有限公司 All Rights Reserved

沪ICP备13046728号

世强元件电商提醒您:系统正在维护,请稍后访问!

亲爱的盆友们:

您的访问太频繁,请输入验证码进行验证,谢谢!验证通过后即可正确访问。

MYC-JX8MMA7核心板 - IMX8|IMX8M| i.MX 8M|NXP i.MX8M - 米尔科技

MYC-JX8MMA7核心板及开发板

基于ARM+FPGA架构,高速采集和高清显示二合一

CPU集成i.MX 8M Mini+ARTIX7处理器,二合一成本优势明显;

高性能的ARM MPU+多媒体能力,良好LINUX UI界面;

对标ZYNQ 7010的FPGA资源,满足高速数据采集需求;

ARM与FPGA之间采用PCIE高速通信,支持200~300MB/S的通信能力;

工业级-40℃ - +85℃,金手指连接;

应用:高端医疗器械、工业数据采集系统、工业控制、雷达、工业网关、机器人等。

《新起点之FPGA开发指南 V2.1》第一章 FPGA简介 - 知乎

1)实验平台:正点原子新起点V2FPGA

开发板

2) 章节摘自【正点原子】《新起点之FPGA开发指南 V2.1》

3)购买链接:

https://

detail.tmall.com/item.h

tm?id=609758951113

4)全套实验源码+手册+视频下载地址:

http://www.

openedv.com/thread-3280

02-1-1.html

5)正点原子官方B站:

https://

space.bilibili.com/3946

20890

6)正点原子FPGA技术交流QQ群:712557122

第一章

FPGA简介

FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是一种半定制的数字集成电路。FPGA凭借其灵活性高、开发周期短、处理性能强(并行)等特点,广泛应用于通信、图像处理、医疗等领域。随着科技的进步,FPGA在人工智能、5G和自动驾驶等领域也有一席之地。本章节我们将会详细介绍什么是FPGA,让大家对FPGA有个初步的认识。

本章包括以下两个部分:

1.1 初识FPGA

1.2 深度剖析FPGA

一.1

初识FPGA

其实我很好奇当大家拿到我们的开发板,看到板子上镶嵌的那一块黑不溜秋的像饼干一样的控制芯片时,大家心里会想些什么。犹记当年我第一次见到这玩意时,忍不住用手在上面不停的抚摸,你还别说,这么贵的玩意摸起来手感真挺不错的,很有质感,可是没几分钟,新鲜劲一过我就开始犯愁了,我买的到底是个什么玩意儿,有啥用啊,我学它干嘛?现在回想起来感觉恍如昨日,感叹一句岁月不饶人啊,所以我在写这篇文章的时候就在想大家第一次拿到FPGA开发板后是啥反应,是不是像当初的我一样,乍见欣喜,然后满脑袋问号,迫切的想了解到底什么是FPGA呢,它有什么用呢,我学了它后又能干什么呢,以后有前途吗?莫急,听我娓娓道来。

一.2

FPGA是什么

首先我们先来聊聊什么是FPGA,其实这个问题不好回答,简单点来说FPGA(Field Programmable Gate Array,即现场可编程门阵列)它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路个数有限的缺点,这就是FPGA。我相信这种回答很少有人能够理解,因为它涉及到的专业名词和知识面是非常广泛的,我要是把这段话就作为对FPGA的简介一定会被大家痛骂,大家可能会觉得什么玩意儿,你这说的还不如我百度呢,糊弄我吧。也确实,我自己当初看到这句话时也是一脸懵,还是不明白自己手上拿的这个“黑块块”到底是个啥,所以接下来我准备好好跟大家唠唠你们手中的“黑块块”到底是个什么东西。

我先给大家上一张图(图片来源于网络),如所示,这张图应该是一个电子类专业的学生作品。

图 1.2.1 面包板搭建数字时钟电路

从图中我们可以看到该电路是一个数字时钟,里面有晶振、蜂鸣器、数码管,以及各种74 系列的小芯片,这些小芯片能够实现的功能也就相当于几个逻辑门,如果你亲自动手去搭建它,肯定会知道搭建该电路是非常麻烦的,一根线一根线去连接,不断对照原理图,生怕搭错一根线,搞不好心态就崩了。大家可以想一想,这仅仅是搭建一个简单的数字时钟就这么多跟线了,密密麻麻的,看起来就很复杂。如果我们想要实现更加复杂的功能,那么我们就要犯难了,因为我们需要使用几十个或者上百个这种专用小芯片来完成,这样就会使得电路板的布局、布线变得困难,还会极大的影响到整个系统的性能,而且搭出来的电路体积庞大,也不美观,实用性极差,所以这种方式毫无疑问是不行的。为了改变这种情况,大家就想到了一个办法,那就是通过专用集成电路(ASIC)来实现,我们可以将要实现的特定需求交给 ASIC 厂商,让他们设计出一个专用集成电路芯片,这样就可以解决这种问题了。比如说,我们把数字时钟功能要求交给 ASIC 厂商,ASIC 厂商就会根据数字时钟功能要求设计出一个专用集成电路芯片,这一个小小的芯片它其实就完成了我们数字时钟电路功能。这种方法虽然很好,但同时也会带来很多其他的问题,比如说,生成周期长,芯片难验证,芯片内部电路不可以更改等等问题。于是人们就开始不断地去探索,看看有没有什么办法既能让我很好的实现功能,又能解决定制电路的不足。

图 1.2.2 Xilinx A7系列FPGA芯片

于是FPGA应运而生(如图 1.2.2),于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,属于可编程逻辑器件 PLD(Programmable Logic Device)的一种。真正意义上的第一颗FPGA 芯片 XC2064 为 Xilinx 所发明,这个时间差不多比著名的摩尔定律晚 20 年左右,但是 FPGA一经问世,后续的发展速度之快,超出大多数人的想象。为什么FPGA能如此迅速的发展呢,这与它本身独特的优越性密不可分。我们要知道一块专用的ASIC定制集成电路的芯片他在出厂前功能就已经定死了,就拿上面的数字时钟来举例,假如我现在拿到一块全新的数字时钟芯片,那么我只需要看看厂家给我提供的数据手册,看看它是怎么操作的,可能仅仅只需要给它通上电然后简单的配置一下它就能工作了。它的功能是不可更改的,就只能跑个数字时钟,而且它内部电路是啥样的我也不知道,虽然用起来简单,但是缺乏灵活性,但FPGA就不一样了,它在出厂的那一刻是不具备任何功能的,可以说就是一张白纸。你可以在这张白纸上肆意创作,你想要它实现数字时钟的功能没问题,通过特定的编辑语言,例如Verilog、VHDL等硬件描述语言将数字时钟的逻辑编写好,下载到FPGA内部,它就会生成一个数字时钟的电路,去完成数字时钟的功能。当你不想要这个功能了,没问题你可以随时将内部程序擦除,或者用一个新的设计去覆盖原有的设计。理论上我们可以用FPGA去生成一个任意我们想要的功能,正是基于这种强大的可编辑能力,FPGA近年来越来越受到市场的认可,在未来FPGA的适用范围必将越来越广阔。

一.2.1

FPGA有什么用

跟大家聊完了什么是FPGA之后,我想大家应该对自己手中那个“黑方块”有了一定的主观印象,至少明白了它和普通芯片的区别了,那么接下来,另一个问题就出现了,FPGA我能用它做什么,我学会它之后在未来我可以从事哪些领域的工作。这个问题我觉得是大家最想要关注的问题,因为兴趣是最好的老师,如果你发现FPGA所能从事的领域你压根就不感兴趣,那么你去学习它就有可能是在浪费时间,比如你将来想当个会计,你想当个医生那你学习FPGA就没有什么必要了,当然也不排除你在学习过程中突然发现了它的魅力,从而喜欢上它。

FPGA所能应用的领域大概可以分成六大类:

1)通信领域:

FPGA在通信领域的应用可以说是无所不能,得益于FPGA内部结构的特点,它可以很容易地实现分布式的算法结构,这一点对于实现无线通信中的高速数字信号处理十分有利。因为在无线通信系统中,许多功能模块通常都需要大量的滤波运算,而这些滤波函数往往需要大量的乘和累加操作。而通过FPGA来实现分布式的算术结构,就可以有效地实现这些乘和累加操作。尤其是Xilinx公司的FPGA内部集成了大量的适合通信领域的一些资源比如:基带处理(通道卡)、接口和连接功能以及RF(射频卡)三大类:

(1)基带处理资源

基带处理主要包括信道编解码(LDPC、Turbo、卷积码以及RS码的编解码算法)和同步算法的实现(WCDMA系统小区搜索等)。

(2)接口和连接资源

接口和连接功能主要包括无线基站对外的高速通信接口(PCI Express、以太网MAC、高速AD/DA接口)以及内部相应的背板协议(OBSAI、CPRI、EMIF、LinkPort)的实现。

(3)RF应用资源

RF应用主要包括调制/解调、上/下变频(WiMAX、WCDMA、TD-SCDMA以及CDMA2000系统的单通道、多通道DDC/DUC)、削峰(PC-CFR)以及预失真(Predistortion)等关键技术的实现。

总而言之只要你FPGA学的好,在通信领域你绝对可以大展身手。

图 1.2.3 FPGA无线通信

2)数字信号处理领域:

在数字信号处理领域FPGA同样所向披靡,主要是因为它的高速并行处理能力。FPGA最大优势是其并行处理机制,即利用并行架构实现数字信号处理的功能。这一并行机制使得FPGA特别适合于完成FIR等数字滤波这样重复性的数字信号处理任务,对于高速并行的数字信号处理任务来说,FPGA性能远远超过通用DSP处理器的串行执行架构,还有就是它接口的电压和驱动能力都是可编程配置的不像传统的DSP需要受指令集控制,因为指令集的时钟周期的限制,不能处理太高速的信号,对于速率级为Gbps的LVDS之类信号就难以涉及。所以在数字信号处理领域FPGA的应用也是十分广泛的。

图 1.2.4 FPGA数字信号处理

3)视频图像处理领域:

随着时代的变换,人们对图像的稳定性、清晰度、亮度和颜色的追求越来越高,像以前的标清(SD)慢慢演变成高清(HD),到现在人们更是追求蓝光品质的图像。这使得处理芯片需要实时处理的数据量越来越大,并且图像的压缩算法也是越来越复杂,使得单纯的使用ASSP或者DSP已经满足不了如此大的数据处理量了。这时FPGA的优势就凸显出来了,它可以更加高效的处理数据,所以在图像处理领域在综合考虑成本后,FPGA也越来越受到市场的欢迎。

图 1.2.5 FPGA图像处理

4)高速接口设计领域:

其实看了FPGA在通信领域和数字信号处理领域的表现,我想大家也已应该猜到了在高速接口设计领域,FPGA必然也是有一席之地的。它的高速处理能力和多达成百上千个的IO决定了它在高速接口设计领域的独特优势。比如说我需要和PC端做数据交互,将采集到的数据送给PC机处理,或者将处理后的结果传给PC机进行显示。PC机与外部系统通信的接口比较丰富,如ISA、PCI、PCI Express、PS/2、USB等。传统的做法是对应的接口使用对应的接口芯片,例如PCI接口芯片,当我需要很多接口时我就需要多个这样的接口芯片,这无疑会使我们的硬件外设变得复杂,体积变得庞大,会很不方便,但是如果使用FPGA优势立马就出来了,因为不同的接口逻辑都可以在FPGA内部去实现,完全没必要那么多的接口芯片,在配合DDR存储器的使用,将使我们接口数据的处理变得更加得心应手。

图 1.2.6高速光纤接口眼图

5)人工智能领域:

如果大家比较喜欢关注科技板块的新闻的话最近一定会被5G通信和人工智能充斥眼球,确实21世纪已经不知不觉走到了2020年,在这20年间,人工智能迅速发展,5G的顺利研发也使人工智能如虎添翼,可以预见,未来必将是人工智能的天下。FPGA在人工智能系统的前端部分也是得到了广泛的应用,例如自动驾驶,需要对行驶路线、红绿灯、路障和行驶速度等各种交通信号进行采集,需要用到多种传感器,对这些传感器进行综合驱动和融合处理就可以使用FPGA。还有一些智能机器人,需要对图像进行采集和处理,或者对声音信号进行处理都可以使用FPGA去完成,所以FPGA在人工智能系统的前端信息处理上使用起来得心应手。

图 1.2.7 FPGA与人工智能

6)IC验证领域:

IC这个词大家可能一听到就觉得特别高深,不是凡人所能触及到的,而IC设计更是一些神人才能胜任的工作。不可否认的是IC设计门槛确实比较高,但是我们也没必要把它过于神话,其实简单点来讲我们可以拿PCB设计来与之比较,PCB是拿一个个元器件在印制线路板上去搭建一个特定功能的电路组合,而IC设计呢是拿一个个MOS管,PN节在硅基衬底上去搭建一个特定功能的电路组合,一个宏观一个微观。PCB如果设计废了大不了重新设计再打样也不会造成太大损失,但是如果IC设计废了再重新设计那损失就很惨重了,俗话说大炮一开,黄金万两,那么在IC领域光刻机一开黄金万两也不是吹的,光刻胶贵的要命,光刻板开模也不便宜,加上其他多达几百上千道工序,其中人力、物力、机器损耗、机器保养,绝对是让人肉疼的损失,所以IC设计都要强调一版成功。保证IC一版成功就要进行充分的仿真测试和FPGA验证,仿真验证是在服务器上面跑仿真软件进行测试,类似ModelSim/VCS软件;FPGA验证主要是把IC的代码移植到FPGA上面,使用FPGA综合工具进行综合、布局布线到最终生成bit文件,然后下载到FPGA验证板上面进行验证,对于复杂的IC我们还可以给他拆成几个部分功能去分别验证,每个功能模块放在一个FPGA上面,FPGA生成的电路非常接近真实的IC芯片。这样极大的方便我们IC设计人员去验证自己的IC设计。

图 1.2.8 华为麒麟芯片

一.2.2

FPGA的现状

根据统计以及预测,在2013年全球FPGA的市场规模在45.63亿美元,至2018年全球FPGA的市场规模缓步增长至63.35亿美元。但随着目前5G时代的进展以及AI的推进速度,预计FPGA在2025年有望达到约125.21亿美元。对于全球FPGA的市场分布而言,FPGA的下游应用地区分布而言,目前最大的为亚太地区,其占比39.15%,北美占比33.94%,欧洲占比19.42%,而至2025年,亚太地区的占比将会继续的提高至43.94%,此间原因也主要因为下游应用市场在未来的主要增长大部分集中在亚太地区。按照FPGA下游应用来分拆FPGA的市场规模的话,可以看到对于2018年而言,通讯领域所用FPGA占据约40%,消费电子占据23%,为最大的应用下游;根据预测至2025年时最大的应用领域将是汽车,占比29%,而数据中心以及工业的占比也将直线上升至13%和19%(数据来源于中国产业信息网)。

图 1.2.9 FPGA全球市场规模走势

看完了市场规模我们再来看看FPGA的生产厂商,我总结了目前国际市场是两大巨头和一群小弟,很遗憾的是我国的国产FPGA也是属于小弟一列,但是我相信随着时间的积累技术和经验的积累中国FPGA发展将会越来越好。其中两大巨头分别是Xilinx和Altera:

Xilinx(赛灵思)

:它是全球领先的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。客户使用Xilinx及其合作伙伴的自动化软件工具和IP核对器件进行编程,从而完成特定的逻辑操作。Xilinx公司成立于 1984年,Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。眼下Xilinx满足了全世界对 FPGA产品一半以上的需求。Xilinx产品线还包括复杂

可编程逻辑器件

(CPLD)。在某些控制应用方面CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了

电子设备

制造商开发产品的时间并加快了产品面市的速度,从而减小了制造商的风险。与采用传统方法如固定逻辑门阵列相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。由于Xilinx器件是只需要进行编程的标准部件,客户不需要像采用固定逻辑芯片时那样等待样品或者付出巨额成本。Xilinx产品已经被广泛应用于从无线电话基站到DVD播放机的数字

电子应用技术

中。

传统的半导体公司只有几百个客户,而Xilinx在全世界有7500多家客户及50000多个设计开端。其客户包括Alcatel、Cisco Systems、EMC、Ericsson、Fujitsu、

Hewlett-Packard

、IBM、Lucent Technologies、Motorola、NEC、Nokia、Nortel、Samsung、Siemens、Sony、Oracle以及Toshiba。目前Xilinx比较火的具有代表性的FPGA芯片有Spartan7系列、Artix7系列、Kintex7系列、Virtex7系列以及Zynq系列,其中Zynq系列内嵌了ARM核,可以实现嵌入式和FPGA的联合开发(想了解更多关于Zynq系列的内容可以参考正点原子领航者开发板资料),Spartan6系列、Artix7系列可以参考超越者和达芬奇开发板的资料。 (数据资料来源于网络)。

图 1.2.10 Xilinx公司logo

Altera(阿尔特拉):

它秉承了创新的传统,是世界上“可编程芯片系统”(SOPC)解决方案倡导者。Altera结合带有软件工具的可编程逻辑技术、知识产权(IP)和技术服务,在世界范围内为14000多个客户提供高质量的可编程解决方案。我们新产品系列将可编程逻辑的内在优势、灵活性、产品及时面市和更高级性能以及

集成化

结合在一起,专为满足当今大范围的系统需求而开发设计。在2015年,

英特尔

宣布以167亿美元收购FPGA厂商Altera,这是英特尔公司历史上规模最大的一笔收购。随着收购完成,Altera将成为英特尔旗下可编程解决方案事业部。Altera使用最广泛的是Cyclone系列FPGA芯片,我个人觉得它用的比较多的是Cyclone IV和Cyclone V系列的FPGA芯片,其中大家需要注意一下Cyclone V,因为该系列包括6种型号,有只含逻辑的E型号、3.125-Gbps收发器GX型号、5-Gbps收发器GT型号,还有集成了基于双核ARM®的硬核处理器系统(HPS)的SE、SX、STSoC型号。除了Cyclone系列,Altera公司还有Agilex系列Stratix系列、Arria系列、Max系列:

Agilex系列:首款采用10纳米工艺和第二代英特尔 Hyperflex FPGA 架构,可将性能提升多达40%,将数据中心、网络和边缘计算应用的功耗降低40%。英特尔Agilex SoC FPGA还集成了四核Arm Cortex-A53处理器,可提供高集成系统级水平的开发,该系列属于超高性能的SoC芯片,一般用于高端市场。

Stratix系列:这个系列也是属于高端高性能产品,拥有高密度、高性能和丰富的IO特性,可最大程度地提高系统带宽,实现多种多样的功能设计。主要应用于Open CL高性能计算、高速数据采集、高速串行通讯高频交互等领域。

Arria系列:这个系列定位为中端产品,它兼顾性能和成本,是一款性价比非常高的FPGA芯片,它内存资源丰富,信号处理能力和数据运算性能相对来说都还不错,并且收发器速度高达 25.78Gbps,支持用户集成更多功能并最大限度地提高系统带宽。此外,Arria V 和英特尔 Arria 设备家族的 SoC 产品可提供基于 ARM 的硬核处理器系统(HPS),从而进一步提高集成度和节省更多成本。

Max系列:这个系列是比较低端的,准确的说这个系列是CPLD产品,主要是应对成本敏感性的设计应用,虽然低端但是它功能也还是可圈可点的,它提供支持模数转换器 (ADC) 的瞬时接通双配置,和特性齐全的 FPGA 功能,尤其对各种成本敏感性的大容量应用进行了优化,要注意的是除了MAX 10以外,该系列的其他产品都是CPLD。

图 1.2.11 Intel公司旗下的Altera

剩余的小弟们这里就不做过多介绍了,因为所有小弟们加在一起的市场份额只有一成左右,远不是两大巨头所能比的,在这里提一句我国的FPGA厂商主要有紫光同创、京微雅格、高云半导体、上海安路、西安智多晶等,但是同国外领先厂商相比,国产FPGA厂商不论从产品性能、功耗、功能上都有较大差距。革命尚未成功,同志们仍需努力。

一.2.3

FPGA的就业前景

一路说下来我想大家们对于FPGA到底是什么,有什么用以及现状都有所了解了,那大家可能就要问了,学习FPGA就业前景怎么样呢?好找工作吗?我这里也很诚实,很真实的跟大家聊聊就业情况。其实相比较那些纯粹搞软件的程序员来讲呢,FPGA的就业面没有他们广,因为各行各业都需要软件信息技术的支持,哪怕你开个小超市,你还需要一个收银系统,而FPGA在适用面上就窄了一些,它大多用于图像算法、信号处理、IC验证、汽车控制等领域,不像软件开发那样各行各业都涉及到。但是有缺点就有优点,FPGA的两大巨头在不断的打造嵌入式与FPGA联合的开发模式,大量的提供IP核,使得FPGA的适用面越来越广,FPGA工程师的需求量与日剧增。在5G、虚拟现实和人工智能的冲击下,传统的微处理器在性能上越来越不能满足需求,这个时候FPGA的优势就尤为突出,我相信在未来FPGA一定会成为市场的主流。即使就目前而言FPGA工程师的福利待遇也是非常高的,如图 1.2.12所示我们可以看到FPGA工程师的平均薪资都已经达到了一万以上了,而软件工程师的薪资除了那些大牛级人物,普通程序员的薪资并没有你想象的那么高,所以在这里我非常衷心的希望大家好好学习FPGA,你们未来可期。

图 1.2.12月薪分布图

一.3

深度剖析FPGA

我们在学习一个新的事物的时候一定要知其然还要知其所以然,前文我们都是表层的跟大家聊聊什么是FPGA,它能干什么,现状如何,就业前景咋样,让大家对FPGA有个直观的认识,下面我们将带领大家深度剖析FPGA的内部结构是什么样的,让大家更深层次的去认识FPGA。

一.3.1

FPGA的发展由来

谈到FPGA的发展我们不妨先看看数字电路的发展,在数字集成电路中,门电路是最基本的逻辑单元,用以实现最基本的逻辑运算(与、或、非)和复合逻辑运算(与非、异或等)。与上述逻辑运算相对应,常用的门电路有与门、或门、非门、与非门、异或门等,其电路符号如下图所示:

图 1.3.1门电路符号

在最初的数字逻辑电路中,每个门电路都是用若干个分立的半导体器件和电阻、电容连接而成的。不难想象,用这种单元电路组成大规模的数字电路是非常困难的,这就严重制约了数字电路的普遍应用。1961年,美国德州仪器公司(TI)率先将数字电路的元器件制作在同一片硅片上,制成了集成电路(Intergrated Circuits,IC),并迅速取代了分立器件电路。

早期的数字逻辑设计需要设计师在一块电路板上或者如下图所示的面包板上用导线将多个芯片连接在一起。每个芯片包含一个或多个逻辑门,或者一些简单的逻辑结构(比如触发器或多路复用器等)。如下图中所示的芯片是在1960和1970年代,很多设计中都会使用的德州仪器7400系列的器件。

图 1.3.2使用74系列器件搭建的电路

自20世纪60年代以来,随着集成电路工艺水平的不断进步,集成电路的集成度也不断提高。数字集成电路经历了从小规模集成电路(Small Scale Integrated circuit,SSI),到中规模集成电路(Medium Scale Integrated circuit,MSI),再到大规模集成电路(Large Scale Integrated circuit,LSI),然后是超大规模集成电路(Very Large Scale Integrated circuit,VLSI),以及甚大规模集成电路(Ultra Large Scale Integrated circuit,ULSI)的发展过程。今天我们已经可以把十分复杂的数字系统制作在一个很小的硅片上,构成“片上系统”。

我们从逻辑功能的特点上将数字集成电路分类,可以分为通用型和专用型两类。前面介绍到的中、小规模集成电路(如74系列)都属于通用型数字集成电路。它们的逻辑功能都比较简单,而且是固定不变的。由于它们的这些功能在组成复杂数字系统时经常要用到,所以这些器件具有很强的通用性。

从理论上来讲,用这些通用型的中、小规模集成电路可以组成任何复杂的数字系统。随着集成电路的集成度越来越高,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量和功耗,而且可以使电路的可靠性大为提高。像这种为某种专门用途而设计的集成电路称为专用集成电路,即所谓的ASIC(Application Specific Integrated Circuit)。

ASIC的使用在生产、生活中非常普遍,比如手机、平板电脑中的主控芯片都属于专用集成电路。

图 1.3.3 华为Mate 30手机中的麒麟990芯片

虽然ASIC有诸多优势,但是在用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而且设计制造的周期也很长。可编程逻辑器件(Programmable Logic Device,PLD)的出现成功解决了这个矛盾。

可编程逻辑器件PLD是作为一种通用器件生产,但它的逻辑功能是由用户通过对器件进行编程来设定的。而且有些PLD的集成度很高,足以满足设计一般数字系统的需要。这样就可以由设计人员自行编程从而将一个数字系统“集成”在一片PLD上,做成“片上系统”(System on Chip,SoC),而不必去请芯片制造厂商设计和制作专用集成电路芯片了。

最后,我们再来总结这三种数字集成电路之间的差异。通用型数字集成电路和专用集成电路内部的电路连接都是固定的,所以它们的逻辑功能也是固定不变的。而可编程逻辑器件则不同,它们内部单元之间的连接是通过“写入”编程数据来确定的,写入不同的编程数据就可以得到不同的逻辑功能。

自20世纪70年代以来,PLD的研制和应用得到了迅速的发展,相继开发出了多种类型和型号的产品。PLD的发展历程如下图所示:

图 1.3.4 PLD的发展历程

目前常见的PLD大体上可以分为SPLD(simple PLD,简单PLD)、CPLD(complex PLD,复杂PLD)和FPGA(field-programmable gate array,现场可编程门阵列)。SPLD中又可分为PLA、PAL和GAL几种类型。FPGA也是一种可编程逻辑器件,但由于在电路结构上与早期已经广为应用的PLD不同,所以采用FPGA这个名称,以示区别。

通过对数字电路的学习我们知道,任何一个逻辑函数式都可以变换成与-或表达式,因而任何一个逻辑函数都能用一级与逻辑电路和一级或逻辑电路来实现。PLD最初的研制思想就来源于此。

图 1.3.5 PAL器件的基本电路结构

上图是SPLD中PAL(可编程阵列逻辑)的电路结构图。通过对输入端(inputs)到与门之间的可编程阵列(programmable array)进行编程,利用PAL可以获得不同形式的组合逻辑函数。数字电路课程告诉我们,任何逻辑函数式都可以转化为若干乘积项(product tems)之和的形式,亦称“积之和”形式。通过对可编程阵列进行编程,与逻辑电路输出所需要的乘积项,再通过或逻辑电路将这些乘积项相加,就得到了最终的功能输出。然后该输出送给输出电路中的寄存器用于存储或者同步,当然也可以忽略寄存器直接输出。这就是PAL作为一种“可编程逻辑器件”能够实现不同逻辑功能的原理。

通过扩展SPLD的概念就可以得到CPLD。CPLD是复杂可编程逻辑器件,相当于将多个PAL用可编程互联阵列(Programmable Interconnect Array,PIA)连接起来,形成一个大的PLD,如下图所示:

图 1.3.6 CPLD结构示意图

上图中的Logic block(逻辑块)通常被称为逻辑阵列模块,或者LAB(Logic Array Block)。每个LAB相当于一个PAL电路,不同型号的CPLD器件可以包含十几个甚至上百个LAB。通过PIA将这些LAB连接起来,就可以构成规模更大的逻辑电路了。另外,在PAL中,I/O管脚是直接连接到逻辑的。而在CPLD中,I/O管脚是通过PIA从器件的主要逻辑中分离出来的。I/O管脚有它自己的控制逻辑,I/O控制单元可以根据需要将相应的引脚设置成输入、输出或双向工作模式。

CPLD相对于SPLD最大的优势就是拥有更大的逻辑资源和布线的可能性。CPLD中LAB逻辑和PIA是完全可编程的,使得它具有在单芯片中非凡的设计灵活性。CPLD的I/O特性和功能也远比SPLD中简单的I/O更有价值。

FPGA是在PAL、GAL和CPLD等可编程逻辑器件的基础上进一步发展的产物,但是FPGA和其前辈CPLD有着非常大的差异。我们用一张表格来罗列他们之间的差别如下表所示:

表 1.3.1 FPGA与CPLD的差别

器件

FPGA

CPLD

内部结构

查找表(LUT)

乘积项(PT)

资源类型

触发器资源丰富

组合逻辑资源丰富

特有资源

RAM、PLL、DSP等

——

运行速度

集成度

程序存储

内部SRAM、外挂EEPROM或FLASH存储程序

内部EEPROM或FLASH存储程序

应用场合

完成复杂算法

完成控制逻辑

能否加密

一般不能(可以使用加密核)

可加密

那为什么会产生这么大的差别呢,主要是由于FPGA的内部结构决定的,下面我们就来看看FPGA的内部结构。

一.3.2

FPGA的内部结构

简化的FPGA基本结构由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,如下图所示。

图 1.3.7 FPGA基本结构

每个单元的基本概念介绍如下。

1) 可编程输入/输出单元

输入/输出(Input/Ouput)单元简称I/O单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求,为了使FPGA具有更灵活的应用,目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与I/O物理特性;可以调整匹配阻抗特性、上下拉电阻、以及调整驱动电流的大小等。

可编程I/O单元支持的电气标准因工艺而异,不同芯片商、不同器件的FPGA支持的I/O标准不同,一般来说,常见的电气标准有LVTTL,LVCMOS,SSTL,HSTL,LVDS,LVPECL和PCI等。值得一提的是,随着ASIC工艺的飞速发展,目前可编程I/O支持的最高频率越来越高,一些高端FPGA通过DDR寄存器技术,甚至可以支持高达2Gbit/s的数据数率。

2) 基本可编程逻辑单元

基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Register)组成。FPGA内部查找表一般为4输入,查找表一般完成纯组合逻辑功能。FPGA内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位,时钟使能的触发器,也可以配置成锁存器,FPGA依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程逻辑单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存器与查找表也有一定的差异,而且寄存器与查找表的组合模式也不同。例如,Altera可编程逻辑单元通常被称为LE(Logic Element),由一个寄存器加一个LUT构成。Altera大多数FPGA将10个LE有机地组合在一起,构成更大的功能单元——逻辑阵列模块(LAB,Logic Array Block),LAB中除了LE还包含LE之间的进位链,LAB控制信号,局部互联线资源,LUT级联链,寄存器级联链等连线与控制资源。Xilinx可编程逻辑单元叫Slice,它是由上下两个部分组成,每个部分都由一个寄存器加一个LUT组成,被称为LC(Logic Cell,逻辑单元),两个LC之间有一些共用逻辑,可以完成LC之间的配合与级联。Lattice的底层逻辑单元叫PFU(Programmable Function Unin,可编程功能单元),它是由8个LUT和8~9个寄存器构成,当然这些可编程逻辑单元的配置结构随着器件的不断发展也在不断更新,最新的一些可编程逻辑器件常常根据需求设计新的LUT和寄存器的配置比率,并优化其内部的连接构造。

学习底层配置单元的LUT和寄存器比率的一个重要意义在于器件选型和规模估算。很多器件手册上用器件的ASIC门数或等效的系统门数表示器件的规模。但是由于目前FPGA内部除了基本可编程逻辑单元外,还包含丰富的嵌入式RAM,PLL或DLL,专用Hard IP Core(如PCIE、Serdes硬核)等,这些功能模块也会等效出一定规模的系统门,所以用系统门权衡基本可编程逻辑单元的数量是不准确的,常常混淆设计者。比较简单科学的方法是用器件的寄存器或LUT的数量衡量。例如,Xilinx的Spartan系列的XC3S1000有15360个LUT,而Lattice的EC系列LFEC15E也有15360个LUT,所以这两款FPGA的可编程逻辑单元数量基本相当,属于同一规模的产品。同样道理,Altera的Cyclone IV器件族的EP4CE10的LUT数量是10320个,就比前面提到的两款FPGA规模略小。需要说明的是,器件选型是一个综合性的问题,需要将设计的需求、成本、规模、速度等级、时钟资源、I/O特性、封装、专用功能模块等诸多因素综合考虑进来。

3) 嵌入式块RAM

目前大多数FPGA都有内嵌的块RAM(Block RAM),FPGA内部嵌入可编程RAM模块,大大地拓展了FPGA的应用范围和使用灵活性。FPGA内嵌的块RAM一般可配置为单口RAM,双口RAM,伪双口RAM,CAM,FIFO等常用存储结构。RAM的概念和功能读者应该非常熟悉,在此不再赘述。FPGA中其实并没有专用的ROM硬件资源,实现ROM的思路是对RAM赋予初值。所谓CAM,即内容地址存储器,CAM这种存储器在其每个存储单元都包含了一个内嵌的比较逻辑,写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。概括的讲,RAM是一种根据地址读,写数据的存储单元;而CAM和RAM恰恰相反,它返回的是端口数据相同的所有内部地址。CAM的应用也十分广泛,比如在路由器中的交换表等。FIFO是先进先出队列的存储结构。FPGA内部实现RAM,ROM,CAM,FIFO等存储结构都可以基于嵌入式块RAM单元,并根据需求自动生成相应的粘合逻辑以完成地址和片选等控制逻辑。

不同器件商或不同器件族的内嵌块RAM的结构不同,Xilinx常见的块RAM大小是4kbit和18kbit两种结构,Lattice常用的块RAM大小是9KBIT,Altera的块RAM最灵活,一些高端器件内部同时含有3种块RAM结构,分别是M512 RAM,M4K RAM,M9K RAM。

需要补充的一点是,除了块RAM,还可以灵活地将LUT配置成RAM,ROM,FIFO等存储结构,这种技术被称为分布式RAM。根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准。

4) 丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别:

第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;

第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;

第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;

第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。

5) 底层嵌入功能单元

底层嵌入功能单元的概念比较笼统,这里我们指的是那些通用程度较高的嵌入式功能模块,比如PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等。随着FPGA的发展,这些模块被越来越多地嵌入到FPGA的内部,以满足不同场合的需求。

目前大多数FPGA厂商都在FPGA内部集成了DLL或者PLL硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、相移等功能。目前,高端FPGA产品集成的DLL和PLL资源越来越丰富,功能越来越复杂,精度越来越高。Altera芯片集成的是PLL,Xilinx集成的是DLL,Lattice的新型FPGA同时集成了PLL与DLL以适应不同的需求。Altera芯片的PLL模块分为增强型PLL和快速PLL等。Xilinx芯片DLL的模块名称为CLKDLL,在高端FPGA中,CLKDLL的增强型模块为DCM。这些时钟模块的生成和配置方法一般分为两种,一种是在HDL代码和原理图中直接例化,另一种是在IP核生成器中配置相关参数,自动生成IP。另外可以通过在综合、实现步骤的约束文件中编写约束文件来完成时钟模块的约束。

越来越多的高端FPGA产品将包含DSP或CPU等软处理核,从而FPGA将由传统的硬件设计手段逐步过渡到系统级设计平台。例如Altera的Stratix IV、Stratix V等器件族内部集成了DSP core,配合同样逻辑资源,还可实现ARM、MIPS、NIOS II等嵌入式处理系统;Xilinx的Virtes II和Virtex II pro系列FPGA内部集成了Power PC450的CPU Core和MicroBlaze RISC处理器Core;Lattice的ECP系列FPGA内部集成了系统DSP Core模块,这些CPU或DSP处理模块的硬件主要由一些加、乘、快速进位链、Pipelining和Mux等结构组成,加上用逻辑资源和块RAM实现的软核部分,就组成了功能强大的软运算中心。这种CPU或DSP比较适合实现FIR滤波器、编码解码、FFT等运算密集型运用。FPGA内部嵌入CPU或DSP等处理器,使FPGA在一定程度上具备了实现软硬件联合系统的能力,FPGA正逐步成为SOPC的高效设计平台。Altera的系统级开发工具是SOPC Buider和DSP Builder,专用硬件结构与软硬件协同处理模块等;Xilinx的系统设计工具是EDK和Platform Studio;Lattice的嵌入式DSP开发工具是Matlab的Simulink。

6) 内嵌专用硬核

这里的内嵌专用硬核与前面的底层嵌入单元是有区分的,这里讲的内嵌专用硬核主要指那些通用性相对较弱,不是所有FPGA器件都包含硬核。我们称FPGA和CPLD为通用逻辑器件,是区分于专用集成电路(ASIC)而言的。其实FPGA内部也有两个阵营:一方面是通用性较强,目标市场范围很广,价格适中的FPGA;另一方面是针对性较强,目标市场明确,价格较高的FPGA。前者主要指低成本FPGA,后者主要指某些高端通信市场的可编程逻辑器件。

一.3.3

Cyclone IV系列芯片简介

Altera 的 Cyclone IV系列FPGA器件巩固了Cyclone系列在低成本、低功耗FPGA市场的领导地位。并且Cyclone IV器件旨在用于大批量,成本敏感的应用,使系统设计师在降低成本的同时又能够满足不断增长的带宽要求。

Cyclone IV器件系列是建立在一个优化的低功耗工艺基础之上,并提供以下两种型号:

■ Cyclone IV E—最低的功耗,通过最低的成本实现较高的功能性

■ Cyclone IV GX—最低的功耗,集成了3.125 Gbps收发器的最低成本的FPGA

下面我们对Cyclone IV FPGA芯片的主要特点做了一个罗列:

■ 低成本、低功耗的 FPGA 架构:

■ 6 K到150 K的逻辑单元

■ 高达6.3 Mb的嵌入式存储器

■ 高达360个18 × 18乘法器,实现DSP处理密集型应用

■ 协议桥接应用,实现小于1.5 W的总功耗

■ Cyclone IV GX器件提供高达八个高速收发器以支持:

■ 高达3.125 Gbps的数据速率

■ 8B/10B编码器/解码器

■ 8-bit或者10-bit位物理介质附加子层 (PMA) 到物理编码子层 (PCS) 接口

■ 字节串化器/解串器 (SERDES)

■ 字对齐器

■ 速率匹配FIFO

■ 公共无线电接口 (CPRI) 的TX位滑块

■ 电路空闲

■ 动态通道重配置以实现数据速率及协议的即时修改

■ 静态均衡及预加重以实现最佳的信号完整性

■ 每通道150mW的功耗

■ 灵活的时钟结构以支持单一收发器模块中的多种协议

■ Cyclone IV GX器件对PCI Express (PIPE)(PCIe)Gen 1提供了专用的硬核IP:

■ ×1,×2,和×4通道配置

■ 终点和根端口配置

■ 高达256-byte的有效负载

■ 一个虚拟通道

■ 2 KB重试缓存

■ 4 KB接收 (Rx) 缓存

■ Cyclone IV GX 器件提供多种协议支持:

■ PCIe (PIPE) Gen 1×1,×2,和×4 (2.5 Gbps)

■ 千兆以太网 (1.25 Gbps)

■ CPRI (高达3.072 Gbps)

■ XAUI (3.125 Gbps)

■ 三倍速率串行数字接口 (SDI)(高达2.97 Gbps)

■ 串行 RapidIO(3.125 Gbps)

■ Basic 模式 (高达3.125 Gbps)

■ V-by-One(高达3.0 Gbps)

■ DisplayPort(2.7 Gbps)

■ 串行高级技术附件 (Serial Advanced Technology Attachment (SATA))(高达3.0 Gbps)

■ OBSAI(高达3.072 Gbps)

■ 高达532个用户I/O

■ 高达840 Mbps发送器 (Tx),875 Mbps Rx的LVDS接口

■ 支持高达200MHz的DDR2 SDRAM接口

■ 支持高达167 MHz的QDRII SRAM和DDR SDRAM

■ 每器件中高达8个锁相环 (PLLs)

■ 支持商业与工业温度等级

为了方便大家去选型,这里将Cyclone IV 系列器件的资源表给大家贴出来,如下图所示:

图 1.3.8 Cyclone IV器件资源表

图 1.3.9 Cyclone IV器件资源表

总而言之Cyclone IV系列芯片是一款功能相对完善,成本相对较低的高性价比的FPGA芯片,并且经过了市场的长期检验,深受广大工程师的喜爱。

图 1.3.10 EP4CE10芯片

一.3.4

Altera芯片的命名规则

一路看下来相信大家已经了解了什么是FPGA并且也知道了我们新起点上的芯片型号是EP4CE10F17C8N,那么大家是否知道这个命名的含义呢,这里我就以Altera的官方文档来给大家做个简单的介绍,方便大家以后自己去选型的时候可能会用得着这个小知识。

我们先来看下我从官方文档中截的图(图 1.3.10),从这张图中我们可以看到它是以Cyclone IV系列的芯片为例的:

图 1.3.10 Xilinx芯片命名规则示意图

EP4C:Cyclone IV家族;

E:逻辑资源增强型版本;

40:逻辑资源等级,数字越大逻辑资源越丰富;

F:封装类型;

29:引脚数量等级,数字越大引脚数量越多;

C:温度等级;

8:速度等级,数字越小速度越快;

N:可选的一个后缀,其中N代表无铅包装发货。

所以对照这个规则我们E10新起点上搭载的就是一块Altera(Intel)公司Cyclone IV系列的FPGA芯片,它拥有接近于10k的逻辑资源,速度等级为8,采用FBGA的封装类型,一共拥有256个IO引脚。

FPGA案例开发手册--基于全志T3+Logos FPGA核心板 - 腾讯云开发者社区-腾讯云

前 言

本文档主要提供评估板FPGA端案例测试方法,适用的开发环境为Windows 7 64bit和Windows 10 64bit。

本文案例基于创龙科技的全志T3+Logos FPGA核心板,它是一款基于全志科技T3四核ARM Cortex-A7处理器 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核全国产工业核心板,ARM Cortex-A7处理单元主频高达1.2GHz。核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。

核心板内部T3与Logos通过SPI、CSI、I2C通信总线连接,并通过工业级B2B连接器引出LVDS DISPLAY、RGB DISPLAY、MIPI DSI、TVOUT、TVIN、CSI、GMAC、EMAC、USB、SATA、SDIO、UART、SPI、TWI等接口及FPGA IO引脚,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编解码。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。

进行本文档操作前,请先按照调试工具安装相关文档安装USB转串口驱动、SecureCRT串口调试终端、Pango Design Suite 2021.1-SP7.1等相关软件。默认使用USB TO UART0作为调试串口,并使用创龙科技TL-PGMCable下载器进行操作演示。

FPGA案例位于产品资料“4-软件资料\Demo\FPGA_Demo\”目录下。案例包含project和bin两个目录,其中project目录下包含案例工程文件,bin目录下含有案例.sbit和.sfc格式可执行文件。.sbit格式文件用于在线加载,.sfc格式文件用于固化至SPI FLASH。

led_flash案例

案例说明

案例功能:控制评估底板LED3、LED4每隔0.5s将状态翻转一次。

图 1

管脚约束可查看案例"project\led_flash_xxx\constraints\led_flash.fdc”文件。

案例测试

请运行程序,此时可看到评估底板的LED3、LED4进行闪烁。

关键代码

顶层文件为"project\led_flash_xxx\hdl\led_flash.v",关键代码说明如下。

使用外部晶振提供的sys_clk作为LED参考时钟。

利用sys_clk(24MHz)进行计数,让LED按照0.5s的时间间隔进行状态转换。

图 2

资料下载:领航者ZYNQ之FPGA开发指南高清.pdf

第1页

第6页

第12页

第21页

第36页

第534页

    参见附件(28819KB,544页)。

     正点原子领航者FPGA开发指南参考书籍

    FPGA 器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。

图片预览

内容简介

    领航者ZYNQ之FPGA开发指南将由浅入深的带领大家开启ZYNQ的学习之旅。本手册主要学习ZYNQ的 PL(Program Logic,可编程逻辑)部分,共分为硬件篇、软件篇、语法篇与实战篇共四个篇章。

    硬件篇:硬件篇主要介绍本手册的硬件实验平台以及硬件资源详解。

    软件篇:软件篇主要介绍 FPGA 常用开发软件的安装教程与使用方法。

    语法篇:语法篇主要介绍 FPGA 的硬件描述语言 Verilog 的语法知识。

    实战篇:实战篇主要通过 21 个实例带领大家一步步深入了解 FPGA。

    本手册为领航者 ZYNQ 开发板的配套教程,在开发板配套的光盘里面,有开发板的原理图以及所有实例的完整代码,这些代码都有详细的注释,所有源码都经过我们严格测试,不会有任何编译错误。另外,源代码有我们生成好的 bit 文件(用于程序的文件),大家只需要通过器到开发板即可看到实验现象,亲自体验实验过程。

    本手册不仅非常适合广大学生和电子爱好者学习 FPGA,其大量的实验以及详细的注释,也是公司产品开发的不二参考。     

目录大全

    内容简介 .............................................................................. 9

    前 言 .............................................................................. 10

    第一篇 硬件篇 ................................................................... 11

    ZYNQ简介 ................................................................. 12

    ZYNQ简介 ..................................................................... 13

    FPGA简介 ..................................................................... 15

    ZYNQ PL简介 .................................................................. 20

    ZYNQ PS简介 .................................................................. 26

    实验平台简介 ............................................................. 31

    领航者ZYNQ开发板资源初探 ........................... ......

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    1

    领航者ZYNQ之FPGA 开发指南

    领航者 ZYNQ 之 FPGA

    开发指南 V1.2.1

    -正点原子 领航者 NAVIGATOR 开发板教程

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    2

    领航者ZYNQ之FPGA 开发指南

    广州市星翼电子科技有限公司

    淘宝店铺1:http:eboard.taobao.com

    淘宝店铺2:http:openedv.taobao.com

    技术支持论坛 (开源电子网) :www.openedv.com

    原子哥在线教学:www.yuanzige.com

    官方网站:www.alientek.com

    最新资料下载链接:http:www.openedv.compostslist13912.htm

    E-mail: 389063473@qq.com QQ: 389063473

    咨询电话:020-38271790

    传真号码:020-36773971

    团队:正点原子团队

    正点原子,做最全面、最优秀的嵌入式开发平台软硬件供应商。

    友 情 提 示

    如果您想及时免费获取“正点原子”最新资料,敬请关注正点原子

    微信公众平台,我们将及时给您发布最新消息和重要资料。

    关注方法:

    (1)微信“扫一扫”,扫描右侧二维码,添加关注

    (2)微信→添加朋友→公众号→输入“正点原子”→关注

    (3)微信→添加朋友→输入“alientek_stm32” →关注

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    3

    领航者ZYNQ之FPGA 开发指南

    目录

    内容简介 .............................................................................. 9

    前 言 .............................................................................. 10

    第一篇 硬件篇 ................................................................... 11

    ZYNQ简介 ................................................................. 12

    ZYNQ简介 ..................................................................... 13

    FPGA简介 ..................................................................... 15

    ZYNQ PL简介 .................................................................. 20

    ZYNQ PS简介 .................................................................. 26

    实验平台简介 ............................................................. 31

    领航者ZYNQ开发板资源初探 ..................................................... 32

    领航者开发板底板资源 ................................................... 32

    领航者开发板核心板资源 ................................................. 34

    领航者ZYNQ开发板资源说明 ..................................................... 36

    硬件资源说明 ........................................................... 36

    软件资源说明 ........................................................... 42

    硬件资源详解 ............................................................. 45

    领航者ZYNQ的IO分配 ........................................................... 46

    PL端的IO分配 ........................................................... 46

    PS端的IO分配 ........................................................... 51

    开发板底板原理图详解 ......................................................... 56

    底板电源 ............................................................... 56

    ZYNQ 启动模式 .......................................................... 59

    有源蜂鸣器 ............................................................. 59

    PL LED ................................................................. 60

    PS LED ................................................................. 60

    PL按键 ................................................................. 61

    PS按键 ................................................................. 61

    电容触摸按键 ........................................................... 62

    14-Pin JTAG接口 ........................................................ 63

    USB串口 ............................................................... 63

    RS232 接口 ............................................................ 64

    RS485 接口 ............................................................ 65

    RGB LCD 模块接口....................................................... 66

    XADC接口 .............................................................. 67

    OLED摄像头模块接口 ................................................... 68

    EEPROM ................................................................ 68

    实时时钟 .............................................................. 69

    ATK模块接口 ............................................................ 70

    I2S音频编解码 ......................................................... 71

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    4

    领航者ZYNQ之FPGA 开发指南

    HDMI接口 .............................................................. 72

    PL端千兆以太网接口(RJ45) ............................................. 74

    USB 2.0接口 ........................................................... 76

    Micro SD卡接口 ........................................................ 79

    CAN接口 ............................................................... 80

    IO扩展口 .............................................................. 81

    开发板核心板原理图详解 ....................................................... 82

    核心板电源 ............................................................. 82

    ZYNQ主控芯片 ........................................................... 85

    DDR3 SDRAM存储器 ....................................................... 88

    6-Pin JTAG 接口 ......................................................... 91

    PS复位按键 ............................................................. 92

    PL LED ................................................................. 92

    PS LED ................................................................. 93

    PL时钟输入 ............................................................. 93

    PS时钟输入 ............................................................. 93

    PL配置状态指示灯 ...................................................... 94

    PS端千兆以太网 ........................................................ 94

    QSPI FLASH ............................................................ 96

    eMMC .................................................................. 97

    开发板使用注意事项 ........................................................... 98

    ZYNQ的学习方法 ............................................................... 99

    第二篇 软件篇 .................................................................. 101

    Vivado软件的安装和使用 .................................................. 102

    Vivado软件的安装 ............................................................ 103

    Vivado软件的使用 ............................................................ 112

    新建工程 .............................................................. 113

    设计输入 .............................................................. 121

    分析与综合 ............................................................ 127

    约束输入 .............................................................. 131

    设计实现 .............................................................. 134

    下载比特流 ............................................................ 136

    在线逻辑分析仪的使用 ........................................................ 141

    HDL实例化调试探针流程.................................................. 142

    Hardware Manager中观察调试信号 ......................................... 148

    网表插入调试探针流程 .................................................. 153

    在Vivado中进行功能仿真 ...................................................... 162

    第三篇 语法篇 .................................................................. 178

    Verilog HDL语法 ......................................................... 179

    Verilog概述 ................................................................. 180

    Verilog简介 ........................................................... 180

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    5

    领航者ZYNQ之FPGA 开发指南

    为什么需要Verilog ..................................................... 180

    Verilog和VHDL区别 ..................................................... 180

    Verilog和C的区别 ...................................................... 181

    Verilog基础知识 ............................................................. 181

    Verilog的逻辑值 ....................................................... 181

    Verilog的标识符 ....................................................... 182

    Verilog的数字进制格式.................................................. 182

    Verilog的数据类型 ..................................................... 182

    Verilog的运算符 ....................................................... 183

    Verilog程序框架 ............................................................. 186

    注释 .................................................................. 186

    关键字 ................................................................ 186

    程序框架 .............................................................. 187

    Verilog高级知识点 ........................................................... 190

    阻塞赋值(Blocking)................................................... 190

    非阻塞赋值(Non-Blocking) ............................................. 191

    assign和always区别 .................................................... 193

    带时钟和不带时钟的always............................................... 193

    什么是latch ........................................................... 194

    状态机 ................................................................ 195

    模块化设计 ............................................................ 199

    Verilog编程规范 ............................................................. 203

    编程规范重要性 ........................................................ 203

    工程组织形式 .......................................................... 204

    文件头声明 ............................................................ 204

    输入输出定义 .......................................................... 205

    parameter定义 ......................................................... 205

    wirereg定义 .......................................................... 205

    信号命名 .............................................................. 206

    always块描述方式 ...................................................... 206

    assign块描述方式 ...................................................... 207

    空格和TAB ............................................................ 207

    注释 ................................................................. 207

    模块例化 ............................................................. 208

    其他注意事项 ......................................................... 208

    第四篇 实战篇 .................................................................. 210

    LED灯闪烁实验 ........................................................... 211

    LED灯简介 ................................................................... 212

    实验任务 .................................................................... 212

    硬件设计 .................................................................... 212

    程序设计 .................................................................... 213

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    6

    领航者ZYNQ之FPGA 开发指南

    下载验证 .................................................................... 216

    按键控制LED闪烁实验 ..................................................... 219

    按键简介 .................................................................... 220

    实验任务 .................................................................... 220

    硬件设计 .................................................................... 220

    程序设计 .................................................................... 221

    下载验证 .................................................................... 223

    按键控制蜂鸣器实验 ...................................................... 224

    蜂鸣器简介 .................................................................. 225

    实验任务 .................................................................... 225

    硬件设计 .................................................................... 225

    程序设计 .................................................................... 226

    下载验证 .................................................................... 230

    触摸按键控制LED灯实验 ................................................... 231

    触摸按键简介 ................................................................ 232

    实验任务 .................................................................... 232

    硬件设计 .................................................................... 232

    程序设计 .................................................................... 233

    下载验证 .................................................................... 236

    呼吸灯实验 .............................................................. 238

    呼吸灯简介 ................................................................. 239

    实验任务 ................................................................... 239

    硬件设计 ................................................................... 239

    程序设计 ................................................................... 240

    下载验证 ................................................................... 242

    IP核之MMCMPLL实验 ...................................................... 243

    MMCMPLL IP核简介 .......................................................... 244

    实验任务 ................................................................... 247

    硬件设计 ................................................................... 247

    程序设计 ................................................................... 248

    下载验证 ................................................................... 255

    IP核之RAM实验 ........................................................... 257

    RAM IP核简介 ............................................................... 258

    实验任务 ................................................................... 259

    硬件设计 ................................................................... 259

    程序设计 ................................................................... 259

    下载验证 ................................................................... 267

    IP核之FIFO实验 .......................................................... 269

    FIFO IP核简介 .............................................................. 270

    实验任务 ................................................................... 271

    硬件设计 ................................................................... 271

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    7

    领航者ZYNQ之FPGA 开发指南

    程序设计 ................................................................... 271

    下载验证 ................................................................... 284

    UART串口通信实验 ........................................................ 286

    UART串口简介 ............................................................... 287

    实验任务 ................................................................... 288

    硬件设计 ................................................................... 288

    程序设计 ................................................................... 289

    下载验证 ................................................................... 301

    RS485串口通信实验 ....................................................... 304

    RS-485简介 ................................................................. 305

    实验任务 ................................................................... 305

    硬件设计 ................................................................... 306

    程序设计 ................................................................... 307

    下载验证 ................................................................... 313

    RGB TFT-LCD彩条显示实验.................................................. 315

    RGB TFT-LCD简介 ............................................................ 316

    实验任务 ................................................................... 322

    硬件设计 ................................................................... 322

    程序设计 ................................................................... 325

    下载验证 ................................................................... 335

    RGB TFT-LCD字符和图片显示实验 ............................................ 337

    RGB TFT-LCD简介 ............................................................ 338

    实验任务 ................................................................... 338

    硬件设计 ................................................................... 338

    程序设计 ................................................................... 338

    下载验证 ................................................................... 350

    HDMI彩条显示实验 ........................................................ 351

    简介 ....................................................................... 352

    实验任务 ................................................................... 355

    硬件设计 ................................................................... 355

    程序设计 ................................................................... 357

    下载验证 ................................................................... 374

    HDMI方块移动实验 ........................................................ 376

    HDMI简介 ................................................................... 377

    实验任务 ................................................................... 377

    硬件设计 ................................................................... 377

    程序设计 ................................................................... 377

    下载验证 ................................................................... 381

    EEPROM读写测试实验 ...................................................... 383

    EEPROM简介 ................................................................. 384

    实验任务 ................................................................... 389

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    8

    领航者ZYNQ之FPGA 开发指南

    硬件设计 ................................................................... 389

    程序设计 ................................................................... 391

    下载验证 ................................................................... 402

    RTC实时时钟LCD显示实验............................................... 403

    PCF8563简介 ................................................................ 404

    实验任务 ................................................................... 406

    硬件设计 ................................................................... 407

    程序设计 ................................................................... 408

    下载验证 ................................................................... 424

    频率计实验 .......................................................... 425

    等精度频率计简介 ........................................................... 426

    实验任务 ................................................................... 427

    硬件设计 ................................................................... 427

    程序设计 ................................................................... 428

    下载验证 ................................................................... 439

    高速ADDA实验 ....................................................... 441

    高速ADDA简介 .............................................................. 442

    实验任务 ................................................................... 445

    硬件设计 ................................................................... 445

    程序设计 ................................................................... 448

    下载验证 ................................................................... 456

    MDIO接口读写测试实验................................................. 459

    简介 ....................................................................... 460

    实验任务 ................................................................... 466

    硬件设计 ................................................................... 466

    程序设计 ................................................................... 468

    下载验证 ................................................................... 478

    以太网ARP测试实验 ................................................... 481

    简介 ....................................................................... 482

    实验任务 ................................................................... 494

    硬件设计 ................................................................... 494

    程序设计 ................................................................... 496

    下载验证 ................................................................... 518

    以太网UDP测试实验 ................................................... 525

    简介 ....................................................................... 526

    实验任务 ................................................................... 530

    硬件设计 ................................................................... 530

    程序设计 ................................................................... 530

    下载验证 ................................................................... 540

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    9

    领航者ZYNQ之FPGA 开发指南

    内容简介

    领航者ZYNQ之FPGA开发指南将由浅入深的带领大家开启ZYNQ的学习之旅。本手册主要学习ZYNQ

    的 PL(Program Logic,可编程逻辑)部分,共分为硬件篇、软件篇、语法篇与实战篇共四个篇章。

    硬件篇:硬件篇主要介绍本手册的硬件实验平台以及硬件资源详解。

    软件篇:软件篇主要介绍FPGA常用开发软件的安装教程与使用方法。

    语法篇:语法篇主要介绍FPGA的硬件描述语言Verilog 的语法知识。

    实战篇:实战篇主要通过21个实例带领大家一步步深入了解FPGA。

    本手册为领航者ZYNQ 开发板的配套教程,在开发板配套的光盘里面,有开发板的原理图以及所有实

    例的完整代码,这些代码都有详细的注释,所有源码都经过我们严格测试,不会有任何编译错误。另外,源代码有我们生成好的bit文件(用于下载程序的文件),大家只需要通过下载器下载到开发板即可看到实

    验现象,亲自体验实验过程。

    本手册不仅非常适合广大学生和电子爱好者学习FPGA,其大量的实验以及详细的注释,也是公司产品

    开发的不二参考。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    10

    领航者ZYNQ之FPGA 开发指南

    前 言

    FPGA自诞生以来,经历了从配角到主角的过程,由于 FPGA飞速的发展,凭借其灵活性高、开发周期

    短、并行计算效率高等优势,使其应用到越来越多的领域中,如通信、消费电子、工业控制以及嵌入式等

    领域。

    Zynq-7000系列是Xilinx 公司推出的全可编程片上系统(All Programmable SoC),包含PS(Processing

    System,处理器系统)和PL (Programmable Logic,可编程逻辑)两部分。 Zynq SoC整合了 ARM双核cortex-A9

    处理器和Xilinx 7 系列FPGA 架构,使得它不仅拥有ASIC在能耗、性能和兼容性方面的优势,而且具有

    FPGA硬件可编程性的优点。

    Zynq-7000系列具有丰富的型号,如XC7Z010、XC7Z020和XC7Z030等,领航者ZYNQ底板搭配的

    核心板有两种型号,分别为ZYNQ-7020 (XC7Z020)和ZYNQ-7010 (XC7Z010)。 XC7Z020 内部的LC (Logic

    Cell,逻辑单元)达到85K,XC7Z010的内部LC 为28K。对于我们学习使用以及项目开发来说,已经足够

    了。

    不管你是一个FPGA初学者,还是一个有经验的FPGA 工程师,本手册都非常适合。尤其对于初学者,本手册将手把手的教你如何使用 FPGA 的开发软件Vivado, 包括新建工程、编译、 下载调试等一系列步骤,让你轻松上手。

    本手册的实验平台是领航者 ZYNQ 开发板,有这款开发板的朋友可以直接拿本手册配套的光盘上的例

    程在开发板上运行、验证。而没有这款开发板而又想要的朋友,可以上淘宝购买。当然你如果有了一款自

    己的开发板,而又不想再买,也是可以的,只要你的板子上有领航者ZYNQ开发板上的相同资源(需要实

    验用到的),代码一般都是可以通用的,你需要做的就只是把引脚 IO的约束稍做修改,使之适合你的开发

    板即可。

    最后,手册在编写过程中难免会有出错的地方,如果大家发现手册中有什么错误的地方,还请告诉本

    人一声,本人邮箱:3222632799@qq.com,也可以去www.openedv.com 论坛给我留言。在此先向各位朋友表

    示真心的感谢。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    11

    领航者ZYNQ之FPGA 开发指南

    第一篇 硬件篇

    实践出真知,要想学好FPGA,实验平台必不可少!本篇我们将详细介绍用来学习 FPGA 的硬件平台:

    领航者 ZYNQ 开发板。通过该篇的介绍,你将了解到我们的学习平台领航者 ZYNQ 开发板的功能及特点。

    为了让读者更好的使用领航者ZYNQ开发板,本篇还介绍了开发板的一些使用注意事项,请读者在使

    用开发板的时候一定要注意。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    12

    领航者ZYNQ之FPGA 开发指南

    ZYNQ简介

    ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC),它将处理器的软件可编程

    性与 FPGA 的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。与传统SoC

    解决方案不同的是,高度灵活的可编程逻辑(FPGA)可以实现系统的优化和差异化,允许添加定制外设与

    加速器,从而适应各种广泛的应用。

    本章包括以下几个部分:

    1.1 ZYNQ简介

    1.2 FPGA简介

    1.3 ZYNQ PL简介

    1.4 ZYNQ PS 简介

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    13

    领航者ZYNQ之FPGA 开发指南

    ZYNQ 简介

    Zynq-7000系列是Xilinx 于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾

    驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理能力与计算性能。 这款基于ARM处理器的SoC

    可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

    ZYNQ的本质特征,是它组合了一个双核 ARM Cortex-A9处理器和一个传统的现场可编程门阵列

    (FPGA)逻辑部件。由于该新型器件的可编程逻辑部分基于赛灵思 28nm工艺的7系列 FPGA,因此该系

    列产品的名称中添加了“7000”,以保持与7 系列FPGA 的一致性,同时也方便日后本系列新产品的命名。

    ZYNQ的全称是Zynq-7000 All Programmable SoC,也就是说, ZYNQ实际上是一个片上系统(System on

    Chip,SoC)。那么,什么是“SoC”?

    一个能够实现一定功能的电路系统由多个模块构成,如处理器、接口、存储器、模数转换器等等。这

    些功能模块可以由分立的器件来实现,然后在印刷电路板(PCB)上组合起来,最终形成板上系统

    (System-on-a-Board)。板上系统的示意图如下所示:

    图 1.1.1 板上系统

    在上图所示的板上系统中,绿色的矩形代表印刷电路板(PCB),上面各种颜色的小矩形代表了系统中

    各个功能模块,如存储器等。这些模块的功能都由一个个独立的硅芯片分别实现的,它们之间通过 PCB 上

    的金属走线连接,最终构成一个完整的系统。

    而片上系统(System-on-Chip)指的是在单个硅芯片就可以实现整个系统的功能,其示意图如下所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    14

    领航者ZYNQ之FPGA 开发指南

    图 1.1.2 片上系统

    如上图所示,片上系统SoC 在一个芯片里就实现了存储、处理、逻辑和接口等各个功能模块,而不是

    像板上系统那样,需要用几个不同的物理芯片来实现。与板上系统相比,SoC 的解决方案成本更低,能在

    不同的系统单元之间实现更快更安全的数据传输,具有更高的整体系统速度、更低的功耗、更小的物理尺

    寸和更好的可靠性。

    在过去, SoC 这个术语常用于指专用集成电路(Application Specific Integrated Circuit, ASIC)。基于 ASIC

    的 SoC 的代表性例子包括在PC、平板和智能手机上使用的处理器,如华为旗舰手机中的麒麟系列芯片。这

    些处理器典型地是由至少两个处理器核、存储器、图形处理器、接口和其他功能模块组合起来的。基于ASIC

    的 SoC 的主要缺点有两个:1、开发周期长且成本巨大;2、缺乏灵活性。开发ASIC时不可重用的工程投

    入是巨大的,使得这种 SoC 类型只适合于大批量而且寿命有限的产品中。

    ASIC SoC的局限性导致它们不适用于很多应用,特别是当快速投入市场能力、灵活性和升级能力已经

    成为重要的关键因素。对于小批量或中批量的产品,ASIC SoC 也不是好的解决方案。

    可编程片上系统(SOPC,System-on-Progammable-Chip)为上述应用提供了一个更灵活的解决方案:

    一种在可编程、可重新配置的芯片上实现的 SoC。其中,可编程的芯片指的就是FPGA。FPGA天生的灵活

    性使其可以被随心所欲地重新配置,以实现不同系统的功能,包括嵌入式处理器。和使用ASIC 来实现SoC

    相比,FPGA 能构成更为基础灵活的平台,方便系统的升级。

    相比于SOPC, ZYNQ为实现灵活的 SoC提供了一个更加理想的平台: Xilinx 将其打造成“全可编程 片

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    15

    领航者ZYNQ之FPGA 开发指南

    上系统(APSoC,All-Programmable SoC)”。它将处理器的软件可编程性与FPGA的硬件可编程性进行完

    美整合,以提供无与伦比的系统性能、灵活性与可扩展性。

    ZYNQ是由两个主要部分组成的:一个由双核ARM Cortex-A9为核心构成的处理系统(PS,Processing

    System),和一个等价于一片 FPGA 的可编程逻辑(PL,Programmable Logic)部分。ZYNQ 架构的简化模

    型如下图所示:

    图 1.1.3 ZYNQ 架构简化模型

    在上图中,PS具有固定的架构,包含了处理器和系统的存储器;而 PL 完全是灵活的,给了设计者一

    块“空白画布”来创建定制的外设。

    在ZYNQ 上,ARM Cortex-A9 是一个应用级的处理器,能运行像 Linux 这样的操作系统,而可编程

    逻辑是基于 Xilinx 7系列的FPGA架构。ZYNQ 架构实现了工业标准的 AXI接口,在芯片的两个部分之间

    实现了高带宽、低延迟的连接。这意味着处理器和逻辑部分各自都可以发挥最佳的用途,而不会产生在两

    个分立器件之间的接口开销。与此同时,又能获得系统被简化为单一芯片所带来的好处,包括物理尺寸和

    整体成本的降低。

    FPGA 简介

    通过前面的介绍,我们知道 ZYNQ 中集成了ARM处理器与 FPGA。ZYNQ作为一款全可编程SoC,其

    中 FPGA的硬件可编程性功不可没。那么FPGA 是什么呢,它的灵活性又从何而来呢?

    1) 数字集成电路的发展

    在数字集成电路中,门电路是最基本的逻辑单元,用以实现最基本的逻辑运算(与、或、非)和复合

    逻辑运算(与非、异或等)。与上述逻辑运算相对应,常用的门电路有与门、或门、非门、与非门、异或

    门等,其电路符号如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    16

    领航者ZYNQ之FPGA 开发指南

    图 1.2.1 基本的门电路符号

    在最初的数字逻辑电路中,每个门电路都是用若干个分立的半导体器件和电阻、电容连接而成的。不

    难想象,用这种单元电路组成大规模的数字电路是非常困难的,这就严重制约了数字电路的普遍应用。1961

    年,美国德州仪器公司(TI)率先将数字电路的元器件制作在同一片硅片上,制成了集成电路(Intergrated

    Circuits,IC),并迅速取代了分立器件电路。

    早期的数字逻辑设计需要设计师在一块电路板上或者如下图所示的面包板上用导线将多个芯片连接在

    一起。每个芯片包含一个或多个逻辑门,或者一些简单的逻辑结构(比如触发器或多路复用器等)。如下

    图中所示的芯片是在1960和 1970年代,很多设计中都会使用的德州仪器7400系列的器件。

    图 1.2.2 使用74 系列器件搭建的电路

    自20世纪60年代以来,随着集成电路工艺水平的不断进步,集成电路的集成度也不断提高。数字集

    成电路经历了从小规模集成电路(Small Scale Integrated circuit,SSI),到中规模集成电路(Medium Scale

    Integrated circuit,MSI),再到大规模集成电路(Large Scale Integrated circuit,LSI),然后是超大规模集

    成电路(Very Large Scale Integrated circuit, VLSI), 以及甚大规模集成电路(Ultra Large Scale Integrated circuit,ULSI)的发展过程。今天我们已经可以把十分复杂的数字系统制作在一个很小的硅片上,构成 “片上系统”。

    2) FPGA的由来

    我们从逻辑功能的特点上将数字集成电路分类,可以分为通用型和专用型两类。前面介绍到的中、小

    规模集成电路(如74系列) 都属于通用型数字集成电路。它们的逻辑功能都比较简单,而且是固定不变的。

    由于它们的这些功能在组成复杂数字系统时经常要用到,所以这些器件具有很强的通用性。

    从理论上来讲,用这些通用型的中、小规模集成电路可以组成任何复杂的数字系统。随着集成电路的

    集成度越来越高,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量

    和功耗,而且可以使电路的可靠性大为提高。像这种为某种专门用途而设计的集成电路称为专用集成电路,即所谓的ASIC(Application Specific Integrated Circuit)。

    ASIC 的使用在生产、生活中非常普遍,比如手机、平板电脑中的主控芯片都属于专用集成电路。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    17

    领航者ZYNQ之FPGA 开发指南

    图 1.2.3 华为Mate 30手机中的麒麟 990芯片

    虽然ASIC 有诸多优势,但是在用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而

    且设计制造的周期也很长。可编程逻辑器件(Programmable Logic Device,PLD)的出现成功解决了这个矛

    盾。

    可编程逻辑器件PLD 是作为一种通用器件生产,但它的逻辑功能是由用户通过对器件进行编程来设定

    的。而且有些PLD 的集成度很高,足以满足设计一般数字系统的需要。这样就可以由设计人员自行编程从

    而将一个数字系统“集成”在一片PLD 上,做成“片上系统”(System on Chip,SoC),而不必去请芯片

    制造厂商设计和制作专用集成电路芯片了。

    最后,我们再来总结一下这三种数字集成电路之间的差异。通用型数字集成电路和专用集成电路内部

    的电路连接都是固定的,所以它们的逻辑功能也是固定不变的。而可编程逻辑器件则不同,它们内部单元

    之间的连接是通过“写入”编程数据来确定的,写入不同的编程数据就可以得到不同的逻辑功能。

    自20世纪70年代以来, PLD的研制和应用得到了迅速的发展,相继开发出了多种类型和型号的产品。

    PLD 的发展历程如下图所示:

    图 1.2.4 PLD 的发展历程

    目前常见的PLD大体上可以分为 SPLD(simple PLD,简单PLD)、CPLD(complex PLD,复杂PLD)

    和 FPGA(field-programmable gate array,现场可编程门阵列)。SPLD 中又可分为PLA、PAL和GAL几种

    类型。FPGA 也是一种可编程逻辑器件,但由于在电路结构上与早期已经广为应用的 PLD 不同,所以采用

    FPGA这个名称,以示区别。

    通过对数字电路的学习我们知道,任何一个逻辑函数式都可以变换成与-或表达式,因而任何一个逻辑

    函数都能用一级与逻辑电路和一级或逻辑电路来实现。PLD 最初的研制思想就来源于此。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    18

    领航者ZYNQ之FPGA 开发指南

    图 1.2.5 PAL 器件的基本电路结构

    上图是SPLD 中PAL(可编程阵列逻辑)的电路结构图。通过对输入端(inputs)到与门之间的可编程

    阵列(programmable array)进行编程,利用 PAL 可以获得不同形式的组合逻辑函数。数字电路课程告诉我

    们,任何逻辑函数式都可以转化为若干乘积项(product tems)之和的形式,亦称“积之和”形式。通过对

    可编程阵列进行编程,与逻辑电路输出所需要的乘积项,再通过或逻辑电路将这些乘积项相加,就得到了

    最终的功能输出。然后该输出送给输出电路中的寄存器用于存储或者同步,当然也可以忽略寄存器直接输

    出。这就是PAL作为一种“可编程逻辑器件”能够实现不同逻辑功能的原理。

    通过扩展SPLD的概念就可以得到CPLD。CPLD 是复杂可编程逻辑器件,相当于将多个PAL用可编程

    互联阵列(Programmable Interconnect Array,PIA)连接起来,形成一个大的PLD,如下图所示:

    图 1.2.6 CPLD结构示意图

    上图中的Logic block(逻辑块)通常被称为逻辑阵列模块,或者LAB(Logic Array Block)。每个LAB

    相当于一个PAL电路,不同型号的CPLD 器件可以包含十几个甚至上百个LAB。通过PIA将这些LAB连

    接起来,就可以构成规模更大的逻辑电路了。另外,在 PAL 中,IO管脚是直接连接到逻辑的。而在CPLD

    中,IO 管脚是通过PIA从器件的主要逻辑中分离出来的。IO管脚有它自己的控制逻辑,IO控制单元可以

    根据需要将相应的引脚设置成输入、输出或双向工作模式。

    CPLD相对于 SPLD最大的优势就是拥有更大的逻辑资源和布线的可能性。CPLD 中LAB 逻辑和 PIA

    是完全可编程的,使得它具有在单芯片中非凡的设计灵活性。CPLD 的IO 特性和功能也远比 SPLD 中简单

    的 IO更有价值。

    FPGA 是在 PAL、GAL和CPLD等可编程逻辑器件的基础上进一步发展的产物,但是 FPGA和其前辈

    CPLD 有着非常大的差异。

    FPGA由许多 “可配置逻辑模块”(Configurable Logic Block, CLB)、 输入输出单元(IO Block,IOB)

    和分布式的可编程互联矩阵(Programmable Interconnection Matrix,PIM)组成。在FPGA 中,CLB 被布置

    成阵列的形式,如图 1.2.7所示。可编程的布线资源分布在 CLB 与CLB之间,像大城市的街道一样纵横联

    接。这些布线资源分为行互联和列互联,可以跨过整个器件,也可以是局部CLB 之间的互联。

    我们将图 1.2.6与图 1.2.7进行对比可以发现,FPGA 中的布线资源看上去似乎比CPLD 中的互联阵列

    更简单,但它实际上提供了更大的功能性和连通性。FPGA中的布线资源使得器件中所有的逻辑资源都可以

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    19

    领航者ZYNQ之FPGA 开发指南

    与芯片内其他资源进行通信,这种结构可以实现更大容量、低成本的逻辑器件。

    图 1.2.7 FPGA结构示意图

    在前面所讲的各种SPLD和 CPLD电路中,都采用了与或逻辑阵列加上输出逻辑单元的结构形式。而

    FPGA则采用了完全不同的电路结构形式(查找表,LUT),有关 FPGA 的结构我们将在本章ZYNQ PL简

    介中作详细介绍。

    3) FPGA的用途

    在介绍FPGA 的用途之前,先给大家讲一个笑话:

    话说一个资深工程师出国的时候带了一块 FPGA开发板。

    海关问道:“这是什么东西?”

    工程师说:“FPGA开发板”。

    海关又问:“FPGA是什么?”。

    工程师回答说:“你想让它是什么,它就是什么(It can be whatever you want)”

    能看懂这个笑话就说明你已经对 FPGA 有了一定的了解。作为一种可编程器件,FPGA能实现任何数字

    器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA 来实现。FPGA 就像一张白纸,任由

    你在上面涂鸦或者作画;FPGA又如同一堆积木,随便你用来搭建城堡或者玩“过家家”。

    FPGA是什么这个问题可能不太好回答。但是如果说 FPGA用来干什么,那么答案就显而易见了。你可

    能都还没意识到,在我们的生活中,FPGA 已经无处不在了。从你家里使用的高清电视,到附近的无线电接

    收塔;从银行门口的ATM机,到微软数据中心的服务器,都可以看到FPGA的身影。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    20

    领航者ZYNQ之FPGA 开发指南

    图 1.2.8 FPGA应用领域

    如上图所示,FPGA广范应用在汽车、军用装备、图像处理、有线和无线通信、医药,以及工业控制等

    诸多领域。

    可编程逻辑天生就为并行地实现算法提供了理想的资源。比如在图像处理中,要同时对大量的像素点

    进行数学运算,而FPGA就很适合像这种像素点级别的图像处理所需的快速、并行的操作。

    FPGA并行的特性决定了它在某些特定行业应用上具有得天独厚的优势,例如在医疗领域。医学影像比

    普通图像纹理更多,分辨率更高,相关性更大。因此,为严格确保临床应用的可靠性,对图像的压缩、分

    割等预处理、图像分析及图像理解等要求更高。这些要求恰恰可以充分发挥FPGA的优势,通过FPGA 加

    速图像压缩进程、删除冗余、提高压缩比、并确保图像诊断的可靠性。

    在金融领域,由于采用流水线逻辑体系结构,数据流处理要求低延时,高可靠性。这在金融交易风险

    建模算法应用中是重要的关键点,而 FPGA 正具备了这种优势。类似的行业和领域还有很多,特别是在深

    度学习和神经网络,以及图像识别和自然语言处理等领域,FPGA正显示出其独有的优势。

    ZYNQ PL 简介

    ZYNQ PL部分等价于Xilinx 7 系列FPGA,因此我们将首先介绍 FPGA的架构。

    简化的FPGA 基本结构由6部分组成,分别为可编程输入输出单元、基本可编程逻辑单元、嵌入式块

    RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    21

    领航者ZYNQ之FPGA 开发指南

    图 1.3.1 FPGA基本结构

    每个单元的基本概念介绍如下。

    1) 可编程输入输出单元

    输入输出(InputOuput)单元简称 IO 单元,它们是芯片与外界电路的接口部分,完成不同电气特性

    下对输入输出信号的驱动与匹配需求,为了使FPGA 具有更灵活的应用,目前大多数 FPGA的 IO 单元被

    设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与IO 物理特性;可以调整匹配阻抗

    特性、上下拉电阻、以及调整驱动电流的大小等。

    可编程IO单元支持的电气标准因工艺而异,不同芯片商、不同器件的 FPGA 支持的 IO标准不同,一

    般来说,常见的电气标准有LVTTL,LVCMOS,SSTL,HSTL,LVDS,LVPECL和 PCI 等。值得一提的是,随着ASIC 工艺的飞速发展,目前可编程 IO支持的最高频率越来越高,一些高端FPGA 通过DDR寄存器

    技术,甚至可以支持高达2Gbits 的数据数率。

    ZYNQ上的通用输入输出功能(IOB)合起来被称作 SelectIO 资源,它们被组织成 50个IOB一组。每

    个 IOB有一个焊盘,是与外部世界连接来做单个信号的输入或输出的。每个IOB 还包含一个 IOSERDES 资

    源,可以做并行和串行数据的可编程转换。

    可编程IO单元 可编程逻辑单元

    嵌入式

    块RAM

    硬核

    布线

    资源

    底层嵌入

    功能单元

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    22

    领航者ZYNQ之FPGA 开发指南

    图 1.3.2 PL 中的 IOB

    2) 基本可编程逻辑单元

    基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的

    逻辑功能。 FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT, Look Up Table)

    和寄存器(Register)组成。Xilinx 7系列FPGA 内部查找表为 6输入,查找表一般完成纯组合逻辑功能。

    FPGA内部寄存器结构相当灵活,可以配置为带同步异步复位或置位,时钟使能的触发器,也可以配置成

    锁存器,FPGA依赖寄存器完成同步时序逻辑设计。

    一般来说,比较经典的基本可编程逻辑单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存

    器与查找表也有一定的差异,而且寄存器与查找表的组合模式也不同。当然这些可编程逻辑单元的配置结

    构随着器件的不断发展也在不断更新,最新的一些可编程逻辑器件常常根据需求设计新的LUT和寄存器的

    配置比率,并优化其内部的连接构造。

    例如,Altera可编程逻辑单元通常被称为LE(Logic Element),由一个寄存器加一个LUT构成。Altera

    大多数 FPGA将 10个 LE有机地组合在一起,构成更大的功能单元――逻辑阵列模块(LAB,Logic Array

    Block)。LAB中除了LE还包含 LE 之间的进位链,LAB控制信号,局部互联线资源,LUT级联链,寄存

    器级联链等连线与控制资源。

    Xilinx 7系列 FPGA中的可编程逻辑单元叫CLB(Configurable Logic Block,可配置逻辑块)每个CLB

    里包含两个逻辑片(Slice)。每个 Slice由4 个查找表、8个触发器和其他一些逻辑所组成的。CLB示意图

    如下所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    23

    领航者ZYNQ之FPGA 开发指南

    图 1.3.3 CLB 示意图

    CLB 是逻辑单元的最小组成部分,在PL中排列为一个二维阵列,通过可编程互联连接到其他类似的资

    源。每个 CLB 里包含两个逻辑片,并且紧邻一个开关矩阵,如下图所示:

    图 1.3.4 PL 中的CLB

    3) 嵌入式块RAM

    目前大多数FPGA 都有内嵌的块 RAM(Block RAM),FPGA内部嵌入可编程RAM模块,大大地拓

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    24

    领航者ZYNQ之FPGA 开发指南

    展了 FPGA 的应用范围和使用灵活性。不同器件商或不同器件族的内嵌块RAM的结构不同,Lattice常用的

    块 RAM大小是9KBIT;Altera 的块RAM最灵活,一些高端器件内部同时含有3种块RAM结构,分别是

    M512 RAM,M4K RAM,M9K RAM。

    Zynq-7000里的块RAM和Xilinx 7 列FPGA 里的那些块 RAM是等同的,它们可以实现 RAM、 ROM 和

    先入先出(First In First Out,FIFO)缓冲器。每个块 RAM 可以存储最多36KB 的信息,并且可以被配置

    为一个36KB的RAM或两个独立的18KB RAM。默认的字宽是18位,这样的配置下每个RAM含有2048 个

    存储单元。RAM 还可以被“重塑”来包含更多更小的单元(比如 4096个单元x9位,或 8192x4位),或

    是另外做成更少更长的单元(如1024单元x36位512x72位)。把两个或多个块RAM组合起来可以形成更

    大的存储容量。PL中的块RAM 示意图如下所示:

    图 1.3.5 PL 中的Block RAM

    需要补充的一点是,除了块 RAM,还可以灵活地将 LUT 配置成RAM,ROM,FIFO等存储结构,这

    种技术被称为分布式 RAM。根据设计需求,块 RAM的数量和配置方式也是器件选型的一个重要标准。

    4) 丰富的布线资源

    布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速

    度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为

    4 类不同的类别:

    第一类是全局布线资源,用于芯片内部全局时钟和全局复位置位的布线;

    第二类是长线资源,用以完成芯片Bank 间的高速信号和第二全局时钟信号的布线;

    第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;

    第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

    在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束

    条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。

    5) 底层嵌入功能单元

    底层嵌入功能单元的概念比较笼统,这里我们指的是那些通用程度较高的嵌入式功能模块,比如 PLL

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    25

    领航者ZYNQ之FPGA 开发指南

    (Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等。随着FPGA 的发展,这些模块被越

    来越多地嵌入到 FPGA 的内部,以满足不同场合的需求。

    目前大多数FPGA 厂商都在 FPGA内部集成了DLL或者 PLL 硬件电路,用以完成时钟的高精度、低抖

    动的倍频、分频、占空比调整、相移等功能。目前,高端 FPGA 产品集成的DLL和 PLL 资源越来越丰富,功能越来越复杂,精度越来越高。

    另外,越来越多的高端FPGA 产品将包含DSP或 CPU 等硬核,从而FPGA 将由传统的硬件设计手段逐

    步过渡到系统级设计平台。例如Altera的 Stratix IV、Stratix V 等器件内部集成了DSP 核;Xilinx的Virtes II

    和 Virtex II pro系列FPGA内部集成了 Power PC450的处理器。FPGA 内部嵌入DSP或 CPU 等处理器,使

    FPGA在一定程度上具备了实现软硬件联合系统的能力,FPGA 正逐步成为SOPC 的高效设计平台。

    6) 内嵌专用硬核

    这里的内嵌专用硬核与前面的底层嵌入单元是有区分的,这里讲的内嵌专用硬核主要指那些通用性相

    对较弱,不是所有 FPGA器件都包含硬核。

    在ZYNQ的PL端有一个数模混合模块――XADC,它就是一个硬核。 XADC包含两个模数转换器(ADC),一个模拟多路复用器,片上温度和片上电压传感器等。我们可以利用这个模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。

    7) ZYNQ PL架构

    在介绍完FPGA的基本结构之后,我们给出ZYNQ PL 架构的示意图,如下所示:

    图 1.3.6 ZYNQ PL 架构示意图

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    26

    领航者ZYNQ之FPGA 开发指南

    ZYNQ PS简介

    虽然我们在前面花费了大量的篇幅来介绍 ZYNQ 的PL 部分,但是 ZYNQ 实际上是一个以处理器为核

    心的系统,PL只是它的一个外设。Zynq-7000系列的亮点在于它包含了完整的ARM处理器系统,且处理器

    系统中集成了内存控制器和大量的外设,使Cortex-A9处理器可以完全独立于可编程逻辑单元。而且实际上

    在 ZYNQ 中,PL 和PS两部分的供电电路是独立的,这样 PS或PL部分不被使用的话就可以被断电。

    在前面我们介绍SOPC 时提到过,FPGA可以用来搭建嵌入式处理器,像Xilinx 的 MicroBlaze处理器

    或者Altera的Nios II处理器。像这种使用FPGA 的可编程逻辑资源搭建的处理器我们称之为“软核”处理

    器,它的优势在于处理器的数量以及实现方式的灵活性。

    而ZYNQ 中集成的是一颗“硬核”处理器,它是硅芯片上专用且经过优化的硬件电路,硬核处理器的

    优势是它可以获得相对较高的性能。另外,ZYNQ中的硬件处理器和软核处理器并不冲突,我们完全可以

    使用 PL的逻辑资源搭建一个 Microblaze软核处理器,来和 ARM硬核处理器协同工作。

    需要注意的是,Zynq 处理器系统里并非只有ARM处理器,还有一组相关的处理资源,形成了一个应

    用处理器单元(Application Processing Unit,APU),另外还有扩展外设接口、cache 存储器、存储器接口、互联接口和时钟发生电路等。

    ZYNQ 处理器系统(PS)示意图如下所示,其中红色高亮区域为APU。

    图 1.4.1 PS 系统示意图

    1) APU

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    27

    领航者ZYNQ之FPGA 开发指南

    图 1.4.2 APU 简化示意图

    如上图所示是APU的简化框图。APU 主要是由两个ARM处理器核组成的,每个都关联了一些可计算

    的单元:一个NEONTM媒体处理引擎(Media Processing Engine,MPE)和浮点单元(Floating Point Unit,FPU);一个内存管理单元(Memory Management Unit,MMU);和一个一级 cache 存储器(分为指令和

    数据两个部分)。 APU 里还有一个二级 cache 存储器,再往下还有片上存储器 (On Chip Memory, OCM),这些是两个 ARM处理器共用的。最后,由一个一致性控制单元(Snoop Control Unit,SCU)在 ARM核和

    二级 cache及OCM存储器之间形成了桥连接。SCU还部分负责与 PL对接,图中没有标出这个接口。

    2) 外部接口

    如图 1.4.1所示,Zynq PS 实现了众多接口,既有PS和PL之间的,也有 PS 和外部部件之间的。

    PS 和外部接口之间的通信主要是通过复用的输入输出(Multiplexed InputOutput,MIO)实现的,它提供了可以灵活配置的 54 个引脚,这表明外部设备和引脚之间的映射是可以按需定义的。当需要扩

    展超过 54个引脚的时候可以通过扩展 MIO(Extended MIO,EMIO)来实现,EMIO 并不是 PS 和外部连

    接之间的直接通路,而是通过共用了 PL的IO 资源来实现的。

    PS中可用的 IO包括标准通信接口和通用输入输出(General Purpose InputOutput,GPIO),GPIO 可以用做各种用途,包括简单的按钮、开关和 LED。如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    28

    领航者ZYNQ之FPGA 开发指南

    图 1.4.3 PS 的外部接口

    3) 存储器接口

    Zynq-7000 APSoC 上的存储器接口单元包括一个动态存储器控制器和几个静态存储器接口模块。动态存

    储器控制器可以用于 DDR3、DDR3L、DDR2或LPDDR2。静态存储器控制器支持一个NAND闪存接口、一个Quad-SPI闪存接口、一个并行数据总线和并行 NOR 闪存接口。

    4) 片上存储器

    片上存储器包括256kB的RAM(OCM)和 128kB的ROM(BootROM)。OCM支持两个 64位AXI 从

    机接口端口,一个端口专用于通过APU SCU的 CPUACP访问,而另一个是由PS和 PL内其他所有的总线

    主机所共享的。BootROM是 ZYNQ 芯片上的一块非易失性存储器,它包含了ZYNQ所支持的配置器件的

    驱动。BootROM对于用户是不可见的,专门保留且只用于引导的过程。

    5) AXI接口

    ZYNQ将高性能ARM Cotex-A系列处理器与高性能 FPGA在单芯片内紧密结合,为设计带来了如减小

    体积和功耗、降低设计风险,增加设计灵活性等诸多优点。在将不同工艺特征的处理器与 FPGA融合在一

    个芯片上之后,片内处理器与 FPGA 之间的互联通路就成了ZYNQ芯片设计的重中之重。如果Cotex-A9与

    FPGA之间的数据交互成为瓶颈,那么处理器与FPGA 结合的性能优势就不能发挥出来。

    Xilinx从Spartan-6和Virtex-6 系列开始使用AXI协议来连接 IP核。 在 7系列和 ZYNQ-7000 AP SoC器

    件中,Xilinx在IP 核中继续使用 AXI协议。AXI的英文全称是 Advanced eXtensible Interface,即高级可扩

    展接口,它是ARM公司所提出的AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。

    AXI协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    29

    领航者ZYNQ之FPGA 开发指南

    1、总线的地址控制和数据通道是分离的;

    2、支持不对齐的数据传输;

    3、支持突发传输,突发传输过程中只需要首地址;

    4、具有分离的读写数据通道;

    5、支持显著传输访问和乱序访问;

    6、更加容易进行时序收敛。

    在数字电路中只能传输二进制数0和1,因此可能需要一组信号才能高效地传输信息,这一组信号就组

    成了接口。AXI4协议支持以下三种类型的接口:

    1、 AXI4:高性能存储映射接口。

    2、 AXI4-Lite:简化版的AXI4 接口,用于较少数据量的存储映射通信。

    3、 AXI4-Stream:用于高速数据流传输,非存储映射接口。

    在这里首先我们首先解释一下存储映射(Meamory Map)这一概念。如果一个协议是存储映射的,那

    么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表

    明是针对该存储空间的读写操作。

    AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite

    为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而AXI-Stream接口则像FIFO 一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速AD、PCIe、DMA 接

    口等需要高速数据传输的场合。

    在PS和PL之间的主要连接是通过一组 9个AXI接口,每个接口有多个通道组成。这些形成了 PS 内

    部的互联以及与 PL 的连接,如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    30

    领航者ZYNQ之FPGA 开发指南

    图 1.4.4 PS 与PL 的AXI互联

    我们将上图中的接口总结如下所示:

    图 1.4.5 PS 与PL的AXI接口

    上图给出了每个接口的简述,标出了主机和从机(按照惯例,主机是控制总线并发起会话的,而从机

    是做响应的)。需要注意的是,接口命名的第一个字母表示的是PS 的角色,也就是说,第一个字母 “M”

    表示 PS 是主机,而第一个字母“S”表示 PS 是从机。

    上图中PS和PL之间的9个AXI接口可以分成三种类型:

    1、通用AXI(General Purpose AXI):一条 32 位数据总线,适合 PL 和PS之间的中低速通信。接口

    是透传的不带缓冲。总共有四个通用接口:两个PS做主机,另两个 PL 做主机。

    2、加速器一致性端口(Accelerator Coherency Port):在 PL 和 APU 内的 SCU 之间的单个异步连接,总线宽度为 64位。这个端口用来实现 APU cache 和PL 的单元之间的一致性。PL 是做主机的。

    3、高性能端口(High Performance Ports):四个高性能 AXI 接口,带有FIFO缓冲来提供“批量”读

    写操作,并支持PL和PS中的存储器单元的高速率通信。数据宽度是 32 或64 位,在所有四个接口中PL 都

    是做主机的。

    上面的每条总线都是由一组信号组成的,这些总线上的会话是根据 AXI4总线协议进行通信的。有关

    AXI4 协议更详细的内容,我们将在后续的章节进行介绍。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    31

    领航者ZYNQ之FPGA 开发指南

    实验平台简介

    本章内容主要向大家简要介绍我们的实验平台:领航者ZYNQ开发板。通过本章的学习,你将对我们

    后面使用的实验平台有个快速的了解,为后面的学习做铺垫。

    本章包括以下几个部分:

    2.1 领航者ZYNQ 开发板资源初探

    2.2 领航者ZYNQ 开发板资源说明

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    32

    领航者ZYNQ之FPGA 开发指南

    领航者 ZYNQ 开发板资源初探

    正点原子目前已经拥有多款 STM32、 I.MXRT以及FPGA开发板,这些开发板常年稳居淘宝销量冠军,累计出货超过 10W套。这款 ZYNQ 开发板,是正点原子针对中高端应用场景所推出的开发板,采用核心板

    +底板的设计,方便用户对核心板进行二次开发。

    领航者开发板底板资源

    首先我们来看领航者ZYNQ 开发板的底板资源图,如图 2.1.1所示。

    图 2.1.1 领航者ZYNQ 开发板底板资源图

    从图 2.1.1可以看出,领航者ZYNQ开发板底板资源非常丰富,把ZYNQ 芯片内部的资源发挥到了极

    致,同时扩充了丰富的接口和功能模块,整个开发板显得十分高端和大气。

    开发板的外形尺寸为120mm160mm,板子的设计充分考虑了人性化设计,并结合正点原子多年的开发

    板设计经验,经过多次改进,最终确定了这样的设计。

    正点原子领航者开发板底板资源如下:

    ◆ 1个核心板接口,支持 ZYNQ7020ZYNQ-7010核心板

    ◆ EEPROM芯片:AT24C64,容量:64Kbit(8K 字节)

    ◆ 1个电源指示灯(蓝色)

    ◆ 2个PL LED(红色)

    ◆ 2个PS LED(红色)

    ◆ 1个有源蜂鸣器

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    33

    领航者ZYNQ之FPGA 开发指南

    ◆ 1个PL 复位按键

    ◆ 2个PL 功能按键

    ◆ 2个PS 功能按键

    ◆ 1个电容触摸按键

    ◆ 1路CAN接口,CAN收发器采用TJA1050 芯片

    ◆ 1路RS232 串口(母)接口,采用SP3232 芯片

    ◆ 1路RS485 接口,和RS232 的接口复用

    ◆ 1个RS232RS485选择接口

    ◆ 1个CAN选择接口

    ◆ 1个标准的RGB888 TFT-LCD 接口

    ◆ 1个XADC接口

    ◆ 1个OLED摄像头模块接口

    ◆ 1个20x2扩展口,共36个扩展 IO口

    ◆ 1个RTC实时时钟,芯片型号为PCF8563

    ◆ 1个RTC电池座,并带电池

    ◆ 1个ATK MODULE 接口,支持正点原子蓝牙GPSUART等模块

    ◆ 1个BOOT 模式选择开关

    ◆ 1个电源指示灯

    ◆ 1路音频输出接口

    ◆ 1路音频输入接口

    ◆ 1个高性能音频编解码芯片 WM8960,支持录音、音频输入和音频输出

    ◆ 1个录音头(MIC麦克风)

    ◆ 1个小扬声器(位于开发板背面)

    ◆ 1路HDMI输入输出接口

    ◆ 4路USB HOST接口

    ◆ 1路USB SLAVE接口

    ◆ 14-Pin JTAG 接口,提供开发板下载和调试的功能

    ◆ 1组5V电源供应接入口

    ◆ 1组3.3V 电源供应接入口

    ◆ 3路3.3V 电源口和3路5V 电源口,方便给外扩模块供电

    ◆ 1个电源开关,控制整个开发板的电源

    ◆ 1个直流电源输入接口(输入电压范围:DC6~16V)

    ◆ 1个PL 端千兆以太网接口(RJ45)

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    34

    领航者ZYNQ之FPGA 开发指南

    ◆ 1个PS 端千兆以太网接口(RJ45)

    ◆ 1个Micro SD(TF)卡接口(位于开发板背面)

    ◆ 1个USB 串口

    领航者ZYNQ 开发板底板的特点包括:

    1) 接口丰富。板子提供了丰富的标准外设接口,可以方便的进行各种外设的实验和开

    发。

    2) 设计灵活。我们采用核心板+底板的形式,板上很多资源都可以灵活配置,以满足不

    同条件下的使用;板上很多资源都可以灵活配置,以满足不同条件下的使用。其中芯片左下

    侧引出一排20x2扩展口,共36个扩展 IO 口。

    3) 资源充足。板载高性能音频编解码芯片、HDMI接口、RGB LCD 接口、1个PL 千兆

    网口+1个PS千兆网口、4个USB HOST接口+1个USB SLAVE 接口以及各种接口芯片,满

    足各种应用需求。

    4) 人性化设计,各个接口都有丝印标注,且用方框框出,使用起来一目了然;部分常

    用外设大丝印标出,方便查找;接口位置设计合理,方便顺手。资源搭配合理,物尽其用。

    领航者开发板核心板资源

    接下来我们来看领航者ZYNQ 核心板资源图,正点原子的ZYNQ核心板根据主控芯片和DDR3 内存容

    量的不同分为ZYNQ-7020核心板和ZYNQ-7010核心板。领航者ZYNQ-7020核心板和领航者ZYNQ-7010

    核心板的资源图分别如图 2.1.2和图 2.1.3所示:

    图 2.1.2 ZYNQ-7020 核心板资源图

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    35

    领航者ZYNQ之FPGA 开发指南

    图 2.1.3 ZYNQ-7010 核心板资源图

    由图 2.1.2和图 2.1.3可知,ZYNQ核心板板载资源丰富,可以满足各种应用的需求。整个核心板的外

    形尺寸为 45mm60mm,非常小巧,并且采用了贴片板对板连接器, 使得其可以很方便的应用在各种项目上。

    ZYNQ-7020核心板和ZYNQ-7010核心板除ZYNQ 主控芯片和DDR3 存储容量不同外,其余外设完全

    相同。ZYNQ-7020核心板和 ZYNQ-7010核心板具体资源如下:

    ◆ ZYNQ 芯片采用 Xilinx 公司的 ZYNQ7000 系列芯片,ZYNQ-7020 核心板的 ZYNQ

    芯片型号为 XC7Z020CLG400-2,PL 逻辑单元多达 85K,BRAM 存储资源为 4.9Mbit;

    ZYNQ-7010核心板的ZYNQ 芯片型号为XC7Z010CLG400-1,PL逻辑单元多达28K,BRAM

    存储资源为2.1Mbit;两种ZYNQ芯片的处理器系统均为双核Cortex-A9结构。需要注意的是,ZYNQ-7020核心板主控芯片的速度等级为“-2”,ZYNQ-7010核心板主控芯片的速度等级为

    “-1”,因此ZYNQ-7020核心板主控芯片的速度等级更高,所支持的频率也更高

    ◆ 2片DDR3 SDRAM,ZYNQ-7020核心板的DDR3型号为NT5CB256M16EP-DI,每

    片4Gbit,总容量为 8Gbit (1GB); ZYNQ-7010核心板的 DDR3型号为NT5CB128M16IP-DI,每片2Gbit,总容量为4Gbit(512MB)

    ◆ 1个1x6下载接口,与底板的14-Pin JTAG接口功能一致

    ◆ 1个PL LED

    ◆ 1个PS LED

    ◆ 1个PL 晶振:50Mhz,给PL 可编程逻辑提供时钟

    ◆ 1个PS 晶振:33.333Mhzz,给 PS CPU 逻辑提供时钟

    ◆ 1个电源指示灯

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    36

    领航者ZYNQ之FPGA 开发指南

    ◆ 1个PL 配置状态指示灯(DONE LED)

    ◆ 1个PS 端千兆以太网 PHY 芯片:RTL8211E-VL

    ◆ 1个PS 复位按键

    ◆ 1个QSPI FLASH,型号W25Q256FVEI,容量:256Mbit(32MB)

    ◆ 1个eMMC,型号为KLM8G1GETF,容量:8GB。

    领航者ZYNQ 开发板底板的特点包括:

    1) 体积小巧。核心板仅 45mm60mm 大小,方便使用到各种项目里面。

    2) 集成方便。核心板使用两个240P BTB连接座,可以非常方便的集成到客户PCB上,更换简单,方便维修测试。

    3) 资源丰富。核心板板载1GB512MB DDR3、32MB QSPI Flash、8GB eMMC 存储器,可以满足各种应用场合

    4) 性能稳定。核心板采用 10层板设计,单独地层、电源层,保证运行稳定、可靠。

    5) 人性化设计。核心板各种放有详细丝印,使用起来一目了然。资源搭配合理,物尽

    其用。

    6) 接口丰富。板子提供了丰富的标准外设接口,可以方便的进行各种外设的实验和开

    发。

    领航者 ZYNQ 开发板资源说明

    领航者ZYNQ 开发板资源说明分为两个部分:硬件资源说明和软件资源说明。

    硬件资源说明

    领航者ZYNQ 开发板分别为 ZYNQ 的PL端和PS端配备了丰富的硬件外设,如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    37

    领航者ZYNQ之FPGA 开发指南

    图 2.2.1 领航者ZYNQ 开发板硬件资源框图

    XC7Z020和XC7Z010 芯片的 PS端IO bank包括Bank 502、Bank 501和 Bank 500,PL端的 IO bank包

    括 Bank 13、Bank 34和Bank 35,我们分别为PS 端和PL 端的IO 连接了不同的外设,如图 2.2.1所示。

    下面我们分别介绍领航者ZYNQ核心板和底板上的硬件资源。

    底板外设简介:

    1. 有源蜂鸣器

    领航者底板板载一个有源蜂鸣器(BEEP),可以实现简单的报警闹铃。

    2. 1 个PL 复位按键

    领航者底板板载一个PL 端的复位按键(PL_RESET),可以作为ZYNQ PL端逻辑的复位信号,按键

    复位信号默认是高电平的,当复位按键按下之后为低电平。

    3. 2 个PL LED

    领航者底板板载2个PL LED灯(PL_LED0~PL_LED1),连接到了PL 端的 IO 口上。在调试代码的时

    候,使用LED来指示程序执行状态,是非常不错的一个辅助调试方法。

    4. 2 个PL 功能按键

    领航者底板板载2个机械式按键(PL_KEY0~PL_KEY1)是直接连接在PL端的 IO口上的,可以作为

    人机交互的输入信号。这2个按键信号默认都是高电平的,当按键被按下之后,按键信号变为低电平。

    Bank 502

    DDR 1.5V

    DDR3 SDRAM

    DDR3 SDRAM

    Bank 501

    MIO 1.8V

    EMMC

    千兆以太网

    Bank 500

    MIO 3.3V

    QSPI FLASH

    1个PS LED

    Bank 13

    Bank 34

    Bank 35

    3.3V

    1个PL LED

    Micro SD卡

    USB 2.0 OTG

    CH340 USB UART

    2个PS LED

    6PIN下载口 ZYNQ

    14PIN JTAG

    2个PL LED

    PL复位按键

    2个PL功能按键

    PL触摸按键

    有源蜂鸣器

    UART串口

    ATK Module

    CAN接口

    E2PROM

    RTC实时时钟

    音频编解码

    XADC接口

    RGB LCD接口

    摄像头接口

    千兆以太网接口

    HDMI接口

    40PIN扩展口

    PS PL

    ZYNQ芯片

    ZYNQ核心板 领航者底板

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    38

    领航者ZYNQ之FPGA 开发指南

    5. 2 个PS LED

    领航者底板板载2个PS LED灯(PS_LED0~PS_LED1),LED连接到了PS端的 IO 口上。

    6. 2 个PS 功能按键

    领航者底板板载2个机械式按键(PS_KEY0、PS_KEY1),按键都是直接连接在 PS 端的 IO 口上的,可以作为人机交互的输入信号。这 2个按键信号默认都是高电平的,当按键被按下之后,按键信号变为低

    电平。

    7. 1 个触摸按钮

    领航者底板板载1个电容触摸输入按键(TPAD),触摸方案采用AR101芯片,该芯片利用电容充放电

    原理,实现触摸按键检测的功能。当手指触摸TPAD 按键时,触摸芯片输出高电平,松开为低电平。

    8. USB 转串口

    领航者底板板载一个PS端的USB 转串口,之所以设计成USB 形式的串口,是出于现在电脑上串口正

    在消失,尤其是笔记本,几乎清一色的没有串口。所以板载了USB 串口可以方便大家进行 USB串口通信的

    试验。同时这个USB接口还可以给开发板提供电源, 但是其最大电流只有500mA, 但是在运行PS端的ARM

    处理器时它却不能够提供足够大的电流,所以还是建议大家使用专门的电源适配器来为开发板供电。

    9. RS232 接口(母头)

    领航者底板板载一个普通RS232 接口,通过一个标准的 DB9 母头和外部的串口连接。通过这个接口,领航者可以连接带有串口的电脑或者其他设备,实现串口通信的功能。

    10. RS485接口

    领航者底板板载一个RS485 接口,通过一个两PIN的端子和外部的485接口连接。通过这个接口,领

    航者可以连接带有RS485接口的开发板或者其他设备,实现 RS485通信的功能。 这里提醒大家, 两个RS485

    接口进行通信的时候,必须A 接A,B接B,否则可能通信不正常!

    11. RGB TFT-LCD接口

    领航者底板板载一个RGB LCD接口,可以连接各种分辨率的正点原子RGB LCD 屏,采用的是RGB888

    格式,可显示1677万色,色彩显示丰富。并且支持触摸的功能。

    12. XADC接口

    领航者底板板载一个XADC 接口(J1),用于测量外部输入的模拟电压,范围为 0~1V。ZYNQ内部的

    XADC模块既可以测量ZYNQ 芯片内部的温度和电压,也可以用来测量外部的模拟电压。

    13. OLED摄像头模块接口

    领航者底板板载一个OLED摄像头模块接口(P2)。如果是正点原子的摄像头模块,则刚好可以直接

    插上去。通过这个接口,可以分别完成OLED 显示或者摄像头显示实验。

    14. EEPROM (AT24C64)

    领航者底板板载一个I2C接口的EEPROM芯片,容量为 64Kbit,也就是8K字节。用于存储一些掉电

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    39

    领航者ZYNQ之FPGA 开发指南

    不能丢失的重要数据,比如系统设置的一些参数等。有了这个就可以方便的实现掉电数据保存。

    15. RTC实时时钟

    领航者底板板载一个RTC实时时钟芯片(U6),芯片型号为PCF8563。PCF8563 是PHILIPS 公司推出

    的一款工业级多功能时钟日历芯片,具有报警功能、定时器功能、时钟输出功能以及中断输出功能,能完

    成各种复杂的定时服务。

    16. 电池接口

    领航者底板板载一个RTC实时时钟的供电接口(BAT1),可以保证在开发板断电时,实时时钟仍然能

    够继续工作,这样的话,配置的日期与时间不会因开发板的断电而恢复到默认值。

    17. ATK MODULE接口

    领航者底板板载一个ALIENTEK 通用模块接口(U4),目前可以支持 ALIENTEK 开发的 GPS 模块、蓝牙模块、MPU6050 模块和全彩 RGB 灯模块等,直接插上对应的模块,就可以进行相关模块的开发。后

    续我们将开发更多兼容该接口的其他模块,实现更强大的扩展性能。

    18. BOOT模式选择开关

    领航者底板板载一个ZYNQ的 BOOT模式选择开关(BOOT_CFG),用于设置 PS端在上电后的启动

    源,包括 JTAG、NAND、QSPI FLASH和SD Card。

    19. 电源指示灯

    领航者底板板载1颗蓝色的 LED 灯(PWR),用于指示电源状态。在电源开启的时候电源指示灯会处

    于点亮的状态,否则为熄灭的状态。通过这个LED,可以判断开发板的上电情况。

    20. 耳机输出接口

    领航者底板板载1个音频输出接口(PHONE),该接口可以插入 3.5mm的耳机。当 WM8960播放音

    乐的时候,就可以通过在该接口插入耳机来欣赏音乐。

    21. 音频输入接口

    领航者底板板载1个音频输入接口(LINE_IN),该接口可以通过音频线来连接电脑或者手机的耳机接

    口。

    22. MIC(麦克风)

    领航者底板板载1个录音输入口(MIC,即麦克风),该麦克风直接连接到WM8960的录音输入通道

    上,可以实现录音的功能。

    23. 扬声器

    这是开发板自带的一个小喇叭(SPEAKER),安装在开发板的背面,可以用来播这放音乐。该喇叭由

    WM8960直接驱动。

    24. HDMI接口

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    40

    领航者ZYNQ之FPGA 开发指南

    领航者底板板载1个HDMI(High Definition Multimedia Interface,HDMI)接口,该接口可以连接到

    HDMI显示器上,从而显示出视频或者图片等。开发板没有板载HDMI的PHY 芯片,HDMI的PHY 编解

    码功能由ZYNQ PL逻辑来模拟实现。

    25. 14-Pin JTAG接口

    领航者底板板载1个14针标准 JTAG调试口(JTAG),该 JTAG 口与核心板的6-Pin JTAG接口在硬件

    上是连在一起的,可以直接和 FPGA 下载器(调试器)连接,用于下载程序或者对程序进行在线调试。

    26. 3.3V 电源输入输出

    领航者底板板载1组3.3V电源输入输出排针(23),用于给外部提供 3.3V的电源,也可以从外部接

    3.3V 的电源给板子供电。大家在做实验的时候可能经常会为没有3.3V 电源而苦恼不已,有了领航者 ZYNQ

    开发板,你就可以很方便的拥有一个简单的 3.3V 电源(最大电流不能超过 500mA)。

    27. 5V电源输入输出

    领航者底板板载1组5V电源输入输出排针(23),该排针用于给外部提供5V 的电源,也可以从外

    部接 5V的电源给板子供电。同样大家在实验的时候可能经常会为没有5V电源而苦恼不已,正点原子充分

    考虑到了大家的需求,有了这组 5V 排针,你就可以很方便的拥有一个简单的 5V 电源(USB 供电的时候,最大电流不能超过 500mA,外部供电的时候,最大可达 1000mA)。

    28. 电源开关

    领航者底板板载1个电源开关(K1)。该开关用于控制整个开发板的供电,如果通过开关切断电源,则整个开发板都将断电,电源指示灯(PWR)会随着此开关的状态而亮灭。

    29. DC6~16V电源输入

    领航者底板板载1个外部电源输入口(DC_IN),采用标准的直流电源插座。开发板板载了DC-DC 芯

    片(JW5060T),用于给开发板提供高效、稳定的5V电源。由于采用了DC-DC 芯片,所以开发板的供电

    范围十分宽,大家可以很方便的找到合适的电源(只要输出范围在 DC6~16V 的基本都可以)来给开发板供

    电。在耗电比较大的情况下,比如用到 4.3寸屏7寸屏网口高速AD-DA 的时候,建议大家使用外部电源

    供电,可以提供足够的电流给开发板使用。

    30. PL端千兆以太网接口(RJ45)

    领航者底板板载1个千兆的RJ45网口(PL_GE), 连接到了 PL端的IO 口上, PHY芯片型号是B50610,支持 10Mbps100Mbps1000Mbps的通信速率,板载的RJ45 插座可以连接网线,实现网络通信功能。

    31. PS端千兆以太网接口(RJ45)

    领航者底板板载1个千兆的 RJ45 网口(PS_GE),通过转接板连接到了核心板上的以太网 PHY芯片,支持 10Mbps100Mbps1000Mbps的通信速率,板载的RJ45 插座可以连接网线,实现网络通信功能。

    32. USB2.0 接口

    领航者开发板为PS端的USB模块配备了一个USB2.0 PHY芯片,并且根据主从模式的不同,外接了 4

    个HOST模式的接口和一个SLAVE模式的接口。 4个HOST模式的接口可分别用来连接不同的USB SLAVE

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    41

    领航者ZYNQ之FPGA 开发指南

    设备,可以用来连接鼠标、键盘等不同的设备,以满足各种不同的需求。一个 SLAVE模式的接口可以用来

    连接HOST 设备,以满足特定的应用需求。

    33. Micro SD 接口

    领航者底板板载1个标准Micro SD 接口(TF_CARD),该接口位于开发板的背面,采用 Micro SD接

    口,可以使用 SPISDIO驱动方式。有了这个接口,就可以满足海量数据存储的需求。

    34. CAN 接口

    领航者底板板载一个CAN总线通信接口,CAN 接口通过 2个端口和外部CAN总线连接,即CANH

    和 CANL。这里提醒大家:两个 CAN 接口通信的时候,CANH必须接CANH,CANL必须接CANL,否则

    可能通信不正常!

    35. 40PIN 扩展口

    领航者底板板载一个40PIN 的扩展口, 位于开发板的左下角,扩展口规格是220 Pin,采用标准2.54MM

    排针间距,其中包括 36个IO口,1个+3.3V,1个+5V,2 个GND。它可以用来连接不同的功能模块,例

    如,正点原子开发的高速ADDA模块和双目摄像头模块等。

    核心板外设简介:

    1. ZYNQ主控芯片

    ZYNQ-7020核心板主控芯片为XC7Z020CLG400-2,85K LC(逻辑单元),4.9Mbit BRAM;

    ZYNQ-7010核心板主控芯片为XC7Z010CLG400-1,28K LC(逻辑单元),2.1Mbit BRAM。

    Zynq处理器系统里包含两个 Cortex-A9处理器,除此之外,还有一组相关的处理资源,形成了一个应

    用处理器单元(Application Processing Unit,APU)。另外处理器系统里还有扩展外设接口、cache存储器、存储器接口、互联接口和时钟发生电路等。

    2. DDR3 SDRAM

    ZYNQ-7020核心板板载两片4Gbit DDR3内存,芯片型号为NT5CB256M16EP-DI,总容量为8Gbit (1GB);

    ZYNQ-7010核心板板载两片2Gbit DDR3内存,芯片型号为NT5CB128M16IP-DI,总容量为4Gbit (512MB);

    板载的DDR3芯片可以轻松应对各种大内存、高带宽场景需求,比如摄像头图像数据存储等。此外,DDR3 内存也作为PS 端处理器的运行内存。

    3. 1 个6-Pin下载接口

    核心板的6-PIN下载接口与底板的 14-Pin JTAG接口是一体的,可以在单独使用核心板时做调试和下载

    使用。

    4. 1 个PL LED

    它连接到了PL 端的用户 IO 上,可由用户编写Verilog 代码来控制其亮灭。

    5. 1 个PS LED

    它连接到了PS端的GPIO上,可由用户使用C 代码编程来控制其亮灭。

    6. PL端 50Mhz晶振

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    42

    领航者ZYNQ之FPGA 开发指南

    这是开发板上用于为ZYNQ PL 端提供时钟的晶振(XTAL)。该晶振输出的时钟是PL端最原始的时

    钟,其它外设需要的各种频率的时钟都在此基础上进行倍频或分频。

    7. PS 端33.333Mhz晶振

    这是开发板上用于为ZYNQ PL 端提供时钟的晶振(XTAL) 。 该晶振输出的时钟是 PS端最原始的时钟,PS 端外设所需要的各种频率的时钟都在此基础上进行倍频或分频。

    8. 电源指示灯(PW)

    这是核心板板载的一颗蓝色的LED灯(PWR),用于指示电源状态。在电源开启的时候电源指示灯会

    处于点亮的状态,否则为熄灭的状态。通过这个 LED,可以判断开发板的上电情况。需要说明的是,ZYNQ

    核心板没有独立的供电接口,需要通过BTB转接板连接底板,由底板上的转接板进行供电。

    9. PL 配置状态指示灯(DONE LED)

    这是核心板板载的一颗PL配置状态指示灯,连接到了 PL 端的配置完成(DONE)信号,在PL端配置

    (下载程序)完成之后,该 LED 灯会被点亮。

    10. PS千兆以太网 PHY 芯片

    这是核心板板载的一颗PS端千兆以太网PHY (物理)芯片,型号为 RTL8211E-VL,实现了 101001000M

    以太网物理层功能。该 PHY 芯片的引脚连接到了底板上的 RJ45 接口上,能够满足高带宽通信的需求。

    11. PS端复位按键(PS_RST)

    ZYNQ PS 端的复位按键,它连接到了 PS端的复位逻辑,按下后,PS 端将重新从上电后的状态开始运

    行。

    12. QSPI Flash(W25Q256FVEI)

    这是开发板的Flash芯片,存储容量为256Mbit(32M字节),用于存储ZYNQ 芯片的镜像数据,包括

    PS 端的程序数据和PL端的配置镜像。

    13. eMMC

    eMMC是非易失性NAND存储器,俗称电子硬盘,领航者核心板的eMMC芯片型号为KLM8G1GETF,存储容量为 8GB,能够满足PS端的大容量非易失性存储需求。

    软件资源说明

    上面我们简单介绍了领航者 ZYNQ 开发板的硬件资源。接下来,我们将向大家简要介绍一下领航者

    ZYNQ开发板的软件资源。

    领航者ZYNQ 开发板PL端提供的标准例程多达21个,领航者 ZYNQ 开发板PS 端提供的标准例程多

    达 35个。我们提供的这些例程,全部都是原创自主开发,注释非常详细、代码风格统一、难易程度由浅入

    深,非常适合初学者入门。而其他家开发板的例程,要么注释比较少,要么工程文件管理不统一,对初学

    者来说可能很难入门。

    领航者ZYNQ 开发板PL端的例程列表如下表所示:

    表 2.2.1 领航者ZYNQ 开发板 PL端的例程

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    43

    领航者ZYNQ之FPGA 开发指南

    编号 实验名称 编号 实验名称

    1 LED闪烁实验 12 RGB LCD字符和图片显示实验

    2 按键控制LED灯实验 13 HDMI彩条显示实验

    3 按键控制蜂鸣器实验 14 HDMI方块移动实验

    4 触摸按键控制LED灯实验 15 EEPROM读写实验

    5 呼吸灯实验 16 RTC实时时钟LCD显示实验

    6 IP核之MMCMPLL实验 17 频率计实验

    7 IP核之RAM实验 18 高速ADDA实验

    8 IP核之FIFO实验 19 MDIO接口读写测试实验

    9 UART串口通信实验 20 以太网ARP实验

    10 RS485串口通信实验 21 以太网UDP测试实验

    11 RGB TFT-LCD彩条显示实验

    领航者 ZYNQ 开发板PS端的例程列表如下表所示:

    表 2.2.2 领航者 ZYNQ 开发板 PS 端的例程

    编号 实验名称 编号 实验名称

    1 Hello World实验 19 SD卡读BMP图片LCD显示实验

    2 MIO控制LED闪烁实验 20 SD卡读BMP图片HDMI显示实验

    3 EMIO按键控制LED实验 21 OV7725摄像头LCD显示实验

    4 MIO按键中断控制LED实验 22 OV7725摄像头HDMI显示实验

    5 AXI GPIO按键控制LED实验 23 OV5640摄像头LCD显示实验

    6 自定义IP核-控制呼吸灯实验 24 OV5640摄像头HDMI显示实验

    7 固化程序(PS、PS+PL)实验 25 OV7725摄像头Sobel边沿检测实验

    8 UART串口中断实验 26 OV7725照相机实验

    9 定时器中断实验 27 RGB LCD触摸画板实验

    10 PS XADC接口实验 28 双目OV5640摄像头LCD显示实验

    11 QSPI Flash读写测试实验 29 双目OV5640摄像头HDMI显示实验

    12 SD卡读写TXT文本实验 30 基于lwip的echo server实验

    13 双核AMP实验 31 基于lwip的TCP服务器性能测试实验

    14 基于BRAM的PL和PS的数据交互 32 基于lwip的tftp server实验

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    44

    领航者ZYNQ之FPGA 开发指南

    15 AXI4接口之DDR读写实验 33 基于TCP的远程更新QSPI实验

    16 AXI DMA环路测试 34 基于UDP的远程更新QSPI实验

    17 IP核封装与接口定义 35 音频环回实验

    18 PS通过VDMA驱动LCD显示实验

    从上表可以看出,领航者ZYNQ开发板的例程是非常丰富的,并且扩展了很多有价值的例程。各个例

    程的难度是循序渐进的,首先从最基础的 LED 灯闪烁实验开始,然后一步步深入,从简单到复杂,有利于

    大家的学习和掌握,所以,领航者ZYNQ开发板是非常适合初学者的。当然,对于想深入学习ZYNQ开发

    的朋友,领航者ZYNQ 开发板也是一个绝佳的选择。

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    45

    领航者ZYNQ之FPGA 开发指南

    硬件资源详解

    本章,我们将向大家详细介绍领航者ZYNQ 开发板各部分的硬件原理图,让大家对领航者ZYNQ开发

    板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。

    本章包括以下几个部分:

    3.1 领航者ZYNQ 的IO分配

    3.2 核心板外设详解

    3.3 底板外设详解

    3.4 开发板使用注意事项

    3.5 ZYNQ的学习方法

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    46

    领航者ZYNQ之FPGA 开发指南

    领航者 ZYNQ 的IO分配

    ZYNQ-7020核心板的主控芯片为XC7Z020CLG400-2,ZYNQ-7010核心板的主控芯片为

    XC7Z010CLG400-1。XC7Z020芯片比XC7Z010芯片多出一个 BANK,即 BANK13。为了使ZYNQ-7020

    核心板和ZYNQ-7010核心板的引脚完全兼容,ZYNQ-7020 核心板的BANK 13我们没有连接到任何硬件外

    设,即没有引出至BTB 转接板。

    XC7Z020芯片有6个用户IO BANK(比XC7Z010多一个 BANK)和最大253个用户 IO,了解器件

    的 IO分配方式,有助于我们在硬件设计时根据器件的一些约束,对设计进行合理的 IO分配,减少硬件出

    错的可能性。ZYNQ的IO口分成了PL和PS 两部分,我们将分别介绍 PL和 PS 两部分的 IO分配。

    PL端的IO分配

    ZYNQ的PL 侧和传统FPGA 一样,可以灵活地分配到不同的IO 口上。在XC7Z020中,PL端的IO被

    分成了 3组,每一组称为一个 IO Bank,分别是BANK13、BANK34、BANK35。同一个Bank 中的所有IO

    供电相同,而各个Bank的IO供电可以不同,领航者开发板都将它们连接到了3.3V的电源上。PL 端的 3

    个 IO BANK 分别如图 3.1.1、图 3.1.2和图 3.1.3所示:

    图 3.1.1 PL 端的BANK13

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    47

    领航者ZYNQ之FPGA 开发指南

    图 3.1.2 PL 端的BANK34

    图 3.1.3 PL 端的BANK35

    需要说明的是, XC7Z020芯片比XC7Z010芯片多出一个BANK13, 为了使这两颗芯片的引脚完全兼容,XC7Z020芯片的BANK13没有连接到任何硬件外设。

    为了让大家更快更好的使用我们的领航者ZYNQ 开发板,这里特地将ZYNQ PL 端的 IO 引脚分配做了

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    48

    领航者ZYNQ之FPGA 开发指南

    一个总表,以便大家查阅。领航者ZYNQ PL端 IO引脚分配总表如下表所示:

    表 3.1.1 领航者ZYNQ PL端 IO引脚分配总表

    信号名 方向 管脚 端口说明

    系统时钟(50Mhz)

    sys_clk input U18 系统时钟,频率:50Mhz

    PL复位按键

    sys_rst_n input J15 PL复位复位,低电平有效

    2个PL功能按键

    key[0] input L20 PL按键KEY0

    key[1] input J20 PL按键KEY1

    3个PL_LED灯

    led[0] output J18 (底板)PL_LED0

    led[1] output H18 (底板)PL_LED1

    led output J16 (核心板)PL_LED

    触摸按键

    touch_key input L19 触摸按键

    蜂鸣器

    beep output G18 蜂鸣器

    RS232RS485串口

    uart_rxd input J14 串口接收端

    uart_txd output K18 串口发送端

    ATK MODULE

    uart_rx input P19 RXD端口

    uart_tx output N18 TXD端口

    gbc_key input J20 KEY端口

    gbc_led output H20 LED端口

    IIC总线(EEPROMRTC实时时钟

    音频配置)

    iic_scl output M17 IIC时钟信号线

    iic_sda inout M18 IIC双向数据线

    CAN总线

    can_rx input R19 CAN总线接收

    can_tx output T19 CAN总线发送

    RGB TFT-LCD接口

    lcd_hs output U17 RGB LCD行同步

    lcd_vs output P20 RGB LCD场同步

    lcd_de output N20 RGB LCD数据使能

    lcd_bl output Y16 RGB LCD背光控制

    lcd_clk output T16 RGB LCD像素时钟

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    49

    领航者ZYNQ之FPGA 开发指南

    lcd_rgb[0] output Y18 RGB LCD蓝色(最低位)

    lcd_rgb[1] output Y19 RGB LCD蓝色

    lcd_rgb[2] output W20 RGB LCD蓝色

    lcd_rgb[3] output V20 RGB LCD蓝色

    lcd_rgb[4] output U14 RGB LCD蓝色

    lcd_rgb[5] output U15 RGB LCD蓝色

    lcd_rgb[6] output T20 RGB LCD蓝色

    lcd_rgb[7] output U20 RGB LCD蓝色(最高位)

    lcd_rgb[8] output W14 RGB LCD绿色(最低位)

    lcd_rgb[9] output Y14 RGB LCD绿色

    lcd_rgb[10] output N15 RGB LCD绿色

    lcd_rgb[11] output N16 RGB LCD绿色

    lcd_rgb[12] output V16 RGB LCD绿色

    lcd_rgb[13] output W16 RGB LCD绿色

    lcd_rgb[14] output W18 RGB LCD绿色

    lcd_rgb[15] output W19 RGB LCD绿色(最高位)

    lcd_rgb[16] output T10 RGB LCD红色(最低位)

    lcd_rgb[17] output T11 RGB LCD红色

    lcd_rgb[18] output P14 RGB LCD红色

    lcd_rgb[19] output R14 RGB LCD红色

    lcd_rgb[20] output V13 RGB LCD红色

    lcd_rgb[21] output U13 RGB LCD红色

    lcd_rgb[22] output G15 RGB LCD红色

    lcd_rgb[23] output H15 RGB LCD红色(最高位)

    lcd_scl output V17 触摸屏IIC接口的时钟

    lcd_sda inout M19 触摸屏IIC接口的数据

    ct_rst output Y17 触摸屏的复位

    ct_int input V18 触摸屏的中断

    HDMI接口

    tmds_data_p[0] output K19 HDMI的DATA0通道的 P端

    tmds_data_p[1] output M14 HDMI的DATA1通道的 P端

    tmds_data_p[2] output L16 HDMI的DATA2通道的 P端

    tmds_clk_p output L14 HDMI的CLK通道的 P端

    tmds_oen output G17 HDMI的输出使能信号

    tmds_scl output V17 HDMI的SCL信号

    tmds_sda output M19 HDMI的SDA信号

    tmds_cec output H16 HDMI的消费类电子控制信号

    tmds_hpd input H17 HDMI的热插拔信号

    摄像头接口(OV5640OV7725)

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    50

    领航者ZYNQ之FPGA 开发指南

    cam_sgm_ctrlcam_pwdn output R17

    OV7725时钟选择信号(0:使用引

    脚XCLK提供的时钟 1:使用摄像

    头自带的晶振提供时钟)

    OV5640电源休眠控制信号

    cam_rst_n output P15 cmos 复位信号,低电平有效

    cam_vsync input R18 cmos 场同步信号

    cam_href input T17 cmos 行同步信号

    cam_pclk input T15 cmos 数据像素时钟

    cam_data[0] input P16 cmos 数据

    cam_data[1] input V15 cmos 数据

    cam_data[2] input W15 cmos 数据

    cam_data[3] input T12 cmos 数据

    cam_data[4] input U12 cmos 数据

    cam_data[5] input V12 cmos 数据

    cam_data[6] input W13 cmos 数据

    cam_data[7] input T14 cmos 数据

    cam_scl output P18 cmos SCCB时钟信号线

    cam_sda inout N17 cmos SCCB双向数据线

    音频(WM8960)

    aud_bclk input B19 WM8960的位时钟

    aud_daclrc input B20 WM8960的对齐时钟

    aud_adclrc input C20 WM8960的对齐时钟

    aud_adcdat input A20 WM8960的ADC数据线

    aud_dacdat output K16 WM8960的DAC数据线

    aud_mclk output U19 WM8960的主时钟

    PL端以太网RGMII接口

    eth_rst_n output G14

    以太网芯片复位信号,低电平有

    效

    eth_rx_clk input K17 RGMII接收数据时钟

    eth_rx_ctl input D19 RGMII输入数据有效信号

    eth_rxd[0] input F19 RGMII输入数据RXD[0]

    eth_rxd[1] input F20 RGMII输入数据RXD[1]

    eth_rxd[2] input E17 RGMII输入数据RXD[2]

    eth_rxd[3] input D18 RGMII输入数据RXD[3]

    eth_tx_clk input G19 RGMII发送数据时钟

    eth_tx_ctl output E19 RGMII输出数据有效信号

    eth_tx_data[0] output G20 RGMII输出数据TXD[0]

    eth_tx_data[1] output F16 RGMII输出数据TXD[1]

    eth_tx_data[2] output F17 RGMII输出数据TXD[2]

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    51

    领航者ZYNQ之FPGA 开发指南

    eth_tx_data[3] output E18 RGMII输出数据TXD[3]

    eth_mdc output K14 以太网管理接口的时钟

    eth_mdio inout D20 以太网管理接口的双向数据

    在上表中,表格中列出来了除扩展口外,开发板上所有的 PL IO 引脚,扩展口上的引脚 IO可以参考开

    发板的原理图或者直接查看开发板上的丝印标注。

    另外在资料盘(A盘)→3_正点原子领航者ZYNQ开发板原理图文件夹下,有提供 Excel格式的管脚

    分配表格,表格里共两个工作表,一个是“PL IO 引脚列表”,另一个是“PS IO 引脚列表”,方便大家查

    看。

    PS端的 IO分配

    在ZYNQ PS端同样也包含了 3个IO BANK,如下图所示:

    图 3.1.4 PS 端的 BANK500

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    52

    领航者ZYNQ之FPGA 开发指南

    图 3.1.5 PS 端的 BANK501

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    53

    领航者ZYNQ之FPGA 开发指南

    图 3.1.6 PS 端的 BANK502

    ZYNQ不同的IO BANK可以采用不同的供电电压, IO BANK的引脚电平和供电电压的电平保持一致,我们根据PS端连接不同的外设来选择不同的供电电压。 BANK500、 BANK501和BANK502分别采用3.3V、1.8V 和1.5V 供电。

    与PL 端 IO BANK不同的是,PS端的IO连接是是相对固定的,用户不能够像PL 引脚那样,将PS端

    的 IO随意分配到某个外设。PS端外设的IO口与 MIO(多路复用 IO)之间,具有固定关系的映射,某个

    外设的 IO口可能会映射到不同的 MIO 上,某个MIO 也有可能会具有多个外设的IO 口映射到其上面。两

    者之间的映射如下图所示:

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    54

    领航者ZYNQ之FPGA 开发指南

    图 3.1.7 PS 端外设和MIO之间的映射

    领航者ZYNQ 开发板所使用到的所有外设与 MIO之间所选择的映射关系如下表所示:

    表 3.1.2 领航者ZYNQ PS端 IO引脚分配总表

    信号名 管脚 端口说明

    2个PS功能按键

    ps_key[0] MIO12 PS按键KEY0

    ps_key[1] MIO11 PS按键KEY1

    3个PS_LED灯

    ps_led[0](底板) MIO7 PS_LED0

    ps_led[1](底板) MIO8 PS_LED1

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    55

    领航者ZYNQ之FPGA 开发指南

    ps_led(核心板) MIO0 PS_LED

    QSPI FLASH

    QSPI_CS MIO1 QSPI FLASH的片选,低电平有效

    QSPI_SCK MIO6 QSPI FLASH的时钟

    QSPI_D0 MIO2 QSPI FLASH的数据位0

    QSPI_D1 MIO3 QSPI FLASH的数据位1

    QSPI_D2 MIO4 QSPI FLASH的数据位2

    QSPI_D3 MIO5 QSPI FLASH的数据位3

    PS UART

    PS_UART_RXD MIO14 PS UART的接收

    PS_UART_TXD MIO15 PS UART的发送

    PS 以太网

    ETH_TXCK MIO16 PS以太网RGMII接口的TX_CLK

    ETH_TXD0 MIO17 PS以太网RGMII接口的TX_D0

    ETH_TXD1 MIO18 PS以太网RGMII接口的TX_D1

    ETH_TXD2 MIO19 PS以太网RGMII接口的TX_D2

    ETH_TXD3 MIO20 PS以太网RGMII接口的TX_D3

    ETH_TXCTL MIO21 PS以太网RGMII接口的TX_CTL

    ETH_RXCK MIO22 PS以太网RGMII接口的RX_CLK

    ETH_RXD0 MIO23 PS以太网RGMII接口的RX_D0

    ETH_RXD1 MIO24 PS以太网RGMII接口的RX_D1

    ETH_RXD2 MIO25 PS以太网RGMII接口的RX_D2

    ETH_RXD3 MIO26 PS以太网RGMII接口的RX_D3

    ETH_RXCTL MIO27 PS以太网RGMII接口的RX_CTL

    ETH_MDC MIO52 PS以太网MDIO接口的时钟

    ETH_MDIO MIO53 PS以太网MDIO接口的数据

    PS USB接口

    OTG_DIR MIO29 USB总线方向控制

    OTG_STP MIO30 数据传输的结束信号

    OTG_NXT MIO31 当前数据接收完成指示信号

    OTG_CLK MIO36 PHY的时钟输出

    OTG_DATA7 MIO39 双向数据总线位7

    OTG_DATA6 MIO38 双向数据总线位6

    OTG_DATA5 MIO37 双向数据总线位5

    OTG_DATA4 MIO28 双向数据总线位4

    OTG_DATA3 MIO35 双向数据总线位3

    OTG_DATA2 MIO34 双向数据总线位2

    OTG_DATA1 MIO33 双向数据总线位1

    OTG_DATA0 MIO32 双向数据总线位0

    SD卡

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    56

    领航者ZYNQ之FPGA 开发指南

    SD_CLK MIO40 SD卡的时钟信号

    SD_CMD MIO41 SD卡的命令信号

    SD_D0 MIO42 SD卡的DATA0

    SD_D1 MIO43 SD卡的DATA1

    SD_D2 MIO44 SD卡的DATA2

    SD_D3 MIO45 SD卡的DATA3

    eMMC存储器

    eMMC_CCLK MIO48 eMMC的时钟信号

    eMMC_CMD MIO47 eMMC的命令信号

    eMMC_D0 MIO46 eMMC的DATA0

    eMMC_D1 MIO49 eMMC的DATA1

    eMMC_D2 MIO50 eMMC的DATA2

    eMMC_D3 MIO51 eMMC的DATA3

    开发板底板原理图详解

    底板电源

    底板电源拓扑结构如下图所示:

    图 3.2.1 底板电源拓扑

    整个板子的电源来自电源适配器的 12V 供电电压,经过DC-DC 芯片(型号为JW50690T_6)之后,转

    变为系统+5V 电压,再经过电源开关后,给系统供电,核心板的电源就来自系统+5V 电压。PS端USB 串口

    的+5V也可以用来给系统供电,但是需要特别注意,由于USB 接口的驱动能力有限,所以不能驱动供电电

    流需求大的器件如LCD, 这种情况下,请改用电源适配器供电。系统+5V电压除了直接驱动某些外设之外,还用于电压转换,LDO(线性稳压器)芯片AMS1117-3.3和AMS1117-1.8用于将系统+5V 电压分别转变为

    +3.3V和+1.8V,然后给各个外设供电。

    使用+5V 电压供电的底板外设包括ATK MODULE、CAN、RGB LCD 接口、AUDIO、HDMI接口、核

    心板、扩展口、USB HUB。使用+3.3V 电压供电的底板外设包括 SP3232、EEPROM、RTC、TOUCH

    原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com

    57

    领航者ZYNQ之FPGA 开发指南

    KEY(AR101)、BEEP、摄像 ......

新起点FPGA开发指南_V1.2(877页)-原创力文档

新起点 FPGA 开发指南 ALIENTEK NEW START 开发板教程 FPGA 开发指南V1.2 −ALIENTEK 新起点NewStart 开发板教程 I 新起点 FPGA 开发指南 ALIENTEK NEW START 开发板教程 广州市星翼电子科技有限公司 淘宝店铺 1 : 淘宝店铺 2 : 技术支持论坛 (开源电子网) : 官方网站 : 最新资料下载链接 :/posts/list/13912.htm E-mail: 389063473@ QQ: 389063473 咨询电话 :020传真号码 :020团队:正点原子团队 正点原子,做最全面 、最优秀的嵌入式开发平台软硬件供应商。 友 情 提 示 如果您想及时免费获取 “正点原子”最新资料,敬请关注正点原子 微信公众平台 ,我们将及时给您发布最新消息和重要资料。 关注方法: (1)微信 “扫一扫”,扫描右侧二维码,添加关注 (2)微信添加朋友公众号输入 “正点原子”关注 (3)微信添加朋友输入 “alientek_stm32 ”关注 II 新起点 FPGA 开发指南 ALIENTEK NEW START 开发板教程 内容简介1 前 言2 第一篇 硬件篇 3 第一章 FPGA简介4 1.1 FPGA的由来与特点5 1.2 FPGA的基本结构8 1.3 FPGA的设计流程12 第二章 实验平台简介16 2.1 ALIENTEK新起点EP4CE10开发板资源初探17 2.2 ALIENTEK新起点FPGA开发板资源说明19 2.2.1 硬件资源说明19 2.2.2 软件资源说明24 2.2.3 新起点IO引脚分配25 第三章 硬件资源详解31 3.1 开发板原理图详解32 3.1.1 FPGA32 3.1.2 时钟输入34 3.1.3 JTAG 接口35 3.1.4 时钟/复位/按键电路35 3.1.5 LED36 3.1.6 有源蜂鸣器36 III 新起点 FPGA 开发指南 ALIENTEK NEW START 开发板教程 3.1.7 电容触摸按键37 3.1.8 数码管37 3.1.9 VGA 接口38 3.1.10 RGB LCD 模块接口39 3.1.11 红外接收头40 3.1.12 单总线接口41 3.1.13 EEPROM42 3.1.14 实时时钟42

FPGA案例开发手册--基于全志T3+Logos FPGA核心板

前 言

本文档主要提供评估板FPGA端案例测试方法,适用的开发环境为Windows 7 64bit和Windows 10 64bit。

本文案例基于创龙科技的全志T3+Logos FPGA核心板,它是一款基于全志科技T3四核ARM Cortex-A7处理器 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核全国产工业核心板,ARM Cortex-A7处理单元主频高达1.2GHz。核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。

核心板内部T3与Logos通过SPI、CSI、I2C通信总线连接,并通过工业级B2B连接器引出LVDS DISPLAY、RGB DISPLAY、MIPI DSI、TVOUT、TVIN、CSI、GMAC、EMA

上一篇: 凌波网络考试系统
下一篇: 70迈行车记录仪刷机