Перейти к содержанию
    

задержка сигнала (verilog)

Дана: сигнал.

Задача: задержать его на произвольное время (скажем от 100ps до 2 нс).

 

Делаю следующим образом

`timescale 1ns / 1ps

.................
    always @(dop)
    begin
        dip = #1 dop;

    end     

.................

 

На выходе получаю не точное совпадение dop (вверху) и dip (внизу) (см. рисунок).

 

Вопрос: как корректно описать задержку ?

post-19059-1267706290_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дана: сигнал.

Задача: задержать его на произвольное время (скажем от 100ps до 2 нс).

 

Вопрос: как корректно описать задержку ?

 

У меня на сайте есть начало "Краткого Курса HDL"...

Читайте, там все расписано!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Костян:

Используйте неблокирующее присваивание:

 

 

`timescale 1ns / 1ps

.................
    always @(dop)
    begin
        dip <= #1 dop;

    end     

.................

 

 

http://www.sutherland-hdl.com/papers/1996-...ing_assigns.pdf

Изменено пользователем slash_spb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Костян:

Используйте неблокирующее присваивание:

 

http://www.sutherland-hdl.com/papers/1996-...ing_assigns.pdf

 

благодарю за ссылку..

но у меня и есть неблокирующее присваивание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Костян

в тестбенче мига видел такое:

  always @( * ) begin
    ddr2_clk_sdram        <=  #(TPROP_PCB_CTRL) ddr2_clk_fpga;
    ddr2_clk_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_clk_n_fpga;
    ddr2_address_sdram    <=  #(TPROP_PCB_CTRL) ddr2_address_fpga;
    ddr2_ba_sdram         <=  #(TPROP_PCB_CTRL) ddr2_ba_fpga;
    ddr2_ras_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_ras_n_fpga;
    ddr2_cas_n_sdram      <=  #(TPROP_PCB_CTRL) ddr2_cas_n_fpga;
    ddr2_we_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_we_n_fpga;
    ddr2_cs_n_sdram       <=  #(TPROP_PCB_CTRL) ddr2_cs_n_fpga;
    ddr2_cke_sdram        <=  #(TPROP_PCB_CTRL) ddr2_cke_fpga;
    ddr2_odt_sdram        <=  #(TPROP_PCB_CTRL) ddr2_odt_fpga;
    ddr2_dm_sdram_tmp     <=  #(TPROP_PCB_DATA) ddr2_dm_fpga;//DM signal generation
  end

вроде как раз то, что вам нужно :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

благодарю за ссылку..

но у меня и есть неблокирующее присваивание.

"=" - блокирующее

"<=" - неблокирующее.

 

Вам дали ссылку выше - там все расписано. Могли бы и посмотреть, прежде, чем спорить. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

благодарю за ссылку..

но у меня и есть неблокирующее присваивание.

См. стр. 16 в документе по ссылке!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для тестбенча приведенные примеры подойдут. Но если нужно реально сформировать задержанный сигнал, то #T в синтезе не работает.

Нужно вставлять логические элементы между входным сигналом и выходным, проверять результат, еще вставлять, пока не получишь желаемое. И то - только приблизительно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно вставлять логические элементы между входным сигналом и выходным, проверять результат, еще вставлять, пока не получишь желаемое. И то - только приблизительно.

Констрейны нужно вставлять.

И получишь результат в нужной вилке. :) Ну или не получишь. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всем спасибо, разобрался.

 

"=" - блокирующее

"<=" - неблокирующее.

 

Вам дали ссылку выше - там все расписано. Могли бы и посмотреть, прежде, чем спорить. :)

мне известны типы присваивания, на самом деле запутался , пробовал и так и эдак. В итоге не обратил внимание, что правильно было с неблокирующим (тут то и создал темку), но после прочтения документа по выше приведенной ссылке - окончательно убедился и доразобрался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...