看板 Electronics 關於我們 聯絡資訊
※ 引述《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
a1010223: 謝謝您特地寫Verilog,但我久沒碰忘記寫法了QQ 10/17 09:46
a1010223: 不過上面的兜法我會試試~ 10/17 09:46