Re: [問題] Phase generator & Freq divider

看板Electronics作者 (小孩臉)時間7年前 (2018/10/17 02:00), 編輯推噓1(101)
留言2則, 1人參與, 7年前最新討論串3/3 (看更多)
※ 引述《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
謝謝您特地寫Verilog,但我久沒碰忘記寫法了QQ
10/17 09:46, 1F

10/17 09:46, 7年前 , 2F
不過上面的兜法我會試試~
10/17 09:46, 2F
文章代碼(AID): #1RnYSua2 (Electronics)
文章代碼(AID): #1RnYSua2 (Electronics)