|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
//偶数分频器,外部带入两个参数决定分频系数。默认是2分频0 C5 q. ], S' j3 s3 w0 A3 n& x
//divdFACTOR--分频系数,实际分频数为divdFACTOR*2 K" Z2 @) i6 s. _' _
//divdWIDTH--分频计数器的位宽,实际位宽为divdWIDTH+1,该位宽所能表达的最大值>divdFACTOR6 E. ^& H. u' ]0 v0 J% q
module gen_divd(reset,clkin,clkout);
3 v& f O/ e$ d: Y; }8 t. T L input reset,clkin;7 T G7 C$ s! ]/ b
output clkout;
8 a) _; |5 l$ Y% y& B parameter divdWIDTH=1;//分频计数器的位宽,实际位宽为divdWIDTH+1,该位宽所能表达的最大值>divdFACTOR
/ V7 I( ^( E6 I5 p" `2 |' W* j( } parameter divdFACTOR=1;//分频系数是divdFACTOR*2. P! E" X. L( Q Z1 A
reg clkout;
6 z+ d5 P) p) L4 ?$ c reg [divdWIDTH:0] cnt;' {7 l" P& y" V
3 \/ _5 K/ W7 Q& d) f# Q + p8 \& W! q9 o3 b. Z
always @ (negedge reset or posedge clkin)
1 {/ P& @* S& V3 x" x if(reset==1'b0)
) b0 t6 @* n+ s+ z begin$ n, p5 E" G1 B4 ]
cnt=0;+ a: s) k/ l' f( T* m4 i
clkout=0;
0 F% V9 Q0 n" U' J, M) ]! @ end3 O( `2 j- M. m7 ]) S6 ~5 G8 H
else2 |% z4 x2 c: z7 S$ Q
begin
# I' `7 \% x# @+ P' K cnt=cnt+1'b1;//常数1要指定位数,否则默认是32位的2 m2 W5 T- i5 P
if(cnt>=divdFACTOR)' |+ P. d5 H g. ^4 D
begin4 m0 r; l! R: \/ B+ R5 H
cnt=0;
3 V$ g0 I. |3 x6 k+ q& |* f clkout=~clkout;% a9 j# `+ v, L; _3 L( n
end j$ _7 ^* Y& C. C5 F7 f& y- G
end
) u, I" K8 A! n; A) v7 T8 z6 a( \- m1 U& |3 `: @3 T
endmodule* K7 D& {/ t& ^; E1 e
: b; j% a9 O( Q$ k5 Y`include "gen_divd.v"! U% f& J( Y) a1 H2 i
* E' l# q1 q4 F* H0 ]+ c4 Qmodule led_w_dir
& a2 A8 }6 X; ]. B8 C8 N6 t- s (, S# k( P0 z( u! J7 B% D! r, M
ClkIn,
8 N: l# T4 h0 e: R6 I KeyIn,5 @ ]! X9 X4 z& d7 t
Resetb,4 D/ ?/ f8 U. j1 g9 h$ L
LedOut
2 r' r& N5 `4 z );: C$ R3 u" e5 r+ ~
input ClkIn,Resetb;0 o% E/ d9 A6 v9 O$ }
input [2:0] KeyIn;6 b7 \8 j7 {1 F& e5 y
output [2:0] LedOut;, H1 v' t& ?( z/ K
6 e5 O7 T& V7 ^ reg [2:0] LedOut;
$ ]6 q6 o k) H( |* \+ a wire ClkLed;5 F) v7 N! F2 j- @1 e- b
reg [2:0] Cnt;
, o1 g1 F3 K, V" ^' `/ _) m9 K ; S# b+ [8 ^3 f' m6 l) R
defparam Gen_ClkLed.divdWIDTH=23,Gen_ClkLed.divdFACTOR=10000000;//10_000_000分频
9 l0 I, K( G( `& q" S3 M gen_divd Gen_ClkLed(.reset(Resetb),.clkin(ClkIn),.clkout(ClkLed)); //帮忙解释一下是什么意思啊。
/ Y9 f7 H+ h6 V$ Y' v1 T% l
) b, P7 f. f1 Z+ V6 [+ s, \! C always @ (posedge ClkLed or negedge Resetb)1 V9 j( S3 @% B) F, q# L6 N
if(Resetb==1'b0) M4 B+ D& t9 a/ O" h) {
begin
; K3 K# f/ h, J LedOut<=3'b111;
# u+ p* W4 l1 o, w& e4 S1 s" v Cnt<=3'd0;% N+ @- b0 M9 I% v% `+ I0 I; B
end- C' Z. e& J+ I' g, b7 f P
else
- z$ ^* `) v! D begin: | X6 ~) I. u# z: t" Y5 l4 k
if(KeyIn==3'b000)& {4 X. @/ q! m5 V
begin1 `4 w7 a; z, N0 p5 q
if(Cnt<=3'd2)- m2 [/ \9 b. p2 |/ J( b
begin
* p6 |$ ?" ?, A4 j3 R Cnt<=Cnt+1'b1;, ]/ i: E' D) t& n
LedOut<={LedOut[1:0],1'b0};//拼接
6 u9 K( ~+ i! I/ c end" L1 i/ ~7 O" c8 M7 e! M) i# ~
else
* \6 p3 A, X! w8 p! Z7 X/ ?' d begin* L) m: A6 s/ L `& f1 }. R
Cnt<=3'd0;4 e) X+ y3 [* u# ]3 i0 J: M' I
LedOut<=3'b001;3 u; j0 J; Q' Y+ x$ A4 F
end4 q: s b6 J9 `5 e" |
end
/ ~0 F9 w5 i8 K* e. o" o6 o& @ else if(KeyIn==3'b111)
( D2 J' R9 O( C4 P begin! J( p: {$ q K0 W" b S# d1 v
if(Cnt<=3'd2)
5 h+ F. x+ Y& w1 |, u4 x begin: D3 }/ G8 ?2 n D' O
Cnt<=Cnt+1'b1;
2 O8 y- e% x7 ` ^( R1 | LedOut<={1'b0,LedOut[2:1]};
6 i4 k! H! g* C end
& C3 `% A1 i' v else I& }, h9 v' J
begin' x& I4 D/ E+ f! ^' A
Cnt<=3'd0;1 [& b" U- x1 f( V
LedOut<=3'b100;
. m: ^# a3 i& a) P) K6 W& { end+ A% M! H6 X! B. I" r
end% x) [! S$ u% X/ L+ i, h+ D
end
" s4 U; _4 S! L- J: _# g7 Q/ b' kendmodule |
|