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

verilog-A定时操作求助

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

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

网站地图

Top