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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4761|回复: 11

[求助] 分频时钟.任意分频.小数除不尽

[复制链接]
发表于 2012-6-25 19:59:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 forlsy 于 2012-6-26 17:16 编辑

http://www.fpga4fun.com/SerialInterface2.html原帖在上面
问题:[size=11.818181991577148px]RS-232的baud率为[size=11.818181991577148px]115200Hz  其芯片使用[size=11.818181991577148px]1.8432MHz clock:[size=11.818181991577148px]1.8432MHz / 16 = 115200Hz(可以除尽)
所以 使用计数16的分频即可




  1. reg [3:0] BaudDivCnt;
  2. always @(posedge clk) BaudDivCnt <= BaudDivCnt + 1;

  3. wire BaudTick = (BaudDivCnt==15);


复制代码



以上是理想的情况,但如果出现除不尽的情况呢? 比如:
RS-232芯片使用时钟为2MHZ,依然使用baud率为115200hz :  2MHZ / 115200hz = [size=11.818181991577148px]17.361111111
这里的17.3611就是除不尽的  我们用计数器的话 是不能表示小数的

[size=11.818181991577148px]原文作者用C语言给出了一种方法  原理演示:
[size=11.818181991577148px]



  1. while(1) // repeat forever
  2. {
  3.   acc += 115200;
  4.   if(acc>=2000000) printf("*"); else printf(" ");

  5.   acc %= 2000000;
  6. }


复制代码




[size=11.818181991577148px]想请教下各位  这段代码原理  能否用数学证明下...
[size=11.818181991577148px]先谢谢各位的回帖啦~  
发表于 2012-6-26 00:56:11 | 显示全部楼层
用C来仿真时钟,挺奇怪的。
发表于 2012-6-26 11:07:57 | 显示全部楼层
看看 帮顶
发表于 2012-6-26 11:15:48 | 显示全部楼层
用加法实现分频,输出信号非1:1占空比,但是可以做到频率准确,但是会有1/2000000的抖动!
发表于 2012-6-26 15:49:45 | 显示全部楼层
RS-232芯片使用时钟为2MHZ,依然使用baud率为115200hz

为什么会出现这样的情况?
发表于 2012-6-26 17:01:51 | 显示全部楼层
看起来很深奥
 楼主| 发表于 2012-6-26 17:13:43 | 显示全部楼层
回复 2# tigerjade


   原作者是用C来演示原理的哈
 楼主| 发表于 2012-6-26 17:14:35 | 显示全部楼层
回复 5# falloutmx


   因为进行分频了
 楼主| 发表于 2012-6-27 15:29:43 | 显示全部楼层
顶一下...
发表于 2012-6-29 11:15:40 | 显示全部楼层
小数分频计算.xls (19.5 KB, 下载次数: 3 )
时钟数ACC生成时钟
11152000
22304000
33456000
44608000
55760000
66912000
78064000
89216000
910368000
1011520000
1112672000
1213824000
1314976000
1416128000
1517280000
1618432000
1719584000
18736001
191888000
203040000
214192000
225344000
236496000
247648000
258800000
269952000
2711104000
2812256000
2913408000
3014560000
3115712000
3216864000
3318016000
3419168000
35320001
361472000
372624000
383776000
394928000
406080000
417232000
428384000
439536000
4410688000
4511840000
4612992000
4714144000
4815296000
4916448000
5017600000
5118752000
5219904000
531056001
542208000
553360000
564512000
575664000
586816000
597968000
609120000
这样就实现了小数分频,只是具体到每一个分频后的时钟,有可能是17,也有可能是18个时钟,但是整体平均看来还是17.361111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 07:28 , Processed in 0.031191 second(s), 9 queries , Gzip On, Redis On.

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