原创 vhdl写半整数分频器的困惑

2011-3-18 16:33 2638 6 7 分类: FPGA/CPLD

vhdl写半整数分频器的困惑


   项目中遇到pll资源不够,要做出2.5分频器,在网上找了一些资料,基本步骤为先用输入时钟做出占空比为50%的5分频,把这个时钟与输入时钟异或得到计数脉冲。


  首先,分别用输入时钟上升沿和下降沿触发,做出占空比为40%的5分频(如图1中的clk1和clk2),再将这两个时钟取或门,便得到占空比为50%的5分频p_clk。


  然后,将p_clk与输入时钟取异或逻辑,得到l_clk。


  最后根据l_clk的上升沿计数(如图1),0时取低电平,1和2时取高电平,的到占空比为20%的2.5分频。


aa3bc73a-51f4-478f-aff6-27f16896986a.JPG



                           图1


图1是我用功能仿真得到的波形图,从最终输出来看,确实是实现了2.5分频,并且占空比可调,但是如图中所示,cnt_3是在l_clk的上升沿计数,可是由2返回到0时并没有出现上升沿,让人很郁闷。我把代码看了好多遍,也找不出端倪来。回宿舍的路上想是不是由于异或门电路clk_in也就是输入时钟在作怪,可是第二天把输入时钟反向后,让它的下降沿对准2到0的转换处,可也能够实现2.5分频。


后来就想看看代码的timing仿真,一看结果就出来了,延时,都是延时惹的祸!


图1中,clk_in和p_clk去异或,在2的部分,两者同为低,到0是两者同为高(或者相反),取异或后l_clk一直为低电平。再看图2中,由于延时(约为3/4个周期)的关系,使得p_clk不能与输入时钟同时变化,在2到0转换时产生了上升沿。


 6bd6dbdc-1fef-4d5c-a2e4-0b1f84c07b4d.JPG


问题解决了,可真是佩服设计者,怎么想到利用延时来做文章!



 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1603884 2011-6-18 14:48

你好,你也在做CCD图像处理吗,很希望和你交流 我的QQ744079978
相关推荐阅读
用户309466 2011-04-18 16:06
CCD驱动时序3 ——总结
CCD驱动时序3 ——总结        1动手写代码之前最好把整个过程考虑清楚,不然绝对会遇到各种返工重写,很痛苦。          2 一定要多与团队沟通由于自己与项目组里的师兄沟通不够,没考虑...
用户309466 2011-04-18 16:01
CCD驱动时序
CCD驱动时序       上周开始接连拿到两个项目任务,还好都是写CCD的驱动,一个星期时间终于把两份文档读完,明天开始着手写VHDL,趁着晚上,总结一下。       CCD驱动程序分为3个部分,...
用户309466 2011-04-18 16:00
CCD驱动时序2 ——AD9945
               CCD驱动时序2 ——AD9945               AD9945最大支持40M,12bit的AD转换,上图是手册中给出的典型系统应用图。在项目中,CCD分4路...
用户309466 2011-03-20 22:46
江心洲徒步
江心洲徒步         春天,一直想去江边走走,看看油菜花,在网上看了一些线路后选择了江心洲,写下路线和一些建议,也算是技术文章吧!         南京地铁奥体中心下后直接乘134路到棉花堤站下...
我要评论
1
6
关闭 站长推荐上一条 /3 下一条