masics 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба 1)Чтобы симуляция работала нужно задать опцию +initreg( modelsim) А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать? 2) Про "=", не согласен с фразой "не следует", скорее использовать осторожно. Есть правила описания, которые легче запомнить и выполнять, чем каждый раз думать "а что же здесь написать?". И потом меньше недоразумений будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать? А вот это уже дополнительное условие, которого не было в вопросе про счетный триггер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masics 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба А вот это уже дополнительное условие, которого не было в вопросе про счетный триггер. Я предпочту сначала подумать, а потом делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба А если есть две (или более) части, одна из которых требует чтобы начальное значение было другим? Что делать? начальное значение чего и когда и где? Можно все триггера всегда устанавливать в 0. А где надо 1 - на входе и выходе такого триггера поставить инверторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Я предпочту сначала подумать, а потом делать. этого вашего ответа не понял, также как непонял куда вы стягиваете эту тему, надеюсь что не к пустому флуду, а к конструктивному диалогу. Можно все триггера всегда устанавливать в 0. А где надо 1 - на входе и выходе такого триггера поставить инверторы. речь идет не об этом %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masics 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба этого вашего ответа не понял, также как непонял куда вы стягиваете эту тему, надеюсь что не к пустому флуду, а к конструктивному диалогу. я предпочитаю сначала подумать где и как будет использоваться мой модуль. И в абсолютном большинстве случаев асинхронный ресет присутсвует. Скажем, что я предпочитаю перестраховаться и получить работающий везде модуль. И это мое мнение. У задавшего есть выбор чье решение использовать и этот выбор исключительно его. Я никому ничего не навязываю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Reset в данной конструкции, конечно, не повредит. Но, поскольку вопрос был задан о минимальной синтезируемой конструкции, то приведенные мной три строчки кода и есть решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masics 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Reset в данной конструкции, конечно, не повредит. Но, поскольку вопрос был задан о минимальной синтезируемой конструкции, то приведенные мной три строчки кода и есть решение. А то, что она симулироваться "не всегда" будет - это конечно же не важно. Я считаю, что на оригинальный вопрос мы ответили и тема исчерпана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Даже если использовать Квартус, в нем неопределенность - это неопределенность, а не 0. Имелось в виду "в начале симуляции". Могу и картинку Квартуса показать. Другое дело, начальные установки триггеров при моделировании в нем такие, как и в реальном кристалле по включению питания. А в реальном кристалле после включения триггеры сбрасываются? Отнюдь нет. Это как повезет. Хотя надо действительно неопределенность. И ресет здесь нафиг не нужен. А вот здесь уже я вас не понимаю... А строчек нужно больше, чтобы и других уважить. Вы имеете в виду Verilog vs. SystemVerilog? Я к этому не стремился. Упростил приведенный masics первым пример. Я считаю, что на оригинальный вопрос мы ответили и тема исчерпана. В Интернете есть документ "Actel HDL Coding Style Guide", где просто и со вкусом показаны различные конструкции на VHDL и Verilog. Так вот в нем нет ни одного неблокирующего присваивания! Рекомендую. Upd. Кстати, если делать сброс, то нужно еще и синхронизатор к нему. Иначе, если сброс закончится в момент фронта тактового импульса, возможно метастабильное состояние триггера. А вы говорите, тема исчерпана :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igormihmih 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба это асинхронный сброс для обнуления 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), насколько я понял из Полякова не синтезируется. Разве не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masics 0 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба Хорошо. Значит ли это, что вместо reset можно использовать: initial out=0; ? можно, но это будет несинтезируемо. clc - tff будет работать по переднему, это задано через @ (posedge clc)? А это разве синтезируемая конструкция? Да. И тот же вопрос: @(posedge clk), насколько я понял из Полякова не синтезируется. Разве не так? нет - это синтезируется. Upd. Кстати, если делать сброс, то нужно еще и синхронизатор к нему. Иначе, если сброс закончится в момент фронта тактового импульса, возможно метастабильное состояние триггера. А вы говорите, тема исчерпана :) И в чем проблема? Или останавливайте clock во время ресета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба И в чем проблема? Проблемы нет. Просто еще пара триггеров к "минимальной синтезируемой конструкции". :) Или останавливайте clock во время ресета. Ну а это вы сказали зря. Трогать святое святых - тактовый сигнал?! 2 igormihmih @(posedge clk) синтезируется. У Полякова я не видел, чтобы было сказано обратное. Однако книгу эту всерьез воспринимать не рекомендую. Лучше накачайте книг по ссылкам в "шапке" данного раздела форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 18 августа, 2010 Опубликовано 18 августа, 2010 · Жалоба В 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 упрекнуть меня в неточности, но истина мне дороже) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masics 0 19 августа, 2010 Опубликовано 19 августа, 2010 · Жалоба Ну а это вы сказали зря. Трогать святое святых - тактовый сигнал?! Вы действительно хотите поговорить об этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться