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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5451|回复: 16

将50MHZ分频到19.2KHZ

[复制链接]
发表于 2009-12-6 16:33:40 | 显示全部楼层 |阅读模式

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

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

x
请各位大虾帮忙,如何将50MHZ的时钟分频到19.2KHZ啊?小弟先谢谢了!
 楼主| 发表于 2009-12-6 17:29:56 | 显示全部楼层
怎么没人回啊,求求各位大虾了,我要弄不出来,老板得杀了我啊,
发表于 2009-12-6 22:28:56 | 显示全部楼层
把方法告诉你吧:50M/19.2K除下来是个小数,你可以这样干.假如是a.b那么你就把他看成m次a分频,和n次a+1次分频,如果你要占空比必须是50%的话,那么把最靠近a的两个偶数作为分频系数,至于这两次分频个分多少次能凑够19.2你列个方程解个。然后把这两种分频,打匀。从宏观上,你能得到1秒钟19.2K的频率了。。。
发表于 2009-12-26 16:02:51 | 显示全部楼层
小数分频吧
发表于 2009-12-26 20:10:28 | 显示全部楼层
绝对可以,仿真通过:
module Devided(_50MHzOut,_19_2KHzOut);
input _50MHzOut;
output _19_2KHzOut;
reg _19_2KHzOut;
reg[12:0] Q;
always@(posedge _50MHzOut)
if (Q==13'd1301)
begin
Q<=13'd0;_19_2KHzOut<=~_19_2KHzOut;end
else Q<=Q+1'b1;
endmodule
发表于 2009-12-28 18:59:51 | 显示全部楼层
楼上程序加上tb
`timescale 1ns/1ns
module Devided(_50MHzOut,_19_2KHzOut);
input _50MHzOut;
output _19_2KHzOut;
reg _19_2KHzOut=1'b0;
reg[12:0] Q=13'b0;

always@(posedge _50MHzOut)

         if (Q==13'd1301)
                begin
                        Q<=13'd0;
        _19_2KHzOut<=~_19_2KHzOut;
                end
   else Q<=Q+1'b1;
endmodule



`timescale 1ns/1ns
module test;
reg _50MHzOut;
wire _19_2KHzOut;
initial
        begin
                 _50MHzOut = 1'd0;
                  # 100   $stop;
        end

always

          #10 _50MHzOut = ~_50MHzOut ;       

Devided Devided_1(._50MHzOut(_50MHzOut),._19_2KHzOut(_19_2KHzOut));

endmodule
发表于 2009-12-28 19:00:52 | 显示全部楼层
楼上说的对
发表于 2009-12-28 20:54:24 | 显示全部楼层
..............
发表于 2009-12-29 11:44:41 | 显示全部楼层
除不尽的啊,billwaston 的方法不错
发表于 2009-12-29 18:30:57 | 显示全部楼层
按billwaston的方法,50M/19.2K=2604.17   采用2604/2605分频  
累加数为100-17=83  程序如下:
//2604分频电路
module fd2604(clkin, clkout);
input clkin;
output clkout;
reg clkout;
reg[12:0] q;
[email=always@(posedge]always@(posedge[/email] clkin)
begin
begin
if(q<2603)
q<=q+1;
else
q<=0;
end
clkout<=q[11];
end
endmodule
//2605分频
module fd2605(clkin, clkout);
input clkin;
output clkout;
reg clkout;
reg[12:0] q;
[email=always@(posedge]always@(posedge[/email] clkin)
begin
begin
if(q<2604)
q<=q+1;
else
q<=0;
end
clkout<=q[11];
end
endmodule

//2604/2605分频
module fd26045(clkin,clkout);
input clkin;
output clkout;
reg clkout;
reg[7:0] a;
wire clkout1,clkout2;
fd2604 fd26041(clkin,clkout1);
fd2605 fd26051(clkin,clkout2);
[email=always@(posedge clkin]always@(posedge clkin[/email])
begin
if(a<100)
begin
clkout<=clkout2;
a<=a+8'd83;
end
else
begin
clkout<=clkout1;
a<=a-8'd100;
end
end
endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 12:35 , Processed in 0.024835 second(s), 8 queries , Gzip On, Redis On.

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