用VHDL语言设计延时电路
时间:02-09 11:13 阅读:3204次
*温馨提示:点击图片可以放大观看高清大图
简介:用VHDL语言设计延时电路时一般用计数器或计数器的级联来实现。下面以一个实例来说明如何实现任意时间量的延时。
在5 MHz时钟CLK控制下对同步信号SYNC进行N延时(SYNC脉冲宽度为2 μs,脉冲重复频率为1 kHz;0μs≤N≤998 μs)。要求每次在同步脉冲上升沿到来时开始延时,并在延时结束后产生宽度为10 μs的选通信号。
需要产生的延时时序如图2所示(延时量N=4.2μs)。
这里采用3个计数器和1个或门产生上述延时信号,如图3所示,模N计数器计延时量;模50计数器计选通信号的宽度;模N+50计数器用于产生使能信号。用VHDL硬件描述语言进行硬件电路设计时,同一个进程中不能用2个时钟来触发,而时序图中又要求在同步脉冲SYNC的上升沿开始延时,为了解决这一问题,采用了模N+50计数器和1个或门。
当同步脉冲为高电平时,模N计数器和模N+50计数器开始计数,并置dly_en为高电平。模N计数器满,置dly_enl为高电平同时产生选通信号。当模N+50计数器计满即选通信号产生完之后置dly_en为低电平。当下一个同步脉冲到来时重复以上过程。这种设计电路的好处是当同步脉冲的宽度改变时对时序控制并无影响,因为在计数过程中只用了SYNC的上升沿,从延时开始到选通信号结束,在或门的作用下SYNC对计数器不起控制作用。
上述电路的VHDL程序如下:
该程序选择N=20,即延时量是4.2 μs,由于要使用时钟来判断SYNC的上升沿情况,因此,如果令N=0,产生的delay信号仍然会有1个时钟的固有延时,在计算延时量时应充分考虑到这一点,延时量=(N+1)×时钟周期。