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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 20051|回复: 19

[求助] 请问动态比较器失调电压的蒙特卡洛仿真怎么做啊?

[复制链接]
发表于 2014-2-24 17:34:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
看到一些paper上面经常提到动态比较器失调电压的蒙特卡洛仿真,但是不知道这个怎么仿出来的。
发表于 2014-2-24 17:38:17 | 显示全部楼层
输入一个ramp信号,观测输出,根据翻转时间,可以推测出input offset。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-24 18:38:26 | 显示全部楼层
回复 2# loveyahoo


    不用搭什么环路,加其他东西吗?
回复 支持 反对

使用道具 举报

发表于 2014-2-24 19:32:48 | 显示全部楼层
我仿真时只是用verilog-A写了如下两个block:
1.ramp wave generator 随着比较器的clock输出阶梯电压(电压范围要稍微大于offset)
2.output data writer 用于记录输出信号和识别翻转时间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-25 10:39:43 | 显示全部楼层
回复 4# loveyahoo

好像看到一篇guide也是这么说的,我再去看看,谢谢你了。说到verilogA,我也正想编一个理想的动态锁存比较器,代码如下,希望比较器功能:时钟为高时进行复位,输出(差分)都被拉高,时钟为低时,比较器只进行一次比较。不过还没改成,能麻烦你帮我看一下吗?

`include "discipline.h"
`include "constants.h"

// model comp - Comparator
//  enable signal is active: High
//
module COMP1_ideal_me (vin_p, vin_n, clk, vout_p, vout_n) ;
input vin_p, vin_n, clk;
output vout_p, vout_n;
electrical vin_p, vin_n, clk, vout_p, vout_n;

parameter real    td = 1p  from (0:inf);
//parameter real   hys = 1u  from (0:inf);
parameter real p_off = 0u;
parameter real n_off = 0u;
parameter real trise = 20.0p  from (0:inf);
parameter real tfall = 20.0p  from (0:inf);
parameter real   one = 3.3;
parameter real  zero = 0.0;
parameter real   vth = 1.5;
parameter real slack = 10.0p from (0:inf); //slack不懂
//parameter integer  init = 1; //不懂作用
//parameter integer  traceflag = 1; //不懂作用

//   // real vin, halfhys, outstate;

real vin, outstate1,outstate2;
    analog begin
     @(initial_step("ac","dc","tran","xf"))  begin
        vin =V(vin_p) + p_off - V(vin_n) + n_off;
        outstate1 =  (abs(vin) > 0.0) ?  zero : one ;

outstate2 =  (abs(vin) > 0.0) ?  one : zero ;

        //if (traceflag)  begin
           //$strobe("%M at Init. vout: %g  hys/2:%g", V(vout),  halfhys);
        end
      end

      //vin =V(vin_p) + p_off - V(vin_n) + n_off; //不屏蔽时报错


      @(cross(vin, +1, slack ))  begin      //报错
           if (V(enable) > vth)   begin
              outstate1 = one;
              outstate2 = zero;

//if(traceflag)
                 //$strobe("%M at %g sec. output going high vin(p-n): %g  hys/2:%g",
                           //$abstime, vin, halfhys); //这些话不知道干什么用的,所以屏蔽了

           end
      end

      @(cross(vin, -1, slack))  begin
           if (V(enable) > vth)   begin
              outstate1 = zero;
              outstate2 = one;

//if(traceflag)
                 //$strobe("%M at %g sec. output going low vin(p-n): %g  hys/2:%g",
                          // $abstime, vin, halfhys);
           end
      end

    V(vout_p) <+  transition (outstate1, td, trise, tfall );
    V(vout_n) <+  transition (outstate2, td, trise, tfall );
    end
endmodule
回复 支持 反对

使用道具 举报

发表于 2014-4-8 15:55:58 | 显示全部楼层
哥们   这个是我看了你的问题后发的 正好我最近一直研究动态比较器 你看看吧 希望有帮助
http://bbs.eetop.cn/viewthread.php?tid=441803&extra=
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-4-9 12:45:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-7-18 15:43:27 | 显示全部楼层
非常感谢,学习哈
回复 支持 反对

使用道具 举报

发表于 2015-4-14 11:29:48 | 显示全部楼层
非常感谢,nice
回复 支持 反对

使用道具 举报

发表于 2015-9-29 11:48:52 | 显示全部楼层
请问楼主想出来问什么这些地方不对了么?求解释
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-10-2 20:24 , Processed in 0.034878 second(s), 5 queries , Gzip On, Redis On.

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