|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本人在研究一个RS422接收程序的时候,发现程序中有一个波特率的产生进程。在这个进程中进行了小数分频。(将12MHz的系统时钟分频成9600*16的波特率)因此程序里面出现了78.112的分频语句。
2 ^* A; t' r7 H! ~8 psignal baud16ACC: std_logic_vector(16 downto 0);
/ \# S% ]: y/ b4 W/ fbegin
l, ^/ X6 @; A5 M! S2 jbaud16x<=baud16acc(16);5 A% c; @4 W+ ^5 Z9 m+ m( ~
process(clk_12M,rst)* t1 e; a4 t% O
begin
) `; }. ~& {4 r) _: ~; a" | if (rst='0')then" b7 g1 P% K ]- Q4 i B9 Q: V
baud16ACC<=(others=>'0');
* v* [; s: L$ y* S# r7 m, N0 @6 K$ N elsif rising_edge(clk_12M) then
3 X0 k6 K+ t! H/ S5 ^ baud16acc<=("01111111111111111"and baud16acc)+839;! W! D" R$ i$ Q
end if;
, Q0 C* C2 |2 i# u! g, ?% z( U end process;7 n) \. K! l# ~3 H
) E, Y$ ]( Z9 Z1 n& E u: l5 n
这个程序是将频率进行2的16次方除以839等于78.112分频。输出时钟就可以是接近9600*16但是这样有任何好处吗?' p/ J+ p1 i2 _! X" ]
因为程序是在上升沿触发的,因此有时候时钟是78个上升沿来一次,有时候会是79个上升沿来一次,这样我感觉单纯的增加技术难度,万一出错了呢?为什么不直接进行78分频呢,又简单,大神指点一二。; v. d7 U1 C0 q0 n% X2 w
|
|