|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本人在研究一个RS422接收程序的时候,发现程序中有一个波特率的产生进程。在这个进程中进行了小数分频。(将12MHz的系统时钟分频成9600*16的波特率)因此程序里面出现了78.112的分频语句。8 V1 b' i3 P) t' f
signal baud16ACC: std_logic_vector(16 downto 0);& d& D" j# b! |6 y8 [( ]: t- M
begin) X" }/ }3 N, x8 X4 E$ K$ r T
baud16x<=baud16acc(16);! i3 |7 C3 \ W
process(clk_12M,rst)% U+ T. o' s1 t: e' r' l
begin
' p- T0 H, f# _0 ? \6 C5 ~+ b1 P if (rst='0')then6 |1 M2 t3 S4 v, ]! O* B- i5 z( w
baud16ACC<=(others=>'0'); 3 t2 V* O" G0 @* m) G" w- |( D
elsif rising_edge(clk_12M) then& f# ]; Y! J% f1 z& d7 ?# ]
baud16acc<=("01111111111111111"and baud16acc)+839;
/ ~/ [/ P+ t$ T; ^' ^# F9 H X% D end if; @) h: |4 G# U# b1 R6 f, P
end process;
2 s+ L! \( M* i# b* w4 p3 v8 h. W8 W' X5 w6 J8 L
这个程序是将频率进行2的16次方除以839等于78.112分频。输出时钟就可以是接近9600*16但是这样有任何好处吗?
3 C! e# D$ [, t2 f% i7 Y# t因为程序是在上升沿触发的,因此有时候时钟是78个上升沿来一次,有时候会是79个上升沿来一次,这样我感觉单纯的增加技术难度,万一出错了呢?为什么不直接进行78分频呢,又简单,大神指点一二。! Y# w3 E0 ^8 V! H8 ~2 o
|
|