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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2637|回复: 9

[讨论] verilog-A相关求助,3Q!!!

[复制链接]
发表于 2017-2-17 08:12:13 | 显示全部楼层 |阅读模式

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

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

x
自己用verilog-A编译的霍尔传感器仿真model,其中里面的G的表达式,(tan(theta_H))存在=0的情况,因此仿真会报错,请问各位大神这个问题应该如何解决,谢谢~~~


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

`define M_PI  
3.14159265358979323846264338327950288419716939937511
module ccvs_vh(vout_p, vout_n, iin_p, iin_n);
input iin_p, iin_n;
output vout_p, vout_n;
electrical vout_p, vout_n, iin_p, iin_n;
parameter real teff = 5E-4;
parameter real Ndnw = 1E16;
parameter real q = 1.6E-19;
parameter real l = 20E-4;
parameter real w = 15E-4;
parameter real un = 600;
parameter real r_H = 4E-5;
parameter real motor_freq = 100;
parameter real amp = 0.1;
parameter integer steps_per_period = 32;
real theta_H;
real G;
real SI;
real phase;
real B;
   analog begin
//    r_H = 1/(q*Ndnw)
      $bound_step (1.0 / (steps_per_period*motor_freq));
      phase = idtmod(motor_freq,0,1);

      B = amp*sin(2*`M_PI*phase);

      theta_H = atan(un*r_H*B);
      G = 1-5.0267*theta_H/(tan(theta_H))*(exp(-(`M_PI*(w+2*l)/(2*w))));
      SI = G*r_H/(q*Ndnw*teff);
      V(vout_p, vout_n) <+ 0.5*SI*I(iin_p, iin_n)*B;
   end
endmodule
发表于 2017-2-17 09:42:02 | 显示全部楼层
可能有被0除的风险,试试把(tan(theta_H))写成(tan(theta_H)+1e-20), 即当tan(theta_H)=0时除数不为0
发表于 2017-2-17 09:52:27 | 显示全部楼层
从物理上来讲,B应该是磁通量吧。你就想象一下,电流不可能等于零,因此你加一个直流漏电Ileak。
所以
B = amp*sin(2*`M_PI*phase)+Ileak;
这样B不等于0,你那个被除数就不等于零了吧?
 楼主| 发表于 2017-2-17 09:54:33 | 显示全部楼层
回复 2# david_reg


   对的,按照你提供的方法,确实可以仿真了,谢谢!!
 楼主| 发表于 2017-2-17 10:14:18 | 显示全部楼层
回复 3# wind2000sp3


   对,B是磁场强度,如果像你说的那样加一个Ileak,B是不是还是存在=0的时刻呢?
 楼主| 发表于 2017-2-17 12:43:09 | 显示全部楼层
回复 2# david_reg


   你好,请问假如某一个parameter 如un,现在想改成与温度T有关的函数,即仿真温度从T=-40~+120时,un随温度变化,应该怎么处理,还望赐教~~
发表于 2017-2-17 14:17:24 | 显示全部楼层
不懂,但是支持一下!
发表于 2017-2-17 17:39:29 | 显示全部楼层
可以在表达式中用 $temperature 表示当前环境温度。
建议多查看cadence的verilog-a帮助文档。
发表于 2017-2-17 18:06:25 | 显示全部楼层
回复 5# 辽大队长

在sin函数前加abs,然后再用另外的sin函数assign磁场方向。
发表于 2020-7-1 20:36:42 | 显示全部楼层
学习一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-2-14 06:58 , Processed in 0.022030 second(s), 7 queries , Gzip On, Redis On.

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