Chip123 科技應用創新平台

標題: PLL 的實現方法? [打印本頁]

作者: kolong    時間: 2007-3-17 11:29 AM
標題: PLL 的實現方法?
請問cpld可否能把一個input的frequency倍頻....0 m/ w5 D  ^$ q  B  x# a
倍頻是否只能用PLL的方法?, X; t8 Z4 j% O2 K
最近遇到這個問題...想看看各位的看法..
作者: tommywgt    時間: 2007-3-17 12:32 PM
答案是可以的, 只是就以成本來看的話划不來而已
作者: kolong    時間: 2007-3-17 06:11 PM
用cpld的話...
: m; d! l" l. N0 I& k6 p8 Yeffort會有多大呀....有沒有一個概念的數字  Q1 a+ B. }) E3 k. d) U
另外...如果input的頻率很低(60Hz..)...
$ b/ l/ x9 r" x0 K; Pcpld還是有可能做到嗎...$ K& p8 x( ?  v. Q# ]; d
因為問過代理商...是沒辦法supprot那麼低的頻率...嘻嘻
' m9 E; v" n9 H. a. e- `
2 o5 a; D/ [* `" t: w[ 本帖最後由 kolong 於 2007-3-17 06:20 PM 編輯 ]
作者: tommywgt    時間: 2007-3-18 12:42 PM
你可以上中央圖書館查一下, 有一篇碩論論這一件事.
5 u: V9 ^2 w- U% b6 t' ^
  E) [' G, q; i9 }輸入頻率是60的話, 很明顯的是想拿市電的信號來倍頻吧, 如果只是要一個也許不是那麼準的clock source的話, 該有更簡單的方法才對
作者: kolong    時間: 2007-3-22 09:18 PM
不是要用市電的信號...
; B+ }6 h& d. T: d: B( F是要用panel裡面t-com的v-sync來同步led driver...
2 t$ b' \; z$ O所以不是clock generater的function..
8 D  _$ V: d- U4 Q! x目前我是想用cd4046...不過filter方面就傷腦筋了...
作者: tommywgt    時間: 2007-3-23 08:38 AM
如果你能講的更詳細點的話, 也許可以幫上忙也說不定
作者: kolong    時間: 2007-3-29 08:45 PM
搞了二個禮拜的CD4046 (PLL)..還是覺得無解....
: g. a7 l+ {; x0 l( h我的function如下..
; n+ f; l/ x0 J$ @. x( y' o# e6 V4 ?用60hz的frequency去產生2.457Mhz 的frequency...
  n8 o( i1 y4 R! [6 r: `2.457Mhz是要給LED driver當clock input用的...
# {! I# I3 @  r1 r* l& f4 L5 q這樣LED driver所產生PWM才可以跟V-sync同步...
( P. I7 Z( _, c9 ~7 Y9 P現在遇到的問題有下列幾點..
/ i- t: N- a) N2 {7 L( f1. 60Hz要產生2.457Mhz.....60*40950 = 2.457Mhz..: E6 z1 y* J) o) s1 T
   因為40950實在是太多倍了...這樣VCO平均一個level大概只有不到1mV.../ y& Q6 M+ o9 K4 _
   noise就比1mV還大的多了... " ?4 m  P0 e! {5 }7 E, r0 J
2. 60Hz實在是太慢了...所以不可以用被動式的filter..只能用主動式的(就是用op啦): D+ Q! [9 K3 `
   按照datasheet的公式..所算出來filter的R跟C..只能當參考.. (果然..類比的東西都要靠經驗)5 K' W7 J& g! K, r) C
   實驗了一個禮拜.總算感覺filter有在動,不過目前還是有一些問題還搞不清楚..# w5 |4 u5 n- H4 H9 h2 f
1 F* j2 o3 G, g3 C4 }- U
不知各位大大是否還有其他的idea可以實現這個function....(用60hz去產生2.457mhz)
作者: tommywgt    時間: 2007-3-30 10:19 AM
如果你還是想用CPLD的話, 不介意的話留下連絡方式我找人幫你如何?
作者: ssejack1    時間: 2007-4-11 01:04 PM
個人看法:, ]5 t# N' n! Y4 [0 q, L3 X* i
將 sync. signal 當成 enable信號, CPLD 內部電路用 OSC 產生工作 clock 信號源,藉由 sync. 來  enable 應較容易實現吧!?
作者: kolong    時間: 2007-4-15 11:53 AM
其實用PLL產生2.457MHz的clock給led driver7 [! ~, I5 ~% Z$ g  }6 t3 ]
最後所產生的pwm還是跟v-sync不同步啦...! E. J1 k5 m" l' y8 B) y
所以現在改變做法...$ I# H( Q1 ?" J* ^7 m
直接用60hz產生600hz的pwm...$ [! y# J- f' M' l" A: \' Y
duty就一直去sample  led  driver的pwm就可以了..
9 [7 V0 o1 v/ U& u目前60hz-->600hz已經ok啦...剩下的就是去sample led driver 的pwm.., {' k2 G0 T, m5 I
: m5 @$ ]! ~0 W
感謝各位先進的幫忙呀3 x+ g8 F) R- l' U
$ v# o' c7 ]6 h) N7 w
另外...想做一個shift的function..& A0 }$ [( S2 R! s4 p& r
led  driver的pwm進來...送出去的pwm要shift 60度或120度..8 W% k# d1 j/ r2 L
是否有比較簡單的想法呀...
作者: tommywgt    時間: 2007-4-16 02:14 PM
如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?
作者: zanthia    時間: 2007-4-17 01:09 PM
如果 jitter 要求不是很嚴格的話,- o7 q9 A% K5 c- _1 Z( m6 N" G
利用 74297 的電路來參考 60Hz 或許可以;8 C4 H* ?" t: `+ g( C% Y
DCO (ID counter) 跑在 2.457M * 32 對 CPLD 應該是很容易作到...
作者: kolong    時間: 2007-4-18 08:13 PM
原帖由 tommywgt 於 2007-4-16 02:14 PM 發表
1 l( `* X. K" @; b1 ~% J如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?

5 ^3 d2 i; D3 @. v$ D8 f/ l, U$ \3 T3 u
  E6 |# |, b  _8 E/ ?
% w- e* i" I! y! C7 H' w想法是這樣沒錯啦..
! n; f0 R% k! I3 R" S以2.457MHz的clock來說..." `4 @* l! ~1 {5 G+ H# Y3 G( O
你會需要12bit的counter來數high是多少跟low是多少..(因為pwm的duty是會變的)
0 C: I& `* M# p! dshift-->one counter  i! ]: d) Q5 Q& @1 u. r
memory high-->one counter
. ]9 y: Y, u; E6 z" w# r0 j, jmemory low-->one counter
  P: F0 F5 M2 K5 Z, B我目前是要用到四個counter...: d; J; @, r7 V! J. ~. r" Z  q: i
不過這樣做起來感覺很不好...: s4 ]9 Q  c* M! n$ m
; _1 I1 G% k" w8 m
而R G B各要一組shift..
* l+ y/ m! u# x: H- E- j# V  |128microcell已經被我寫爆了...唉....
) \' S" A0 ]. X; u, q1 Q. B9 ]) W5 t$ @7 [4 d: v. g6 f
其實光是寫同步的的code...128microcell就已經被我寫爆了呀
! Q0 X: }7 @8 G$ Z4 m; t# }(目前是用lattice的 iM4A5 128/64)
; Z: U, M2 H! K0 }9 H# }# B, ?
  B2 H* P' w; ?所以才會問各位先進是否有其他的想法.....
作者: tommywgt    時間: 2007-4-23 04:18 PM
128microcell在一般的應用可以放一大堆東東也.... J3 E8 u# [  M/ W( R
你的design很大嗎?
作者: tommywgt    時間: 2007-4-23 04:30 PM
也...回到你回的問題...- U4 o3 E" p# c2 J0 g. i3 Z
要做phase shift可不用改到duty cycle啊...
作者: kolong    時間: 2007-4-23 07:49 PM
原帖由 tommywgt 於 2007-4-23 04:30 PM 發表 7 P. B7 t& @  k0 a; F9 y+ h) U
也...回到你回的問題...
; L$ F* |' a) I要做phase shift可不用改到duty cycle啊...

$ r0 |& p3 L: F
0 v/ L# j/ U* \! M* |# [. l) l/ G- `* U0 w' O9 G
其實我shift要做....duty 也要改.., _, R! p$ v: W, v9 P4 I
所以才需要那麼多的counter...
作者: tommywgt    時間: 2007-4-24 10:25 AM
願意把所有的規格列出嗎?
4 X/ ~, s8 S! c! n3 o: X. K; s+ A也許可以放到64 micro cell也說不定...
作者: kolong    時間: 2007-5-9 09:02 PM
RGB三組pwm要用到12bitx3
& N- s( i& @! n9 g! D. joutput也要三組RGB 12bitx32 q# k/ }4 v4 S7 d
同步需要一組12bit counter
/ }" v4 ?9 ?& B+ G! t8 b' b/ v8 a
3 S# \5 m$ g, W9 P/ \其實我用到的reg..大概就要180個了
1 n  G# `2 v5 _: B" i8 j所以64 microcell是不太可能啦...
作者: eject    時間: 2007-6-8 07:19 PM
問一下下...
) d2 v9 {8 b* K: w" E- o7 J% e; m7 x- h3 N# }+ r/ Y/ z3 `
你有HSYNC可用嗎? MODE 有固定嗎 ?
0 \, [7 t# t: ]0 ^3 g3 d4 z有的話至少已經上 KHz
8 c6 V. Y! d  a. `; ~而且就倍數來說一定也會跟VSYNC同步吧
作者: kolong    時間: 2007-6-10 06:39 PM
原帖由 eject 於 2007-6-8 07:19 PM 發表
" ?0 H8 ^0 I- E問一下下...
0 q1 L( N& I5 r4 M
- g. e" ~, B, m# v1 T你有HSYNC可用嗎? MODE 有固定嗎 ?6 G3 \/ q# c! F( U1 a! _" @5 s
有的話至少已經上 KHz# h" {. C6 C8 q( U) N: {
而且就倍數來說一定也會跟VSYNC同步吧

. L- ?8 G: U! \4 _5 K9 P# x: m& K) C% v$ @' W
7 |. P4 a+ j' n/ e& |
是有H-sync啦...; I/ N. l5 X0 P# f7 J8 Y8 O3 O
不過不能用h-sync來做...
. ]0 z0 |+ f' e) t+ {7 l* @. c$ {因為用h-sync來當triger所造出來的訊號不一定會跟v-sync同步.
作者: eject    時間: 2007-6-10 09:50 PM
... 這樣說吧6 R' R& |! z  X+ |% C1 D
如果有 PIXEL CLK 就用它除頻
9 j, T6 t  K3 u  f如果有 HSYNC 就用它倍個幾次
( \: _$ Z1 H$ o
8 I7 w$ V$ c; l5 R# t& ]. `因為 PIXEL(DOT), HSYNC, VSYNC 之間有一定的倍數關係
& v6 H# p: ^7 w% b. W% }1 j
$ Q( p; |6 T! Y6 j  G   640x480@60Hz => 25.175MHz (39.7ns)
. Q" H4 g- A$ n6 w   DOTx800=HSYNC, 39.7ns x 800 = 31.469us7 p& ~  S6 q* }, D6 O
   HSYNCx525=VSYNC, 31.469us x 525 = 16.52ms (60Hz)3 C9 W0 l3 [, S) s' d" `8 d
所以這樣的CLK一定會和VSYNC同步 (詳見VESA Monitor Timing SPEC)8 m3 T% R% H( z" b* R

9 K- J+ D5 x9 L接下來如果要VSYNC時不出CLK.. 那就用個AND閘吧 (看你用哪個MODE, SYNC有High或Low)
  h. [0 {0 C* x! ?8 q6 a* C# Z' M) O8 h3 ^8 }2 G
還是我想的清況和你不同呢?
作者: tommywgt    時間: 2007-6-11 03:02 PM
這樣子做出來的phase error會很大也, 要先看規格的要求一下下
作者: kolong    時間: 2007-6-17 11:12 AM
原帖由 tommywgt 於 2007-6-11 03:02 PM 發表
: X& f! Z- g9 }. E5 \& T這樣子做出來的phase error會很大也, 要先看規格的要求一下下

5 a1 m8 u3 B) l: D0 s3 ?
. _: f- L% T/ f7 m  m
1 q! w& p5 h" w, r$ w! y6 {
/ H( n: P9 s. ]1 M+ D4 z4 z, V嘿嘿....沒錯..
# p& B6 I9 N9 q3 W, [5 d8 a+ S所以我現在還是用60hz去產生600hz..6 N7 ?' K( u" I$ N1 M  A
另外一個原因是因為客戶只會給我60hz的訊號啦...
作者: tommywgt    時間: 2007-6-20 01:39 PM
不過我還是覺得也許會有更好的方法來設計這個東東的, 所以才會說介紹個人給之類的...哈
作者: tieyuhsun    時間: 2007-9-10 06:26 AM
//可直接透過synthesis  tool用於PLD,FPGA不可 LUT delay則要採其他方式。
9 v( d: l  o( I3 ]/ |8 {* a  R//所有註解都要保留
( E: t1 E1 L1 B! J7 n- J/ N4 g$ A- T# Q8 l) ?
`timescale 1 ns / 1 ns5 W- q0 [% Y+ x* [% @
module xclk(sclk,ena,set,outp);. |6 ~" N4 I( O5 l
) Z# |* W. m$ C4 G" u! Q
1 U1 u# x# j" L- r$ X0 f
; M) o: D$ ?+ @9 k# [4 Q) t
input sclk,ena;
1 H) d! ?- C/ ainput [1:0]set;
, Y# A2 x5 z& q2 v" R- y$ Moutput outp; 1 O" Q+ @: B& y# _3 Z/ p
2 f, r" Q+ t3 ^+ U
wire outp;9 J% h2 p8 s7 N% o
4 ^9 T: T# |7 z
6 R0 H3 M; _, h

8 `1 E" u4 F% A/**** Node preservation for nodeA **************/( a+ ?( t% ]3 b' f3 X: e
9 h6 n# X# |/ z" E

# G1 C6 Y) i* e) h4 x3 L//exemplar attribute nodeA_5 preserve_signal true
6 C7 ~2 F, z5 X+ `0 H9 D
" W6 ^9 ?' I( t; n1 \//exemplar attribute nodeA_4 opt keep
1 n& y) B: Z/ a" L4 u4 `. A, V% k/ Y# I" Y, D5 W
/**** The following comment form also works ****/
6 Z( F3 _+ z; W/ w/ _- ^# h
0 [8 _2 J! a) m% j& }0 l//exemplar attribute nodeA_3 preserve_signal true
% ~# Z: ^6 F* |$ f$ v# s8 q1 a0 o
% u9 t: p' H! E! F; M) j//exemplar attribute nodeA_3 opt keep9 Y! ?1 {: A/ ^# G& E

- d+ y& A# m! ?& X. I/**** The following comment form also works ****/" L4 n: {4 L  @5 [* V& H

. ?0 H- d6 E8 Z0 c% @9 U//exemplar attribute nodeA_2 preserve_signal true2 k, b' q2 ^# B0 e& N' X
! p1 X$ U6 ~0 M
//exemplar attribute nodeA_2 opt keep5 g0 l* A* k- P3 p
8 O. j- E9 R1 G0 U. c
/**** The following comment form also works ****/, z' L4 g& V* P2 |9 u
/ \+ I# V: L$ [- S) n
//exemplar attribute nodeA_1 preserve_signal true: Z  h$ \! X" m- w6 @  s
" }2 n  X0 b- V- z
//exemplar attribute nodeA_1 opt keep
* ^9 T& j% C# K   v2 G$ b+ O/ P5 Z' z: T( h
$ r% B# V. B: V" ]# d, e8 h, U, y/ z
/**** The following comment form also works ****/: _. l0 \$ A$ Y! o" D' i

1 {" D% }& e: K5 R# v/*exemplar attribute nodeA_0 preserve_signal true
& V2 Q, ^2 B8 J# h7 P$ c$ W3 ]  G% n" g7 j" \! o
exemplar attribute nodeA_0 opt keep*/ $ y7 n/ T# E; R% s1 H2 M

" v* y" \. n" e9 R3 c( s) n! f; \; R' z5 L. M
2 E8 ~) ~8 w8 K

3 {' k! F, d; }4 Z
4 H9 `$ |# B* F, |' Z( o" i. s8 f. i: L+ m
( v" I9 v! I( J2 Q, z4 L

& e# v+ D% a/ J1 T/ d* H6 T  P$ X. z
& j; R+ d# u% [( D
wire nodeA/* synthesis syn_keep=1 opt="keep"*/;
+ m$ e9 D+ B$ m, i& j+ Ewire nodeA_0/* synthesis syn_keep=1 opt="keep"*/;, z: O6 ~6 j9 T1 I& y% Y" ^
wire nodeA_1/* synthesis syn_keep=1 opt="keep"*/;
9 x, ~1 T0 h0 x9 g/ m1 Kwire nodeA_2/* synthesis syn_keep=1 opt="keep"*/;
+ w1 C2 G( ?5 Y, @7 ~7 V) Swire nodeA_3/* synthesis syn_keep=1 opt="keep"*/;
! u0 B% t* Y  Ywire nodeA_4/* synthesis syn_keep=1 opt="keep"*/;
. p! u  e2 o) y4 A; }& o( r/ v- D0 S; T! w7 m# g& S  \
assign#1 nodeA_0  = sclk & ena;
! ~$ L. e! I0 e* J- U7 B$ j9 `: |, l  ^& u0 T, I' f% }  A
assign#1 nodeA_1 = ~ nodeA_0;
! {0 I- V5 z! I2 Yassign#1 nodeA_2 = ~ nodeA_1;! x7 ^/ }1 r; P  `  ^8 P
assign#1 nodeA_3 = ~ nodeA_2;/ R' I8 g$ h8 t, l) ^7 L& y
assign#1 nodeA_4 = ~ nodeA_3;
' V* j, x- o) V% O6 _. X, `& b; [0 r& ~
reg xout;
# }% [/ ^* _2 q* @+ G8 I% s
8 e- ~- {8 L  Y1 r! ]2 }always@(nodeA_1,nodeA_2,nodeA_3,nodeA_4,set)
" Q  t) ]# a+ {+ k6 k  casez(set)5 ~" \  V8 C) D
    1: xout =#1 nodeA_2;2 Y6 d' \5 e+ Q* x* S
    2: xout =#1 nodeA_3;( E4 I* F* Q8 c' u0 m
    3: xout =#1 nodeA_4;
& D. F7 k9 n+ V3 G/ f& E    default: xout =#1 nodeA_1;& M: {  x$ s, g" T7 J
  endcase
- ], h' T( Q/ B; J  4 I' @0 t8 H7 |) C2 X# v0 M
assign#1 nodeA = xout;
, a7 F% v* ?6 ^1 O) O/ K  _assign#1 outp = ena ? nodeA^sclk : 1'bz;
4 u0 ?& I+ H# W: ~, Q9 Q3 V  z- [. w, R( a
endmodule5 Z! q/ q9 G; ], ~1 N" z

. F& ]8 J6 N" \2 W3 q" }
* t! Y0 X/ B) d) P, ?+ }7 c; y. z8 l: |: E- G
`timescale 1 ns / 1 ns
1 J: n% S7 h4 u- K. z5 Z4 O# ~* ~module xclk_tf();
# e" k* K" c( z7 p9 [1 I# `' E, d. o
// Inputs' p, z4 r' \( B9 C) M
    reg sclk;. u: J2 D  g5 e! X
    reg ena;
  j; t$ W8 Z! J    reg [1:0] set;4 g9 D3 @" S) e5 ~2 Q3 H' F; S+ d

) \3 F: m' Y! z2 H+ T! K5 s" }
- p+ j+ ?& H% c: D9 `// Outputs
) c' i. ?6 x2 I0 _  E. K    wire outp;
: f7 i% W5 O, Z1 K% k( c6 r( b6 @  Z- O( l
3 O# X( o% S+ r# Z$ l* g! O

1 I  v$ F! u* @8 |    xclk UUT (' C$ B& V2 {2 g. x0 Z
        .sclk(sclk), 5 L. p, K% T  |: ]1 R0 e- b8 A
        .ena(ena),
; E1 F! `- E0 e' x2 D* y        .set(set),
3 R8 o5 P6 Q  Q. J& Z        .outp(outp)) }: w, u. o; |
        );
+ R* Q) A6 `0 a: c' Z9 t' R; p4 M2 k8 {) W7 z

9 y" `  m; c3 Z* p- F" X  f
3 C  K3 _' G$ k9 f5 V6 v0 G% L5 q    initial begin
  Q% e6 V9 j6 y; z6 |2 g' z, M) `            sclk = 0;
9 ]+ H/ `/ e6 _0 v            ena = 0;
) j) Q! T$ E8 G& e+ `1 @            set = 0;
# {4 B; n, T1 ?* Q$ |# ^    end
. b7 ?0 Y$ ~# I! p; e
7 {  T/ I4 t' I1 w$ ^; G- E0 m$ w4 z7 {  w1 S
always# 5 sclk = !sclk;
/ j8 D/ g. j# f9 r
0 m- }" c* w9 k+ g+ W) }- sinitial begin  p0 G6 D/ h' |% x: f" l
        #100
6 S8 ]$ x: O$ c! D, C1 b          ena = 1;, D! c5 K1 v" p1 \% N- k
        #2000 + _  d+ r) B1 h6 k7 ]4 w
          set = 2;
( m8 ^( b7 {9 @& I* `4 F: U        #2000 0 T  T7 B6 @# V- i7 ?  V- n
          set = 3;
+ b9 _; ~/ w8 G* ?  #2000' j+ |! z$ z) J0 h& L
  $finish;% {1 @2 J$ l% P3 n
end3 K1 T3 J1 W0 Y1 g) Q9 l$ p
endmodule // xclk_tf
作者: tommywgt    時間: 2007-9-10 02:49 PM
這個有趣了* J5 y' Y' T" a! q/ s" g
有simulation的waveform嗎?
# Z0 h- u& K$ w7 ^示波器量的更好~~~^^"
作者: tieyuhsun    時間: 2007-9-10 05:20 PM
有附 test bench1 D+ q0 ^" e# G: n0 K% S+ p& j
確實可用! 已實驗過,但我不會貼圖。0 O! U9 a& v1 I3 d
只要略加修改即可實現。
作者: kokonut    時間: 2007-12-24 02:50 PM
請問一下你是要控制LED在顯示方面的應用嗎??
# _: R8 M& u9 F1 A! o9 t/ Z
2 u) T4 {" y* ?2 L  t. J可以和你討論幾個問題嗎??
2 k& a& B! }- ~7 f
1 w7 }3 S8 m! d0 F" H% S方便留MSN嗎??
0 C% E# q* J& \" i& X
9 R1 c+ T0 _8 `5 V% ^感謝
作者: kolong    時間: 2007-12-24 04:35 PM
沒錯...: c" o% l+ X7 J- p
是要用在LED Backlight的....
; N% q: N) w; x# Y3 ~+ d其實有問題可以在這個帖子直接討論..
( U& X/ w+ ^- S) N' u8 N1 Q這個沒什麼秘密啦..., ]- |. O+ l  G, ~) |5 U- b
因為我已經申請專利了.....
作者: yoyo20701    時間: 2008-10-4 12:04 AM
嗯~~大大解答蠻詳細低~~~多謝喔~~~小第在研究看看~~~~~~~��




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com.tw/) Powered by Discuz! X3.2