Re: [問題] Phase generator & Freq divider
※ 引述《louisyan ()》之銘言:
: https://escholarship.org/content/qt9q86n8b2/qt9q86n8b2.pdf
: 90 nm 製程的話,論文第13頁的CML DIVIDER應該可以達到你的需求
: ※ 引述《a1010223 (和煦人也)》之銘言:
: : 各位版友好
: : 目前有一個需求是兩個input 2.5GHz clock,phase差180
: : 經過一個block之後,output會產生四支1.25GHz clock,兩兩差90度
: : 也就是這個block需要同時除頻且製造出除頻後的四個相位
: : 找遍文獻還是沒什麼進展,希望有想法的大大不吝指導!
提供另一個用純logic兜的方法 , 兩個input clk1 跟 clk2都先除頻1/2變成
新的兩個clock clk_phase0 跟clk_phase3 ,然後再把clk_phase0反向得clk_phase2 ,
clk_phase3反向得clk_phase1
然後你就會發現 clk_phase0 ,clk_phase1 ,clk_phase2 ,clk_phase3為原頻率的一半
且各差90度 ,下面為modelsim模擬圖 ,不過有個問題 ,你的頻率為2.5GHz頗高頻
用這方式可能要考慮一下clock skew 應該會有點明顯
https://imgur.com/a/Ktl0xIR
下面附上 RTL讓你參考
module clk_gen
(
input clk1
,input clk2
,output clk_outa //CLK_PHASE0
,output clk_outa_inv //CLK_PHASE2
,output clk_outb // CLK_PHASE3
,output clk_outb_inv //CLK_PHASE1
);
reg clk_outa_temp ;
initial clk_outa_temp = 1'b0 ;
always @(posedge clk1)
clk_outa_temp <= !clk_outa_temp ;
assign clk_outa = clk_outa_temp ;
assign clk_outa_inv = !clk_outa ;
reg clk_outb_temp ;
initial clk_outb_temp = 1'b0 ;
always @(posedge clk2)
clk_outb_temp <= !clk_outb_temp ;
assign clk_outb = clk_outb_temp ;
assign clk_outb_inv = !clk_outb ;
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.150.49
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1539712824.A.902.html
推
10/17 09:46,
7年前
, 1F
10/17 09:46, 1F
→
10/17 09:46,
7年前
, 2F
10/17 09:46, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):