-1

我有一个问题,我希望有人能给我一个解决问题的提示。

如果输入信号“in”的周期大于 tmax,我需要一个 verilog 代码来使信号“reset”立即变高。

信号“reset”应该在“in”的下一个上升沿再次变低(如果有下一个上升沿)

如果输入信号“in”的周期小于 tmax,则信号“reset”应保持低电平。

示例 1。

tmax=100ns
period(in) = 80ns
  • 复位一直保持低电平

示例 2。

tmax=100ns
period(in) = 130ns
  • 在“in”的第一个上升沿后复位变高 100ns
  • 如果有第二个脉冲,则复位在“in”的下一个上升沿变为低电平

见附图

我应该从哪里开始?

4

1 回答 1

0

这个怎么样。您仍然需要检查是否超过 Tmax,但您会在结果之间获得 1 个时间尺度的分辨率。

always @ (*)
    begin
        while(1)
            begin
            current_time = $realtime; 
            if (last_time > 0.0) freq = 1.0e9 / (current_time - last_time); 
            last_time = current_time; 
            # 1;  // This allows for 1 timescale between loops.  If you leave
                  // this out, most simulators become non-responsive in the loop.
            end
    end
于 2016-08-31T17:33:27.103 回答