微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 点5分频实现

点5分频实现

时间:10-02 整理:3721RD 点击:

奇数、偶数50%占空比分频很容易,点5分频是处理小数分频,比如3.5,7.5,23.5等,相比整数分频稍微复杂一点

  1. module Divclkp5(clk,tg_clk,rst);
  2. input clk,rst;
  3. output tg_clk;
  4. reg tg_clk;
  5. reg[23:0]counter,counter2;
  6. wire clk1;
  7. reg temp_tgp;

  8. parameter countN=11;        //(2n+1)/2=clkin/clkout N=2n+1,n>=2

  9. always@(posedge clk or posedge rst)
  10. begin
  11.         if(rst)
  12.         counter<=24'b0;
  13.         else if(counter>(countN-2))
  14.         counter<=24'b0;
  15.         else
  16.         counter<=counter+1'b1;
  17. end

  18. //(countN-1)/2:(countN+1)/2
  19. always@(*)
  20. begin
  21.                 if(counter>(countN-3)/2)//counter odd
  22.                 temp_tgp<=1'b0;
  23.                 else
  24.                 temp_tgp<=1'b1;
  25. end
  26. //new clk
  27. assign clk1=clk^temp_tgp;

  28. //repeat count
  29. always@(posedge clk1 or posedge rst)
  30. begin
  31.         if(rst)
  32.         counter2<=24'b0;
  33.         else if(counter2>(countN-3)/2)
  34.         counter2<=24'b0;
  35.         else
  36.         counter2<=counter2+1'b1;
  37. end

  38. //注意Duty的调整,这里绝不会出现50%的情况
  39. //if N<9 <--(countN-5)/2) else <--(countN-1)/4
  40. always@(*)
  41. begin
  42.   if(countN<9)
  43.     begin
  44.                 if(counter2>(countN-5)/2)
  45.                 tg_clk<=1'b0;
  46.                 else
  47.                 tg_clk<=1'b1;
  48.                 end
  49.         else
  50.           begin
  51.                 if(counter2>(countN-1)/4)
  52.                 tg_clk<=1'b0;
  53.                 else
  54.                 tg_clk<=1'b1;
  55.                 end
  56. end
  57. endmodule

复制代码



首先将分频数*2进行奇数分频,不需要占空比为50%,然后与原时钟xor得到新时钟,再用新时钟重计数
最后再来调整占空比




貌似1.5分频不适用,大家可以多多发言

没看懂啊,为啥占空比是50,仿真结果不是6:5 么?

谢谢小编!好东西!



   这位仁兄,我已强调.5分频是不存在占空比为50%的,占空比为一个周期内高电平所占比,计算为:Th/T,图中所示为3/5.5

之前也学过分数级的分频,但是不知道这种分频的实际用途是什么呢?求高手指点



   我也没遇到过,就单独分频讲部分分频至少精确一点吧



   那1.5分频的怎么写呢

请教下,有什么用吗?
直觉这样的时钟关系就是后端的噩梦,一般不会用的。



   看代码n=1



   我也不怎么用,只是一个想法。有时,想法是没有卵用的

小数分频是某些工程的基础,特别是一些特殊的锁相环处理,做时钟的常用!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top