TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog实现奇数次分频6 H2 c$ b! p0 f& L
实现占空比为50%的N倍奇数分频:
, Z! A D' h( b首先进行上升沿触发进行模N计数,计数到某一个值时进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%的奇数n分频时钟。再者 同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空 比非50%的奇数n分频时钟。两个占空比非50%的n分频时钟相或运算,得到占空比为50%的奇数n分频时钟。/ J0 N T7 B. v& F( t8 l- G1 q1 C$ N
+ B9 j- u% O' }; y# {
module div5(clr,clk,clkout);
8 W, C# u4 ]1 {$ i2 dinput clr,clk;
. L% N2 Y3 b; V$ Coutput clkout;
1 S( [* v) u6 T# h0 e _reg clkreg1,clkreg2;
$ U& C' @/ I& Uparameter n=5;& P# p% Y7 y% @
reg[n:0] counter1,counter2;+ p6 A4 N, u, W; R
) o7 P7 v: @% y8 e2 A$ J% U# A3 [assign clkout=clkreg1||clkreg2;2 s) t! H6 R+ i8 G
5 X* `7 i. A# ^* A) `2 `always @(posedge clk)
2 h& D5 Q _ O/ Y% o if(clr==1)
+ d8 t* E# K6 a- ?$ I1 [ begin
& y, C2 F- c# U6 c. M- t4 @ clkreg1=0;( F9 F F( j1 ?6 e6 M; n
counter1=0;8 w: h4 W/ U% [9 q. t( P
end- l' r! ~& v9 q8 v, I2 b+ V
else " [' Y+ p5 ~) [1 |, Q% n, i0 V% N
begin
9 N$ Q6 y8 R7 t" q; H if(counter1==n-1) * {$ V; v) i, k/ s- d
begin
* j l* S4 s% {, \ counter1=0;
- X, _* h' U" ^9 O" Y3 L clkreg1=~clkreg1;
9 h$ p& p% v( O' C) O/ x% u end
* u9 p8 Y& ^% V) @' P, q! u& ?% v+ m else if(counter1==(n-1)/2)
+ Q. q+ H* S! {1 P, ^, L9 G) p begin
& l5 u; G) {4 _6 w1 g8 }" s7 Y counter1=counter1+1;: M0 O2 f) B# m/ e. c3 T) v
clkreg1=~clkreg1;7 v3 }0 N8 Q% {- l- H
end& I7 |/ q0 }- j3 W
else
8 \& o% U f6 S3 d3 y& P begin
5 d- ~2 n3 e8 g+ ]& o8 h' a, g counter1=counter1+1;; X7 Z5 ]5 C* Q4 B
end1 G$ ]. F9 J& c4 V9 e1 a1 I
end
) ^5 @( `% O) e' {& B4 s6 [* C9 Y) c
always @(negedge clk)1 x! {) \6 w k# V- a
if(clr==1) 0 P& j6 g4 k& p2 p0 L' t9 }
begin # W; E/ l3 A* k; A) C" L+ E% u
clkreg2=0;4 @; z8 `. T+ u. t/ e. J3 X
counter2=0;/ R7 l [5 g A/ j2 e/ A) |& u
end
& B" U9 \& o# s" G$ ^5 p" \( d9 n else $ x6 K) W: X+ Q# G# k: c$ S" F
begin + x7 ]0 Z, j! t( X! T- S
if(counter2==n-1)
; b5 H$ s _& d3 ~2 f; j begin , E7 w. o% c' Z: @. ?. y! D4 M
counter2=0;. ]; s$ p7 N; r! o' j& [3 }
clkreg2=~clkreg2;- x& o, T" b! ~; b' z
end0 u$ W6 Q( z: G7 \2 C0 z# f; F
else if(counter2==(n-1)/2)
2 L; H! m8 O3 R0 Q; w begin 9 v$ l2 \" H! O# X* o
counter2=counter2+1;
) y0 m0 V+ [' s, L0 w% W clkreg2=~clkreg2;
' a6 f4 v6 C# g" c" ?" u) `! w% z end
+ s. }' l; q* c [* R6 ?" w else ( `# F- H4 a/ v; p0 ?4 O
begin
M# c* g( c W+ R1 ~8 S counter2=counter2+1;
1 P. ?8 ^* m& i8 u6 g1 G8 H end
( s; ^4 R4 ?9 k' F end
; g S& E; R7 E9 z7 Z( a% w
& v2 M u$ s! O y8 _! E1 U, k0 dendmodule | 2 A9 m1 B# z% z7 w$ A! E
' x+ u/ v$ ~/ L# \( M3 E, N/ R/ v) Y
" x5 [3 }5 W( p
$ h5 Z" C8 [0 F. a- F6 j( E
4 w3 U' m5 x1 `/ L m, J/ \& Y
|
+ `- }! x; j7 x. H* M |
( A& ]9 }0 W1 e* } |
|