如何不用时钟在verilog中产生PWL或脉冲

如何不用时钟在verilog中产生PWL或脉冲,verilog,system-verilog,Verilog,System Verilog,我正在编写一段代码,其中需要根据条件生成输出- 一,。如果输入为X/Z,则输出应为X。 2.如果输入为0,则输出应为0,延迟为0.75us。 3.如果输入为1,则输出应为5个1.5us的高速脉冲,占空比为50% 延迟0.75us。 我不知道如何在verilog中编写它?您可以使用SystemVerilog的fork/join\u none来实现这一点 什么是PWL?这是用于测试台还是设计?@dave_59 PWL对于我的应用程序是分段线性的,我们可以在电路文件中将其定义为t1 v1 t2 v2。

我正在编写一段代码,其中需要根据条件生成输出-

一,。如果输入为X/Z,则输出应为X。 2.如果输入为0,则输出应为0,延迟为0.75us。 3.如果输入为1,则输出应为5个1.5us的高速脉冲,占空比为50% 延迟0.75us。
我不知道如何在verilog中编写它?

您可以使用SystemVerilog的fork/join\u none来实现这一点


什么是PWL?这是用于测试台还是设计?@dave_59 PWL对于我的应用程序是分段线性的,我们可以在电路文件中将其定义为t1 v1 t2 v2。。。。这意味着在时间t1,模式值应该是v1,在时间t2,模式值应该是v2。。。诸如此类。你可以在Verilog中写它而不需要时钟,但你不能把它转换成实际的硬件。如果输入发生变化,而您的输出仍处于前一个输入的繁忙状态,又会发生什么情况?@Oldfart在这种情况下,它应该根据新的输入条件显示结果。是的,出于测试目的,我不需要它来进行合成。如果没有您最后的注释,它应该根据新的输入条件显示结果。使用语句编写这样的代码并不太困难,但新的需求使它变得复杂。我会先制作一个本地1.33MHz时钟,然后编写一个FSM,但不使用时钟,我会把问题留给您。
logic in, out;

    always begin
               fork 
                  case (in)
                    0: out <= #0.75us 0;
                    1: repeat (5) begin
                           #0.75us out <= 1; 
                           #0.75us out <= 0; 
                          end
                    default: out <= 'x;
                   endcase
                join_none;
                @in
                disable fork; // kill repeat loop if still active
             end