微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > verilog-A相关求助,3Q!

verilog-A相关求助,3Q!

时间:10-02 整理:3721RD 点击:
自己用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

可能有被0除的风险,试试把(tan(theta_H))写成(tan(theta_H)+1e-20), 即当tan(theta_H)=0时除数不为0

从物理上来讲,B应该是磁通量吧。你就想象一下,电流不可能等于零,因此你加一个直流漏电Ileak。
所以
B = amp*sin(2*`M_PI*phase)+Ileak;
这样B不等于0,你那个被除数就不等于零了吧?

对的,按照你提供的方法,确实可以仿真了,谢谢!

对,B是磁场强度,如果像你说的那样加一个Ileak,B是不是还是存在=0的时刻呢?

你好,请问假如某一个parameter 如un,现在想改成与温度T有关的函数,即仿真温度从T=-40~+120时,un随温度变化,应该怎么处理,还望赐教

不懂,但是支持一下!

可以在表达式中用 $temperature 表示当前环境温度。
建议多查看cadence的verilog-a帮助文档。

在sin函数前加abs,然后再用另外的sin函数assign磁场方向。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top