在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: mustangyhz

[原创] PLL学习历程—敬请高手指点

[复制链接]
发表于 2010-12-4 22:51:31 | 显示全部楼层
也来学习学习
发表于 2010-12-5 13:23:50 | 显示全部楼层
谢谢分享
发表于 2010-12-7 23:01:51 | 显示全部楼层
111111111111111111
发表于 2010-12-7 23:03:30 | 显示全部楼层
xxxuuuueeeexxxxxxiiiii
 楼主| 发表于 2010-12-8 19:19:47 | 显示全部楼层
本帖最后由 mustangyhz 于 2010-12-8 20:34 编辑

想做小数分频的PLL.准备用一阶的sigma-delta modulator[累加器]输出控制2/3分频器,后面接100分频,实现200~201分频。单独在ius里仿真累加器和2/3分频器都没有问题:
累加器.JPG
【累加器】各信号依次为输出平均值、输出值、输出总和、复位
2-3分频器.JPG
【分频器】各信号依次为分频系数切换使能、分频输入、分频输出、切换控制输入、切换控制输出
但是我把累加器做成一个cellview,做混合仿真的时候就其输出怎么都不对了,输出不再是0、1交替变化,而是一直为0,一样的代码,为什么?谁能解释下吗? 累加器 分频器.rar (93.78 KB, 下载次数: 25 )
累加器代码:
module modulator(clk, rst, v_out);
input clk, rst;
//input [28:0] k_in;
output  v_out;
reg  v_out;
reg [28:0] a1;
wire [28:0] s1,q1;
wire  c1;
assign s1 = 29'b00100110011010011010110101000 + a1;
assign c1 = {s1[28]};
assign q1={s1[27:0] };
always@(posedge clk or posedge rst)
begin
    if(rst) a1<=29'h0;
    else a1<=q1;
end
always@(posedge clk or posedge rst)
begin
    if(rst)
    begin
        v_out<=1'b01;
    end
else
    begin
        v_out<=c1;
    end
end
endmodule
仿真顶层文件
`timescale 1ps / 1ps

module test;

reg clk;

reg rst;

reg [31:0] bout_sum, clk_sum, averange;
wire bout;

modulator M1(clk, rst, bout);

always #1 clk = ~clk;

initial

begin

    bout_sum = 32'b0;

    clk_sum = 32'b0;

    averange = 32'b0;

    clk = 1'b0;

    rst = 1'b1;

    #2 rst=1'b0;

    #10000 $stop;

end

always@(posedge clk or posedge rst)

begin

if (rst)
begin

  bout_sum = 32'b0;

  clk_sum = 32'b0;

  averange = 32'b0;

  end

else

  begin  
        bout_sum = bout_sum + bout ;   
        clk_sum = clk_sum + 1;   
        averange = {bout_sum,28'b0}/clk_sum;
   
  end

end

endmodule
我查看了下cellview内部信号,除了clk和rst【这两个是外接的信号】外都是不确定的,这是什么原因?其实我无非是把上述顶层文件中的时钟信号和复位信号改成了外接具体信号的形式,其它没有什么变化。为什么会出错呢?
内部信号.JPG
各信号依次为:上一时刻累加器量化误差、进位输出、控制时钟、当前量化误差、复位、累加结果
发表于 2010-12-8 21:15:06 | 显示全部楼层
楼主加油
发表于 2010-12-9 08:32:46 | 显示全部楼层
这个我不会,我是analog circuit designer, digital 不懂。
发表于 2010-12-9 11:38:29 | 显示全部楼层
thanks for sharing
 楼主| 发表于 2010-12-9 15:28:38 | 显示全部楼层
回复 87# mustangyhz

问题解决了,查看了ConnRules
/usr/ius/tools/affirma_ams/etc/connect_lib/connectLib/ConnRules_18V_full_fast/connect
供电电压为1.8V
我将激励信号从原来的1V改成了2V,就出了正确结果,虽然原因还不是理解得很透彻,但是现在问题基本解决了,感谢,网友鱼刺的帮助。
 楼主| 发表于 2010-12-9 16:28:02 | 显示全部楼层
本帖最后由 mustangyhz 于 2010-12-9 16:29 编辑

小数分频PLL各部分仿真似乎都是正常的,最后的结果却不对,希望有人能帮我分析下
我是如此设置的,分频器分两部分2/3分频+100分频,2/3分频受累加器溢出控制,累加器输入29'b00100110011010011010110101000=80557480,对于28位的累加器来说相当于小数
80557480/268435456=0.3000999987125396728515625,所以分频系数应该是200.3,参考信号12MHz,锁定后的输出应该是f=12*200.3=2.4036GHz,我的仿真结果却是2.67GHz,为什么?看上去基本锁定了的。

out-vctl.JPG

out-f.JPG
一阶的sigma-delta modulator 效果果然很差:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-17 06:05 , Processed in 0.035620 second(s), 6 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表