2016-08-31 2 views
-1

У меня есть вопрос, и я надеюсь, что кто-то может дать мне подсказку, чтобы решить проблему.Verilog: обнаружение импульсов больше tmax

Мне нужен код Verilog, чтобы сигнал «reset» сразу же поднимался, если период входного сигнала «in» больше tmax.

сигнала «сброс» должен перейти на низкий уровень снова при следующем положительном краю «в» (если есть следующий положительный фронт)

Если период входного сигнала «в» меньше, чем Tmax то сигнал " сброс "должен оставаться низким.

Пример 1.

tmax=100ns 
period(in) = 80ns 
  • сброса остается на низком уровне все время

Пример 2.

tmax=100ns 
period(in) = 130ns 
  • сброса переходит в высокое 100ns после первого положительного фронта "in"
  • сброс переходит на низком уровне при следующем положительном краю «в», если есть второй импульс

See attached image

Где я должен начать?

+0

Это только для испытательного стенда Verilog? – toolic

+2

Покажите нам, что вы пробовали до сих пор и как все пошло не так. –

+0

Привет, инструментарий, нет, на самом деле это модель, которая контролирует входной сигнал «in» и выдает «сброс» в соответствии с описанием выше. Спасибо! –

ответ

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 
Смежные вопросы