作者horsehead (小孩脸)
看板Electronics
标题Re: [问题] Phase generator & Freq divider
时间Wed Oct 17 02:00:21 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/Electronics/M.1539712824.A.902.html
1F:推 a1010223: 谢谢您特地写Verilog,但我久没碰忘记写法了QQ 10/17 09:46
2F:→ a1010223: 不过上面的兜法我会试试~ 10/17 09:46