Chip123 科技應用創新平台
標題:
關於virtex-4的Digital Clock Manager
[打印本頁]
作者:
小人發
時間:
2008-3-18 02:34 PM
標題:
關於virtex-4的Digital Clock Manager
各位大大好
; g& y+ A/ q- K: _0 w- F! m
我目前在使用vietex-4 的板子
0 M5 O/ J; l& N" A5 C! L7 `
關於板子上面clock source的訊號要怎麼給有點疑問
9 X" Y$ i/ e" q6 o) |+ B
使用手冊上有寫說分成differetial,single-ended clock source 兩種
% { L3 r: E$ P/ Z+ J
這是代表什麼意思
$ f% ]3 t' l1 p7 i
另外板子上有一個100M的震盪器,他說要使用DCMs可以產生不同的clock
0 C& w) R1 J9 A# q' k
這是代表說我要另外再寫一些指令去達到我想要的clock嗎
1 v% v4 h3 @( q, m' z X
有大大寫過這個程式嗎? 不知道要從何下手
( C z4 O$ A5 l, h& y H
' j. A6 a4 H0 H+ v) d) K. ^
另外有一個25M震盪器
7 J8 |" [2 k) p4 j# b6 |
好像可以用調撥的方式將M,N兩組開關,調成我們要的clock
, k8 z5 K8 n' f: _. T
out = 25x M/N
# w8 o" |% c( N: I$ Q! m# Y
這是另外一種方式嗎
$ T; S2 I# j) S
4 N+ a, k0 n# ] ~9 |6 k
我有點搞混了...使用手冊上面寫了很多的clock輸入
9 ^& H/ u- ^7 L) m. O
要怎麼分類呢??
+ T; `8 U3 G" @- o7 |: J8 ?
請使用過的大大指導一下...感謝了
作者:
rockhuang
時間:
2008-3-20 11:14 AM
virtex-4的版子不知是原廠網頁上的那塊?
http://www.xilinx.com/products/devboards/index.htm
( a% n6 I+ g" @3 ]7 r
關於DCM功能,建議先看一下Xilinx的clock manangement
8 v+ @/ {5 Q* D9 P
http://www.xilinx.com/support/do ... sign_clockmanag.htm
$ ]* b# U4 g! {" G$ s
中的 XAPP132 - Using the Virtex Delay-Locked Loop
作者:
kevin
時間:
2008-3-20 12:34 PM
Single end--->單端輸入(從P端輸入)
J- R6 N/ ?, u; T1 ?
Differential--->差動輸入(LVDS,,等)
4 T d5 |% o+ Q, {" P2 f
如果CLOCK頻率不是很高,可採單端輸入GCLK pin,再從內部去除出所要的CLOCK頻率.
. c S7 D, H S5 E _1 ]
j+ k6 Z: k$ L8 E0 I
若要用DCM,從Xilinx Architecture Wizard(在ISE Accessories--->Architecture Wizard)去自動產生所要的CLOCK頻率.Wizard 會產生 .vhd,.xaw,.ucf檔.把.xaw加入design.(利用ISE add source)以下是以單一個DCM instance作例子.
. u. I7 |. }& q4 e- i( f
3 s# I. r. w4 F7 f
EX: (輸入75MHz--->>輸出50MHz)
! F" S" J0 Q' k$ ^
entity ClockManageris
! c4 n2 I1 G0 r4 q
Port ( clk_50mhz : in std_logic;
$ }/ b- \ J" x4 x+ ~6 N/ Y/ ]# [
clk_75mhz : out std_logic;
9 J1 D4 ]0 C! o& Q: W
clk_75mhz_180 : out std_logic);
+ q1 N2 n# v x0 g0 D
end ClockManager;
c4 M8 y& g( T9 p
architecture Behavioral of ClockManageris
' ?+ v# x/ u1 B: {0 U
component clkgen_75mhz
2 `1 h; e2 H, ~: z9 K. W& L- s. ^/ R" Z
port ( CLKIN_IN : in std_logic;
: T0 v+ ?# Q' j- g. b; m( z5 }# E
RST_IN : in std_logic;
6 M3 _; r) s5 h& e. L& @
CLKFX_OUT : out std_logic;
/ B }( I% u7 |1 k9 S) w
CLKFX180_OUT : out std_logic;
% d/ o7 p1 o. e
CLKIN_IBUFG_OUT : out std_logic;
( p j. y* L" |
LOCKED_OUT : out std_logic);
' s3 Z4 L+ [( Q- s
end component;
, s0 t0 I/ H) f$ k, B
begin
& V( Y+ H$ P( u# v$ e( I0 u" M
gen_75mhz: clkgen_75mhz
# G2 k p7 N4 O) ^+ K: y
port map( CLKIN_IN => clk_50mhz,
, M, }/ L6 ?: o. Q
RST_IN => '0',
) H- {( ?( z! o$ n2 g
CLKFX_OUT => clk_75mhz,
5 C7 }# s1 A$ t) P% b8 N/ v
CLKFX180_OUT => clk_75mhz_180,
! _8 B* @) G3 t/ S* K! V: G; Y/ d- q; `2 Y
CLKIN_IBUFG_OUT => open,
$ s, r" h2 x5 {% y5 g# ?, w
LOCKED_OUT => open );
' d2 i; u5 ~% d% D$ J; U# F$ |
end Behavioral;
作者:
小人發
時間:
2008-3-20 06:44 PM
回復 2# 的帖子
( ?2 _, F* R/ o) |3 ]0 u
2 ~" a% A0 @ y6 m* [2 W
我們用的板子是VIRTEX-4 (LX60)
2 |5 k, y+ G4 t5 u3 w0 s# a* R5 r. Y
我昨天有去網頁找了些關於DCM的資料來看
9 B0 @* P. u% F8 G0 l2 ?
雖然有點複雜
+ s# k0 r+ N# t5 B$ |
不過還是看個大概
/ C, K% Q9 @- M: k
# h$ A- w) U, s# B
回復 3# 的帖子
. Q' N3 h' j7 d7 [7 w- L7 q
: d- I2 f& q7 ~# _. o' p6 V" L; b
你講的這些動作
# d' o3 Q Y/ f; J9 r0 E; V
我昨天都有照著我在網路上找的資料大略的做過一次
% D3 l9 ^; h5 D {7 q
不過我還是有一些問題
' H* o# X) H! r- t" {
1.像DCM的輸入 好像是由100M震出來的
! J: ^" u& L3 p, }0 ?/ P' ^- T" M
那我需要256M 利用DCM 可以做得到吧??
6 _7 p% ^/ \4 A0 e4 i
還是說只能產生比100M低的時脈
- l+ s( ~7 H# h" k& V, L
# N7 v H, y8 O( h
2. DCM是分成DLL,PS,DFS嗎??
% l) p# f0 V6 x z- h! z/ m, _
因為我昨天看到DCM組成的block
6 P( T) g9 y/ O: N7 D& q3 K
裡面含有這些,每個功能都不太一樣
$ j g: p+ `% s
如果我今天要產生一個單純的沒有相位移256M
- J d7 d( [( o) v3 V
那參數的設定會不會不需要用到全部??
; H1 v$ W! U& Q( O
還是只需要用到DLL就好
4 H; c4 Q% m1 q" X+ ]- z. ]
' ]8 c' I! X) ^1 p! p
3.像你講的 Wizard 會產生 .vhd,.xaw,.ucf檔
8 j( a" i/ V' I0 K
把.xaw加入design的意思是把這個檔也燒到FPGA板子裡嗎?
* P. c/ ~* l% \( g. j1 @
那我要設定接角嗎??
! R. a& D5 L. [) S, w: n
因為xaw的程式不像一般會有input output
/ I: d& d% e# n
所以會有點搞混掉
0 G! ^, S& L( G, F
+ |+ D8 @5 L* c O$ M' N
以上是我小小的疑問
0 G% |2 }4 n( a+ B
先謝謝各位大大的解答
6 X3 W$ _# P! b! ]3 b
5 A8 x$ Q: C$ b& B& }8 }
[
本帖最後由 小人發 於 2008-3-20 06:51 PM 編輯
]
作者:
kevin
時間:
2008-3-20 10:10 PM
要從100M產生一個單純的沒有相位移256M,要用DFS,CLKFX o/p功能,而且不是在做Deskew的話,CLKFB可不接.
% t+ O( z) j* z* I7 f8 d
# m7 C) z/ Z \) T
參數的設定可在Wizard內設定.以Virtex4-10來看,如果只用DFS o/p(CLKFX/CLKFX180),不用DLL o/p,
0 X7 U! ^# Q2 T1 ]5 k
input clock 100M,ouput clock 256M,則只適用Maximum Speed/High Frequency 的Mode. Low frequency mode
0 v4 B7 ^( d( @5 o* b& |8 F
最多到210M,不夠用.
( u9 o) m$ |4 d+ ?
.xaw 檔是Xilinx architecture wizard(XAW)設定檔,像Xilinx coregen 產生memory block的 .XCO檔 一樣,
5 j- t- S( T6 N; {1 Q z
在ISE 的 project manager 裡把他加入跟其他source files 一起即可.然後在你的design source file 要去 instantiate它.可參考上次帖子的例子.
作者:
小人發
時間:
2008-3-21 02:54 PM
標題:
回復 5# 的帖子
我試了一下,大概知道怎麼用了
7 P7 a u/ z4 z
不過還有一個問題
9 H0 V/ P" [: j' c1 d7 R2 j5 T
在DFS裡面 好像沒辦法產生準確的256M
: H3 C+ G0 l6 o5 a- N6 S
因為它是用clock*M/D (M跟D都是2~32的正整數)
3 G1 N* p, Z8 ]+ ^
clock=100M 那怎麼選M跟D都沒辦法達到256M
' X& Z2 K& F/ j# O z
這要怎麼辦 其他DCM的方式有辦法達到這個頻率嗎
作者:
kevin
時間:
2008-3-21 07:05 PM
要用2個DCM串在一起的方式.不過使用上要小心Timing及不Locked的問題.
. B1 A% f5 I9 ^4 Q7 k' h2 H7 m
' |9 U7 U% j) i0 a" E Z
[attach]3298[/attach]
作者:
小人發
時間:
2008-3-23 04:35 PM
標題:
回復 7# 的帖子
對於這兩個DCM相接的方塊圖
' U8 B# v4 n: J5 ]
就是第一個block輸出是CLKDV
2 C# Q, b8 o2 ~' J5 V" J
所以必須是100M除以CLKDV(2,2.5,3,3.5,4........16)
0 A4 n8 X3 a9 d8 u# \; m" `
然後再把除完的頻率當作第二個的輸入
8 W' i- a3 l& ^2 ^
第二個是使用DFS 輸出是CLK*M/D (M跟D都是2~32)
* f# N$ m$ y. p" U2 @
% q( c5 K% e5 O
我好像湊不出來可以達到256M的參數耶
- u4 C1 o( i' h8 c+ D& z* F
是我哪裡沒搞清楚嗎
" C+ W& I5 A0 |3 R7 H
麻煩大大在幫我解惑一下~~
作者:
kevin
時間:
2008-3-24 10:22 AM
這兩個DCM相接的方塊圖只是一個應用方式,你也可以用第一個DCM FX O/P,產生200MHz,再用第二個DCM FX O/P
! d5 p e8 X1 G- E. M7 ~7 r# u
M/N=32/25,產生256MHz,要等第一個DCM FX O/P進入LOCK後幾個cycles,才能開始啟動第二個DCM.
作者:
小人發
時間:
2008-3-24 01:44 PM
標題:
回復 9# 的帖子
我想問一下
2 Q/ k: e6 L: L, q
兩個DCM相接的方法 是直接在裡面可以選擇的模式嗎
; [8 J b& ?+ B- s9 y8 k; r
因為在clock wizard裡面有四種可以選擇
8 ]: x/ U( S: B5 I5 a% g, J+ a
1.Board Deskew with an internal Deskew
# V2 \$ J9 F2 @5 D5 Y7 A
2.Cascading in series wuth two DCM_ADVs
: D6 e, A& K* q r, r# B
3.clock forwarding/board deskew
* y ~* Z, H" [- ]
4.single DCM_ADV
2 L$ B/ y5 F% Z4 ~) n
" z5 h' T6 n$ c" b- W3 q
照你講的方法應該是選擇第二個串接的DCM
8 R" {! L1 V. [/ R" U( Q9 U0 T$ c
問題是我選完之後有一句話是
6 Z) a: Y$ t% o. e
CLKFX and CLKFX180 are not recommended for either INST1 and INST2 because of jitter requirement
: T8 b) S& E% n: b5 J
所以裡面沒有CLKFX的選項
/ y' @2 U& K, |4 v, G/ w9 q
那就沒辦法照著大大的步驟做了
( K; \$ M) c f, b
還是有其他的辦法可以選呢??
作者:
kevin
時間:
2008-3-24 03:07 PM
的確第二個DCM不recommend FX o/p,因為jitter 會累加過大,
1 M* s2 X8 v+ Z9 r7 b
反過來產生,先用第一個DCM FX O/P,產生128MHz(M/N=32/25),
& V1 s7 _* G; {. T6 T: \
再用第二個DCM 2X output 產生256MHz.
7 a8 p5 c# `# l5 A+ D5 |
或第一個DCM 2X O/P 產生200MHz,第二個DCM FX O/P M/N=32/25,產生256MHz.
作者:
小人發
時間:
2008-3-24 03:30 PM
標題:
回復 11# 的帖子
但是會出現一個錯誤
, x& @( _. |& i
因為我用的DCM是cascade in series
# P2 j- ?% t4 V6 l. G# v2 s3 D2 D
所以好像有限制在low frequency mode
! a: D+ K+ i1 A6 D) j( @- j
所以在第一個輸出要達到200M會發生錯誤
9 p3 u3 h1 [, H! |0 g
- F9 \' G" t4 c; s$ \. o
還是說我選的模式跟大大講的模式不一樣
6 |9 P( Q$ B' T0 y7 [& h0 q* N
你說的也是要用內建的 clock wizard ->2.Cascading in series wuth two DCM_ADVs 嗎
作者:
kevin
時間:
2008-3-24 04:58 PM
第一個DCM 限制I/P frequency,32M<-->75M,
, v: A, K' X+ ~- G" V1 q
不知25M震盪器可否調出來產生32M(M/N=32/25)或64M,再用一個DCM FX o/P 產生256MHz.
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2