EDA365电子工程师网
标题:
小数分频有任何好处吗?
[打印本页]
作者:
caojianxun
时间:
2014-11-25 11:59
标题:
小数分频有任何好处吗?
本人在研究一个RS422接收程序的时候,发现程序中有一个波特率的产生进程。在这个进程中进行了小数分频。(将12MHz的系统时钟分频成9600*16的波特率)因此程序里面出现了78.112的分频语句。
1 Q+ v# j5 K' q, }( M
signal baud16ACC: std_logic_vector(16 downto 0);
& f, L" r7 a0 Z F
begin
) b$ \. g4 C' U+ L1 k3 ~! R: x5 e
baud16x<=baud16acc(16);
?3 Y$ y0 V5 [5 B! l, [
process(clk_12M,rst)
! @: I1 R2 Q6 M
begin
8 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