|
实现奇数倍分频且占空比为50%: W3 O8 l) w- x$ s
module div7 (8 w. b& F" n0 c0 n% z
input clk, # T; s' [$ ^, `5 H' Q8 T+ |
input reset_n,
% p4 _: Q3 l6 g7 n. B; ?) B output clkout
% ~# L7 E' s+ C: O1 I" Z+ c# |); 6 T, y/ ?; d c. n3 {; }
7 Z3 D& \2 Z' Q E( O' z
reg [3:0] count;
" ^4 R" i9 v# ~! a$ Z3 Vreg div1; ( r! j3 H. c# w) M& i
reg div2;
# r* B/ c% s4 }$ N ' U# v5 Q3 H5 h) T0 ~+ c) G
//七分频计数器
' a+ F( E1 }. f- Aalways @( posedge clk ) begin % _% b" K+ H# Y6 Y7 l
if ( ! reset_n ) % _* a$ B% p! A8 E, {0 y7 L, Q
count <= 3'b000;
& N3 i) _* c: F. P; {4 v9 _7 [ else
% v6 w* M- [% W+ R3 Y3 W: ?, C* _6 Q case ( count ) # X" {5 @! R( B' X
3'b000 : count <= 3'b001;
1 E$ P: c$ d/ }# G7 J 3'b001 : count <= 3'b010;
0 e' M" }: q+ P, D: B. }2 j 3'b010 : count <= 3'b011;
! v7 q. l- d. y& D m8 v2 F 3'b011 : count <= 3'b100;
0 Y# v" i' O! t5 a6 f' b1 M 3'b100 : count <= 3'b101;
9 G# a" K0 J2 h5 \% @ 3'b101 : count <= 3'b110;
3 ]8 G# I" z: D, m" a, Q4 H 3'b110 : count <= 3'b000;
! U: M' {# j/ ]7 }3 X0 p default : count <= 3'b000;
+ e% v# E7 R9 q* t endcase 9 b/ s: v8 U1 ?5 F+ U3 r+ d* B& f
end
% v" r! t% p1 h
- ? @- `! }7 l4 f9 G" L# ^, }4 ]always @( posedge clk ) begin ; x' ?" l; W5 Y+ ~$ k# s( U. b
if ( ! reset_n )
/ J8 P4 k( T8 X2 @5 S, E1 O, I3 Z- Y div1 <= 1'b0; . P: o* K1 Q. {- l$ I5 J* R# r
else if ( count == 3'b000 ) # J0 g0 `( R, T# L5 T e
div1 <= ~ div1;
2 d+ l5 T! K B# a+ r/ q end
: A& u( F0 Z+ P2 q; ]
) ~8 m U5 E& _9 G& Balways @( negedge clk ) begin
2 {6 Q7 v( |! ^/ s if ( ! reset_n )
3 U: u# m! w# Y4 b% `3 B- U* T div2 <= 1'b0; + A" j2 P/ {, `3 L
else if ( count == 3'b100 ) " j8 F! L- G- b9 J
div2 <= ~ div2; 0 l6 B. v+ s0 |1 i4 Y
end
, Q& Y0 f2 M4 N u( \3 Y0 s
/ w/ A) C- b$ K3 E; |/ a( S0 b0 dassign clkout = div1 ^ div2;
* \1 s9 w$ O; R ' y) W! S( a+ w( ?. I2 R) [
endmodule |
|