首页 全数字锁相环设计

全数字锁相环设计

举报
开通vip

全数字锁相环设计 桂林电子科技大学毕业设计(论文)报告用纸 第 1 页 共 28 页 桂林电子科技大学毕业设计(论文)报告用纸 第 27 页 共 28 页 引言 锁相的概念是在19世纪30年代提出的,而且很快在电子学和通信领域中获得广泛应用。尽管基本锁相环的从开始出现几乎保持原样,但是使用不同的技术制作及满足不同的应用要求,锁相环的实现对于特定的设计还是蛮大...

全数字锁相环设计
桂林电子科技大学毕业设计(论文) 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 用纸 第 1 页 共 28 页 桂林电子科技大学毕业设计(论文)报告用纸 第 27 页 共 28 页 引言 锁相的概念是在19世纪30年代提出的,而且很快在电子学和通信领域中获得广泛应用。尽管基本锁相环的从开始出现几乎保持原样,但是使用不同的技术制作及满足不同的应用要求,锁相环的实现对于特定的设计还是蛮大的挑战。 锁相环在通信、雷达、测量和自动化控制等领域应用极为广泛,已经成为各种电子设备中必不可少的基本部件。随着电子技术向数字化方向发展,需要采用数字方式实现信号的锁相处理。锁相环技术在众多领域得到了广泛的应用。如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。传统的锁相环由模拟电路实现,而全数字锁相环(DPLL)与传统的模拟电路实现的锁相环相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需A/D及D/A转换。随着通讯技术、集成电路技术的飞速发展和系统芯片(SoC)的深入研究,全数字锁相环必然会在其中得到更为广泛的应用。因此,对全数字锁相环的研究和应用得到了越来越多的关注。 传统的数字锁相环系统是希望通过采用具有低通特性的环路滤波器,获得稳定的振荡控制数据。对于高阶全数字锁相环,其数字滤波器常常采用基于DSP 的运算电路。这种结构的锁相环,当环路带宽很窄时,环路滤波器的实现将需要很大的电路量,这给专用集成电路的应用和片上系统SOC(system on chip)的设计带来一定困难。另一种类型的全数字锁相环是采用脉冲序列低通滤波计数电路作为环路滤波器,如随机徘徊序列滤波器、先N后M序列滤波器等。这些电路通过对鉴相模块产生的相位误差脉冲进行计数运算,获得可控振荡器模块的振荡控制参数。由于脉冲序列低通滤波计数方法是一个比较复杂的非线性处理过程,难以进行线性近似,因此,无法采用系统传递函数的分析方法确定锁相环的设计参数。不能实现对高阶数字锁相环性能指标的解藕控制和分析,无法满足较高的应用需求。 由于数字电子技术的迅速发展,尤其是数字计算和信号处理技术在多媒体、自动化、仪器仪表、通讯等领域的广泛应用,用数字电路处理模拟信号的情况日益普遍。所以模拟信号数字化是信息技术的发展趋势,而数字锁相环在其中扮演着重要角色。近年来,随着VLSI技术的发展, 随着大规模、超高速集成电路的飞速发展,数字系统的集成度和逻辑速度越来越高,这使得数字锁相环在数字通信、控制工程及无线电电子学的各个领域中的应用也越来越广泛。数字锁相环路已在数字通信、无线电电子学及电力系统自动化等领域中得到了极为广泛的应用。随着集成电路技术的发展,不仅能够制成频率较高的单片集成锁相环路,而且可以把整个系统集成到一个芯片上去。在基于FPGA的通信电路中,可以把全数字锁相环路作为一个功能模块嵌入FPGA中,构成片内锁相环。 锁相环最初用于改善电视接收机的行同步和帧同步,以提高抗干扰能力。20世纪50年代后期随着空间技术的发展,锁相环用于对宇宙飞行目标的跟踪、遥测和遥控。但是基本都是以模拟锁相环为基础。60年代初随着数字通信系统的发展,出现数字锁相环其应用相当广泛,例如为相干解调提取参考载波、建立位同步等。具有门限扩展能力的调频信号锁相鉴频器也是在60年代初发展起来的。在电子仪器方面,锁相环在频率合成器和相位计等仪器中起了重要作用。数字锁相环也以其独特的优点在很多方面取代了模拟锁相环。数字锁相环具有以下优点:广泛采用逻辑门电路,触发电路和其它数字电路,因而受干扰影响的可能性小;可靠性高便于集成化和小型化,避免了模拟锁相环的一些固有缺点。锁相环路所以获得日益广泛的应用是因为它具有如下几个重要特性: ◆ 跟踪特性。在环路锁定状态下,一旦输入频率发生变化,压控振荡器立即响应这个变化,迅速跟踪输入频率,最终使输入与输出同步。这种环路可用于锁相接收机。 ◆ 滤波特性。通过环路滤波器的作用,锁相环路具有窄带滤波特性,能够将混进输入信号中的噪声和杂散干扰滤除。而且通带可以做的很窄,性能远远优于任何Lc、RC、石英晶体、陶瓷滤波器。 ◆ 锁定状态无剩余频差存在。正是由于锁相环的这一理想频率控制特性,使它在自动频率控制、频率合成技术等方面获得广泛的应用。 ◆ 易于集成化。组成环路的基本部件都易于采用模拟集成电路实现。环路实现数字化之后,更易于采用数字集成电路。集成锁相环的体积不断减小,成本不断降低,而可靠性却不断增强,用途也越来越多。 因此,研究能够嵌入系统芯片内的全数字锁相环,提高其环路的工作性能,具有十分重要的意义。 1 锁相环概述 我们所说的PLL,其实就是锁相环路,简称为锁相环。锁相环路是一种反馈控制电路。许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利用锁相环路就可以实现这个目的。锁相环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。 目前锁相环主要有模拟锁相环,数字锁相环以及有记忆能力(微机控制)锁相环。 1.1 模拟锁相环的基本结构及工作原理 1.1.1 模拟锁相环的基本结构 锁相环路是一种反馈电路,锁相环的英文全称是Phase-Locked Loop,简称PLL。模拟锁相环通常由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCO)三部分组成,锁相环组成的原理框图如图所示。 输入信号fint Ud Uc 重构信号fout 图1.1 锁相环结构框图 锁相环中的鉴相器又称为相位比较器,它的作用是检测输入信号和输出信号的相位差,并将检测出的相位差信号转换成Ud(t)电压信号输出,该信号经低通滤波器滤波后形成压控振荡器的控制电压Uc(t),对振荡器输出信号的频率实施控制。 1.1.2 模拟锁相环的工作原理 锁相环其作用是使得电路上的时钟和某一外部时钟的相位同步。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。在数据采集系统中,锁相环是一种非常有用的同步技术,因为通过锁相环,可以使得不同的数据采集板共享同一个采样时钟。因此,所有各自的本地时基的相位都是同步的,从而采样时钟也是同步的。因为每块板卡的采样时钟都是同步的,所以都能严格地在同一时刻进行数据采集。 当压控振荡器的频率由于某种原因而发生变化时,必然引起相位的变化,该相位变化在鉴相器中与参考晶体的稳定相位相比较,使鉴相器输出一个与相位误差信号成比例的误差电压Ud,经过低通滤波器,取出其中缓慢变动数值,将压控振荡器的输出频率拉回到稳定的值上来,从而实现了相位负反馈控制。锁相环的工作原理: a. 压控振荡器的输出经过采集并分频; b. 和基准信号同时输入鉴相器; c. 鉴相器通过比较上述两个信号的频率差,然后输出一个直流脉冲电压; d. 控制VCO,使它的频率改变; e. 这样经过一个很短的时间,VCO 的输出就会稳定于某一期望值。 锁相环可以用来实现输出和输入两个信号之间的相位同步。当没有基准(参考)输入信号时,环路滤波器的输出为零(或为某一固定值)。这时,压控振荡器VCO按其固有频率fv进行自由振荡。当有频率为fR的参考信号输入时,Ur 和Uv同时加到鉴相器进行鉴相。如果fr和fv相差不大,鉴相器对Ur和Uv进行鉴相的结果,输出一个与Ur和Uv的相位差成正比的误差电压Ud,再经过环路滤波器滤去Ud中的高频成分,输出一个控制电压Uc,Uc将使压控振荡器的频率fv(和相位)发生变化,朝着参考输入信号的频率靠拢,最后使fv=fr,环路锁定。环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)之间只有一个固定的稳态相位差,而没有频差存在。这时我们就称环路已被锁定。 环路的锁定状态是对输入信号的频率和相位不变而言的,若环路输入的是频率和相位不断变化的信号,而且环路能使压控振荡器的频率和相位不断地跟踪输入信号的频率和相位变化,则这时环路所处的状态称为跟踪状态。锁相环路在锁定后,不仅能使输出信号频率与输入信号频率严格同步,而且还具有频率跟踪特性,所以它在电子技术的各个领域中都有着广泛的应用。 1.2 全数字锁相环基本结构及工作原理 1.2.1 全数字锁相环的基本结构 随着数字电路技术的发展,数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体积小、价格低等优点,还解决了模拟锁相环的直流零点漂移、器件饱和及易受电源和环境温度变化等缺点,此外还具有对离散样值的实时处理能力,已成为锁相技术发展的方向。 所谓数字PLL,就是指应用于数字系统的PLL,也就是说数字PLL中的各个模块都是以数字器件来实现的,是一个数字的电路。 数字锁相环的优点是电路最简单有效,可采用没有压控的晶振,降低了成本,提高了晶振的稳定性。但缺点是和模拟锁相环一样,一旦失去基准频率,输出频率立刻跳回振荡器本身的频率;另外还有一个缺点,就是当进行频率调整的时候,输出频率会产生抖动,频差越大,抖动会越大于密,不利于某些场合的应用。随着大规模、超高速的数字集成电路的发展,为数字锁相环路的研究与应用提供了广阔空间。由于晶体振荡器和数字调整技术的加盟,可以在不降低振荡器的频率稳定度的情况下,加大频率的跟踪范围,从而提高整个环路工作的稳定性与可靠性。 锁相环是一个相位反馈控制系统,在数字锁相环中,由于误差控制信号是离散的数字信号,而不是模拟电压,因而受控的输出电压的改变是离散的而不是连续的;此外,环路组成部件也全用数字电路实现,故而这种锁相环就称之为全数字锁相环(简称PLL)。全数字锁相环主要由数字鉴相器、可逆计数器、频率切换电路及N分频器四部分组成。其中可逆计数器及N分频器的时钟由外部晶振提供。不用VCO,可大大减轻温度及电源电压变化对环路的影响。同时,采用在系统可编程芯片实现有利于提高系统的集成度和可靠性。 一阶全数字锁相环的基本结构如图所示。主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。 图1.2 数字锁相环基本结构 1.2.2 全数字锁相环的工作原理 当环路失锁时,异或门鉴相器比较输入信号(fin)和输出信号(fout)之间的相位差异,并产生K变模可逆计数器的计数方向控制信号(dnup); K变模可逆计数器根据计数方向控制信号(dnup)调整计数值,dnup为高进行减计数,并当计数值到达0时,输出借位脉冲信号(borrow);为低进行加计数,并当计数值达到预设的K模值时,输出进位脉冲信号(carryo);脉冲加减电路则根据进位脉冲信号(carryo)和借位脉冲信号(borrow)在电路输出信号(idout)中进行脉冲的增加和扣除操作,来调整输出信号的频率;重复上面的调整过程,当环路进入锁定状态时,异或门鉴相器的输出se为一占空比50%的方波,而K变模可逆计数器则周期性地产生进位脉冲输出carryo和借位脉冲输出borrow,导致脉冲加减电路的输出idout周期性的加入和扣除半个脉冲。这样对于输出的频率没有影响,也正是基于这种原理,可以把等概率出现的噪声很容易的去掉。 环路滤波器的性能优劣会直接影响到跟踪环路的性能。而采用数字化的环路滤波器便于调试参数和提高系统可靠性。环路滤波器的输出要直接控制频率合成器产生相应频率,使本地伪码能够准确跟踪发端信息。数字环中使用的数字环路滤波器与模拟环中使用的环路滤波器作用一样,都对噪声及高频分量起抑制作用,并且控制着环路相位校正的速度与精度。适当选择滤波器的参数,可以改善环路的性能。数字环路滤波器的设计原理是建立在模拟环路滤波器的基础上的。 1.3 本次课题实现的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 鉴相器采用异或门鉴相器(xormy),数字滤波器是一个模值可变的的加减计数器(Kcounter),数控振荡器是一个脉冲加减模块(IDCounter),再用N分频器(div_N)对脉冲加减模块(IDCounter)的输出idout分频,其中N分频器的参数N来自与N参数计数器(Counter_N),N参数计数器(Counter_N)对输入信号给出相应的分频参数。 另外两个dac模块是为了把输入信号fin和输出信号fout转换成模拟波形来观察的验证模块。本次全数字锁相环的框图如下: 图1.3 全数字锁相环要实现的框图 1.4 FPGA简要介绍 Cyclone系列器件是 ALTERA 公司在 2002 年 12 月份推出的。从那以后,已向全球数千位不同的客户交付了数百万片,成为 ALTERA 历史上采用最快的产品。它采用 0.13um、全铜 SRAM 工艺,1.5V 内核,容量从 2910 个逻辑单元到 20060 个逻辑单元,并嵌入了 4 级最多为 64 个 RAM 块(128×36bit)。CYCLONE器件支持大量的片外数据传输的单端 I/O 标准,包括 LVTTL, LVCMOS,PCI,SSTL-2 和 SSTL-3。为满足设计者更快数据速率和信号传输能力的需要,Cyclone器件还设有高达 311Mbps 的低压差分信令(LVDS)兼容通道。由于采用了特殊的三级布线结构,其裸片尺寸大大降低。 Cyclone器件的性能可与业界最快FPGA芯片相抗衡,平衡了逻辑,存储器,锁相环(PLL)和高级 I/O 接口,Cyclone器件具有以下特性: (1)新的编程构架通过设计实现低成本; (2)嵌入式存储资源支持各种存储器应用和数字信号处理(DSP)实施; (3)专用外部存储接口电路集成了 DDR FCRAM 和 SDRAM 存储器件; (4)支持串行、总线和网络接口及各种通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ; (5)使用 PLLs管理片内和片外系统时序; (6)采用新的串行配置器件的低成本配置方案; (7)通过 Quartus II 软件 OpenCore 评估特性,免费评估IP功能。 此外,Cyclone具有较高的性能价格比,Cyclone容量是以往低成本 FPGA系列的四倍,每千个LE 的批量价格低于 1.50 美元。低成本结构和Cyclone FPGA 丰富的器件资源相结合,能够实现完整的。可编程芯片系统(SOPC)方案,成为大批量应用的理想选择。鉴于Cyclone器件价格低廉,速度快,所以在全数字锁相环模块的设计中采用此器件进行设计开发。 2 全数字锁相环具体模块的实现 2.1 数字鉴相器的设计 常用的鉴相器有两种类型:异或门(XOR)鉴相器和边沿控制鉴相器(ECPD),本设计中采用异或门(XOR)鉴相器。异或门鉴相器比较输入信号fin相位和输出信号fout相位之间的相位差Фse=Фfin-Фfout,并输出误差信号se作为K变模可逆计数器的计数方向信号。环路锁定时,se为一占空比50%的方波,此时的绝对相位差为90°。因此异或门鉴相器相位差极限为±90°。异或门鉴相器工作波形如图所示。 鉴相器模块: fin se fout 图2.1 异或门鉴相器框图 模块端口设计说明如下: module xormy(a,b,y);//异或门鉴相器。 input a,b; //输入 output y; //输出 其中 fin对应异或门的输入端a,fout对应异或门输入端b,se对应异或门的输出端y。如下图给出图异或门鉴相器在环路锁定及极限相位差下的波形: 图2.2 环路锁定是异或门鉴相器输出的波形 图2.3 b超前a 90度时的异或门鉴相器输出的波形 图2.4 b滞后a 90度时的异或门鉴相器输出的波形 2.2 数字环路滤波器的设计 基本原理如下,数字环路滤波器(DLF)作用是消除鉴相器输出的相位差信号se中的高频成分,保证环路的性能稳定,实际上可用一变模可逆计数器(设模数为K)来实现。K变模可逆计数器根据相差信号SE来进行加减运算。当SE为高电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;当SE为低电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。当Fout同步于Fin或只有随机干扰脉冲时,计数器加减的数目基本相等,计数结果在初始值处上下徘徊,不会产生进位和借位脉冲,滤除因随机噪声引起的相位抖动。计数器根据输出结果生成控制增减脉冲动作的控制指令。 数字滤波器的工作过程如下,将异或鉴相器产生的se信号加到环路滤波器的输入端, 在环路滤波器模块内设置一个可逆计数器,计数器初始值设为kmode;超前脉冲到来时, 可逆计数器加1,滞后脉冲到来时,可逆计数器减1.经过一段时间的计数后,当可逆计数器为ktop 时,表示本地信号超前,环路滤波器输出扣脉冲信号,可逆计数器复位为kmode; 当可逆计数器为0 时,表示本地信号滞后,环路滤波器输出增脉冲信号,可逆计数器复位为kmode。从而起到了环路滤波的作用。在DPLL 的基本结构中,K变模可逆计数器始终起作用。当环路锁定后,如果模数kmode较小,则K 变模可逆计数器会周期性输出超前脉冲和滞后脉冲,在脉冲加减电路中产生周期性的脉冲加入和扣除,其结果是在脉冲加减电路的输出信号中产生了周期性的误差,称为“波纹”;如果模数kmode足够大,这种“波纹” 误差通过除N 计数器后, 可以减少到N 个周期出现一次,即K 模可逆计数器的超前脉冲和滞后脉冲的周期是N个参考时钟周期。kmode 的大小决定了DPLL的跟踪步,kmode 越大,跟踪步长越小,锁定时的相位误差越小, 但捕获时间越长kmode越小,跟踪步长越大,锁定时的相位误差越大, 但捕获时间越短。 K变模可逆计数器模值K对DPLL的性能指标有着很大的影响。计数器模值K的取值可根据输入信号的相位抖动而定,加大模值K,有利于提高DPLL 的抗噪能力,但是会导致较大的捕捉时间和较窄的捕捉带宽。减小模值K 可以缩短捕捉时间,扩展捕捉带宽,但是降低了DPLL 的抗噪能力。本设计中选择Kmode=4。在初始时刻,计数器被置初值为K/2=2,这样可以DPLL捕捉速度很快。 K变模可逆计数器模块端口设计说明如下: module KCounter(Kclock,reset,dnup,enable,Kmode,carryo,borrow); input Kclock; //系统时钟信号 input reset; //全局复位信号,高电平复位 input dnup; //鉴相器输出的加减控制信号 input enable; //可逆计数器计数允许信号,高电平有效 input [2:0]Kmode; //计数器模值设置信号 output carryo; //进位脉冲输出信号 output borrow; //借位脉冲输出信号 wire carryo,borrow; reg [8:0]Count; //可逆计数器 reg [8:0]Ktop; //预设模值寄存器 K变模可逆计数器模块仿真如下图: 图2.5 K变模可逆计数器的仿真 2.3 数控振荡器的设计 在全数字锁相环中,数控振荡器有别于以往的压空振荡器,数控振荡器由脉冲加减电路实现,根据数字滤波器的给出的进位脉冲信号(carryo)和借位脉冲信号(borrow)进行输出脉冲的调整。当没有进位脉冲信号和借位脉冲信号是,脉冲加减信号就是对时钟进行二分频输出,当有进位脉冲信号时,脉冲加减模块会增加一个脉冲,相当于减少了脉冲周期,而增加了输出频率;同理,当有借位脉冲信号时,脉冲加减模块会减少了一个脉冲,相当于增加了脉冲周期,而减少输出了频率;这样通过脉冲增减模块的对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图所示。 图2.6 脉冲加减电路工作原理波形 脉冲增减模块模块端口设计说明如下: module IDCounter (IDclock,reset,inc,dec,IDout);//脉冲增减模块 input IDclock,reset,inc,dec; output IDout; reg IDout; 脉冲增减模块模块仿真如下图: 图2.7脉冲增减模块模块仿真图 2.4 N分频参数控制的设计 为了使锁定频率范围更宽,这里采用了动态N分频。原理就是对输入信号周期用高频时钟进行测量,得到高频时钟的长度之后再量化然后给出N值,N的值与高频时钟长度比例关系,高频时钟长度越长,N值越大。 N分频参数控制模块端口设计说明如下: module counter_N(clk, fin, reset, count_N);//利用clk对fin脉冲的测量并给出N值 input clk, fin, reset; output [14:0] count_N; //输出counter_N是输入信号fin周期长度的一半 N分频参数控制模块仿真如下图: 图2.8 N分频参数控制模块的仿真图 2.5 N分频器的设计 N分频器则是一个简单的除N计数器。N分频器对脉冲加减电路的输出脉冲再进行N分频,得到整个环路的输出信号fout。同时,因为fout=clk/2N=fc,因此通过改变分频值N可以得到不同的环路中心频率fc。除N计数器对脉冲加减电路的输出IDOUT再进行N分频,得到整个环路的输出信号Fout。同时,因为fc=IDCLOCK/2N,因此通过改变分频值N可以得到不同的环路中心频率fc。 N分频器模块端口设计什么如下: module div_N (clkin,n,reset,clkout); //N分频模块 input clkin,reset; input [14:0] n; output clkout; N分频器模块仿真如下: 图2.9 输入分频倍数为n=10时的输出波形图 图2.10 输入分频倍数为n=20时的输出波形图 图2.11 输入分频倍数为n=50时的输出波形图 2.6 数模DAC转换模块的设计 这里使用数模转换模块是为了在仿真过程更好的直观的观察锁相的情况。把输入信号和输出信号都经过一个数模转换模块,然后用经过软件的设置可以看到正弦波的图形,或者可以通过示波器来看图形。这样可以表征两个信号的频率和相位的差。 数模DAC转换模块端口设计说明如下: module dac (clk,dout,dd); //数模转换模块 input clk; //输入转换的信号 output[7:0] dout; //位宽为八位的输出 output[7:0] dd; reg [7:0] dout; reg [7:0] dd; 数模DAC转换模块仿真如下: 可以看到clk经过dac模块可以用正弦波来显示,如下图2.12 图2.12 输入分频倍数为n=50时的输出波形图 2.7 全数字锁相环的顶层模块 全数字锁相环的顶层模块主要是把前面设计的几个模块连接起来。全数字锁相环顶层模块端口设计如下: module pll_top(fin,fout,se,clk,reset,enable,Kmode,fin_dac,fout_dac); input fin,clk; //输入clk时钟周期100ns(10Mhz) input reset,enable; //reset高电平复位,enable高电平有效 input [2:0]Kmode; //滤波计数器的计数模值设定 output fout; //fout是锁频锁相输出 output [7:0]fin_dac,fout_dac; //fin_dac,fout_dac分别是两个输入输出信号经过数模dac的输出 output se; //用于观察锁相与否 顶层文件程序生成的连接如图2.13: 图2.13 全数字锁相环的顶层连接图 3 全数字锁相环仿真 3.1 全数字锁相环的功能仿真 利用业界强大的ModelSim6.0软件进行功能仿真: 图3.1 全数字锁相环功能仿真结果 图3.2 全数字锁相环功能仿真结果 上面图3.1和图3.2分别是从不同的变化的fin输入频率的仿真,根据波形可以看到fout频率能够跟随fin输入的变化。 3.2 全数字锁相环的时序仿真 在时序仿真前,先利用QuartusII7.2软件编译如下图是编译的报告,从给出的编译结果可以知道,利用Altera公司的Cyclone系列器件的EP1C6Q 图3.3 全数字锁相环编译结果截图 利用QuartusII7.2软件进行时序仿真: 图3.4 全数字锁相环时序仿真结果 从时序仿真图可以看到,se在十个周期内输出方波,说明fout的频率在几个fin周期内可以跟上fin的频率,就是相位被锁定,这时的相位差为90度。 4 下载硬件测试 利用EDA6000实验箱来验证,并在实验箱上进行逻辑的分析。实验板上的FPGA型号为EP1C6Q240C8,使用电路的时钟频率为10MHz。在所设计的锁相环逻辑电路中,为了便于鉴视锁相环的工作状况,本次设计引出了一个锁相监视的判断信号se。采用逻辑分析仪观察各个信号的情况,设置好各个端脚对应的引脚。并且下载到芯片,连接好逻辑分析仪,就可以进行验证。 图4.1 图全数字锁相环下载图示 图4.2 全数字锁相环EDA6000模式设置图 上图为设置EDA6000的模式,电路工作时钟clk就是clk0(IO30)设置为10Mhz,输入信号fin就是clk1(IO31),在这里可以选择不同的信号频率。定义K0(IO40),K1(IO41) ,K2(IO42) ,K3(IO43), K4(IO44)并分别与Kmod0,Kmod1,Kmod2,enable, reset对应;把芯片上定义的clk,fin,fout,se管脚分别连接到逻辑分析仪的LA7,LA6,LA5,LA4上,从而可以直接观察fin,fout和se信号之间的关系变化。 下面是逻辑仪分析对几种不同的fin输入频率分析的结果。 当fin输入频率取为1khz时,可以看到波形图如下: 图4.3 全数字锁相环逻辑分析仪结果,fin=1khz 当fin输入频率取为10khz时,可以看到波形图如下: 图4.4 全数字锁相环逻辑分析仪结果,fin=10khz 当fin输入频率取为10khz时,可以看到波形图如下: 图4.5 全数字锁相环逻辑分析仪结果,fin=100khz 上面的仿真图分别是在不同的输入信号,就是被锁相信号fin的频率由1kHz到10kHz到100kHz,逻辑分析仪分析的结果。我们看上面的结果可以知道输出信号se是一系列的方波,说明了达到了相位锁定。因为锁相过程就是十几个fin周期,比较短,逻辑分析仪采样不到刚开始的数据,所以锁相的过程无法显示出来。从上面的结果可以看出设计的结果达到课题的设计指标。 5 全数字锁相环FPGA实现的 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 在本设计中的一阶全数字锁相环使用Mentor公司的ModelSim6.0软件进行设计的功能仿真以及Altera公司的QuartusII7.2软件时序仿真并且进行设计综合,并采用Altera的cyclone系列的EP1C6Q240C8 FPGA器件实现。实验测试结果表明:本设计中DPLL时钟可达到10MHz,性能较高;而使用了256逻辑单元,占用资源很少。下面给出详细描述全数字锁相环的工作过程。 (1)当环路失锁时,异或门鉴相器比较输入信号(fin)和输出信号(fout)之间的相位差异,并产生K变模可逆计数器的计数方向控制信号(dnup); (2) K变模可逆计数器根据计数方向控制信号(dnup)调整计数值,dnup为高进行减计数,并当计数值到达0时,输出借位脉冲信号(borrow);为低进行加计数,并当计数值达到预设的K模值时,输出进位脉冲信号(carryo); (3)脉冲加减电路则根据进位脉冲信号(carryo)和借位脉冲信号(borrow)在电路输出信号(idout)中进行脉冲的增加和扣除操作,来调整输出信号的频率; (4)重复上面的调整过程,当环路进入锁定状态时,异或门鉴相器的输出se为一占空比50%的方波,而K变模可逆计数器则周期性地产生进位脉冲输出carryo和借位脉冲输出borrow,导致脉冲加减电路的输出idout周期性的加入和扣除半个脉冲。 本次设计中开始遇到了很多困难,开始通过多方面查找资料并了解全数字锁相环的原理及方案,锁相环一般都是模拟的居多,关于数字的资料比较少,所以查阅资料花了大量时间;在确定全数字锁相环设计原理后,开始学习硬件描述语言verilog HDL,学习FPGA器件的使用,学习Mentor公司的ModelSim6.0软件来作功能仿真以及用Altera公司的QuartusII7.2软件进行时序仿真以及下载配置的等问题。 谢 辞 本论文的顺利完成,得到了众多方面的帮助和支持。 首先,我要衷心地感谢我的导师韦雪明老师多年来对我的悉心指导和热情帮助。从课程学习、论文选题、开题报告、课题进行,论文撰写、修改,到最终论文完成的整个过程中,得到了韦老师热情的鼓励、富有启发性的建议和精心的指导,其中点点滴滴无不凝聚着韦老师的心血和汗水。在我本科毕业期间,韦老师为我提供了很好的学习环境和锻炼机会。再次,我对韦雪明老师表示衷心的感谢。 非常感谢我的同学和朋友们,感谢他们在我学习和生活中给予我的大力支持和无私鼓励,这段时光虽然短暂但却美好灿烂,我将永远难忘。 非常感谢我的父母、哥哥、弟弟及亲人,他们对我始终如一的理解、默默无闻的大力支持及无私的帮助和鼓励,使我得到不断前行的巨大动力,也使我在求学的道路上感到无比的坚强和自信。 非常感谢桂林电子科技大学多年的的培养,这段学习经历将使我终生受益。感谢曾经教育和帮助过我的所有老师。衷心感谢百忙之中抽出时间参加论文评阅和评议的各位专家学者,感谢他们为审阅本文所付出的辛勤劳动。 最后,再次怀着感恩的心感谢所有帮助过我的人! 参考文献: [1]“Modeling PLL,”in Integrated Circuits Application Note AN178 Philips Semiconductors, 1988. [2] Douglas J. Smith,“HDL Chip Design,”Doone Publication,1996 [3]北京理工大学ASIC 研究所.VHDL语言100例祥解[M].北京:清华大学出版社,2003. [4]边计年,薛宏熙.用VHDL设计电子线路[M].北京:清华大学出版社,2002. [5]董介春,李万玉.基于VHDL语言的数字锁相环的设计与实现[J].青岛大学学报,2004,19(2);84— 87. [6]单长虹,邓国杨,孟宪元.基于FPGA 的线性可变码位控制全数字锁相环的设计与仿真[J].计算机仿真,2003,20(2);111—113. [7] 龚建荣,李晓飞.利用 FPGA数字锁相及频率转换[J].南京邮电学院学报,1998 ,18(4) :83— 86. [8] Floyd M.Gardner,姚剑清 译.锁相环技术[M]:第3 版.北京:人民邮电出版社,2007.11 [9]陈贵灿,程军,张瑞智 译.模拟CMOS集成电路设计[M].西安:西安交通大学出版社,2002.12 [10]冼进.Verilog HDL数字控制系统设计实例[M].北京:中国水利出版社,2007 [11]袁文波,张皓,唐振中.FPGA应用开发从实践到提高[M].北京:中国电力出版社,2007 [12]江国强.EDA技术与应用[M].北京:电子工业出版社.2005 [13]夏宇闻. Verilog数字系统设计教程[M].北京:北京航空航天大学出版社. 2003. [14] EDA先锋工作室,吴继华,王诚. Altera FPGA/CPLD设计(初级篇) [M]. 人民邮电出版社. 2005.7 [15] Altera Corporation. Intro to Quartus2(5.0 Edition).Altera. 2005.4 [16] Ulrish Golze. VLSI Chip Design with the Hardware Description Language Verilog. Published by Springer. Feb 1996 [17] EDA先锋工作室,吴继华,王诚. Altera FPGA/CPLD设计(高级篇) [M]. 人民邮电出版社. 2005.7 [18] 褚振勇,翁木云. FPGA设计及应用[M]. 西安电子科技大学出版社. 2002.7 [19] 黄智伟,王彦,陈琼,潘礼,黄松. FPGA系统设计与实践[M].电子工业出版社. 2005.1 附 录 全数字锁相环各个模块的程序文件: 1.数字锁相环的顶层模块 module pll_top (fin,fout,se,clk,reset,enable,Kmode,fin_dac,fout_dac); input fin,clk; //clk时钟100ns(10MHZ) input reset,enable; //reset高电平复位,enable高电平有效 input [2:0]Kmode; //滤波计数器的计数模值设定 output fout; //fout是锁频锁相输出 output [7:0]fin_dac,fout_dac; //fin_dac,fout_dac分别是两个输入输出信号经过数模dac的输出 output se; wire idout,reset,ca,bo; wire [14:0]N; xormy u1(.a(fin),.b(fout),.y(se)); Kcounter u2(.Kclock(clk),.reset(reset),.dnup(se),.enable(enable),.Kmode(Kmode),.carryo(ca),.borrow(bo)); IDCounter u3(.IDclock(clk),.reset(reset),.inc(ca),.dec(bo),.IDout(idout)); counter_N u4(.clk(clk), .fin(fin), .reset(reset), .count_N(N)); div_N u5(.clkin(idout),.n(N),.reset(reset),.clkout(fout)); dac u6(.clk(fin),.dout(fin_dac),.dd()); dac u7(.clk(fout),.dout(fout_dac),.dd()); endmodule 2.异或门鉴相器模块 module xormy(a,b,y);//异或门鉴相器 input a,b; output y; reg y; always @(a or b) begin y=a^b; end endmodule 3.K模计数器模块 module KCounter(Kclock,reset,dnup,enable,Kmode,carryo,borrow); input Kclock; //系统时钟信号 input reset; //全局复位信号,高电平复位 input dnup; //鉴相器输出的加减控制信号 input enable; //可逆计数器计数允许信号,高电平有效 input [2:0]Kmode; //计数器模值设置信号 output carryo; //进位脉冲输出信号 output borrow; //借位脉冲输出信号 wire carryo,borrow; reg [8:0]Count; //可逆计数器 reg [8:0]Ktop; //预设模值寄存器 //根据计数器模值设置信号Kmode来设置预设模值寄存器的值 always @(Kmode) begin case(Kmode) 3'b001:Ktop<=7; 3'b010:Ktop<=15; 3'b011:Ktop<=31; 3'b100:Ktop<=63; 3'b101:Ktop<=127; 3'b110:Ktop<=255; 3'b111:Ktop<=511; default:Ktop<=15; endcase end //根据鉴相器输出的加减控制信号dnup进行可逆计数器的加减运算 always @(posedge Kclock or posedge reset) begin if(reset) Count<=0; else if(enable) begin if(!dnup) begin if(Count==Ktop) Count<=0; else Count<=Count+1; end else begin if(Count==0) Count<=Ktop; else Count<=Count-1; end end end //输出进位脉冲carry和借位脉冲borrow assign carryo=enable&(!dnup)&(Count==Ktop); assign borrow=enable&dnup&(Count==0); endmodule 4.脉冲增减模块 module IDCounter (IDclock,reset,inc,dec,IDout);//脉冲增减模块 input IDclock,reset,inc,dec; output IDout; reg IDout; reg inc_new,dec_new,inc_pulse,dec_pulse; reg delayed,advanced,Tff; always @(posedge IDclock) begin if(!inc) begin inc_new<=1; inc_pulse<=0; end else if (inc_pulse) begin inc_new<=0; inc_pulse<=0; end else if (inc&&inc_new) begin inc_pulse<=1; inc_new<=0; end else begin inc_pulse<=0; inc_new<=0; end end always @(posedge IDclock) begin if(!dec) begin dec_new<=1; dec_pulse<=0; end else if (dec_pulse) begin dec_new<=0; dec_pulse<=0; end else if (dec&&dec_new) begin dec_pulse<=1; dec_new<=0; end else begin dec_pulse<=0; dec_new<=0; end end always@(posedge IDclock) begin if (reset) begin Tff<=0; delayed<=1;advanced<=1; end else begin if (inc_pulse) begin advanced<=1;Tff<=!Tff; end else if(dec_pulse) begin delayed<=1; Tff<=!Tff; end else if (Tff==0) begin if(!advanced) Tff<=!Tff; else if(advanced) begin Tff<=Tff; advanced<=0; end end else begin if (!delayed) Tff<=!Tff; else if(delayed) begin Tff<=Tff;delayed<=0; end end end end always @(IDclock or Tff) begin if (Tff) IDout=0; else begin if(IDclock) IDout=0; else IDout=1; end end endmodule 5.N分频参数控制模块 module counter_N (clk, fin, reset, count_N);//利用clk对fin脉冲的测量并给出N值 input clk, fin, reset; output [14:0] count_N; reg [14:0] count_N; reg [15:0] cnt; reg cnt_en; reg load; wire cnt_clr; always @ (posedge fin )//fin上升沿到的时候,产生各种标志以便后面控制 begin if (reset) begin cnt_en=0; load=1; end else begin cnt_en=~cnt_en; load=~cnt_en; end end assign cnt_clr=~(~fin & load); always @(posedge clk or negedge cnt_clr) begin if (!cnt_clr) cnt=0; else if (cnt_en) begin if (cnt==65536) cnt=0; else cnt=cnt+1; end end always @ (posedge load) begin count_N=cnt/2; //这里取fin周期的一半 end endmodule 6.N分频器模块 module div_N (clkin,n,reset,clkout); //N分频模块 input clkin,reset; input [14:0] n; output clkout; reg clkout; integer count; always@(posedge clkin) if(reset) begin clkout=0; count=0; end else begin if(count>=(n/2)-1) begin clkout<=~clkout;count<=0;end else count<=count+1;
本文档为【全数字锁相环设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_381079
暂无简介~
格式:doc
大小:443KB
软件:Word
页数:31
分类:工学
上传时间:2012-04-21
浏览量:32