TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
分频电路的verilog代码 4 H9 {1 P( j X5 H8 t/ P" i
4 D) `; X/ J% g5 F5 z
系统时钟为50MHz,分出的时钟为1KHz。, |5 K0 Z; o) y+ {" x* B2 B
module freq (clk, rst_n, clk_1k);; D" A8 j9 v( q
G% M! U# B ?9 R! h9 r6 |
( S. c- M& _2 [1 C; C) oinput clk;
! q _/ u# @( I$ S4 X5 xinput rst_n;
+ z" `* {; c4 s4 c9 ?" b; f' K) Z4 G- @
output reg clk_1k;' R( B$ |+ L1 _: T7 x6 u/ ] j, t- Y
( I. r5 Y0 y; x8 P& R
) i9 s( V5 ~" i; A+ M3 x' H
reg [14:0] cnt;* R7 w. S& A7 C2 i! M
2 ]* ?; f+ m( |. Z; galways @ (posedge clk or negedge rst_n)0 m) L# p I1 P
begin4 Z7 C S) ?1 y3 ]3 M9 `# S
if (!rst_n) c% x8 q8 u% }# b8 _% I& D
begin
( a! {& |4 l/ ~/ ~( h8 x3 oclk_1k <= 1;
3 H! q8 B: A- {3 o' T0 acnt <= 0;, ] d Z# u. T& f1 T
end
3 U) X8 b3 \* G; @! n) nelse' L$ ~3 {) |& C1 V
begin0 `* L- \0 K* _; H
if (cnt < 24_999)/ ~" d M/ {1 M! [
begin
; H" d, @" z- W8 E( x( Scnt <= cnt + 1;
' Y! m; H/ ]% }end
: L- D$ ^1 y4 m) {5 s. A* `else" \# l# f, W& |
begin* `: l0 G: Z& x# f. K
cnt <= 0;
8 ~5 @; h5 s$ cclk_1k <= ~clk_1k;1 y3 `6 \& @& c' u, n2 i
end- S: W# M& H. o. {& ]
end
& Z7 t! H: R8 m* L6 q% kend2 z8 _7 Y3 r! R! _& h2 W- P% x9 h
$ l3 F& Y& Z: U- v S" P, pendmodule
1 `4 R$ I$ e$ R/ q那么24999是怎么来的呢?这个是计算的关键,我是这么计算的:1 Y) C4 i$ g' u+ { R7 {
50MHz的周期是20ns,1KHz的周期是1ms。那么1KHz的半个周期就是500us,经过计算是20ns的25000倍,) n( n: f3 S3 c, {# z; C# w2 c
所以计数要24999。; m+ u' ]( U, G
这么计算可以,但是我们如果把计算的过程化简一下的话,就应该是:, T; [! A+ o _
计数值=((系统时钟频率/想要分频得出的频率)/2)-1; |
2 {/ V# a/ v# W |
|