2 设计原理
笔者设计的数控延时器采用3个串联计数器来实现。由于在触发脉冲TRIG的上升沿开始延时,使用时钟的上升沿计数,考虑到VHDL对时钟描述的限制,设计采用计数器1产生同步脉冲SYNC,宽度为Tclk,利用SYNC的高电平触发cflag,并在延时结束后cflag清零;计数器2计算延时的长度;计数器3计算所要产生的输出脉冲OUTPUT的脉宽,并在计数结束时对计数器2和计数器3清零。延时器的外部接口电路如图1所示,原理框图如图2所示。整个电路的设计采用同步时钟计数以尽量减少因局部时钟不稳定所产生的毛刺和竞争冒险。
|
该数控延时器低电平时锁存数据,高电平时改变内部寄存器的数值(与AD9501型数控延时器的数据锁存端电平相反)。一般情况下,触发脉冲与时钟的上升沿是一致的,如果输入的触发脉冲与时钟不一致.则整个电路的延时将产生一定的误差。时序仿真如图3所示,延时量由dlyLH为高电平时数据总线data8上的数据决定。
3.1 延时范围小于触发脉冲周期
这种情况只需增加数据输入端的位数,不过一般情况下,数据输入端位数是固定的,这时可以在FPGA的内部定义多位的数据寄存器。以延时范围为224*Tclk为例,在FPGA内部定义24位的数据寄存器,并定义3条地址线dlyLH1、dlyLH2和dlyLH3,通过8位数据总线分3次向数据寄存器送数,送数时间应在前一脉冲延时结束之后与下一脉冲到来之前。数据送入寄存器的程序如下:
4 延时误差分析
以延时范围小于触发脉冲周期为例,分析固定延时及延时误差。
该延时器在Muxplus II环境下从输入时钟Tclk到dlytrig的延时为8.2 ns;产生SYNC的宽度为Tclk。因此在触发脉冲上升沿与时钟信号上升沿对时.该延时电路的固有延时为8.2 ns+2Tclk。但一般情况下.触发脉冲的上升沿与时钟的上升沿并不是一致的,根据二者之间的关系可知,最大延时误差T满足:0<T<Tclk.时钟的频率越高,则产生的延时误差就越小。
由于该数控延时器使用时钟来计数,因此延时量只能为Tclk的整数倍。如果设计者希望有更精确的延时.可以在设计的基础上外加一片AD9501,该器件的延时可以精确到(Ttotal+Td)×1/28,其中Ttotal是AD9501的总延时,Td是AD9501的固有延时。
5 结束语
本文详细介绍了利用VHDL硬件描述语言结合FPGA设计一种数控延时器的方法,讨论了延时范围,分析了延时误差,该延时器的设计旨在和DSP相结合实现对延时信号的处理。随着EDA技术的飞速发展。使用硬件描述语言设计FPGA是电子设计人员应该掌握的一门技术。同时,将DSP和FPGA技术相结合是进行数字信号处理的一种趋势。