|
|
实现奇数倍分频且占空比为50%
; n* v7 W5 a( mmodule div7 (6 B" B. g% G |2 r
input clk,
8 ^9 [+ \, m0 W; `9 U! c! s4 m9 W input reset_n, 3 \3 E) p( w! P8 @) `. Q/ q& V; p+ T! x
output clkout $ P' ~6 u0 [! E
); 4 c: Y! N7 c4 p& [+ P, f$ }
1 _5 t$ {1 I2 {# V5 {( t6 |! xreg [3:0] count; , x3 L$ ]9 _7 F) D; g* p1 j
reg div1; ; p# @) P1 ^, M7 o. r
reg div2;
2 |, f5 i8 P. |8 m* v0 D5 Y0 _8 ? * E- L& w% d8 O9 M. q# r/ j
//七分频计数器+ T* L+ i7 g2 j$ S! M' P
always @( posedge clk ) begin
3 E7 J9 o6 P% ^- V @& q9 s if ( ! reset_n )
1 ~+ s( I: ~' Y4 H1 `2 d count <= 3'b000;
) y) E0 a% U+ O, a# L8 w! D else % T1 V4 D1 K$ E9 B
case ( count )
! w+ l2 ?) ^$ J3 G! |) } 3'b000 : count <= 3'b001;
# {$ G5 e) E) v5 _ 3'b001 : count <= 3'b010; & C* q7 c8 p; N9 C0 _2 ^: F! ^
3'b010 : count <= 3'b011;
" g3 s4 g5 V o) @9 {3 @ 3'b011 : count <= 3'b100;
4 q3 t! i% G3 U3 y1 Z 3'b100 : count <= 3'b101;
2 b& P& Z1 H5 i, \5 q5 `$ a0 { 3'b101 : count <= 3'b110;
6 h! X9 T# q7 `( Q6 F$ Q0 V% M6 K 3'b110 : count <= 3'b000; 5 O- y4 h m8 v9 x( A
default : count <= 3'b000;
& y9 P% m( Q, `9 a endcase ; |- v8 J5 O+ V$ w- V) Z# O' U
end
5 a9 N% F5 w8 {/ [: {' d
" }# r: u/ n+ N$ aalways @( posedge clk ) begin
7 ]/ |8 M6 V* C% ^4 a' Q if ( ! reset_n )
+ }3 k* @ D% B div1 <= 1'b0;
5 Q5 e' @; p0 |+ c/ `- [ else if ( count == 3'b000 )
9 K" \, {6 g' m! `/ o) x: a div1 <= ~ div1;
( B5 x ?8 b0 t end
& |' C+ W2 l5 c+ l- _5 X* S
) s+ S* o* `6 r" balways @( negedge clk ) begin
% J3 b4 M) V" m5 ]& m& Y5 ]2 _ if ( ! reset_n )
0 u9 n0 x }# ^$ l0 F6 S% N, J div2 <= 1'b0;
5 _( z7 h$ ~# |- I/ B else if ( count == 3'b100 ) ; i& H, H6 X- `# Q4 y6 A3 j2 a
div2 <= ~ div2; ; f6 T: ~3 X" W: J
end & z; c; b5 b. ]8 ]3 b! p0 S
" b: r3 O! u$ \% f8 massign clkout = div1 ^ div2;
8 C3 u8 |- W- L, q
8 H" O. c# X8 V endmodule |
|