|  | 
 
| 
//偶数分频器,外部带入两个参数决定分频系数。默认是2分频
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  2 S+ |: }: o: J$ y//divdFACTOR--分频系数,实际分频数为divdFACTOR*2
 8 i5 B8 [, H7 z6 p" N5 C  ~* F//divdWIDTH--分频计数器的位宽,实际位宽为divdWIDTH+1,该位宽所能表达的最大值>divdFACTOR
 $ B" D; f8 |$ Imodule gen_divd(reset,clkin,clkout);+ J3 l; |4 @. m, R! V8 }
 input reset,clkin;6 x8 W8 ~4 z3 \9 I6 m
 output clkout;
 $ e, y7 k- v7 W5 L) s& @% \        parameter divdWIDTH=1;//分频计数器的位宽,实际位宽为divdWIDTH+1,该位宽所能表达的最大值>divdFACTOR4 d( `. ^; c- q; @& d
 parameter divdFACTOR=1;//分频系数是divdFACTOR*2) b3 }. p2 V( i
 reg clkout;( V2 H' {) Q; o' S5 {; B3 g' _
 reg [divdWIDTH:0] cnt;4 I1 u2 K" O) g' e2 f; Q% l" _+ t
 : M  l6 R, ~+ d' W5 t
 2 V9 {& C  f' F, |
 always @ (negedge reset or posedge clkin)
 / o% o: j; Y' G, D$ T  S                if(reset==1'b0)1 k7 d# T' Z9 E; B
 begin
 + x; h$ W: B  J( D                        cnt=0;6 F, k; i1 G3 v+ j: W
 clkout=0;5 [& D6 N% c: h. B( {0 r, M7 G4 u0 f
 end1 d) M  X' t0 V. {
 else
 & _( G! F8 B3 `$ A. E; u                        begin. ~8 ?9 I& [( G1 [9 S, Z& T0 x
 cnt=cnt+1'b1;//常数1要指定位数,否则默认是32位的
 & ?# v3 R  P: C                        if(cnt>=divdFACTOR)
 * Y* v9 A3 w; ~: U/ t/ N8 C% v' S7 G                                begin1 F- B6 ^. W( N3 b3 D
 cnt=0;( H  d- Q- T. W2 ?# G) H! Z6 ?& W
 clkout=~clkout;
 ' |& i$ `# _- c- l, b3 {5 n                                end . a! e' u0 p, X2 H' n  q5 C6 V
 end/ x' v5 m% ~' N/ x7 R) u- `
 ! L  r5 j9 C7 d7 q5 c# C
 endmodule
 $ @/ U& l0 z& U
 ' x0 y! [. `  @% Q+ z`include "gen_divd.v"' h+ @9 }% f- V! V# h
 5 _4 t8 y8 G  B0 Q
 module led_w_dir
 + l/ j" g& b# A9 I# E        (
 1 W0 i8 @7 c5 ]! Q0 e                ClkIn,
 8 p) E0 Z, m3 K4 m                KeyIn,
 : Z& ~1 ~% [) B5 d4 p% I/ C                Resetb,7 O/ L" f3 a. v  P
 LedOut
 ; N) _! o& A% ]3 G! x! H; q        );3 Q" A7 w4 P, R9 |7 O3 ^
 input ClkIn,Resetb;
 + t3 o4 z, k; y$ @        input [2:0] KeyIn;# p3 A3 W7 C0 |
 output [2:0] LedOut;
 % z  u" i# Y3 Q6 ]6 a
 $ R5 H! l7 r8 g, D% p4 s        reg [2:0] LedOut;   R- S9 f; e, P- O4 o& |6 o
 wire ClkLed;
 + l% b# T6 H; Y4 Z2 w" h        reg [2:0] Cnt;
 : o, S$ T4 k# B* o% @4 ?
 2 l/ r& J+ Z+ B" B/ r        defparam Gen_ClkLed.divdWIDTH=23,Gen_ClkLed.divdFACTOR=10000000;//10_000_000分频% i- k- X% L; x' U- Q
 gen_divd Gen_ClkLed(.reset(Resetb),.clkin(ClkIn),.clkout(ClkLed));         //帮忙解释一下是什么意思啊。
 : O- c/ l& y# D/ i. ]6 N
 4 S& m% y7 b* Q) m9 p! d        always @ (posedge ClkLed or negedge Resetb)
 7 L" x$ `" b/ }                if(Resetb==1'b0)/ c$ z' o3 K* p5 d  p1 A* U1 r# H' y. F
 begin& u! J: C) D  K5 o6 {+ G
 LedOut<=3'b111;
 % _4 d6 l$ d- V# L! {+ U$ v                        Cnt<=3'd0;
 ; k; m8 l# F6 S2 ~; M5 i                        end8 ~: J) w+ R& m1 l: ~
 else
 " ~: `' k$ \1 h, o+ h3 k                        begin
 , _8 c" r' q& r6 f7 F; A                        if(KeyIn==3'b000)
 $ ^$ C( N1 g3 }; @. P) E& G  Y9 @                                begin
 ; ~& p4 @# z; [( N) c; z4 c                                if(Cnt<=3'd2)+ H0 q% S+ D9 e: p
 begin
 - Y% ?8 l; H9 B; ~* i4 n' q' b                                        Cnt<=Cnt+1'b1;4 L+ B9 r: u8 u3 C' h! ]
 LedOut<={LedOut[1:0],1'b0};//拼接
 / r/ d- A6 ?0 g2 X                                        end
 ! V, X; Q2 v2 @; Q                                else
 1 k1 ]' c, M+ P) y4 |2 t9 ^0 q                                        begin5 b! V0 a$ ~$ `' c
 Cnt<=3'd0;& A( f, \: P2 Y, {, I/ `
 LedOut<=3'b001;5 q) x- z% T9 m. J6 {: M: J+ s6 q
 end
 w! F7 s% o( E4 Q, ?! B                                end+ O' W" q! E% {9 I( o3 g+ D
 else if(KeyIn==3'b111)+ s, [  a5 D3 Z! I( V  k2 J8 {
 begin; l- x' m) j& q3 S
 if(Cnt<=3'd2)
 ( r( u9 y# i8 n0 j: [2 D                                        begin7 e8 r8 Z, S( L/ w( ^# \
 Cnt<=Cnt+1'b1;
 & Y$ y. [9 s/ x5 }# A                                        LedOut<={1'b0,LedOut[2:1]};! H* H- r8 X9 _6 o0 \0 _& V
 end5 k7 Q- {3 {# a/ c9 `
 else
 1 _9 M4 y+ Q! _: `( W! T                                        begin
 1 ]6 Y% ^) R! g! Q( l                                        Cnt<=3'd0;
 ' \5 w0 k: b( }7 T                                        LedOut<=3'b100;
 / p* x3 j8 J* Q0 @& E" l3 s9 n8 ]% |                                        end% m- F8 @0 ~% k0 e6 E
 end
 0 l/ Q- g# \/ w: @+ K( S                        end) N/ _3 ?; ~9 g
 endmodule
 | 
 |