|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本人在研究一个RS422接收程序的时候,发现程序中有一个波特率的产生进程。在这个进程中进行了小数分频。(将12MHz的系统时钟分频成9600*16的波特率)因此程序里面出现了78.112的分频语句。. d8 \7 }8 x; U% I5 `7 G5 F
signal baud16ACC: std_logic_vector(16 downto 0);
l8 V# i6 p b! \ Vbegin
! p3 w& x0 m4 }& x6 T$ ^" @baud16x<=baud16acc(16);% @- E; m0 U: k
process(clk_12M,rst). }" q( k5 G" s7 D: A( ] M& A
begin
3 \( `' v0 O9 w, W( [ if (rst='0')then
# n* [; ?7 I, {, q% A, @# _ baud16ACC<=(others=>'0');
; e0 E, m t5 @; d7 x1 S$ y elsif rising_edge(clk_12M) then
2 N; B( U- B( f7 {9 G baud16acc<=("01111111111111111"and baud16acc)+839;: W) Y9 V2 h5 f2 p9 }2 s H+ c! I
end if;' T" B" D. ?; \- J7 w( I5 n% d
end process;( \6 n, ^) g8 X! c( i
! R2 o0 P: ?9 i( S3 J+ N8 f' f
这个程序是将频率进行2的16次方除以839等于78.112分频。输出时钟就可以是接近9600*16但是这样有任何好处吗?
1 H! V- c0 R* q" n& G& I7 i4 L因为程序是在上升沿触发的,因此有时候时钟是78个上升沿来一次,有时候会是79个上升沿来一次,这样我感觉单纯的增加技术难度,万一出错了呢?为什么不直接进行78分频呢,又简单,大神指点一二。
; p7 k+ a7 i/ h% t* o |
|