在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: songzijian87

[求助] 关于奇数分频电路的毛刺问题

[复制链接]
发表于 2012-10-16 20:37:00 | 显示全部楼层
这个我也想知道答案,希望知道的高手给解答一下。。。。。。。
发表于 2012-11-12 14:20:07 | 显示全部楼层
可以用异步方式处理吧
发表于 2012-11-12 16:19:24 | 显示全部楼层
也希望能知道答案,学习学习
发表于 2012-11-14 09:07:20 | 显示全部楼层
最好不要这么写分频器,用状态机写比较好,你这样前一级的输出时钟作为下一级的输入时钟会有风险的
发表于 2012-11-14 11:29:02 | 显示全部楼层
本帖最后由 harejavahill 于 2012-11-14 11:30 编辑

module div_3
(
  input clk,
  input reset_l,
  output clk_div_3
);

reg [1:0] cnt_p;
always @(posedge clk)
  if(!reset_l)
    cnt_p<=2'b00;
  else if(cnt_p==2'b10)
    cnt_p<=2'b00;
  else
    cnt_p<=cnt_p+1;

reg p_clk;
always @(posedge clk)
  if(!reset_l)
    p_clk<=1'b0;
  else if(cnt_p==2'b01)
    p_clk<=1'b1;
  else
    p_clk<=1'b0;

reg [1:0] cnt_n;
always @(negedge clk)
  if(!reset_l)
    cnt_n<=2'b00;
  else if(cnt_n==2'b10)
    cnt_n<=2'b00;
  else
    cnt_n<=cnt_n+1;

reg n_clk;
always @(negedge clk)
  if(!reset_l)
   n_clk<=1'b0;
  else if(cnt_n==2'b01)
   n_clk<=1'b1;
  else
    n_clk<=1'b0;


//assign clk_div_3=(cnt_p==2'b01)|(cnt_n==2'b01);

//instance lib gate to avoid glitch
OR2x1 (.y(clk_div),.a(p_clk),.b(n_clk));

endmodule

把代码改成这样也许可行。。。
发表于 2012-11-14 15:15:07 | 显示全部楼层
用正时钟沿做2分频,做负沿做4分频,二者异或就得到了3分频时钟,不会有毛刺。
发表于 2012-11-15 10:42:42 | 显示全部楼层
学无止尽!
发表于 2012-11-16 15:52:39 | 显示全部楼层
为什么用 always @(posedge clk)
而不是always @(posedge clk or negedge reset_l)  ??
我用always @(posedge clk) 仿真不出来啊
发表于 2012-11-17 20:13:18 | 显示全部楼层
回复 18# cyberly
这个只是同步和异步的差别而已
 楼主| 发表于 2012-11-21 19:44:40 | 显示全部楼层
本帖最后由 songzijian87 于 2012-11-21 19:47 编辑

回复 14# qiudanyi1


   其实计数器就是状态机的一种。我觉得不是这个问题引起的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 19:25 , Processed in 0.037831 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表