EDA365电子工程师网

标题: 小数分频有任何好处吗? [打印本页]

作者: caojianxun    时间: 2014-11-25 11:59
标题: 小数分频有任何好处吗?
本人在研究一个RS422接收程序的时候,发现程序中有一个波特率的产生进程。在这个进程中进行了小数分频。(将12MHz的系统时钟分频成9600*16的波特率)因此程序里面出现了78.112的分频语句。
1 Q+ v# j5 K' q, }( Msignal baud16ACC: std_logic_vector(16 downto 0);
& f, L" r7 a0 Z  Fbegin
) b$ \. g4 C' U+ L1 k3 ~! R: x5 ebaud16x<=baud16acc(16);  ?3 Y$ y0 V5 [5 B! l, [
process(clk_12M,rst)! @: I1 R2 Q6 M
begin8 X  q2 H8 L, L- k
  if (rst='0')then+ p- m# R+ b. g3 e. U
   baud16ACC<=(others=>'0');   . ^" a3 v) P0 V7 L
  elsif rising_edge(clk_12M) then
6 ?' s: z0 V" [0 }     baud16acc<=("01111111111111111"and baud16acc)+839;
. V: S+ N7 F* A) e7 Y1 f: L8 {  end if;7 ^: |; J" u. T/ S
end process;
/ r, p% y% {/ d$ r8 M' `7 P. C+ W9 ?0 \9 {) k6 E
这个程序是将频率进行2的16次方除以839等于78.112分频。输出时钟就可以是接近9600*16但是这样有任何好处吗?
4 [5 c& g" b2 j/ ^  W% Y! v: ^' ?因为程序是在上升沿触发的,因此有时候时钟是78个上升沿来一次,有时候会是79个上升沿来一次,这样我感觉单纯的增加技术难度,万一出错了呢?为什么不直接进行78分频呢,又简单,大神指点一二。* }  P* u; h5 \( K

作者: lvsy    时间: 2014-11-27 10:14
串行接口可以容忍一定程度的波特率误差,但是78分频误差有点大了吧,小数分频的好处是精度高。如果你喜欢整数,也可以有时78分频,有时79,来接近9600*16。再说了不存在万一出错的情况,程序运行是不会出错的,除非算法本身就错了。
作者: caojianxun    时间: 2014-12-1 09:24
谢谢版主了,虽然还存有疑问,还是先看看书,巩固下基础再来问版主啦
作者: jiangfux    时间: 2015-2-20 22:03
这个代码写的比较好啊




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2