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);
申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程。