|
实现奇数倍分频且占空比为50%- @4 ]$ }# [7 |, m
module div7 (
2 ?8 @0 s D0 T) @6 F% L$ Y input clk,
) i* G* b- l+ y& }2 j7 s2 V6 Y0 P6 t input reset_n, 3 x3 w' O- {6 v% h% I8 Q# G. B
output clkout
/ r/ J9 S" ~7 j2 @/ d8 Q);
; a0 F1 e& K; z1 n) {
: H; d3 d2 w5 K$ Oreg [3:0] count; 9 V6 O$ T% o) \/ y
reg div1;
" m+ C0 w/ u# ]" ^1 Creg div2;
8 G; M/ s+ u( `: n& _+ Q$ s9 k+ d 4 Y2 e3 w& h- l% O& R1 W' L
//七分频计数器
* n4 v! `7 b8 V( y; \9 T+ }' Q1 `; ^always @( posedge clk ) begin , N+ h. _% |, {. [" [$ F3 i+ K
if ( ! reset_n ) 8 B6 }& z2 X& W' q4 a: L
count <= 3'b000;
9 O8 J. E- D h6 c3 J else
9 B: y- k6 k) ]( k |( W# y3 U case ( count )
( R8 _4 q2 Y' O% ]7 h( M 3'b000 : count <= 3'b001; + ~7 e, N2 Y1 b
3'b001 : count <= 3'b010; 9 O8 F* z& l/ \" _8 g
3'b010 : count <= 3'b011;
9 o4 s# j+ B8 j3 D/ u 3'b011 : count <= 3'b100;
9 O. k0 |8 a6 E 3'b100 : count <= 3'b101;
" _8 P0 x0 H8 F% s* y6 I 3'b101 : count <= 3'b110;
, i x! W. g( |) z1 T4 B 3'b110 : count <= 3'b000;
% E# L. X* T& L7 S default : count <= 3'b000;
, r. V' |" C) p1 I endcase
- f3 ^/ `8 S8 H( S: a end 8 }. H) G3 X/ y4 e
; X1 I) Z8 d3 d6 R# I9 C" Palways @( posedge clk ) begin
' I% @4 K/ L" g0 D+ h' e' H# x if ( ! reset_n )
1 F. Q2 l0 {1 w' X- Y2 ~( m; I div1 <= 1'b0; * Z! r, n0 \% r/ D9 Z* A1 X
else if ( count == 3'b000 )
8 u; @) Y1 K9 Q- ]: u5 D, n div1 <= ~ div1; * C" G/ w$ [) L8 e+ H! s! `# M) ^4 }
end ; \, D# M) z; a2 w, G0 u5 n& y# U6 i& z+ M
* Q7 n& o4 I, z; dalways @( negedge clk ) begin
. W; ]# p2 Q4 i) C6 ~ if ( ! reset_n )
+ n8 Y* O7 L; ]8 S! D# w div2 <= 1'b0;
5 Z3 l8 t" m' Y else if ( count == 3'b100 )
* g7 w0 L9 i2 M% e. o& [* G div2 <= ~ div2; 9 k; U8 _, z9 a- A7 I, t
end
& T- x W5 ]6 }5 J: |% B0 B 9 v8 `( b/ b u H
assign clkout = div1 ^ div2;$ \" u9 f- X, X: W9 [% k# S
+ z u. {- Y5 `: @
endmodule |
|