Chip123 科技應用創新平台

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

作者: kolong    時間: 2007-3-17 11:29 AM
標題: PLL 的實現方法?
請問cpld可否能把一個input的frequency倍頻....8 |7 ~6 h9 K9 ~
倍頻是否只能用PLL的方法?
1 ?* K* {: Y8 ?/ D最近遇到這個問題...想看看各位的看法..
作者: tommywgt    時間: 2007-3-17 12:32 PM
答案是可以的, 只是就以成本來看的話划不來而已
作者: kolong    時間: 2007-3-17 06:11 PM
用cpld的話...
) q  v- H" o+ K7 [effort會有多大呀....有沒有一個概念的數字
- `( I5 ]; [+ x4 J& U) T另外...如果input的頻率很低(60Hz..)...; z; `% b4 ^, [+ G. }1 `
cpld還是有可能做到嗎...* u6 z, }6 i  p2 T3 n
因為問過代理商...是沒辦法supprot那麼低的頻率...嘻嘻
5 g: A0 r2 n: J( i/ H8 ^/ S: t
* k' n3 J' M0 E: _! G% p2 f( T[ 本帖最後由 kolong 於 2007-3-17 06:20 PM 編輯 ]
作者: tommywgt    時間: 2007-3-18 12:42 PM
你可以上中央圖書館查一下, 有一篇碩論論這一件事.
& W0 v+ G( A1 j/ e2 u
: B4 w9 g2 i9 i6 @輸入頻率是60的話, 很明顯的是想拿市電的信號來倍頻吧, 如果只是要一個也許不是那麼準的clock source的話, 該有更簡單的方法才對
作者: kolong    時間: 2007-3-22 09:18 PM
不是要用市電的信號...
  _. V8 {6 @) z; T是要用panel裡面t-com的v-sync來同步led driver...
8 R- b' d" a; _2 y所以不是clock generater的function..
0 l* e* [2 @( Q; h, k目前我是想用cd4046...不過filter方面就傷腦筋了...
作者: tommywgt    時間: 2007-3-23 08:38 AM
如果你能講的更詳細點的話, 也許可以幫上忙也說不定
作者: kolong    時間: 2007-3-29 08:45 PM
搞了二個禮拜的CD4046 (PLL)..還是覺得無解....
% r0 g3 D* y/ h+ n2 p. ~9 }我的function如下..
( _9 F6 W1 l" a+ k2 x0 x用60hz的frequency去產生2.457Mhz 的frequency...4 o8 z/ n$ ~9 n
2.457Mhz是要給LED driver當clock input用的...5 C2 X: `8 k$ M& G7 Z7 l0 h
這樣LED driver所產生PWM才可以跟V-sync同步.... C8 m) b- T) y1 o
現在遇到的問題有下列幾點..
( ]: N  _- W1 d+ F1. 60Hz要產生2.457Mhz.....60*40950 = 2.457Mhz../ E8 Y& n; z& \0 f* ]6 y
   因為40950實在是太多倍了...這樣VCO平均一個level大概只有不到1mV...; l8 ?/ q! w; q4 O9 Q
   noise就比1mV還大的多了...
1 r- ]$ ^4 Q: m4 M9 |2. 60Hz實在是太慢了...所以不可以用被動式的filter..只能用主動式的(就是用op啦)* b% r9 d1 k1 l( h% e
   按照datasheet的公式..所算出來filter的R跟C..只能當參考.. (果然..類比的東西都要靠經驗)
6 a' ?1 j' U+ a4 _- m' ^   實驗了一個禮拜.總算感覺filter有在動,不過目前還是有一些問題還搞不清楚..' D+ }2 B2 m8 ]7 @# u" A

; H. Q9 j7 I4 T不知各位大大是否還有其他的idea可以實現這個function....(用60hz去產生2.457mhz)
作者: tommywgt    時間: 2007-3-30 10:19 AM
如果你還是想用CPLD的話, 不介意的話留下連絡方式我找人幫你如何?
作者: ssejack1    時間: 2007-4-11 01:04 PM
個人看法:
5 Q0 M; H$ b7 l5 Z5 @將 sync. signal 當成 enable信號, CPLD 內部電路用 OSC 產生工作 clock 信號源,藉由 sync. 來  enable 應較容易實現吧!?
作者: kolong    時間: 2007-4-15 11:53 AM
其實用PLL產生2.457MHz的clock給led driver8 R% b! T3 g% k  o
最後所產生的pwm還是跟v-sync不同步啦...
' G) }# e) L" H所以現在改變做法...
" }4 ?5 c9 z0 e- W, a; S直接用60hz產生600hz的pwm...7 r( x' }" z0 x, s; I2 ?
duty就一直去sample  led  driver的pwm就可以了..& m' ]' |! S. H
目前60hz-->600hz已經ok啦...剩下的就是去sample led driver 的pwm..
, N, h; L# y; o1 e
3 x! J/ v# x3 ~) A  p/ {: y感謝各位先進的幫忙呀
7 X. c9 Z- ?5 Z; U
; a  Q* r0 W- c+ D( l9 R另外...想做一個shift的function..2 M: |( D' [/ i, ~3 m, i
led  driver的pwm進來...送出去的pwm要shift 60度或120度..
! I8 G# c  b# i0 Q9 r9 ^1 O是否有比較簡單的想法呀...
作者: tommywgt    時間: 2007-4-16 02:14 PM
如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?
作者: zanthia    時間: 2007-4-17 01:09 PM
如果 jitter 要求不是很嚴格的話,9 K& s9 |+ F( k  f. Z6 p
利用 74297 的電路來參考 60Hz 或許可以;) Y" w- u7 O$ \
DCO (ID counter) 跑在 2.457M * 32 對 CPLD 應該是很容易作到...
作者: kolong    時間: 2007-4-18 08:13 PM
原帖由 tommywgt 於 2007-4-16 02:14 PM 發表
* S1 h. a& W8 d( `# s如果倍頻是成功的, 那phase shift就只是調整cycle中的1->0, 0->1的時間, 不是嗎?

; r2 Z/ P- A/ D- P' [. \
2 O. a& Z: a4 z1 b# X6 [$ I* U7 W9 n) U4 [9 e" T( `; T+ ~9 P$ Y
想法是這樣沒錯啦..* m1 g9 q0 J, J- r6 w
以2.457MHz的clock來說...
5 s5 w4 e" K8 l0 @你會需要12bit的counter來數high是多少跟low是多少..(因為pwm的duty是會變的)
& \$ P0 C$ @2 G$ ~( e4 _shift-->one counter( S9 U2 R5 {1 w& p
memory high-->one counter- x; M/ Z1 m# [0 O+ p- @
memory low-->one counter
* N6 v; G  r4 s: |1 M1 p; E: C我目前是要用到四個counter...
' T& x. m# @( P0 ]" Q不過這樣做起來感覺很不好...
) s# c6 t# B" }) m  X0 P6 b9 x- p" N, d  C
而R G B各要一組shift..2 Y9 q. \3 z* K3 f
128microcell已經被我寫爆了...唉....
" a5 n, Y' u: v  k. R5 T- c* g; Y
其實光是寫同步的的code...128microcell就已經被我寫爆了呀: U, u% m3 o& u' k& d# m
(目前是用lattice的 iM4A5 128/64)
' `/ \# h. G& y3 w5 n6 B- _1 T1 |' ]. W. g3 t
所以才會問各位先進是否有其他的想法.....
作者: tommywgt    時間: 2007-4-23 04:18 PM
128microcell在一般的應用可以放一大堆東東也...* Y6 f# Q: d* ^& F" E7 Y& ?
你的design很大嗎?
作者: tommywgt    時間: 2007-4-23 04:30 PM
也...回到你回的問題...
. a2 ?6 S' j, P6 Q4 J要做phase shift可不用改到duty cycle啊...
作者: kolong    時間: 2007-4-23 07:49 PM
原帖由 tommywgt 於 2007-4-23 04:30 PM 發表
, [6 z* s2 b& a( A也...回到你回的問題...2 E, G: r+ q" ]& @7 s
要做phase shift可不用改到duty cycle啊...
" v! U% F1 @; B" y

+ N9 E, T5 ?! I! W$ `$ c
" b2 P, Y$ h# F* u3 w其實我shift要做....duty 也要改..( |5 I6 H; n0 k6 @
所以才需要那麼多的counter...
作者: tommywgt    時間: 2007-4-24 10:25 AM
願意把所有的規格列出嗎?
( j2 G- }+ T$ k$ i也許可以放到64 micro cell也說不定...
作者: kolong    時間: 2007-5-9 09:02 PM
RGB三組pwm要用到12bitx35 U4 Q+ V# x  N1 L! v! J* J/ I- j7 a
output也要三組RGB 12bitx3# \! [! A: ^/ X' d  _
同步需要一組12bit counter2 m4 r. ]+ d  m$ o5 w" I, V
' {6 A+ x6 H! d# \( _6 Z1 F" u9 M' I
其實我用到的reg..大概就要180個了
7 M+ D) g' |  x! n; H: W所以64 microcell是不太可能啦...
作者: eject    時間: 2007-6-8 07:19 PM
問一下下...
2 a( ~. v1 V* T' N" X8 [9 ~. L, _; r- F  e
你有HSYNC可用嗎? MODE 有固定嗎 ?& n6 u! T2 t2 R" [: P+ Y) D
有的話至少已經上 KHz. g) s, R2 V7 j, i7 V+ m
而且就倍數來說一定也會跟VSYNC同步吧
作者: kolong    時間: 2007-6-10 06:39 PM
原帖由 eject 於 2007-6-8 07:19 PM 發表 # ~& W; w# l# W% l' ^6 C' I
問一下下...
6 \, \5 L& V. E# P/ i4 N* d% J7 w7 H/ F3 J7 j
你有HSYNC可用嗎? MODE 有固定嗎 ?* s+ D& p& D' @3 k( y. F% C  E" p/ U
有的話至少已經上 KHz( T3 a; b* B' }& z7 V  b+ u, x
而且就倍數來說一定也會跟VSYNC同步吧
+ Z. r% }6 C; h# e
# ^7 o7 c) f6 b. p9 a: ^
& x" e, F( g( H0 d4 V
是有H-sync啦...
* @) T: w$ d) y! J1 J5 t不過不能用h-sync來做...6 N( E( s2 q9 a3 [  v! [0 M
因為用h-sync來當triger所造出來的訊號不一定會跟v-sync同步.
作者: eject    時間: 2007-6-10 09:50 PM
... 這樣說吧2 G% ?+ o$ ^8 [" U  j- Q7 k
如果有 PIXEL CLK 就用它除頻7 M% W, q) _; h' |
如果有 HSYNC 就用它倍個幾次
( t3 `' m# ]; ]5 r7 J6 S) |/ i7 e6 C0 T5 a/ z: G/ e" m% A; r% m( o3 W
因為 PIXEL(DOT), HSYNC, VSYNC 之間有一定的倍數關係
8 p4 r! ~1 G9 T& U9 |3 }/ w
& M% X+ u& l9 N% `% a) P! Q. y. }   640x480@60Hz => 25.175MHz (39.7ns)
: U. n7 M& R3 Y" u, I   DOTx800=HSYNC, 39.7ns x 800 = 31.469us5 V: \9 V: u- w* P4 t
   HSYNCx525=VSYNC, 31.469us x 525 = 16.52ms (60Hz)1 y5 h, _6 b! L8 i) V& @
所以這樣的CLK一定會和VSYNC同步 (詳見VESA Monitor Timing SPEC)
$ E  c. M' y) P2 {
' P# T1 \2 m1 {" z接下來如果要VSYNC時不出CLK.. 那就用個AND閘吧 (看你用哪個MODE, SYNC有High或Low)
  u, E9 {) [4 C7 v+ k% @3 H/ z  s, {' ^) ?4 @1 X4 e
還是我想的清況和你不同呢?
作者: tommywgt    時間: 2007-6-11 03:02 PM
這樣子做出來的phase error會很大也, 要先看規格的要求一下下
作者: kolong    時間: 2007-6-17 11:12 AM
原帖由 tommywgt 於 2007-6-11 03:02 PM 發表 9 T# w2 s7 R! m& ^' J+ h; j
這樣子做出來的phase error會很大也, 要先看規格的要求一下下

/ A; q8 k4 n6 f: ?7 W2 D/ B
0 ^/ ~7 Y& |/ K# j5 Z4 f+ Z' ]& T  q- A6 p  F3 X2 ?

6 z1 E, E6 a9 s2 R+ p: @嘿嘿....沒錯..
3 ]  |, M9 Z2 p所以我現在還是用60hz去產生600hz..) E3 i% g8 U9 l7 B  H7 W
另外一個原因是因為客戶只會給我60hz的訊號啦...
作者: tommywgt    時間: 2007-6-20 01:39 PM
不過我還是覺得也許會有更好的方法來設計這個東東的, 所以才會說介紹個人給之類的...哈
作者: tieyuhsun    時間: 2007-9-10 06:26 AM
//可直接透過synthesis  tool用於PLD,FPGA不可 LUT delay則要採其他方式。
' t9 P& t" z' d7 z. \, c//所有註解都要保留; S0 ?8 D; Z3 y% y$ r) y7 r
" C' I. F# k- R# b* P9 Y1 P
`timescale 1 ns / 1 ns9 K. C  b  D9 @& w4 m6 j$ l1 R
module xclk(sclk,ena,set,outp);
! j9 v, }' E1 c/ z% z- n
- ]. ?, M8 P; I/ e  Q& H $ l% x: w! M" d/ z. D7 ?
$ ~# w$ y! {# c8 l  M! d: t/ t. O
input sclk,ena;
" w1 X6 j# ~% Z+ v* qinput [1:0]set;
- F  ?7 p8 a, s$ O- m" ^" [output outp;
! M/ w  U6 Y% p: x- l# z( v6 Y8 ?) ^
wire outp;) n/ {; S/ E9 a9 |, X
" R( y9 _) ]! ~6 C$ T/ G
# E8 d# G, o% J6 p1 w; I

0 a5 F2 E! M+ r. ~5 p/**** Node preservation for nodeA **************/* s$ A3 y: G( f, e, i% D5 g# |' T

- d8 P1 |3 G, P: T+ J1 I: R6 |" E) F
//exemplar attribute nodeA_5 preserve_signal true
0 p# a* _: ^5 a8 u# I; Z
8 X8 `  `; g; A5 Z) ?0 A5 u6 O//exemplar attribute nodeA_4 opt keep2 ~) j) p- L& E$ Q

: m. K! O. L4 f( e/**** The following comment form also works ****/% O' O! X0 w, _4 f1 k
6 Z5 A( w, D7 b9 P3 K9 x
//exemplar attribute nodeA_3 preserve_signal true
3 Q1 U7 q9 K( W( d" G9 ~# M: N; k# F: R$ ^3 f- ?) b
//exemplar attribute nodeA_3 opt keep
' D" [% H0 Q' L9 b, C
* c  H& [2 @4 n1 G/**** The following comment form also works ****/; l% z' ^! K' @

. e- M, O; s: p3 T& U//exemplar attribute nodeA_2 preserve_signal true( o1 c, B' A3 e+ g7 o
% k- X0 l+ D5 A* @7 T7 Y, I
//exemplar attribute nodeA_2 opt keep$ \) G" j2 o& e0 j
5 p+ `; o' k$ D/ W! @- Z8 Y2 {
/**** The following comment form also works ****/
" w) z7 G/ r, f9 v% a  z
, |" K+ B1 Q- @2 H" v6 G//exemplar attribute nodeA_1 preserve_signal true
: B, ?1 m$ o5 _# p/ p+ Q6 y. s- a; j% n& `, o/ \& {1 B
//exemplar attribute nodeA_1 opt keep
0 O. Z7 c% {8 @7 P5 J: `. x , X( e4 t2 F' v3 X5 ^' v/ d

& O# e- M& V/ q/**** The following comment form also works ****/
5 ]! K0 l3 d8 S6 s
2 F3 d: [) [$ e3 D2 k: V1 u9 z/*exemplar attribute nodeA_0 preserve_signal true" q/ \5 t) W- o' S+ `7 e& D. X3 t

9 @' d* b1 a0 r& c, z+ C2 Eexemplar attribute nodeA_0 opt keep*/ + Y0 |" q) }" q& }: ^" |+ n: R

' c. N3 k1 G5 W9 i4 h1 I/ x5 p, a7 b0 M

- n( j4 X# u0 \; t; K& O: I& e8 F8 ~( f3 G
" N5 l5 I9 w) R0 w, I7 |% |

: e1 i' J/ b& d% @* b
0 Y, k! p& \4 _7 p3 {$ ^2 L) I
9 Z9 m3 S4 k6 E! Q) _- _) j* K' f6 }8 ]% X' m0 B

6 }" c3 C5 ?- Zwire nodeA/* synthesis syn_keep=1 opt="keep"*/;1 c0 \0 j& q2 g8 n4 D
wire nodeA_0/* synthesis syn_keep=1 opt="keep"*/;
" P" W8 }' O5 H. v* Qwire nodeA_1/* synthesis syn_keep=1 opt="keep"*/;
1 ~$ C& A) d8 y$ L4 L: Jwire nodeA_2/* synthesis syn_keep=1 opt="keep"*/;
3 Z3 H2 u- c6 u* fwire nodeA_3/* synthesis syn_keep=1 opt="keep"*/;& I& |0 s  ?: L1 ]  q
wire nodeA_4/* synthesis syn_keep=1 opt="keep"*/;0 c# C+ Y5 \7 I0 D

! Y) P# R! l) H& v: lassign#1 nodeA_0  = sclk & ena;
% |( f) O. `: M* d, V/ g8 Q
% O0 B" C- ?/ M) aassign#1 nodeA_1 = ~ nodeA_0;
# O* i- n& _+ {# c$ Y/ A/ }/ Q0 _assign#1 nodeA_2 = ~ nodeA_1;8 l7 O9 s& c$ N0 O  M2 j4 i
assign#1 nodeA_3 = ~ nodeA_2;
  ^) v, D# e' @( v' y+ K1 G. ?- hassign#1 nodeA_4 = ~ nodeA_3;  q- M" y( {; m0 v+ w

/ s0 j/ _$ x, p$ ireg xout;- L! t" u* x, Z* `

- g9 u; S* N1 A  C6 p& P4 aalways@(nodeA_1,nodeA_2,nodeA_3,nodeA_4,set)/ I5 ~8 p! @) j. `6 O" x( a
  casez(set)  l9 s2 g& s' a; X' b/ \
    1: xout =#1 nodeA_2;0 F2 w1 n; N- C/ @3 Y: t
    2: xout =#1 nodeA_3;. b2 K7 K" C# ?0 U2 ~& X5 l9 \
    3: xout =#1 nodeA_4;
) S) O0 C9 G/ N    default: xout =#1 nodeA_1;
8 J1 S+ _, T' J0 F( }, E: z- C  endcase% E' Y. A1 W0 W/ U9 ^3 R
    \0 A0 Z; O9 C- U5 ~& u1 B+ p
assign#1 nodeA = xout;8 l2 X9 x' `6 {5 ~7 [
assign#1 outp = ena ? nodeA^sclk : 1'bz;
! E) I4 ^* S& B3 {3 L* `/ H
6 \% e9 I5 H& n6 r0 nendmodule2 A. T  \' f8 @5 \% c+ Z; @$ C  Q
- {0 a& ]6 z  b5 Z

: c9 J# T. M2 y- }2 x) u6 h8 L5 K, I4 _$ s8 h
`timescale 1 ns / 1 ns; t& z/ [3 {. G! J/ N6 x
module xclk_tf();
  |- a( v" P# d1 {" F; |. s; ]" b' O9 ]6 J) v- z. q, N
// Inputs+ h7 x, X1 i6 M4 W
    reg sclk;: Z- H2 E% ~# B" v, d+ V1 x  F/ }& R! s
    reg ena;
, P3 I- J+ |" t0 t# K# j    reg [1:0] set;
3 B& l2 q. H: R) S  T! c4 B4 s1 e2 `& c* l& I' q: ?/ K4 w, P
) d, ^3 c) m' s5 X) E) e, L. d
// Outputs( z5 f' n; ~/ z2 B7 B
    wire outp;1 @3 q' V+ N! n  r0 F9 P! e
( J# c$ j7 B6 H% R
6 {) a- J& z' z' X4 H

% v2 f. f/ V: A4 V& P    xclk UUT (/ ]* r, S; I- s% A
        .sclk(sclk), 7 ]) O# K4 {% z- X* _1 ?
        .ena(ena),
& L: F+ A1 F& ^: F        .set(set), 6 Q8 P; o' a2 D. I9 g! s
        .outp(outp)
2 _7 v; L( u& g7 G% F1 O2 M        );* i# X- Q7 c$ j3 ^' |

# X; ?$ @- `5 Y( a7 x& P3 g- [1 ?4 s1 r* L/ k4 h, G0 U; `! D6 T
9 l/ a8 Y1 Z4 V9 Z! o9 G3 D
    initial begin; `' F+ Q+ T) x
            sclk = 0;( q: P6 ]7 j) r; Y( M4 U( r
            ena = 0;9 Z  A! Y/ p4 F; |0 U7 s* n8 E9 G& F
            set = 0;
7 Q- P! t' g3 x* j* f! _% W    end
9 D& {! S, Y" ]8 `$ o0 C$ w( Z3 E
0 z1 w0 a7 Q$ X+ [! }- U
% {9 D# P: O2 r5 Q  Z. p- B0 u1 w( palways# 5 sclk = !sclk;
* z: u: I" t: r' c7 J1 Z- @2 L$ I/ a+ v; g. s: \" P
initial begin
: `0 z. C3 |7 s5 c; [        #100
1 _& O) h  W- C/ r          ena = 1;
& ]7 F# {& K( T* I' f2 |4 b/ N; C        #2000
% _3 @% U/ r9 y* Q  g3 D          set = 2;
# T% E$ s' H' u( E/ i( X4 m' l- R        #2000 * G+ \3 f, k9 o$ ?" _) l; V8 c
          set = 3;
/ D; U. {( H/ ~! \  f& U8 C# l  #2000( M' y9 Y/ z4 p2 p* e' f; y/ k  A
  $finish;
7 p8 ?' C+ a$ }5 ?6 b# R. v( Cend& R+ B, f1 T) c$ P3 H9 o' D- Q
endmodule // xclk_tf
作者: tommywgt    時間: 2007-9-10 02:49 PM
這個有趣了" G0 p; w  Q1 M% Z5 @
有simulation的waveform嗎?
8 |2 R1 W, _* h. I& J示波器量的更好~~~^^"
作者: tieyuhsun    時間: 2007-9-10 05:20 PM
有附 test bench
: X  ]+ v; a6 ]: B( T' ^! i+ B確實可用! 已實驗過,但我不會貼圖。( [3 _( c6 f8 l2 b! b- c
只要略加修改即可實現。
作者: kokonut    時間: 2007-12-24 02:50 PM
請問一下你是要控制LED在顯示方面的應用嗎??
) g' p7 @6 a8 H! C* ]$ }, ^" ]" V1 D6 E
可以和你討論幾個問題嗎??
7 ]: t! P; S: \- @0 \1 \" T3 j: m: u, m" S9 a
方便留MSN嗎??
) I$ ~8 J+ |6 R
7 ]8 V$ N$ \6 W  y* ~感謝
作者: kolong    時間: 2007-12-24 04:35 PM
沒錯...
9 T0 T0 D0 |7 o是要用在LED Backlight的....
6 Z; n+ m/ [* ]# U2 k# t& Z- B: U其實有問題可以在這個帖子直接討論..  f4 f/ R/ G4 M! w. s# J7 t: ~
這個沒什麼秘密啦...9 B6 l8 w* c5 t9 R/ l
因為我已經申請專利了.....
作者: yoyo20701    時間: 2008-10-4 12:04 AM
嗯~~大大解答蠻詳細低~~~多謝喔~~~小第在研究看看~~~~~~~��




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