????????锁相环技术具有很强的专业性,要掌握其工作原理,透彻理解各种设计方法和思路,最终游刃有余地设计出性能优良的锁相环电路,首先需要掌握一系列相关工具。请注意,不是“一种”工具,而是“一系列”工具: FPGA 开发软件 Quartus II、 HDL 仿真软件 ModelSim、MATLAB 软件、 SystemView 软件,以及 FPGA 开发语言 Verilog HDL。
????????回想起自己初次学习 FPGA 实现数字通信相关设计时的状态,当老师列出一系列以前从未接触过的专业软件时,一时似乎有些绝望的感觉,掌握这些软件的用法不知是多么遥远的事!九层之台,起于垒土;千里之行,始于足下。知识的学习没有捷径可走,只有不断积累,在积累过程中去体会量变到质变的美妙。观望和感叹都是没有实际效用的,不如脚踏实地开始行动。
????????本章主要对本书所使用到的设计环境和开发平台进行简要介绍,之所以说是简要介绍,因为这些开发工具本身的功能十分强大,每一种工具都有种类繁多的专门著述进行详细阐述。随着工程师设计经验的积累,设计水平的提高,越能更全面地掌握设计工具的特点,从而更好地发挥设计工具的性能,以最小的代价设计出理想的产品。好比一把宝剑,只有握在高手的手中才能发挥出最大的威力。
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 | 锁相环技术原理及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年推出 28 nm 制造工艺的 7 系列 FPGA 芯片,并于 2013 年推出了 20 nm 制造工艺的 UltraScale系列 FPGA 芯片,且宣称基于最新 UltraScale的开发不但可实现从 20 nm 向 16 nm 乃至更高级 FinFET 技术的扩展,而且还可实现从单片向 3D IC 的扩展。作为可实现 ASIC 级性能的All Programmable 架构, UltraScale 不仅可解决总体系统吞吐量及时延限制问题,而且还可直接解决高级节点芯片之间的互联问题。
????????Altera 公司于 2004 年首次推出 90 nm 制造工艺的 Stratix II 系列 FPGA 芯片后,紧接着
于 2006 年推出了 65 nm 的 Stratix III 系列 FPGA 芯片,于 2008 年推出了 40 nm 的 Stratix IV
系列 FPGA 芯片,并于 2010 年先于 Xilinx 推出了 28 nm 制造工艺的 Stratix V 系列 FPGA 芯
片。 2013 年, Altera 推出了最新的基于 14 nm 三栅极工艺技术的 Stratix 10 系列 FPGA 芯片。
????????随着芯片制造工艺技术的不断进步, FPGA 正向着低成本、高集成度、低功耗、可扩展、高性能的目标不断前进。相信 FPGA 的应用会得到更大的发展! FPGA 的演进历程如图 1-1所示。
????????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 寄存器技术可以
支持高达 2 Gbps 的数据速率。外部输入信号可以通过 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 有 15 360 个 LUT,而 Lattice 的 EC 系列 LFEC15E 也有 15 360 个 LUT,
所以这两款 FPGA 的可编程逻辑单元数量基本相当,属于同一规模的产品。同样道理, Altera
的 Cyclone 器件簇的 EP1C12 的 LUT 数量是 12 060 个,就比前面提到的两款 FPGA 芯片规
模略小。需要说明的是,器件选型是一个综合性问题,需要将设计的需求、成本压力、规
模、速度等级、时钟资源、 I/O 特性、封装、专用功能模块等诸多因素综合考虑。
????????LE 是 Altera FPGA 芯片的基本逻辑单位,通常由一个 4 输入查找表和一个可编程触发器,
再加上一些辅助电路组成。 LE 有两种工作模式—正常模式和动态算术模式,其中正常模式用于实现普通的组合逻辑功能,动态算术模式用于实现加法器、计数器和比较器等功能。LE 正常模式的结构如图 1-5 所示。在正常模式下, LUT 作为通用的 4 输入函数,实现组合逻辑功能。 LUT 的组合输出可以直接输出到行列互连线,或者通过 LUT 链输出到下面LE 的 LUT 输入端,也可以经过触发器的寄存后输出到行列互连线。触发器同样可以通过触发器链串起来做移位寄存器。在不相关的逻辑功能中使用 LUT 和触发器可以被打包到同一个 LE 中,而且同一个 LE 中的触发器的输出可以反馈到 LUT 中实现逻辑功能,这样可以增加资源的利用率。
? ? ? ? 在 LE 动态算术模式下, 4 输入 LUT 被配置成 4 个 2 输入的 LUT,用于计算两个数相加之和与进位值,如图 1-6 所示。
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 所示。