首页 > 微波/射频 > RFIC设计学习交流 > verilog-A定时操作求助

verilog-A定时操作求助

录入:edatop.com    阅读:
想用verilog-A写一个模型,实现功能如下:输入信号是一个周期不固定的方波,输出信号也是一个方波,输出信号的上升沿是由输入信号的上升沿确定的,上升沿到来后,维持一个固定时间,然后下降,也就是说输出信号的下降沿是由一个固定时间确定的。
现在的问题是,我在verilog-A中没找到一个实现这个固定时间的函数。用@(timmer(持续时间))只能使输出信号下降一次,并且在条件语句中无效,也不能做成一个自定义函数。
请问大家这个问题如何解决,谢谢

我尝试讨论下。
1. clk_out = clk_in & (~absdelay(clk_in,tdelay));
2. @cross(V(CLK_IN)-vtrans, +1)
     begin
            CLK_OUT=1;
            time_rising_edge=$abstime;
     end
     @timer(time_rising_edge+tdelay)
     begin
             CLK_OUT=0;
     end

VerilogA干这个有点难,
首先你要定义一个中间节点,和一个整数:
electrical temp;
integer n;
然后,你要把输出(clkin)翻译成整数:
n=V(clkin)-vtran;
如果你要求精度,需要增加收敛节点:
@cross(V(clkin)-vtran, 0);
第三步,将n的反赋值给temp:
V(temp)<+ transition(!n, tr, td, delay);
其中,tr是上升沿,td是下降沿,delay是延迟。
最后,将clkin和temp相乘(模拟的乘法就是“与”)
V(clkout) <+ V(clkin)*V(temp);
收工。

顶2楼!
@cross(V(in)-vtran, 1) begin
    n = 1;
    t = $abstime;
end
@timer(t + delay) begin
    n = 0;
end
V(out) <+ transition(n?vhi:vlo,tr,tf,td);

申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程

上一篇:cadence ADEXL仿真PSS和Pnoise,怎样查看结果呀?
下一篇:MOS管用途

射频和天线工程师培训课程详情>>

  网站地图