您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术基于FPGA/CPLD的常见模块设计案例 正文
基于FPGA/CPLD的常见模块设计案例

基于FPGA/CPLD的常见模块设计案例

点击数:7908 次   录入时间:03-04 12:02:19   整理:http://www.55dianzi.com   DSP/FPGA技术

    一、智能全数字锁相环的设计

    1 引言

    数字锁相环路已在数字通信、无线电电子学及电力系统自动化等领域中得到了极为广泛的应用。随着集成电路技术的发展,不仅能够制成频率较高的单片集成锁相环路,而且可以把整个系统集成到一个芯片上去。在基于FPGA的通信电路中,可以把全数字锁相环路作为一个功能模块嵌入FPGA中,构成片内锁相环。

    锁相环是一个相位误差控制系统。它比较输入信号和振荡器输出信号之间的相位差,从而产生误差控制信号来调整振荡器的频率,以达到与输入信号同频同相。所谓全数字锁相环路(DPLL)就是环路部件全部数字化,采用数字鉴相器(DPD)、数字环路滤波器(DLF)、数控振荡器(DCO)构成的锁相环路,其组成框图见图1示。

    当锁相环中的鉴相器与数控振荡器选定后,锁相环的性能很大程度依赖于数字环路滤波器的参数设置。

    2 K计数器的参数设置

    74297中的环路滤波器采用了K计数器。其功能就是对相位误差序列计数即滤波,并输出相应的进位脉冲或是借位脉冲,来调整I/D数控振荡器输出信号的相位(或频率),从而实现相位控制和锁定。

    K计数器中K值的选取需要由四根控制线来进行控制,模值是2的N次幂。在锁相环路同步的状态下,鉴相器既没有超前脉冲也没有滞后脉冲输出,所以K计数器通常是没有输出的;这就大大减少了由噪声引起的对锁相环路的误控作用。也就是说,K计数器作为滤波器,有效地滤除了噪声对环路的干扰作用。

    显然,设计中适当选取K值是很重要的。K值取得大,对抑止噪声有利(因为K值大,计数器对少量的噪声干扰不可能计满,所以不会有进位或借位脉冲输出),但这样捕捉带变小,而且加大了环路进入锁定状态的时间。反之,K值取得小,可以加速环路的入锁,但K计数器会频繁地产生进位或借位脉冲,从而导致了相位抖动,相应地对噪声的抑制能力也随之降低。

    为了平衡锁定时间与相位抖动之间的矛盾,理想的情况是当数字锁相环处于失步状态时,降低K计数器的设置,反之加大其设置。实现的前提是检测锁相环的工作状态。

    3 工作状态检测电路

    图2为锁相环状态检测电路,由触发器与单稳态振荡器构成,fin为输入的参考时钟,fout为锁相环振荡器输出的时钟移相900。fout对fin的抽样送入单稳态振荡器。

  

  

      在锁定状态如图3,fout与fin具有稳定的相位关系, fout对fin抽样应全部为0或1,这样不会激发振荡器振荡,从而LOCk将输出低电平;而失锁状态时如图4,fout与fin出现相位之间的滑动,抽样时就不会出现长时间的0或1,单稳态振荡器振荡,使lock输出高电平。锁相环的锁定状态保持时间的认定,可以通过设置振荡器的性能。在FPGA设计中,要采用片外元件来进行单稳定时,是很麻烦的,而且也不利于集成和代码移植。单稳态振荡器的实现也可以在FPGA内实现,利用计数器的方法可以设计全数字化的上升、下降沿双向触发的可重触发单稳态振荡器。

  

      4 智能锁相环的设计

    智能全数字锁相环的设计如图5所示。锁相环与CPU接口电路,由寄存器来完成。对于CPU寄存器内容分为两部分:锁相环的工作状态(只读),k计数器的参数值(读/写)。CPU可以通过外部总线读写寄存器的内容。

    图5 智能全数字锁相环框图

    CPU根据锁相环状态就可以对锁相环K计数器进行最优设置。实际测试时设置K初始值为23,此时锁相环的捕捉带较大,在很短时间内就可以达到锁定状态,lock变为低电平。CPU检测到此信号后自动将K值加1,如lock仍然为低电平,CPU会继续增加K 值;直到锁相环失锁,记住其最佳设置值。设置K为初始值,锁定后,设置到最佳值,这样锁相会快速进入最佳的锁定状态。

    关于CPU的选择有三种方案:①FPGA片内实现CPU。片上系统的发展使其成为可能。②与片外系统共用CPU。DPLL大多用于通信系统中,而大部分通信系统都有嵌入式CPU。③单独采用一个廉价单片机(如89C51),不仅可用于智能锁相环的控制,还可控制外部RAM实现FPGA的初始装载,一机多用,经济实惠。可以视具体情况而定。

    5 结论

    智能全数字锁相环,在单片FPGA中就可以实现,借助锁相环状态监测电路,通过CPU可以缩短锁相环锁定时间,并逐渐改进其输出频率的抖动特性。解决了锁定时间与相位抖动之间的矛盾,对信息的传输质量都有很大的提高。此锁相环已用于我校研发的数字通信产品中。

    二、使用PLD内部锁相环解决系统设计难题

    微电子技术的发展趋势是片上系统(SoC),也就是在一块芯片上实现整个系统,包括模拟部分和数字部分。作为IC产业中重要的一个分支,可编程逻辑器件(PLD)也在努力向这个方向发展。无论是Xilinx还是ALTEra,它们最新的PLD产品中都集成了诸如PCI接口、乘法器、MCU核以及DSP核等部件,有的甚至集成了完整的微处理器。例如,Xlinux的Vietex2-Pro系列就是集成了PowerPC微处理器。

    锁相环技术是模拟集成电路设计中一个重要的研究方向。但是,现在中高档的可编程逻辑器件一般都集成有片内的锁相环(如Xilinx的Spartan2系列,Altera的Cyclone系列)。锁相环一端连接外部全局时钟或者全局控制信号,另一端连接可编程逻辑器件内部专门的布线网络,可以最大程度地减少全局时钟信号到片内各个部分的布线延迟,有效地消除了时钟偏移而带一的各种问题。同时,锁相环一般都提供了倍频、分频、相移三个功能。

    1 应用背景介绍

    本文用FPGA实现FIFO,连接PCI与TI的TMS320C6204的扩展总线,与DSP传输数据的时钟达到100MHz。由于DSP的接口对于时钟和信号的要求很苛刻,所以下面具体分析核心的DSP的XBUS时序。

    DSP的扩展总线(XBUS)是一个32位宽的总线,支持与异步外设、异步/同步FIFO、PCI桥以及外部主控处理器等的接口。它同时提供一个灵活的总线仲裁机制,可以内部进行仲裁,也可以由外部逻辑完成。

    本文中使用XBUS的同步FIFO接口。如果是要读取FIFO,首先FIFO要通过中断信号XINT0来通知XBUS数据已经准备好,然后XBUS响应XCE0、XRE、XOE有效,就开始读取FIFO中的数据,读FIFO的时序如图1所示;如果是要写FIFO,FIFO通过XINT1申请XBUS,然后XBUS响应XCE1、XWE有效,开始一个写FIFO的DMA传输过程,写FIFO的时序如图2所示。

    通过分析XBUS读写FIFO的时序关系可以看出,在FIFO实现的过程中需要注意以下几个地方:

    ①XBUS工作时钟是100MHz,对于大部分的FPGA来说是一个比较高的频率。而且,由于读出的数据要求一定的建立时间(setup time)和保持时间(hold time),这就对内部逻辑的设计提出了较高的要求。

    ②读FIFO时,必须在使能信号有效之后的第二个时钟周期就把数据输出。对于FIFO内部的双端口RAM来说,这个实现起来不一定能满足要求(有很多RAM是在使能信号只有的3~5个时钟周期才输出数据的)。这样,通用FIFO中就要考虑产生预读逻辑来产生数据,以满足XBUS严格的时序要求。

    ③XBUS的使能信号XCE0/XCE1/XRE/XOE/XWE的变化时间范围是在时钟有效之后的1~7ns,考虑到FPGA内部的组合逻辑延时和布线延时,这样对有效信号的锁定可能是不稳定的。这就为逻辑设计带来了很大的难度。

    2 锁相环的相移功能

    系统时钟是100MHz,为了获得更好的布线效果和系统性能,时钟信号必须经过锁相环到达全局时钟布线网络。同时,锁相环还可以提供多个时钟相移的信号,同样可以连接到全局布线网络来驱动片的时钟信号。以Xilinx公司的SPARTAN2系列芯片为例(Altera的Cyclone或者更高级别的系列也提供了类似的锁相环),使用片内锁相环进行时钟相移。

    相移以后的时钟对于系统设计有很大的用处。本文利用了相移以后的时钟解决了系统设计中的两个难点,取得了令人满意的效果:

    ①用PLL解决使能信号漂移的难题;

[1] [2]  下一页


本文关键字:暂无联系方式DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术