TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
分频电路的verilog代码
2 m3 o+ @& V, C% N/ m" _) n2 X& T5 R( r! c7 ~5 H* [2 p; g
系统时钟为50MHz,分出的时钟为1KHz。2 l1 S& y8 ^* d
module freq (clk, rst_n, clk_1k);
# Q; W: A& Q* {% o, ?3 J! b2 V9 R& \& l; c1 W
2 x3 I) r# U( f/ Q, |& G- ^8 X
input clk;$ S6 k. t+ C# }' G( w5 c
input rst_n;2 I( u6 B9 a9 c/ Z% f
; I* w1 N# S/ \3 U2 z: }output reg clk_1k;+ K+ [1 k# f( Y
% Y9 N% [2 z e: L! X
g F# E7 }3 `) p3 a8 Creg [14:0] cnt;
' `: l9 m* Q" |& |- E! |4 \6 }6 ?* }/ `; g. M# l* E
always @ (posedge clk or negedge rst_n)8 j0 \" e$ R, G# z* b
begin
: Z a, Z( x" A9 X+ F7 l5 Mif (!rst_n)
2 M3 U' U) C% W: Q3 L$ J1 hbegin* d4 N1 N$ t- g. }
clk_1k <= 1;
5 v0 ^% W, h- _cnt <= 0;
, R c' t k8 j& A- `- rend
. @9 b% c1 j7 t) Qelse
) |5 k5 x B- B, C6 qbegin
% C4 E% b8 T& L/ @+ Q( iif (cnt < 24_999)
/ ]5 t" R, ?% E6 vbegin
0 n& F3 U8 J' |1 U' w- n5 ~cnt <= cnt + 1;6 G, b# Y1 ]. [$ t
end
! j2 [- B; P) }- k& V! Delse
4 T( A# z* m3 S' zbegin. g/ l8 I3 c3 P5 Y0 W! `9 H6 N
cnt <= 0;
3 {5 i3 j: r, F; g% tclk_1k <= ~clk_1k;
$ w1 O; l, n$ o6 i3 _7 o$ fend
3 y0 \- K- A- N! m* ]end ` u( l* f* i7 h# m) e5 O2 b) U
end4 R$ c4 l2 N5 [* v7 {9 r7 ~; |6 T
# P0 R* U: N7 x$ u4 q/ ]' ?
endmodule
. N! ]% t; u* o k3 \8 X那么24999是怎么来的呢?这个是计算的关键,我是这么计算的:7 @9 a. x6 `. a! L/ J
50MHz的周期是20ns,1KHz的周期是1ms。那么1KHz的半个周期就是500us,经过计算是20ns的25000倍,; {: k" w$ ?2 f+ S3 d1 ^
所以计数要24999。
: G2 q+ h& z- }这么计算可以,但是我们如果把计算的过程化简一下的话,就应该是:. ^# G1 B R( k. J1 I
计数值=((系统时钟频率/想要分频得出的频率)/2)-1; | 9 F; C+ P. S0 r8 v9 Y, y3 `
|
|