|
实现奇数倍分频且占空比为50%0 L* c/ G9 x; d5 s" c
module div7 (8 w; h. r- E2 t- f; t* u
input clk,
; I# v0 X/ ^$ ]6 S input reset_n,
/ m) e6 z1 \- ~5 u1 Q1 r* v; I/ M5 O output clkout
9 H7 k6 B/ Z! O' D); ; h/ r1 \% k" {
1 }, \$ Z! ~: `2 jreg [3:0] count;
3 N0 {. y7 W9 _reg div1;
/ Q2 [, E/ `- H+ h8 c4 i8 _- ^reg div2;
! }4 o7 C: E5 F$ D5 x i6 Y3 `5 H' _* L% v
//七分频计数器+ U8 {7 h5 ]( P; p" _" c. V3 k
always @( posedge clk ) begin 9 i$ W5 [4 ` I! v+ S
if ( ! reset_n )
& G/ S2 h# K) ~, }4 k count <= 3'b000;
5 q( j x6 x n7 I7 o else
' o6 ~7 L: Y5 E& k1 U) e case ( count )
" v, M$ J7 ]( J' F5 h$ _5 c 3'b000 : count <= 3'b001; 4 W. N) ~: P: I: y, [! |# W
3'b001 : count <= 3'b010;
4 t% A* ^: y0 p# ]' T0 x+ o 3'b010 : count <= 3'b011; 8 O( \$ F4 B& W/ j& _% c. i: C
3'b011 : count <= 3'b100; ; R5 I0 G" W" S( s( H6 ?
3'b100 : count <= 3'b101; : r- b ~: b, A! J. ^' W
3'b101 : count <= 3'b110;
5 ^3 q; H+ ?/ U- O, W8 ]3 \. G+ u 3'b110 : count <= 3'b000; 7 ]; y7 X R; c+ ]( y
default : count <= 3'b000; " G. p0 R0 [4 [5 o
endcase
0 l* d. K1 L$ g6 o9 H end - l- y3 `$ A: D) F- `6 D3 o1 m0 b
3 J( ]+ c0 D5 x8 g7 D3 y: L. g
always @( posedge clk ) begin
7 m. @, i- a8 D* d& J; w1 k if ( ! reset_n ) 0 E; Y4 A' \$ j
div1 <= 1'b0;
# x8 e7 z, ^3 m8 L else if ( count == 3'b000 )
# i9 K+ `8 q9 n h4 S div1 <= ~ div1;
1 [8 d* J+ U: |6 F5 c( }$ i end
$ E1 A, d- \4 C3 e1 g
0 u& z; U5 Y# r5 \always @( negedge clk ) begin ; s; L2 n8 e. I0 h" [6 c
if ( ! reset_n )
2 C. U- T0 N2 w" g5 Q7 L" \ div2 <= 1'b0; - w. u- v+ Q. Y
else if ( count == 3'b100 )
- S* v* C1 ~3 l- N, t! d div2 <= ~ div2; $ P2 S& s; v; D9 T3 B
end
7 x* E( S* F* e% q9 o/ o. Q7 J2 m ! y- [* w+ a" F* j
assign clkout = div1 ^ div2;
. ]1 s9 O$ ?- ~0 f' U
& Y8 r }% Y9 {! y% Q* J1 k endmodule |
|