锁相环技术原理 FPGA实现
· 杜勇编著 ·
着眼工程设计,精解设计实例 分解实现步骤,注重实现细节 完整仿真测试,详细性能分析 提供完整代码,迅速提升实力
本书全面阐述了典型锁相环技术的工作原理及FPGA设计方法,结合SystemView仿真实例,详细分析了锁 相环技术的基本概念。按照从理论到实践,再从实践到理论的思路,以Altera公司的FPGA器件为开发平台,采 用MATLAB及Verilog HDL语言为开发工具,详细阐述了锁相环技术的FPGA实现原理及仿真测试过程,逐步深 入地讲解锁相环技术在工程应用中的技术细节。本书思路清晰、语言流畅、分析透彻,在简明阐述设计原理的 基础上,追求对工程实践的指导性,力求使读者在较短的时间内掌握锁相环技术的FPGA设计知识和技能。
本书的配套网络光盘收录了完整的SystemView 、MATLAB及Verilog HDL实例工程代码,有利于技术人 员参考学习,读者可登录华信教育资源网 (www.hxedu.com.cn) 免费注册后下载。
本书适合从事数字通信和数字信号处理领域的设计工程师、科研人员,以及相关专业的研究生、高年级 本科生使用。
未经许可,不得以任何方式复 制或抄袭本书之部分或全部内容。
版权所有,侵权必究。
图书在版编目 (CIP) 数据
锁相环技术原理及FPGA 实现/杜勇编著.—北京:电子工业出版社,2016.6
ISBN 978-7-121-28738-1
I.① 锁… Ⅱ . ①杜 … Ⅲ . ①锁相环一研究 IV.①TN911.8
中国版本图书馆CIP 数据核字(2016)第095248号
责任编辑:田宏峰
印 刷:北京京师印务有限公司
装 订:北京京师印务有限公司
出版发行:电子工业出版社
北京市海淀区万寿路173信箱 邮编100036
开 本:787×10921/16 印张:18.25 字数:465千字
版 次:2016年6月第1版
印 次:2016年6月第1次印刷
为什么要写这本书
1965年,英特尔联合创始人戈登 ·摩尔 (Gordon Moore) 预测,计算机芯片的处理能 力每两年就会翻一番。尽管已经过去50多年,摩尔定律仍然有效。半导体行业的发展速度, 以及摩尔定律的精准性预测一度连摩尔本人都感到无比惊奇!
2015年6月1日,英特尔宣布将以每股54美元的价格收购Altera,以此计算,此交易 总价将达到167亿美元,创造了英特尔并购历史上金额最大的纪录。 一时间,传闻四起, 业内专家和媒体开始讨论,FPGA 计算机是否将成为可能?
无论你是否愿意,只要从事的是与电子及信息处理相关的行业,FPGA 的地位已显得越 来越重要,它已成为电子行业的基本设计平台之一!
无论多么高大上的技术,工程师要能够熟练应用到自己的工程项目中,都必须深入了 解每一个技术实现细节。所谓“九层之台,起于垒土;合抱之木,生于毫末”。对于繁杂的 技术实现方法,“各个击破”是有效学习应用的不二法门。
自作者于4年前开始陆续出版数字通信技术的FPGA 实现相关著作以来,通过邮件或 博客的方式收到了广大读者的很多反馈意见。一些读者直接通过邮件告知书中的内容对工 作中提供的直接或间接的帮助;一些读者提出了很多中肯的、有建设性的意见和建议;更 多的读者通过邮件或博客交流书中的相关设计问题。归纳起来,不少读者的问题集中在数 字锁相环技术的设计及实现方面。在前几本著作中,限于书中内容编排,对通信系统中最 困难的锁相环技术阐述得还不够系统全面。目前市场上讲解锁相环技术的图书,主要集中 在讲解锁相环的基本工作原理,或介绍一些专门的锁相环集成芯片,因此,将锁相环的工 作原理与FPGA 实现结合起来讨论,显得十分必要。
作者在写作本书的过程中,兼顾锁相环技术的理论,以及工程设计过程的完整性,重 点突出 FPGA 设计方法、结构、实现细节,以及仿真测试方法。在讲解理论知识的时候, 结合SystemView 、MATLAB软件仿真实例,重点从工程应用的角度进行介绍,主要介绍工 程设计时必须掌握和理解的知识点,便于读者尽快地找到理论与工程实现之间的结合点。 在讲解实例的 FPGA 实现时,不仅对所有实例给出了完整的程序代码,并且从思路和结构 上进行了详细的分析和说明。根据作者的理解,针对一些似是而非的概念,结合工程实例 的仿真测试加以阐述,希望能对读者提供更多有用的参考。相信读者按照书中讲解的步骤 完成一个个工程实例时,会逐步感觉到理论与工程实现之间完美结合的畅快。随着读者掌 握的工程实现技能的提高,对锁相环理论知识的理解也必将越来越深刻,当重新阅读以前 学过的原理时,头脑里就更容易构建起理论知识与工程实践之间的桥梁。
本书的内容安排
第1章首先介绍了FPGA 的基本知识,以及A ltera公司的主要器件。本章在介绍了FPGA 的发展历程、结构及工作原理等基本知识后,对本书所用到的设计语言及工具软件进行了 简要介绍,主要包括Verilog HDL 语言、Quartus Ⅱ 、MATLAB和 SystemView软件。所谓“工 欲善其事,必先利其器”。之所以说是简要介绍,因为这些开发工具本身的功能十分强大, 每一种工具都有种类繁多的专门著述进行阐述。随着工程师设计经验的积累,设计水平的 提高,越能更全面地掌握设计工具的特点,从而更好地发挥设计工具的性能,以最小的代 价设计出理想的产品。好比一把宝剑,只有握在高手的手中才能发挥出最大的威力。
第2章介绍了FPGA 数字信号处理基础知识。数字信号在FPGA 等硬件系统中实现时, 因受寄存器长度的限制,不可避免地会产生有效字长效应。设计工程师必须了解字长效应 对数字系统可能带来的影响,并在实际设计中通过仿真来确定最终的量化位数、寄存器长 度等内容。本章在详细分析了字长效应在 FPGA 设计中的影响后,对几种常用的运算模块 IP 核进行介绍,讨论了各IP 核控制参数的设置方法。IP 核在FPGA 设计中的应用十分普遍, 尤其是在数字滤波器等信号处理领域,采用设计工具提供的IP 核进行设计,不仅可以提高 设计效率,而且可以保证设计的性能。
第3章从锁相环的组成讲起,深入细致地探讨锁相环关注的信号特性,全面阐述VCO 和乘法鉴相器的工作方式。随后借用最简单的反馈电路等基础知识,逐步揭开锁相环跟踪 信号相位的神秘面纱。最后通过SystemView 软件工具,详细仿真分析了一阶锁相环的工作 过程,全方位地了解锁相环的工作机理。
第4章讨论了一阶锁相环的FPGA 实现方法。根据作者的学习经验,这个阶段最期望 的一定不是再去理解什么原理公式,学习什么方法思路。好比初次接触到羽毛球时,在网 上看了一段中规中矩的教学视频,又刚好买回一支炫丽的球拍,走进球场,实在没有心情 再听老师讲什么挥拍动作和击球技巧,只想痛痛快快地上球场打上几拍了。这一章,我们 将完成一个完整的一阶锁相环电路的FPGA 设计及仿真测试过程。
第5章又回到理论知识上来。学习的过程通常是学习(理论)一实践(工程)一学习 (理论)一实践(工程)的循环反复过程,每一次循环都会带来一次提高。前几章,我们主 要从环路基本概念的角度,对环路进行了分析和仿真,从而初步建立起对锁相环路工作机 理的认识。要深入研究锁相环技术,必须建立环路的系统模型,而后采用数学方法对模型 进行精确的分析。这一章我们从最基本的线性时不变系统知识开始,逐步建立起锁相环路 的数学模型,为后续的分析打下坚实的基础。在建立模型的过程中,我们会发现,所有的 知识,所有的公式其实都是在大学的一些基础课程中学习过的。
第6章深入讨论锁相环中最关键的组成电路——环路滤波器。我们从最简单的环路滤 波器——RC 低通滤波器开始,逐步理解环路滤波器对锁相环路性能的决定性作用,并引出 本书所研究的重点——由有源积分滤波器组成的理想二阶环路。为了直观说明环路滤波器 对锁相环路性能的影响,以及锁相环路参数的设计方法,我们再次采用SystemView搭建了 锁相环路模型,并通过翔实的仿真数据来说明一些看似深奥的理论知识。
第7章开始讨论工程上应用最多的理想二阶环路的FPGA 实现。前两章讲了一大堆枯 燥的锁相环原理,本质是说理想二阶环具有相当优异的性能。我们在第4章已经对一阶锁相环的FPGA实现进行了详细的讨论,有了前面章节的基础,就可以开始设计二阶环的FPGA 电路了,并且要通过FPGA 设计后的仿真来验证理论的正确性。二阶锁相环路相比一阶环 路来讲,仅仅是多了一个环路滤波器。正是这个环路滤波器,尤其是理想环路滤波器,极 大地改善了锁相环路的性能。当我们深刻理解了环路的工作原理,并动手设计出传说中的 理想二阶锁相环电路时,会发现整个设计过程原来如此!
第8章再次回过头来,静心研究前面设计过程中还没有解决的一些问题。经过第7章 的学习,我们已经可以完成一个完整的理想二阶锁相环路的设计。但在设计过程中,仍有 一些参数的取值没有明确的依据,例如环路的固有振荡频率wn该如何取值?环路的捕获带 宽与捕获时间如何设计?当环路中存在噪声时(前面章节的设计都还没有涉及这个问题, 但噪声又是电子系统中无法避免的),又该如何设计并计算环路的抗干扰性能呢?因此,在 完成数字二阶环的 FPGA 初步设计之后,我们需要再回过头来更深入分析一下锁相环路性 能,最终找到锁相环路参数的设计依据。
第9章是一个完整的应用锁相环实现信号解调的工程应用实例。经过前面章节的讨论, 我们对锁相环的理论知识、仿真、设计及FPGA 实现都有了比较充分的认识。在无线通信 技术中,在接收端,应用锁相环获取相干载波是最为广泛的应用之一。本章以锁相环解调 PSK 调制信号为例,应用前面章节讨论得出的结论,完整地给出锁相环的参数设计、仿真 测试,以及FPGA 实现过程。
关于 FPGA 开发环境的说明
众所周知,目前两大厂商Xilinx和 Altera的产品占据全球90%以上的FPGA 市场。可 以说,在一定程度上正是由于两家FPGA 公司的相互竞争态势,有力地推动了FPGA 技术 的不断发展。虽然HDL 的编译及综合环境可以采用第三方公司所开发的产品,如Modelsim、 Synplify 等,但FPGA 器件的物理实现必须采用各自公司开发的软件平台,无法通用。Xilinx 公司目前最新的开发工具为 Vivado Design Suite 套 件 ,Altera 公司目前的主流开发平台是 Quartus Ⅱ系列套件。与 FPGA 开发平台类似,HDL 也存两种难以取舍的选择:VHDL 和 Verilog HDL。
如何选择开发平台以及HDL 语言呢?其实,对于有志于从事FPGA 技术开发的技术人 员,选择哪种平台及 HDL 语言并不重要,因为两种平台具有很多相似的地方,精通一种 HDL 语言后,再学习另一种HDL 语言也不是一件困难的事。通常来讲,可以根据周围同事、 朋友、同学或公司的主要使用情况进行选择,这样在学习的过程中,可以很方便地找到能 够给你指点迷津的专业人士,从而加快学习进度。
本书采用的是Altera 公司的FPGA 器件作为开发平台,采用Quartus II12.1作为开发环 境,采用 Verilog HDL 语言作为实现手段。由于 Verilog HDL 语言并不依赖于某家公司的 FPGA 产品,因此本书的Verilog HDL 程序文件可以很方便地移植到Xilinx 公司的FPGA 产 品上。如果程序中应用了IP 核资源,两家公司的IP 核通常是不能通用的,这就需要根据IP 核的功能参数,在另外一个平台上重新生成IP 核,或编写Verilog HDL代码来实现。
有人曾经说过,“技术只是一个工具,关键在于思想。”将这句话套用过来,对于本书 来讲,具体的开发平台以及HDL 语言只是实现数字通信技术的工具,关键在于设计的思路 和方法。因此,读者完全不必要过于在意开发平台的差别,相信只要掌握本书所讲述的设计思路和方法,加上读者已经具备的FPGA 开发经验,采用任何一种FPGA 平台都可以很 快地设计出满足用户需求的产品。
如何使用本书
本书在讨论锁相环的基本概念及工作原理时,主要用到了SystemView5.0版本软件。关 于 SystemView5.0 软件的特点及使用方法在本书第1章进行了简要介绍。SystemView 软件 使用起来非常简单,书中的实例也只用到了一些基本功能。如果读者以前没有使用过这款 软件的话,建议先用几个小时了解一下其基本用法,这样就可以动手对本书提供的实例程 序运行仿真。当然,由于SystemView 仅用来说明锁相环的工作原理,因此,读者也可以完 全不去运行这些实例程序,只要理解书中提供的仿真结果即可。
相信大部分工科院校的学生和电子通信的从业人员对MATLAB软件都会有一个基本的 了解。由于它的易用性及强大的功能,已经成为数学分析、信号仿真、数字处理必不可少 的工具。由于MATLAB具有大量专门针对数字信号处理的常用函数,如滤波器函数、傅里 叶分析函数等,十分有利于对一些通信的概念及信号进行功能性仿真,因此,在具体讲解 某个实例时,通常会采用MATLAB作为仿真验证工具。虽然书中的MATLAB 程序相对比 较简单,主要应用一些数字信号处理函数进行仿真验证,如果读者没有MATLAB的知识基 础,建议最好还是先简单学习一下MATLAB的编程概念及基本语法。考虑到程序及函数的 兼容性,书中所有MATLAB 程序的开发验证平台均为MATLAB R2014a版软件。
在讲解具体的FPGA 工程应用实例时,通常会先采用MATLAB 对所需设计的工程进行 仿真,一方面仿真算法过程及结果,另一方面生成 FPGA 仿真所需要的测试数据;然后在 Quartus IⅡ平台上编写Verilog HDL程序对实例进行设计实现,为便于讲述,通常会先讨论程 序的设计思路,或者先给出程序清单,再对程序代码进行分析说明;完成程序编写后,需 要编写TestBench 测试激励文件,根据所需产生输入信号的种类,可以直接在TestBench文 件中编写代码来产生输入信号,也可以通过读取外部文本文件的方式来产生输入信号;接 下来就可以采用ModelSim 工具对 Verilog HDL 程序进行仿真,查看ModelSim 仿真波形结 果,并根据需要将仿真数据写入外部文本文件中,通常还会对仿真波形进行讨论,分析仿 真结果是否满足要求;如果 ModelSim 波形不便于精确分析测试结果,则需要再次编写 MATLAB程序,对ModelSim 仿真结果数据进行分析处理,最终验证FPGA 设计的正确性。
本书主要以工程应用实例的方式讲解锁相环技术的原理及 FPGA 实现方法和步骤。书 中所有实例均给出了完整的程序清单,限于篇幅,不同工程实例中的一些重复或相似的代 码没有完全列出,随书配套的网络光盘上收录了本书所有实例的源程序及工程设计资源,
并按章节序号置于光盘根目录下。本书在编写工程实例时,程序文件均放置在 “D:\PllPrograms”的文件夹下,读者可以先在本地硬盘下建立“D:\PllPrograms”文件夹,而 后将配套网络光盘中的程序压缩包解压至该文件夹下,大部分程序均可直接运行。需要说 明的是,在部分工程实例中,需要由MATLAB产生FPGA 测试所需的文本数据文件,或者 由 MATLAB 读取外部文件进行数据分析,同时 FPGA 仿真的TestBench 文件通常也需要从 指定的路径下读取外部文件数据,或将仿真结果输出到指定的路径下。对于ModelSim 仿真来讲,作为测试输入的文本文件必须放置在当前FPGA 工程目录下的“simulation\modelsim” 路径下。因此,读者在用MATLAB生成测试数据后,需要将生成的文件复 制到指定的路径下,以获取正确的仿真结果。
致谢
有人说,每个人都有他存在的使命,如果他的使命迷失了,也就失去了他存在的价值。 不只是每个人,每件物品也都有其存在的使命。对于一本书来讲,其存在的使命就是被阅 读,并给阅读者带来收获。
作者在写作本书的过程中查阅了大量的资料,在此对资料的作者及提供者表示衷心的 感谢。由于写作本书的缘故,重新阅读一些经典的数字通信理论书籍时,再次深刻感受到 前辈们严谨的治学态度和细致的写作作风。
在此,感谢父母,多年来一直陪伴在我的身边,由于他们的默默支持,使得我能够在 家里专心致志地写作;感谢我的妻子刘帝英女士,她不仅是一位尽心尽职的优秀母亲,也 是一位严谨细致的科技工作者,同时也是本书的第一位读者,在工作之余对本书进行了详 尽而细致的校对;四年前初次编写数字通信的FPGA 设计与实现系列图书时,女儿才刚上小 学,转眼她已经上五年级了,她最爱看书和画画,小脑袋里装着越来越多的她自己的想法。
FPGA 技术博大精深,本书虽尽量详细讨论了锁相环技术的原理及FPGA 实现相关内容, 仍感觉到难以详尽阐述所有技术细节。相信读者在实际工程应用中经过不断的实践、思考 及总结,一定可以快速掌握其工程设计方法,提高应用 FPGA 进行工程设计的能力。由于 作者水平有限,不足之处在所难免,敬请读者批评指正。欢迎大家就相关技术问题进行交 流,或对本书提出改进意见及建议。
为便于读者交流,并及时发布相关资料及信息,本书特开设了交流博客,读者也可以 通过邮件与作者进行技术交流。
杜 勇
2016年4月
FPGA基础知识
Altera器件简介
Verilog HDL语言简介
Quartus I开发套件
ModelSim 仿真软件
MATLAB软 件
SystemView 软件
锁相环技术具有很强的专业性,要掌握其工作原理,透彻理解各种设计方法和思路, 最终游刃有余地设计出性能优良的锁相环电路,首先需要掌握一系列相关工具。请注意, 不是“一种”工具,而是“一系列”工具:FPGA 开发软件Quartus II、HDL仿真软件ModelSim、 MATLAB 软件、SystemView 软件,以及FPGA 开发语言Verilog HDL。
回想起自己初次学习 FPGA 实现数字通信相关设计时的状态,当老师列出一系列以前 从未接触过的专业软件时, 一时似乎有些绝望的感觉,掌握这些软件的用法不知是多么遥 远的事!九层之台,起于垒土;千里之行,始于足下。知识的学习没有捷径可走,只有不 断积累,在积累过程中去体会量变到质变的美妙。观望和感叹都是没有实际效用的,不如 脚踏实地开始行动。
本章主要对本书所使用到的设计环境和开发平台进行简要介绍,之所以说是简要介绍, 因为这些开发工具本身的功能十分强大,每一种工具都有种类繁多的专门著述进行详细阐 述。随着工程师设计经验的积累,设计水平的提高,越能更全面地掌握设计工具的特点, 从而更好地发挥设计工具的性能,以最小的代价设计出理想的产品。好比一把宝剑,只有 握在高手的手中才能发挥出最大的威力。
1.1 FPGA基础知识
1.1.1 基本概念及发展历程
1. 基本概念
随着数字集成电路的发展,越来越多的模拟电路逐渐被数字电路取代。同时数字集成 电路本身也在不断地进行更新换代,它由早期的电子管、晶体管、中小规模集成电路发展 到超大规模集成电路,以及许多具有特定功能的专用集成电路。但是,随着微电子技术的 发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。电子工程设计师们 更愿意自己设计专用集成电路芯片(Application Specific Integrated Circuit,ASIC),而 且 希 望 ASIC 的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC 芯片,并且立即 投入实际的工程应用之中,因而出现了可编程逻辑器件(Programmable Logic Device,PLD), 其中应用最广泛的为现场可编程门阵列 (Field Programmable Gate Array,FPGA) 和复杂可 编程逻辑器件(Complex Programmable Logic Device,CPLD) 。PLD 的主要特点是芯片或器 件的功能完全由用户通过特定软件编程控制,并完成相应功能,且可反复擦写。这样,用 户在用PLD 设计好印制电路板 (Printed Circuit Board,PCB) 后,只要预先安排好PLD 引 脚的硬件连接,即可只通过软件编程的方式灵活改变芯片功能,从而达到改变整块PCB 功 能的目的。这种方法不需要对PCB 进行任何更改,从而大大缩短产品的开发周期和成本。 也就是说,由于使用了PLD 进行设计,硬件设计已部分实现了软件化。随着生产工艺的不 断革新,高密度、超大规模FPGA/CPLD 器件越来越多地在电子信息类产品设计中得到应用, 同时由于DSP(Digital Signal Processor) 、ARM(Advanced RISC Machines) 技术与FPGA 技术相互融合,在数字信号处理等领域,已出现了具有较强通用性的硬件平台,核心硬件设计工作正逐渐演变为软件设计。
2. 发展历程
早期的可编程逻辑器件在20 世纪70年代初出现,这一时期只有可编程只读存储器 (Programmable Read-only Memory,PROM)、可擦除可编程只读存储器 (Erasable PROM, EPROM) 和电可擦除只读存储器 (Electrically EPROM,EEPROM) 三种。这类器件的结构 相对简单,只能完成简单的数字逻辑功能,但也足以给数字电路设计带来巨大的变化。
20世纪70年代中期出现了结构上稍复杂的可编程芯片,即可编程逻辑器件,它能够完 成各种数字逻辑功能,典型的PLD 由“与”门和“或”门阵列组成。由于任意一个组合逻 辑都可以用“与-或”表达式来描述,所以PLD 能以“乘积项”的形式完成大量的组合逻辑 功能。这一阶段的产品主要有可编程阵列逻辑 (Programmable Array Logic,PAL) 和通用阵 列逻辑 (Generic Array Logic,GAL) 。PAL由一个可编程的“与”平面和一个固定的“或” 平面构成。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和 EEPROM 技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列 (Programmable Logic Array, PLA), 它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编 程的。PLA 器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通 用阵列逻辑,如GAL16V8 、GAL22V10 等,它采用了EEPROM 工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍 有许多人使用。这些早期PLD 器件的一个共同特点是,可以实现速度特性较好的逻辑功能, 但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期,Altera 和 Xilinx 两家公司分别推出了类似于 PAL结构的扩展型CPLD 和与标准门阵列类似的FPGA。它们都具有体系结构和逻辑单元灵 活、集成度高和适用范围宽等特点。这两种器件兼容了PLD 和 GAL 的优点,可实现较大规 模的电路,编程也很灵活。与门阵列等其他ASIC 相比,它们又具有设计开发周期短、设计 制造成本低、开发工具先进、标准产品无须测试、质量稳定和可实时在线检验等优点,因 此被广泛应用于产品的原型设计和产品生产之中。几乎所有应用门阵列、PLD 和中小规模 通用数字集成电路的场合均可应用FPGA 和 CPLD 器件。
20世纪90年代末以来,随着可编程逻辑器件工艺和开发工具日新月异的发展,尤其是 Xilinx 公司和Altera 公司不断推出新一代超大规模可编程逻辑器件。FPGA 技术与ASIC 、 DSP 及 CPU 技术不断融合,FPGA 器件中己成功地以硬核的形式嵌入ASIC 、PowerPC处理 器、ARM 处理器,以HDL 的形式嵌入越来越多的标准数字处理单元,如 PCI 控制器、以 太网控制器、MicroBlaze 处理器、Nios 和 NiosⅡ 处理器等。新技术的发展不仅实现了软、 硬件设计的完美结合,也实现了灵活性与速度设计的完美结合,使得可编程逻辑器件超越 了传统意义上的FPGA 概念,并以此发展形成了现在流行的系统级芯片 (System on Chip, SoC) 及片上可编程系统 (System on a Programmable Chip,SoPC) 设计技术,其应用领域 扩展到了系统级,涵盖了实时数字信号处理技术、高速数据收发器、复杂计算和嵌入式系 统设计技术的全部内容。
Xilinx 公司于2003年率先推出了90 nm 制造工艺的Spartan-3 系列FPGA 芯片,于2011年推出28nm 制造工艺的7系列FPGA 芯片,并于2013年推出了20nm 制造工艺的UltraScale 系列FPGA 芯片,且宣称基于最新UltraScale 的开发不但可实现从20 nm 向16nm 乃至更高 级FinFET 技术的扩展,而且还可实现从单片向3D IC的扩展。作为可实现ASIC 级性能的 All Programmable 架 构 ,UltraScale 不仅可解决总体系统吞吐量及时延限制问题,而且还可 直接解决高级节点芯片之间的互联问题。
Altera 公司于2004年首次推出90 nm 制造工艺的Stratix Ⅱ系列FPGA 芯片后,紧接着 于2006年推出了65nm 的 Stratix Ⅲ系列FPGA 芯片,于2008年推出了40nm 的 Stratix IV 系列FPGA 芯片,并于2010年先于Xilinx 推出了28nm 制造工艺的Stratix V 系列FPGA 芯 片。2013年,Altera 推出了最新的基于14nm 三栅极工艺技术的Stratix 10系列FPGA 芯片。
随着芯片制造工艺技术的不断进步, FPGA 正向着低成本、高集成度、低功耗、可扩展、 高性能的目标不断前进。相信FPGA 的应用会得到更大的发展! FPGA 的演进历程如图1- 1 所示。

1.1.2 FPGA 的结构和工作原理
1.FPGA 的结构
目前所说的PLD 器件,通常情况下指的是FPGA 与 CPLD 器件。FPGA 与CPLD 器件 因其内部结构不同,导致其集成度、运算速度、功耗及应用方面均有一定差别。通常将以 乘积项结构方式构成逻辑行为的器件称为 CPLD, 如 Xilinx 的 XC9500 系列、Altera 的 MAX7000S 系列和 Lattice 的 Mach 系列等,这类器件的逻辑门密度在几千到几万个逻辑单 元之间。CPLD 更适合触发器有限而乘积项丰富的结构,适合完成复杂的组合逻辑。通常将 基于查找表(Look-Up-Table,LUT) 结构的PLD 器件称为FPGA, 如 Xilinx 公司的Spartan、 Virtex和7系列, Altera 的 Cyclone 、Arria 和 Stratix 系列等。FPGA 是在CPLD 等逻辑器件 的基础上发展起来的。作为ASIC 领域的一种半定制电路器件,它克服了ASIC 器件灵活性不足的缺点,同时解决了 CPLD 等器件逻辑门电路资源有限的缺点,这种器件的密度通常 在几万门到几百万门之间。FPGA 更适合于触发器丰富的结构,适合完成时序逻辑,因此在 数字信号处理领域多使用FPGA 器件。
目前主流的 FPGA 仍是基于查找表技术的,但已经远远超出了先前版本的基本性能,并且整合了常用功能(如 RAM 、时钟管理和 DSP) 的硬核模块。如图1-2所示(图1-2只 是一个示意图,实际上每一个系列的FPGA 都有其相应的内部结构),FPGA 芯片主要由6 部分组成:可编程输入/输出单元(Input/Output Block,IOB)、基本可编程逻辑块(Configurable Logic Block,CLB)、数字时钟管理模块 (Digital Clock Manager,DCM)、嵌入式块RAM (Block RAM,BRAM)、丰富的布线资源、内嵌的底层功能单元,以及内嵌专用硬件模块。

1)可编程输入/输出单元(IOB)
可编程输入/输出单元简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特 性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-3所示。
FPGA内 的I/O 按组分类,每组都能够独立地支持不同的I/O 标准。通过软件的灵活配 置,可适应不同的电气标准与I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉 电阻阻值。目前,I/O 口的频率也越来越高, 一些高端的FPGA 通过DDR 寄存器技术可以 支持高达2Gbps 的数据速率。外部输入信号可以通过IOB 模块的存储单元输入FPGA 的 内 部,也可以直接输入FPGA 内部。为了便于管理和适应多种电器标准,FPGA 的 IOB 被划 分为若干个组 (Bank), 每个Bank 的接口标准由其接口电压 Vcco决定。 一个 Bank 只能有 一 种Vcco,但不同Bank 的 Vcco 可以不同。只有相同电气标准的端口才能连接在一起,Vcco 电压相同是接口标准化的基本条件。

2)可配置逻辑块(CLB)
CLB 是 FPGA 内的基本逻辑单元,其实际数量和特性会依器件的不同而不同。用户可 以根据设计需要灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA 一般是基于 SRAM 工艺的,其基本可编程逻辑单元几乎都由查找表 (Look Up Table,LUT) 和寄存器 (Register) 组成。FPGA 内部的查找表一般为4输入LUT 。Altera的一些高端FPGA 芯片采 用了自适应逻辑块 (Adaptive Logic Modules,ALM) 结构,可根据设计需求由设计工具自 动配置成所需的模式,如5输入和3输入的LUT, 或5输入和4输入的LUT, 或两个4输 入的LUT 等。查找表一般完成组合逻辑功能。
FPGA 内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位、时钟使能的触 发器(Flip Flop,FF),也可以配置成锁存器 (Latch) 。FPGA 一般依赖寄存器完成同步时序 逻辑设计。一般来说,比较经典的基本逻辑可编程单元的配置是一个寄存器加一个查找表, 但是不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模 式也不同。例如,Altera 的可编程逻辑单元通常称为逻辑单元 (Logic Element,LE),由 一 个寄存器外加一个LUT 构成。Altera 大多数FPGA 将10个LE 有机地组合起来,构成更大 的功能单元——逻辑阵列模块 (Logic Array Block,LAB) 。LAB中除了LE 外,还包含LE 间的进位链、LAB 控制信号、局部互连线资源、LUT 级联链、寄存器级联链等连线与控制 资源,如图1-4所示。Xilinx 可编程逻辑单元称为Slice,它是由上下两个部分构成,每个部 分都由一个寄存器加一个LUT 组成,称为逻辑单元 (Logic Cell,LC),两个LC 之间有一 些共用逻辑,可以完成LC 之间的配合与级联。Lattice 的底层逻辑单元称为可编程功能单元 (Programmable Function Unit,PFU),它由8个LUT 和8~9个寄存器构成。当然,这些可 编程单元的配置结构随着器件的发展也在不断更新,更新的一些可编程逻辑器件常常根据 设计需求推出一些新的LUT 和寄存器的配置比率,并优化其内部的连接构造。
了解底层配置单元的LUT 和寄存器比率的一个重要意义在于器件选型和规模估算,很 多器件手册上用器件的ASIC 门数或等效的系统门数表示器件的规模。但是由于目前FPGA 内部除了基本可编程逻辑单元外,还包含有丰富的嵌入式RAM 、PLL 或 DLL, 专 用Hard IP Core(硬知识产权功能核)等。这些功能模块也会等效出一定规模的系统门,所以用系统权 衡基本可编程逻辑单元的数量是不准确的,常常混淆设计者。比较简单科学的方法是用器 件的寄存器或LUT 数量来衡量(一般来说,两者的比率为1:1)。例如,Xilinx 的Spartan-3 系列的XC3S1000 有15360个LUT, 而 Lattice 的 EC 系列LFEC15E 也有15360个LUT, 所以这两款FPGA 的可编程逻辑单元数量基本相当,属于同一规模的产品。同样道理,Altera 的Cyclone 器件簇的EP1C12 的 LUT 数量是12060个,就比前面提到的两款FPGA 芯片规 模略小。需要说明的是,器件选型是一个综合性问题,需要将设计的需求、成本压力、规 模、速度等级、时钟资源、I/O 特性、封装、专用功能模块等诸多因素综合考虑。
LE 是Altera FPGA芯片的基本逻辑单位,通常由一个4输入查找表和一个可编程触发器, 再加上一些辅助电路组成。LE 有两种工作模式——正常模式和动态算术模式,其中正常模式 用于实现普通的组合逻辑功能,动态算术模式用于实现加法器、计数器和比较器等功能。
LE 正常模式的结构如图1-5所示。在正常模式下,LUT 作为通用的4输入函数,实现组合逻辑功能。LUT 的组合输出可以直接输出到行列互连线,或者通过LUT 链输出到下面 LE的 LUT 输入端,也可以经过触发器的寄存后输出到行列互连线。触发器同样可以通过触 发器链串起来做移位寄存器。在不相关的逻辑功能中使用LUT 和触发器可以被打包到同一 个LE 中,而且同一个LE 中的触发器的输出可以反馈到LUT 中实现逻辑功能,这样可以增 加 资 源 的 利 用 率 。

3)数字时钟管理模块 (DCM)
业内大多数 FPGA 均提供数字时钟管理模块,用于产生用户所要求的稳定时钟信号, 主要由锁相环路完成。相位锁定环路能够提供精确的时钟综合,且能够降低抖动,并实现 过滤功能。内嵌时钟管理模块主要指延迟锁定环(Delay Locked Loop,DLL)、锁相环(Phase Locked Loop,PLL) 、DSP等处理核。现在,越来越丰富的内嵌功能单元使得单片FPGA 成为了系统级的设计工具,使其具备了软、硬件联合设计的能力,并逐步向 SoC 平台过渡。 DLL 和 PLL 具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移 相等功能。Xilinx 公司生产的芯片上集成了DCM 和 DLL,Altera 公司的芯片集成了 PLL,Attice 公司的新型芯片上同时集成了PLL 和 DLL 。PLL和 DLL 可以通过 IP 核生成工具方便地进行管理 和配置。DLL的结构如图1-7所示。

4)嵌入式块RAM(BRAM)
大多数FPGA 都具有内嵌的BRAM, 这大大拓展了FPGA 的应用范围和灵活性。块RAM 可被配置为单端口RAM、双端口RAM、地址存储器(CAM), 以 及FIFO 等常用存储结构。 CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM 中的数据会和内部 的每一个数据进行比较,并返回与端口数据相同的所有数据的地址。除了块RAM, 还 可 以 将 FPGA 中的LUT 灵活地配置成RAM 、ROM 和 FIFO 等结构。在实际应用中,芯片内部 的 BRAM 数量也是选择芯片的一个重要因素。
对于一般的FPGA 器件来讲,单片块RAM 的容量为18 kbit, 即位宽为18 bit、深度为 1024。用户可以根据需要改变其位宽和深度,还可以将多片块 RAM 级联起来形成更大的 RAM, 此时所配置的最大容量受限于芯片内的块RAM 数量。
5)丰富的布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱 动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位 置的不同而划分为四类不同的类别:第一类是全局布线资源,用于芯片内部全局时钟和全 局复位/置位的布线;第二类是长线资源,用于完成芯片 Bank间的高速信号和第二全局时钟 信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类 是分布式的布线资源,用于专用时钟、复位等控制信号线。
在实际工程设计中,设计者不需要直接选择布线资源,布局布线器可自动根据输入逻 辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源 的使用方法和设计的结果有密切、直接的关系。
6)底层内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,FPGA 内部集成的处理能力强大的硬核 (Hard Core), 等效于ASIC 电路。为了提高FPGA 性能,芯片生产商在芯片内部集成了一 些专用的硬核。例如,为了提高FPGA 的乘法速度,主流的FPGA 中都集成了专用乘法器; 为了适应通信总线与接口标准,很多高端的FPGA 内部都集成了串/并收发器 (SERDES),
可以达到数10 Gbps 的收发速度。Xilinx 公司的高端产品不仅集成了PowerPC 系列CPU, 还内嵌了DSP Core模块,其相应的系统级设计工具是EDK 和Platform Studio,并以此提出 了片上系统 (System on Chip) 的概念。通过PowerPC 、Miroblaze 、Picoblaze等平台,能够 开发标准的 DSP 处理器及其相关应用。Altera 的高端FPGA 芯片中不仅集成了大量的硬件乘法器等DSP 核、多个高速收发器模块、PCIe 硬核模块,还集成了ARM Cortex-A9 等具有 强大实时处理功能的嵌入式硬核,从而实现SoC 的开发目的。
更多内容见附件
免责声明:
本页面/内容部分素材来源于互联网公 开 信 息,旨在传递更多信息,不代表本平台立场。
版权归原作者或机构所有,如涉及侵权,请通过平台联系我们,我们将在核实后第一时间处理。
本平台对转载内容的真实性、准确性不作任何保证,用户需自行判断并承担使用风险。