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

минимальная рабочая синтезабельная конструкция

1)Чтобы симуляция работала нужно задать опцию +initreg( modelsim)

А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать?

2) Про "=", не согласен с фразой "не следует", скорее использовать осторожно.

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

 

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


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

А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать?

А вот это уже дополнительное условие, которого не было в вопросе про счетный триггер.

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


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

А вот это уже дополнительное условие, которого не было в вопросе про счетный триггер.

Я предпочту сначала подумать, а потом делать.

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


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

А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать?

 

начальное значение чего и когда и где?

Можно все триггера всегда устанавливать в 0. А где надо 1 - на входе и выходе такого триггера поставить инверторы.

 

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


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

Я предпочту сначала подумать, а потом делать.

этого вашего ответа не понял, также как непонял куда вы стягиваете эту тему, надеюсь что не к пустому флуду, а к конструктивному диалогу.

 

Можно все триггера всегда устанавливать в 0. А где надо 1 - на входе и выходе такого триггера поставить инверторы.

речь идет не об этом %)

 

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


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

этого вашего ответа не понял, также как непонял куда вы стягиваете эту тему, надеюсь что не к пустому флуду, а к конструктивному диалогу.

я предпочитаю сначала подумать где и как будет использоваться мой модуль. И в абсолютном большинстве случаев асинхронный ресет присутсвует.

Скажем, что я предпочитаю перестраховаться и получить работающий везде модуль. И это мое мнение.

У задавшего есть выбор чье решение использовать и этот выбор исключительно его. Я никому ничего не навязываю.

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


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

Reset в данной конструкции, конечно, не повредит. Но, поскольку вопрос был задан о минимальной синтезируемой конструкции, то приведенные мной три строчки кода и есть решение.

 

 

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


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

Reset в данной конструкции, конечно, не повредит. Но, поскольку вопрос был задан о минимальной синтезируемой конструкции, то приведенные мной три строчки кода и есть решение.

А то, что она симулироваться "не всегда" будет - это конечно же не важно.

Я считаю, что на оригинальный вопрос мы ответили и тема исчерпана.

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


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

Reset в данной конструкции, конечно, не повредит. Но, поскольку вопрос был задан о минимальной синтезируемой конструкции, то приведенные мной три строчки кода и есть решение.

 

Слишком много неточностей в Ваших постах. Даже если использовать Квартус, в нем неопределенность - это неопределенность, а не 0.

Другое дело, начальные установки триггеров при моделировании в нем такие, как и в реальном кристалле по включению питания.

Хотя надо действительно неопределенность. И ресет здесь нафиг не нужен.

А строчек нужно больше, чтобы и других уважить.

module div (input clk, output out);
reg rg_out = 1'b0;
  always @(posedge clk)  rg_out = !rg_out;
  assign out = rg_out;
endmodule

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


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

Даже если использовать Квартус, в нем неопределенность - это неопределенность, а не 0.

Имелось в виду "в начале симуляции". Могу и картинку Квартуса показать.

Другое дело, начальные установки триггеров при моделировании в нем такие, как и в реальном кристалле по включению питания.

А в реальном кристалле после включения триггеры сбрасываются? Отнюдь нет. Это как повезет.

Хотя надо действительно неопределенность. И ресет здесь нафиг не нужен.

А вот здесь уже я вас не понимаю...

А строчек нужно больше, чтобы и других уважить.

Вы имеете в виду Verilog vs. SystemVerilog? Я к этому не стремился. Упростил приведенный masics первым пример.

 

Я считаю, что на оригинальный вопрос мы ответили и тема исчерпана.

В Интернете есть документ "Actel HDL Coding Style Guide", где просто и со вкусом показаны различные конструкции на VHDL и Verilog. Так вот в нем нет ни одного неблокирующего присваивания! Рекомендую.

 

Upd. Кстати, если делать сброс, то нужно еще и синхронизатор к нему. Иначе, если сброс закончится в момент фронта тактового импульса, возможно метастабильное состояние триггера.

А вы говорите, тема исчерпана :)

post-10362-1282118548_thumb.jpg

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


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

это асинхронный сброс для обнуления out в самом начале. (reg out=0 - это только для симуляций)

 

clc - это тактовый сигнал. В этом случае TFF будет работать по переднему фронту (при изменении с 0 на 1).

 

наверное, будет но только на симуляциях.

 

Хорошо. Значит ли это, что вместо reset можно использовать: initial out=0; ?

clc - tff будет работать по переднему, это задано через @ (posedge clc)? А это разве синтезируемая конструкция?

 

Если уж делать минимальную конструкцию, то и сброс не нужен.

module div (input clk, output reg out);
  always @(posedge clk)  out = !out;
endmodule

И тот же вопрос: @(posedge clk), насколько я понял из Полякова не синтезируется. Разве не так?

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


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

Хорошо. Значит ли это, что вместо reset можно использовать: initial out=0; ?

можно, но это будет несинтезируемо.

clc - tff будет работать по переднему, это задано через @ (posedge clc)? А это разве синтезируемая конструкция?

Да.

И тот же вопрос: @(posedge clk), насколько я понял из Полякова не синтезируется. Разве не так?

нет - это синтезируется.

 

 

Upd. Кстати, если делать сброс, то нужно еще и синхронизатор к нему. Иначе, если сброс закончится в момент фронта тактового импульса, возможно метастабильное состояние триггера.

А вы говорите, тема исчерпана :)

И в чем проблема? Или останавливайте clock во время ресета.

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


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

И в чем проблема?

Проблемы нет. Просто еще пара триггеров к "минимальной синтезируемой конструкции". :)

Или останавливайте clock во время ресета.

Ну а это вы сказали зря. Трогать святое святых - тактовый сигнал?!

 

2 igormihmih

@(posedge clk) синтезируется. У Полякова я не видел, чтобы было сказано обратное. Однако книгу эту всерьез воспринимать не рекомендую. Лучше накачайте книг по ссылкам в "шапке" данного раздела форума.

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


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

В Handbook на Quartus есть раздел ”Register Power-Up Values in Altera Devices”, в котором написано:

Registers in the device core always power up to a low (0) logic level on all Altera

devices.

Вот откуда берется начальный ноль на выходе триггера.

(дам еще один повод sazh упрекнуть меня в неточности, но истина мне дороже)

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


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

Ну а это вы сказали зря. Трогать святое святых - тактовый сигнал?!

Вы действительно хотите поговорить об этом?

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


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

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

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

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

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

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

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

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

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

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