Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203868
  • 博文数量: 45
  • 博客积分: 945
  • 博客等级: 准尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-19 10:36
文章分类

全部博文(45)

文章存档

2016年(1)

2015年(1)

2014年(2)

2013年(4)

2012年(8)

2011年(29)

我的朋友

分类: IT业界

2011-03-23 16:29:45

    今天碰到一个很恶心的问题,我要用6.25mhz的clock,我只有100mhz的时钟,怎么办?分频呗!这个是简单。
   always @(posedge clk_100)begin
      if(reset)
          clk_6_25m <= 1'b0;  
       else if(...)
          clk_6_25m <= ~clk_6_25m; 
   end
  
恶心的是,我的6.25mhz的电路使用的是同步reset,也就是类似:
   always @(posedge clk_6_25m)begin
      if(reset)
           .....
       else
           .....
   end
 
    也就是说,在reset为1的时候,clk_6_25m肯定是0,那clk_6_25m控制的时序电路处于何种状态呢?那些个复位怎么处理呢?此时,本人无比的感觉异步复位的绝对好处!
    没办法,我还是得用的啊!
    然后,本人就使用了如下的方式,硬是凑出个reset出来!
   reg  rst_d,rst_d1,rst_d2;
 reg  [5:0]  cnt_rstlatch;
 wire rst_edge;
 assign rst_edge = ~rst_d2 & rst_d1;
 
 always @(posedge clk_100) begin
    rst_d  <= rst;
    rst_d1 <= rst_d;
    rst_d2 <= rst_d1; 
  end 
 always @(posedge clk_100 or negedge rst)
  begin
   if(!rst) 
     cnt_rstlatch <= 6'd0;
   else if(rst_edge)
   cnt_rstlatch <= 6'd30;
   else if(cnt_rstlatch > 6'd0)
     cnt_rstlatch <= cnt_rstlatch - 6'd1;
  end  
 
  assign rst_wg = !(cnt_rstlatch > 6'd0);
 
这里涉及到一个问题,就是分频的倍数越高,所需要的cnt_rstlatch 就越多,终究不是好办法。。。
   
 
阅读(1341) | 评论(0) | 转发(0) |
0

上一篇:a9980配置

下一篇:AD9980工作原理

给主人留下些什么吧!~~