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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2695|回复: 1

我的分频设计(6.48M6.312M)

[复制链接]
发表于 2006-12-13 14:02:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
6.48M时钟为输入
9*(37clock + 1 gapped clock)+12(38 clock +1 gapped clock)
做9次每38个时钟扣一个脉冲,12次每39个时钟扣一个时钟脉冲,这样获得的带缺口的时钟就是6.312M时钟。
代码:
//this program is to divide clkock with frequency of 6.48M to frequency of 6.312M
module clock_deduct(clk_in,rst_n,clk_out);
input clk_in;
input rst_n;
output clk_out;
reg clk_out;
reg flag;
reg [3:0] counter9;
reg [3:0] counter12;
reg [5:0] counter38;//deduct one clock every 38 clock
reg [5:0] counter39;//deduct one clock every 39 clock

always@(posedge clk_in or negedge clk_in or negedge rst_n)
begin
    if(rst_n==1'b0)
      begin
          flag<=1'b0;
          counter9<=4'b0;
          counter12<=4'b0;
          counter38<=6'b0;
          counter39<=6'b0;
          clk_out<=1'b0;
      end
    else if(clk_in==1'b0)
      clk_out<=1'b0;
    else
      begin
//----------------------------------------------
//deducting one clock every 38 clock for 9 times
//----------------------------------------------
          if(flag==1'b0)
            begin
                if(counter38>=6'b100101)
                  begin
                      counter38<=6'b0;
                      if(counter9>=4'b1000)
                        begin
                            flag<=1'b1;
                            counter9<=4'b0;
                            counter38<=6'b0;
                        end
                      else
                        begin
                            counter9<=counter9+1'b1;
                        end
                  end
                  else
                    begin
                      counter38=counter38+6'b1;
                      //clk_out<=~clk_out;  
                      clk_out<=clk_in;               
                    end
            end
//----------------------------------------------
//**********************************************
//----------------------------------------------

//----------------------------------------------
//deducting one clock every 39 clock for 12 times
//----------------------------------------------
          else if(flag==1'b1)
            begin
                if(counter39>=6'b100110)
                  begin
                      counter39<=6'b0;
                      if(counter12>=4'b1011)
                        begin
                            flag<=1'b0;
                            counter12<=4'b0;
                            counter39<=6'b0;
                        end
                      else
                        begin
                            counter12<=counter12+1'b1;
                        end
                  end
                  else
                    begin
                      counter39=counter39+6'b1;
                      //clk_out<=~clk_out;                  
                      clk_out<=clk_in;
                    end
            end
//----------------------------------------------
//**********************************************
//----------------------------------------------
      end
      
end

endmodule
发表于 2008-2-15 14:32:40 | 显示全部楼层
收下了,回去研究研究!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 23:54 , Processed in 0.041077 second(s), 9 queries , Gzip On, Redis On.

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