完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
微电子技术的持续发展使得FPGA具有更高的系统集成度和工作频率。系统性能较大程度上决定于系统的时钟延迟和偏斜。由于FPGA具有丰富的可编程逻辑资源及时钟网络,随之而来的时钟延迟问题使得用户设计的性能大打折扣。FPGA中的DLL模块可提供零传播延时,消除时钟偏斜,从而进一步提高了FPGA的性能和设计的灵活性。
PLL是常用的时钟管理电路,主要是基于模拟电路设计实现的,而DLL主要是基于数字电路设计实现的。虽然在时钟综合能力上比PLL差,但由于具有设计仿真周期短,抗干扰性强,以及工艺可移植等特点,DLL非常适合在数字系统架构中使用,这也是FPGA采用DLL作为时钟管理的原因。文中将介绍传统FPGA片内延时锁相环设计,并在此基础上提出具有更快锁定速度的新延时锁相环架构OSDLL。 1 FPGA片内DLL结构及工作原理 1.1 DLL架构设计 图1为FPGA片内DLL结构框图。图1中FPGA片内用户设计的时序逻辑部分在布局布线后,位于芯片中部,相应的时钟走线较长。为缓解时钟缓冲、重负载时钟线的大电容、线路的传播延时等因素造成的时钟偏斜,可以选择使用DLL模块进行时钟优化管理。 图1中,DLL主要由鉴相器(PD)、可调延时链、数字控制逻辑以及时钟生成模块组成。CLKOUT为DLL输出时钟,即时钟生成模块的输出时钟;CLKS为经过时钟线后到达时序电路的偏斜时钟;CLKFB即为CIKS,反馈时钟CLKFB反馈回DLL。DLL的功能为通过在时域中调节CLKOUT的相位使得CLKFB与CLKIN同步,即消除时钟偏斜。 1.2 DLL工作原理 DLL的工作过程依赖于控制逻辑的设计。DLL的控制逻辑主要包括SHIFT控制逻辑和SYN控制逻辑两部分,如图2所示。DLL的工作过程首先进行SHIFT阶段,之后进行SYN阶段。 从图2可见,可调延时链共5条,即一条主可调延时链(延时链0,256个延时单元),4条子可调延时链(延时链1~4,各128个延时单元)。如图2所示,4条子延时链,SHIFT逻辑和一个鉴相器(PD2)构成相移器。SHIFT阶段,相移器工作。相移器采集第一级子延时链的输入时钟clk_ph_0和最后一级延时链的输出时钟clk_ph_360,根据鉴相结果同步调整4条子可调延时链的延时,直至clk_ph_O和clk_ph_360同步。经过相移器的时钟延时是一个周期,从而使得时钟经过相移器中的每个子延时链的输出时钟相移90°,对应图2中分别为clk_ph_O,clk_ph_90,clk_ph_180,clk_ph_270,clk_ph_360。这些相移的时钟可以根据实际的需要由时钟生成模块产生所需要分频(CLKDV),倍频(CIK2X)或移相时钟作为输出时钟,关于分频和倍频电路,如文献。SYN逻辑用于控制将反馈时钟和输入时钟调整至同步。 整个SHIFT阶段和SYN阶段都是在各自的控制逻辑模块控制下工作的,以一定的工作节拍实施调整,如图3所示。 图2中工作节拍模块生成工作节拍信号(SHIFT_C,SYN_C)。在工作节拍下,状态机处于某一状态,则根据状态的调整要求依次进行如下操作:鉴相,判断出输入时钟和反馈时钟的相位关系为超前或滞后(SHT_U_D)或SYN_U_D),同时还可以指示两时钟是否进入锁定窗(SHT_WIN,SYN_WIN),如图l所示。鉴相器将这些信息送入控制逻辑模块,在SHIFT阶段,4条延时链对应各自的可逆计数器,负责控制延时链加减延时单元,各计数器工作在自己的时钟域中,如图2所示。根据鉴相的结果和所处的状态机状态,计数器进行计数,计数结果作为延时链的译码地址,最后延时链经过地址译码增加/减少一个延时单元,完成一次工作节拍调节,继而继续进行下一次调整,直到状态机进入锁定状态为止。SYN阶段工作方式类似,但只对主延时链进行调整。实现DLL锁定,同步建立需满足公式,如式(1)所示。 DSYN+SKEW=mult(P) (1) 式中,DSYN为主延时链可以提供的延时;SKEW为时钟偏斜;muh(P)为整数个输入时钟周期。 1.3 抗抖动设计 如图2所示,控制逻辑中JF counter1和JF counter2功能模块。用户可以设置抗抖动数值d1,d2,如图1所示,从而对这两个模块中的计数器设定一个计数周期。在DLL锁定之后这两个模块开始工作,按照计数设定值的周期性对锁定后的时钟进行检测。即在计数器达到设定值时,对锁定后的反馈时钟和输入时钟进行鉴相,判断相位关系,控制可逆计数器对锁定后的时钟进行周期性微调干预。如图4所示,在系统内存在干扰时,会产生时钟抖动,若抗抖动模块工作检测到反馈时钟超前于输入时钟,则进行一次微调,消除抖动的影响。抗抖动设计有助于减少抖动的影响。同时由于计数周期可设,使得用户可以在不同系统工作环境下,采用不同的抗抖动设定值,以达到最优的防抖效果。 2 OSDLL架构设计 以上介绍的是传统DLL架构下的设计,其具有设计周期相对较短、工艺可移植、抗干扰能力强等特点。由于其控制逻辑的工作特点,从复位状态开始,延时链复位至O,即可逆计数器从0开始计数。DLL按照工作节拍信号,一拍一拍地进行调整(假设6周期一节拍),当输入时钟频率较低或者时钟相差较大时,其锁定时间将大大增加。取任何固定值作为延时链的复位值,同样存在某一频率段锁定时间较长的问题。 针对这一问题,采用one-shot延时计算机制,即完成SHIFT阶段后首先利用主延时链来计算反馈时OSDLL的特点是复用传统DLL的延时链,one-shot译码逻辑相对简单,没有过多地增加硬件开销,同时保持原DLL架构的优点,在多频段都能够提高锁定速度,频率适应性强。与传统DLL的锁定时间比较,如图6所示。图6中纵坐标代表锁定时间,横坐标代表仿真频率,百分数表示锁定时间相差的比钟上升沿和输入时钟上升沿之间的相位差值(假设有效沿是上升沿),这个延时值以延时单元的数目来表征。将计算后的结果作为SYN逻辑中的可逆计数器0的初值,如图2所示,经过译码后使得主延时链具有一个合理的延时初值。然后DLL进入SYN阶段,按照上述的过程进行同步调整。由于大部分的相差在one-shot计算结果付给可逆计数器时已经消失,DLL只需经过很短的调整周期即可达到同步。这种结构的DLL,称之为OSDLL。 本设计进行one-shot计算时复用主延时链,如图5为one-shot结构,SHIFT阶段完成后在one-shot控制逻辑的控制下首先将图中的开关转向1。主延时链取8个延时单元为一个one-shot延时计算单元,这样可以简化译码电路的规模,同时可以计算出一个合理的延时粗略值,达到硬件增加和功能实现的折中。one-shot工作时首先对主延时链进行复位。然后发出START信号,START信号上升沿同CLKFB同步,STOP信号上升沿同CLKIN同步,START(上升沿后为恒“1”)信号送入延时链的输入端,每个延时计算单元的输出端作为译码器的译码输入,STOP为译码器的采样信号。由于延时单元具有一定的延时值所以,STOP信号有效时,译码电路将采集到“11110…000”的一串译码输入值。通过译码电路计算出其中“l”的个数,从而计算出两时钟沿之间的延时单元数目。将计算好的延时单元数目DELAY_NUM送入数字控制模块的可逆计数器0,如图2所示。开关转向0,CLKIN输入至延时链,启动SYN阶段,开始工作。例,可见在各个频率段,OSDLL都能够明显的降低锁定时间。 基于SMIC O.25 μm工艺,设计OSDLL测试芯片。OSDLL的工作频率在20~200 MHz之间,工作电压为2.5 V。图7为版图,图8为版图后仿真结果。 3 结束语 介绍了DLL架构和工作原理,并基于原DLL结构,加入快速锁定one-shot模块。新的DLL结构OSDLL在提高DLL锁定速度的基础上,没有过多的增加硬件资源,保持了原DLL的时钟综合能力和抗抖动功能。在SMIC 0.25μm工艺下,设计完成OSDLL测试芯片,其工作频率在20~200 MHz之间,锁定时间比传统架构大幅降低。OSDLL架构集成于FPGA芯片内,可有效地优化设计时序,加强系统性能。 |
|
|
|
只有小组成员才能发言,加入小组>>
702 浏览 0 评论
1111 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2654 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
785浏览 6评论
632浏览 5评论
672浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 13:16 , Processed in 1.046965 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号