Chip123 科技應用創新平台

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

作者: kolong    時間: 2007-3-17 11:29 AM
標題: PLL 的實現方法?
請問cpld可否能把一個input的frequency倍頻....
4 G2 E0 f6 Y! o4 c倍頻是否只能用PLL的方法?- c- g# ~8 [; I; a2 k
最近遇到這個問題...想看看各位的看法..
作者: tommywgt    時間: 2007-3-17 12:32 PM
答案是可以的, 只是就以成本來看的話划不來而已
作者: kolong    時間: 2007-3-17 06:11 PM
用cpld的話...
; F3 `0 H7 e* N1 L$ s% d6 `/ Heffort會有多大呀....有沒有一個概念的數字  K/ a6 R  S. L& q2 Z- |& z
另外...如果input的頻率很低(60Hz..)...8 e8 O+ x+ d5 I4 o( \3 B
cpld還是有可能做到嗎...+ e/ C  T9 A7 A/ v4 Y
因為問過代理商...是沒辦法supprot那麼低的頻率...嘻嘻- K& }( Q  W- k  @( c' D5 U
" P' T( W' }4 B( I
[ 本帖最後由 kolong 於 2007-3-17 06:20 PM 編輯 ]
作者: tommywgt    時間: 2007-3-18 12:42 PM
你可以上中央圖書館查一下, 有一篇碩論論這一件事.
! ?1 A6 i) E9 F* b- @! `* }! i. o
1 h, q' E5 M% `8 ]輸入頻率是60的話, 很明顯的是想拿市電的信號來倍頻吧, 如果只是要一個也許不是那麼準的clock source的話, 該有更簡單的方法才對
作者: kolong    時間: 2007-3-22 09:18 PM
不是要用市電的信號...
5 o0 P' \2 D  i. Q7 O. Y3 u是要用panel裡面t-com的v-sync來同步led driver...4 [+ z4 D) n8 T* G% F! R3 P
所以不是clock generater的function..
3 S% n' C* h. I  [2 n目前我是想用cd4046...不過filter方面就傷腦筋了...
作者: tommywgt    時間: 2007-3-23 08:38 AM
如果你能講的更詳細點的話, 也許可以幫上忙也說不定
作者: kolong    時間: 2007-3-29 08:45 PM
搞了二個禮拜的CD4046 (PLL)..還是覺得無解....
. t3 F" f8 I+ s, T5 D* q' S8 V我的function如下..
+ v* h& l0 h8 B- {7 X$ e用60hz的frequency去產生2.457Mhz 的frequency...
$ E+ M1 V. q  c8 o( V2.457Mhz是要給LED driver當clock input用的...
) I- y$ W0 v  ^$ r' |4 l這樣LED driver所產生PWM才可以跟V-sync同步...4 A$ M4 V+ ]) C* n  c' S# b
現在遇到的問題有下列幾點..) O; K: W4 p8 l6 m
1. 60Hz要產生2.457Mhz.....60*40950 = 2.457Mhz..
8 _* n1 u6 Y& h* j   因為40950實在是太多倍了...這樣VCO平均一個level大概只有不到1mV...1 h0 B* x. X' H% R
   noise就比1mV還大的多了... 0 h( g; H4 G9 o+ U& l! r
2. 60Hz實在是太慢了...所以不可以用被動式的filter..只能用主動式的(就是用op啦)
0 F; r3 T- M- \   按照datasheet的公式..所算出來filter的R跟C..只能當參考.. (果然..類比的東西都要靠經驗)
! @/ T4 Q. F  E# u$ s/ P" Z0 h   實驗了一個禮拜.總算感覺filter有在動,不過目前還是有一些問題還搞不清楚... l3 O7 M  ?8 I8 C! O, E5 ?
3 m5 G- q0 V! u" |
不知各位大大是否還有其他的idea可以實現這個function....(用60hz去產生2.457mhz)
作者: tommywgt    時間: 2007-3-30 10:19 AM
如果你還是想用CPLD的話, 不介意的話留下連絡方式我找人幫你如何?
作者: ssejack1    時間: 2007-4-11 01:04 PM
個人看法:
0 ?5 W; {/ @0 p0 F& q將 sync. signal 當成 enable信號, CPLD 內部電路用 OSC 產生工作 clock 信號源,藉由 sync. 來  enable 應較容易實現吧!?
作者: kolong    時間: 2007-4-15 11:53 AM
其實用PLL產生2.457MHz的clock給led driver& f" R7 I& C4 c  b
最後所產生的pwm還是跟v-sync不同步啦...
8 s6 e6 r" A+ ^- M所以現在改變做法...
' x  j6 X/ i0 M0 L0 D直接用60hz產生600hz的pwm...7 R" O* [. x: g. h1 q
duty就一直去sample  led  driver的pwm就可以了..) ]7 D& N& @3 a5 W3 ?3 g: Q) N/ k6 a
目前60hz-->600hz已經ok啦...剩下的就是去sample led driver 的pwm..' B/ K% s8 L. h3 m  L
: ?# ^- I/ G# G. b" `( o
感謝各位先進的幫忙呀
3 `* O) B" V* A3 G; j1 S
8 N, j2 \; J3 ^) a3 w另外...想做一個shift的function..
4 [' |2 [& Q5 u" d$ Hled  driver的pwm進來...送出去的pwm要shift 60度或120度... M0 G, Y3 J1 s# _: b4 I& G1 n
是否有比較簡單的想法呀...
作者: tommywgt    時間: 2007-4-16 02:14 PM
如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?
作者: zanthia    時間: 2007-4-17 01:09 PM
如果 jitter 要求不是很嚴格的話,
. n+ `6 O  k: |利用 74297 的電路來參考 60Hz 或許可以;
' Q! r; T) N- N$ }$ ZDCO (ID counter) 跑在 2.457M * 32 對 CPLD 應該是很容易作到...
作者: kolong    時間: 2007-4-18 08:13 PM
原帖由 tommywgt 於 2007-4-16 02:14 PM 發表 3 F  _  u' e- {* T  N
如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?
2 ]' R' u9 T% d4 T2 A  A) ~
1 b# E4 B/ }8 z, k, N3 ^  e
( V0 ~- _3 }9 M1 e+ I- P- Q/ Z
想法是這樣沒錯啦..
" x; j9 r7 v- _' Q, r以2.457MHz的clock來說...) S8 J$ g" u/ G3 N4 D* X9 \
你會需要12bit的counter來數high是多少跟low是多少..(因為pwm的duty是會變的)
: h) h8 z* c6 ushift-->one counter! @4 V: W. L! F/ {; K  }
memory high-->one counter
) A5 ^8 m5 t( m. v) m  q$ U8 x+ Qmemory low-->one counter4 H0 Q4 q8 ~! W$ z7 H; X
我目前是要用到四個counter...
3 K, i9 N2 _7 W不過這樣做起來感覺很不好...
. a) m% R) n2 [; a2 U* ^. g9 F3 m' v9 D1 m+ |
而R G B各要一組shift..
* R( b9 V" J! B128microcell已經被我寫爆了...唉....
$ ^+ {5 f6 ~( j' p# U: [! v' S6 Y+ J
其實光是寫同步的的code...128microcell就已經被我寫爆了呀- s7 ]8 j5 ^- l9 |7 V3 l, |/ t0 C
(目前是用lattice的 iM4A5 128/64)+ W3 |- V; K0 W; h
/ g, ?! L# g* [; E
所以才會問各位先進是否有其他的想法.....
作者: tommywgt    時間: 2007-4-23 04:18 PM
128microcell在一般的應用可以放一大堆東東也..., B. _! r; v7 m8 b1 r; I: B
你的design很大嗎?
作者: tommywgt    時間: 2007-4-23 04:30 PM
也...回到你回的問題...8 D% _7 g8 Q: t' T. q3 ^5 ]
要做phase shift可不用改到duty cycle啊...
作者: kolong    時間: 2007-4-23 07:49 PM
原帖由 tommywgt 於 2007-4-23 04:30 PM 發表 % Q! L# N3 a, ?; ?& e$ t1 K" R0 r
也...回到你回的問題...
3 B% C$ Q  }- |要做phase shift可不用改到duty cycle啊...

4 Y6 }6 ]' i  r, T6 @
" m+ `8 ^. M4 p9 V) F! _5 V, T) V6 p9 t5 D- O' F: G5 [; I
其實我shift要做....duty 也要改..( l) L2 G0 D' k
所以才需要那麼多的counter...
作者: tommywgt    時間: 2007-4-24 10:25 AM
願意把所有的規格列出嗎?
# G1 b0 L, p' J也許可以放到64 micro cell也說不定...
作者: kolong    時間: 2007-5-9 09:02 PM
RGB三組pwm要用到12bitx31 ^$ Q. Z$ _2 @$ |& w
output也要三組RGB 12bitx3* Y3 F# o' Q% T+ j5 l
同步需要一組12bit counter; x0 z' ]" t) `& Y+ v

7 w; q# \& z" o& ^+ G其實我用到的reg..大概就要180個了* f* B* u! X8 s) D1 o4 B. Y) M
所以64 microcell是不太可能啦...
作者: eject    時間: 2007-6-8 07:19 PM
問一下下...- F: e7 }0 \4 F) W. y7 M1 C7 [

9 }5 t3 O" d8 K0 c7 a0 j4 i) {/ K你有HSYNC可用嗎? MODE 有固定嗎 ?
: p" G2 a+ \9 b5 j有的話至少已經上 KHz
1 E' U2 e! a& F! n而且就倍數來說一定也會跟VSYNC同步吧
作者: kolong    時間: 2007-6-10 06:39 PM
原帖由 eject 於 2007-6-8 07:19 PM 發表 * k, C) N: s2 P+ m; e- R
問一下下...8 \% S2 _& o" R# [: ~; O/ O
0 r7 W- s, W* T) j+ K
你有HSYNC可用嗎? MODE 有固定嗎 ?* p" U3 U! G+ Q5 H% B+ M
有的話至少已經上 KHz+ \/ |  p: _2 v( U6 b$ r* O5 J. e7 v
而且就倍數來說一定也會跟VSYNC同步吧

7 X4 S) v% E2 U
0 y# g( M; g3 ^! N* z* }! Y6 F0 K1 y4 L8 F1 F
是有H-sync啦...
# O( o8 p6 K; C不過不能用h-sync來做...
# Q6 a5 ]1 h& A9 k5 Q" N0 {因為用h-sync來當triger所造出來的訊號不一定會跟v-sync同步.
作者: eject    時間: 2007-6-10 09:50 PM
... 這樣說吧" L- {% M* }# M. ]
如果有 PIXEL CLK 就用它除頻3 f- c) {$ N$ o. H# B' p7 `! g0 E
如果有 HSYNC 就用它倍個幾次- x2 g2 L  O6 @- C8 ]  ~
# s; u6 h/ e: L4 i
因為 PIXEL(DOT), HSYNC, VSYNC 之間有一定的倍數關係' E& @/ A, J7 W1 o
- J2 \1 }  K+ |$ W( y- f
   640x480@60Hz => 25.175MHz (39.7ns)
7 Y5 y- B# I; [   DOTx800=HSYNC, 39.7ns x 800 = 31.469us
  B" }/ {& b  J- d. @9 B8 s   HSYNCx525=VSYNC, 31.469us x 525 = 16.52ms (60Hz)
" j$ y: h; r+ U* v& s所以這樣的CLK一定會和VSYNC同步 (詳見VESA Monitor Timing SPEC)
" \3 C6 B3 P& j6 m5 i- R  z% F. {. w! F0 K0 S
接下來如果要VSYNC時不出CLK.. 那就用個AND閘吧 (看你用哪個MODE, SYNC有High或Low)) W1 t- i; G* {: Z0 x2 n
3 I, ^' v: N8 g" A9 ]6 c3 ?
還是我想的清況和你不同呢?
作者: tommywgt    時間: 2007-6-11 03:02 PM
這樣子做出來的phase error會很大也, 要先看規格的要求一下下
作者: kolong    時間: 2007-6-17 11:12 AM
原帖由 tommywgt 於 2007-6-11 03:02 PM 發表 " T# D& x+ M; b4 q* O
這樣子做出來的phase error會很大也, 要先看規格的要求一下下
2 `- f' z3 c+ l6 x2 m
. D) A  v7 R! R
! q, w% @2 K' T7 d

: z9 q8 e! e; Z  J嘿嘿....沒錯..
# [* M' B' v9 N) z" f) [# q/ s所以我現在還是用60hz去產生600hz..
' R! X6 |: I5 D; i另外一個原因是因為客戶只會給我60hz的訊號啦...
作者: tommywgt    時間: 2007-6-20 01:39 PM
不過我還是覺得也許會有更好的方法來設計這個東東的, 所以才會說介紹個人給之類的...哈
作者: tieyuhsun    時間: 2007-9-10 06:26 AM
//可直接透過synthesis  tool用於PLD,FPGA不可 LUT delay則要採其他方式。4 C& _. k. ?( z. x
//所有註解都要保留! W4 V6 `6 P; h3 q6 c

& t. }; x+ `1 N; _) W9 R; }`timescale 1 ns / 1 ns
! i7 _1 B$ P5 u" \module xclk(sclk,ena,set,outp);) h" u6 `6 e" j# c

9 }( p- Q2 R8 j. A# h 7 Q2 ^8 ?7 S1 B3 C" H
* V! N' w# Y- }3 b; y
input sclk,ena;
) d  P$ ^( p$ G# C5 binput [1:0]set;
7 C/ F1 e" t: O; r3 L( @0 A  routput outp; 7 {) E" }/ m1 F6 z" f. K& J% b' h

. u. g# V% v. u5 |wire outp;
! S$ F2 V/ `4 y2 i5 X: E
% a9 j2 _* w- Z& |6 V 6 |6 h2 J" Q/ V- j
% G( u3 ]) B1 E: ?0 l' j
/**** Node preservation for nodeA **************/& w' ?. [, \, P# O7 S& l$ }
* z% F( o# _3 H
) [' ]5 Q- e+ d! R+ y
//exemplar attribute nodeA_5 preserve_signal true
6 U7 c5 ~  T# G# T* f, D+ l$ ^( |+ r' V
//exemplar attribute nodeA_4 opt keep
7 S4 N. i& a, e: m$ G& c9 T  f
/**** The following comment form also works ****/
' @: U" X4 H9 ^  D8 S; h
4 h0 C, _* W% @% u//exemplar attribute nodeA_3 preserve_signal true7 f0 f; u% X# M9 r7 R$ k

; n& y/ j/ ?+ w, P//exemplar attribute nodeA_3 opt keep
& N" N5 N6 ?% Q+ e1 `8 v  ^+ D& R# g. ?
/**** The following comment form also works ****/
3 h) c0 y6 v6 C+ ~9 K: D4 B, l# J6 q5 e) \8 s
//exemplar attribute nodeA_2 preserve_signal true5 }& `9 V3 |# \3 y
( I7 @, P  ~% H4 }) Z9 n
//exemplar attribute nodeA_2 opt keep0 P8 V5 q/ t2 T+ D( a: a: D2 x2 Z% H
! ]4 x, P1 Y4 q) d7 B; V
/**** The following comment form also works ****/* M' o# s8 Q' D
# F1 I1 K" X! @
//exemplar attribute nodeA_1 preserve_signal true# Q+ @( s1 c( G, A2 _" c3 |3 n* I

# [- A0 ^* H( `% A+ V& `- z//exemplar attribute nodeA_1 opt keep% }4 \* U  V) [0 d3 _

% k5 _: x$ O- N! y' o5 }4 x) z) G# Z2 z. Q/ M9 r$ Q, N, H" l! @
/**** The following comment form also works ****/. n( P1 z4 D3 E1 N/ M8 J2 I
" o( D" u5 _, u/ Z. k% I
/*exemplar attribute nodeA_0 preserve_signal true
" P& S6 n% Y3 b  f
0 h$ b/ i) H1 J1 U' K2 Dexemplar attribute nodeA_0 opt keep*/ ! w, [! h" J9 j2 c

; E5 n7 e; d( [  _# @
0 m  m" T* x& j+ ?
2 k) [$ K! h! ], C. N; {, M
  e2 R, H: z6 s8 E: L& _* h; x6 S! j2 j8 Y
% u* S7 B. \1 X1 D

7 `; R/ s7 ^. f3 y
5 J" \5 o& n0 @
+ Z" p4 J. r# }  t. M# q, R  I" E9 ?0 x6 e  f- b, ]
wire nodeA/* synthesis syn_keep=1 opt="keep"*/;9 d  R! u% W0 F  a% ^/ O8 P; _4 _' W
wire nodeA_0/* synthesis syn_keep=1 opt="keep"*/;
* w( @2 h0 k, t% E$ ?4 b1 ]wire nodeA_1/* synthesis syn_keep=1 opt="keep"*/;
- p3 Y+ O$ ?7 R; kwire nodeA_2/* synthesis syn_keep=1 opt="keep"*/;7 B5 c/ O3 w$ k. K, V: h% V' m- E  X
wire nodeA_3/* synthesis syn_keep=1 opt="keep"*/;
) A1 ^0 P' X8 pwire nodeA_4/* synthesis syn_keep=1 opt="keep"*/;, a. T  ^3 f4 J( f  @. X

/ o( U$ @9 K% I+ Y" w  aassign#1 nodeA_0  = sclk & ena;
3 {8 G, Y% _8 b3 w1 ?
4 _/ e( H7 M. a2 t1 N! U# o0 ^& y" kassign#1 nodeA_1 = ~ nodeA_0;6 K0 z  Z4 A1 _5 p! _
assign#1 nodeA_2 = ~ nodeA_1;
  R) C9 K7 x  @/ c: o9 Yassign#1 nodeA_3 = ~ nodeA_2;
: b2 [- U, d# S* h1 C- aassign#1 nodeA_4 = ~ nodeA_3;
# X# z  Y9 o( y! i$ N, [
2 i7 Z5 G- k" Z4 O7 W4 S+ treg xout;
; d+ d$ ?* [: V" l" m- t+ l% b# }7 L+ ?# k) t
always@(nodeA_1,nodeA_2,nodeA_3,nodeA_4,set)
1 h3 c5 r9 L7 v. o1 L  casez(set)
4 a0 C  m4 o0 U/ T$ x    1: xout =#1 nodeA_2;- j  @" S. q/ d7 [% F
    2: xout =#1 nodeA_3;  [: u6 ~( [$ u4 n) \
    3: xout =#1 nodeA_4;
7 k- U6 M2 j1 m    default: xout =#1 nodeA_1;( e4 c5 M& n" h3 u8 P+ q
  endcase
/ k+ @0 E% X% s  
$ Z5 ]6 a/ e* _1 f* e3 A8 ]assign#1 nodeA = xout;
6 _) ?' b. L, _assign#1 outp = ena ? nodeA^sclk : 1'bz;3 t" t' R: \. V) j& ], W
4 [- h; I, \0 _- N
endmodule
4 T/ j  z9 ]) b9 L5 t7 ~
( i$ B& o/ g: V' ?% p. w% x: v4 s' U* w2 A+ \' @$ D  R* U
, b5 s. E( a8 k1 ~, u2 @
`timescale 1 ns / 1 ns9 H7 F- e0 k- g: Q
module xclk_tf();: m# Y; y" {7 y! j
2 n2 e9 k5 ^; ^8 }& q2 M% J
// Inputs' T* f+ Y0 E3 V7 a, m
    reg sclk;4 K6 G8 Q8 `, |) O' @; e/ L9 a: m4 p4 I
    reg ena;
( o% H: c. \' B3 J8 `    reg [1:0] set;( k3 L/ T+ o  _/ e) R. \
" y" n6 y" w8 u4 f& K
3 z* _/ `7 b0 H0 }
// Outputs
0 d) l2 M' L: ^1 h    wire outp;
) J6 G9 h; J: }4 ~; h$ d+ `1 G3 Q0 V
6 c, {- l' v+ p3 b

: H5 f, P, K# s    xclk UUT (
1 A, L: ?6 @1 z1 k; [4 l        .sclk(sclk), ; B7 H( c7 `7 n& S
        .ena(ena), - K. W5 U5 s  K3 b2 i
        .set(set), ! \# {- W/ C1 W" |0 s, U
        .outp(outp)
4 m8 A9 S+ f- r' h3 y2 y& Q* I1 X# p        );8 o! o) j. W: \6 d  |$ u2 W3 K

* [' }) S: e2 Z1 O/ z3 P
$ J, O9 H* l+ F; v& C9 p' |: U- i3 B, G# x; ~- [7 ?) s5 e  m) O
    initial begin
  t2 f% l" _, @0 A            sclk = 0;
# C& r$ m* e1 C  s            ena = 0;/ Y$ g5 m: I6 P+ {) o5 w
            set = 0;
$ N, R2 u6 [" P" |8 v% I$ @    end" d; t  y) l2 R% _

$ l2 M3 t1 V; G* g/ g: C4 }  A9 W: z. _& @  X8 ~1 W6 L9 {5 C- V1 @
always# 5 sclk = !sclk;
/ J1 |  U. W$ o3 j5 O5 t
: `" h' k0 i+ E/ J9 ?: Jinitial begin
# D/ A7 |' A" r. I( s, N0 _        #100; l; p5 s% e( v! K# R' s! }
          ena = 1;; ]) {1 z$ x% S+ L
        #2000
: a* [1 X* W# w; |0 Q          set = 2;' g# H# A( L; z% C/ @9 ]; `% Q8 Z
        #2000 4 w; n8 h0 g) g4 d& s
          set = 3;
; W/ `( H7 e4 f8 N  #2000
, \. S" R# ^7 B, w  $finish;
( O, V2 W5 B7 X* G) a+ s. e& o5 gend
$ S9 Y! P. @# pendmodule // xclk_tf
作者: tommywgt    時間: 2007-9-10 02:49 PM
這個有趣了3 B5 `% ?! H8 ]& z! t3 s
有simulation的waveform嗎?
+ L* A/ k+ p8 @4 Y示波器量的更好~~~^^"
作者: tieyuhsun    時間: 2007-9-10 05:20 PM
有附 test bench# A" z0 \7 H6 L2 v/ Q; N) J
確實可用! 已實驗過,但我不會貼圖。
8 g; U+ h) I- P3 d1 H只要略加修改即可實現。
作者: kokonut    時間: 2007-12-24 02:50 PM
請問一下你是要控制LED在顯示方面的應用嗎??- \0 A, s# v  W& L
" X) D8 N  I& w4 @
可以和你討論幾個問題嗎??
( S, u8 m. s, e! S' l* n
2 g% C. z5 f: r/ U8 E方便留MSN嗎??
$ v/ R/ e$ l$ ^5 x7 u: \& @3 d
* i4 R1 U, }. I; S/ K感謝
作者: kolong    時間: 2007-12-24 04:35 PM
沒錯...1 W" K* ]; M1 _% u
是要用在LED Backlight的...." A- ~: B6 U! P; l6 A
其實有問題可以在這個帖子直接討論..
+ q% p: H4 L9 g) K9 q這個沒什麼秘密啦...2 C2 G' h( k6 Q: k/ o
因為我已經申請專利了.....
作者: yoyo20701    時間: 2008-10-4 12:04 AM
嗯~~大大解答蠻詳細低~~~多謝喔~~~小第在研究看看~~~~~~~��




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