一种基于FPGA的新型位同步时钟提取方案及实现摘要:关键词:位同步,锁相环,FPGA,异步串行码流1引言:同步技术在数字通信系统中,是非常重要的技术。位同步是最基本的同步。位同步时钟信号不仅用于对输入码元信号的监测保证收发同步,而且在对获取祯同步,群同步及对接收的数字码元进行各种处理过程中也为系统提供了一个基准的同步时钟。随着现代电子技术的发展,数字系统趋于模块化,小型化,芯片华,因此如何实现同步系统的模块化和芯片化是急需解决的问题。在数字通信中,通常直接从接收到的数字信号中提取位同步信号,这种直接法按其提取同步信号的方式,大致可分为滤波法和锁相法。锁相法是指利用锁相环来提取位同步信号的方法,本设计方案就是基于锁相环的位同步提取方法,能够比较快速地提取位同步时钟,并且设计简单,方便修改参数。采用QuartusII设计软件对系统进行了仿真试验,并用Altera的CycloneII系列FPGA芯片Ep2c5予以实现。2位同步时钟提取方案的原理本文设计的方案可以从异步串行码流中提取位同步时钟信号,设计思想的基本出发点是在外部码流(code_in)的上升沿和本地时钟(clk)上跳沿相比较无非两种情况,如图1和图2所示:图1码流滞后于本地时钟△T示意图图2码流超前于本地时钟△T示意图从码流上跳沿的角度来看,若将码流code_in与本地时钟clk进行逻辑相与,若相与结果为“1”则说明码流滞后于本地时钟,若为“0”则说明码流超前于本地时钟。用VHDL语言描述为:if(code_in’eventandcode_in=’1’)thenif(code_inandclk)=’1’thenq=’1’elseq=’0’endifendif程序中输出信号q可作为控制电路的输入信号。本设计方案的系统框图如图3所示:框图中,鉴相器作用是鉴别出码流和本地时钟的相位超前滞后关系,控制计数器采用双向计数器,鉴相器输出q作为控制计数器的计数方向输入,q为1则向上计数,q为0则向下计数。控制计数器的计数输出用来控制相位调整选择模块的选择端。相位调整选择模块由相位调整和相位选择功能。图3系统功能框图3设计实现依据图3系统功能框图,利用Altera公司的QuartusII设计软件,采用自顶向下的模块化设计方法,用VHDL语言和电路原理图混合输入设计对位同步时钟提取电路的各个部件分别进行设计。本设计方案的鉴相器原理相对简单,不需要用VHDL语言设计,仅用两个与门和一个D触发器就可以实现,如图4所示。图中的的第二个与门(inst23)是为了实现D触发器的时钟输入端与数据输入端同步。控制计数器设计使用QuartusII的MegaWizardPlug_InManager工具来实现一个简单的双向数器,计数方向由鉴相器输出q控制,q为1则计数器向上计数,q为0则计数器向下计数,计数系数由CountModulus设定,设定的数值要求等于分频器的分频系数N。在原理图输入时可以任意改变分频器的分频系数和计数器的计数系数。分频器设计输出时钟信号的占空比为50%,且分频系数N可调,用VHDL语言实现并由软件自动生成元件符号供原理图调用,如图5所示。下面给出分频器的VHDL语言关键描述语句if(clk'eventandclk='1')thenif(count=N-1)then--计数周期count=0;elsecount=count+1;ifcount(integer(N/2))then--产生分频脉冲outclk='0';elseoutclk='1';endif;endif;endif;相位调整选择模块的相位调整功能可以用延迟方式实现。在FPGA中要产生延时,信号必须经过一定的物理资源。在硬件描述语言中有关键词Waitforxxns,需要说明的是该语法是仅仅用于仿真而不能用于综合的,可综合的延时方法有:(1)使信号经过逻辑门得到延时(如非门);(2)使用器件提供的延时单元(如Altera公司的LCELL);(3)使用移位寄存器。由于当使用多级非门的时候综合器往往会将其优化掉,因为综合器会认为一个信号非两次还是它自己,而且门延迟时间相对于具体器件是不固定的,LCELL延时单元也可以用来产生一定的延时,但这样形成的延时在FPGA芯片中并不稳定,会随温度等外部环境的改变而改变,并且门延迟和LCELL延迟时间都无法实现用户动态调整,不利于移植和调用,因此本设计的延迟采用由D触发器构成的移位寄存器实现,如图6所示,移位寄存器时钟输入端为内部时钟Clk_n,移位数据输入端为Clk_n的分频输出Clk1,如果Clk_n的频率为f0,分频器分频系数为N,则Clk1的频率为N×f0,并要求其等于Clk的频率即:f=N×f0。相位调整选择模块的单位延迟时间决定了设计的时钟提取电路的精度。单位延迟时间由内部时钟Clk_n决定,单位延迟时间为移位寄存器发生一次移位的时间也就是D触发器的触发时钟周期即为t=1/f0。位同步时钟锁定时间由内部时钟Clk_n和分频器的分频系数N决定,显然Clk1最多经过N-1次移位时才可以与码流时钟锁定,则最大锁定时间为(N-1)/f0;Clk1最少经过1次移位就可以与码流时钟锁定,所以位同步时钟最小锁定时间为1/f0。相位调整选择模块的相位选择功能由多选一多路选择器实现,对应图4的10位的移位寄存器,可以采用图6所示的10选1多路选择器Mux10to1。多路选择器的多选一选择端输入由双向计数器的计数输出端qn提供。另外,Mux10to1输出端连接D触发器目的是为了消除毛刺。此触发器的输出信号就是位同步时钟提取的输出信号,当然,作为一个锁相环结构的位同步提取电路,这个时钟信号会作为反馈引入鉴相器的输入端,与输入码流进行相与鉴相。下面给出仿真波形,器件选择为Altera的CycloneII系列FPGA芯片Ep2c5,内部时钟为200MHz,码流时钟为20MHz,分频系数和计数系数都选择为10。4本设计方案性能本位同步提取电路比通常广泛采用的锁相环路法,有如下有点:(1)本设计并没有应用复杂的算法实现锁相功能,也没有采用传统的添扣们结构,电路结构简单易懂,节省硬件资源,占用器件资源情况如下:DeviceEP2C5Q208C8Totallogicelements71/4,608(2%)Totalregisters49Totalpins3/142(2%)Totalvirtualpins0Totalmemorybits0/119,808(0%)EmbeddedMultiplier9-bitelements0/26(0%)TotalPlls0/2(0%)(2)本设计位同步时钟锁定时间较短,速度比较快(由设计时钟选择决定)。(3)精度较高,并具有可调整性,时钟抖噪参数可以通过改变分频器分频系数和计数器计数系数调整,并可以实现频率很宽范围的码流的位同步时钟提取,因而本设计方案可以生成元件符号在各种FPGA芯片和部分CPLD芯片设计中调用,节省用户设计时间,缩短设计周期,具有很高的商用价值。5结束语本位同步时钟提取方案已经成功的用FPGA器件进行了实现,并在作者设计的数字通信系统中得到应用。通过对此电路的测试和使用表明,此时钟提取电路可以快速准确地对高速串行输入码流进行位同步时钟提取,即使输入码流中的毛刺现象,本设计电路也有很好的时钟调整恢复功能,极大的减小了误码率。由于本设计简单占有硬件资源少,因为可以同时调用多个时钟提取电路来提取多路同时输入的不同速度的串行码流的同步时钟,为下一步的数字复接提供了方便。参考文献[1]廖日坤,CPLD/FPGA嵌入式应用开发技术白金手册,中国电力出版社,2005[2]陈世伟,锁相环路原理及应用,兵器工业出版社,1990[3]段吉海,黄志伟,王毓银,基于CPLD/FPGA的数字通信系统建模与设计,2004