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

запись из разных always в один регистр

Добрый день!

 

подскажите пожалуйста как решить проблему записи из разных блоков в один регистр:

 

always @ (posedge pkt)

begin

startPkt <= 1;

end

 

always @ (posedge clk)

begin

StartPkt< = 0;

end

 

как выполнить нечно подобное?

 

компилятор (quartus) ругается на любые присвоения в разных always-блоках в один и тот же регистр..

 

до этого програмировал только для контроллеров и без подобной операции не знаю куда деваться...

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


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

Добрый день!

 

подскажите пожалуйста как решить проблему записи из разных блоков в один регистр:

 

always @ (posedge pkt)

begin

startPkt <= 1;

end

 

always @ (posedge clk)

begin

StartPkt< = 0;

end

 

как выполнить нечно подобное?

 

компилятор (quartus) ругается на любые присвоения в разных always-блоках в один и тот же регистр..

 

до этого програмировал только для контроллеров и без подобной операции не знаю куда деваться...

Это одно из основных правил Verilog'a - все присваивания сигналу должны происходить в одном always блоке. Попробуйте так:

always @ (posedge clk)
begin
   if (pkt)
       StartPkt <= 1;
   else
       StartPkt< = 0;
end

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


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

пасибо, подумаю как с этой стороны подойти...

 

и все таки, неужели не бывает потребности в нечто подобном?

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


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

пасибо, подумаю как с этой стороны подойти...

А по-другому никак. В FPGA нет триггеров с двумя тактовыми входами.

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


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

пасибо, подумаю как с этой стороны подойти...

 

и все таки, неужели не бывает потребности в нечто подобном?

Загляните в рядом стоящую ветку "Профессия RTL-дизайнер не имеет будущего". Если дочитаете до конца, наступит просветление :)

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


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

Загляните в рядом стоящую ветку "Профессия RTL-дизайнер не имеет будущего. Если дочитаете до конца, наступит просветление :)

Если автор прочитает ее всю до конца - думаю, он уйдет обратно в программирование контроллеров.  :biggrin:

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


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

Если автор прочитает ее всю до конца - думаю, он уйдет обратно в программирование контроллеров.  :biggrin:

:bb-offtopic: Небось, не уйдет! Ступившему на эту дорогу, обратного пути нет. Как в мафии. :rolleyes:

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


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

подскажите пожалуйста как решить проблему записи из разных блоков в один регистр:

Очень похоже на RS-триггер, функционально. Тогда так:

 

module rs(Set, Res, out1, out0);

input Set, Res;

output out1, out0;

assign out0 = !(Res & out1);

assign out1 = !(Set & out0);

endmodule

 

но здесь установка спадом с 1 в 0. Если фронтом с 0 в 1, то инвертировать входы Set, Res.

Поменяйте только названия сигналов на свои.

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


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

из той ветки пока прочитал только первые две и последнюю страницу - мне до тех вещей - как до Луны... понял только общий смысл обсуждаемой темы.. )

 

не в тему конечно, но вопрос короткий: qurtus больно серый - поставил active-hdl - он повеселее будет, но в нем не выбрать MAX3000.. это с чем связано? по мелочам actel не разменивается?..

Изменено пользователем Алексей Б.

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


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

Приветствую!

 

То что хотел автор в начале должно выглядет так

 

...
reg StartPkt;
always @ (posedge clk or posedge pkt)
begin

   if (pkt)
       StartPkt <= 1;
   else
       StartPkt <= 0; 

end
...

 

Получится регистр с асинхронной установкой в 1 по сигналу pkt и синхронной установкой в 0 по clk.

Основная сложность для классического программиста при начале работы с Verilog и VHDL это то что это не языки програмирования а языки описания структуры и поведения цифровой схемы. Различные действия описанные в Verilog могут и происходят в одно и тоже физическое время, в отличии от классических языков програмирования.

 

Quartus и Aldec немного разной ориентации программы.

 

Aldec предназначен для ввода и серьезного моделирования работы цифровых схем (не важно каких производителей).

 

Quartus - для ввода, (простого моделирования) синтеза и генерации прошивки для кристаллов Altera.

 

Успехов! Rob.

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


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

Приветствую!

То что хотел автор в начале должно выглядет так

 

 

...

 

Пока автор совсем не разбирается в "теме", достаточно сложно сказать, что он хотел, во-первых.

А, во-вторых, далеко не факт, что то, что хотел автор, вообще стоит реализовывать.  :)

 

 

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

После этого, если что непонятно - искать на форуме, и, если все еще непонятно, спрашивать.

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


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

из той ветки пока прочитал только первые две и последнюю страницу - мне до тех вещей - как до Луны... понял только общий смысл обсуждаемой темы.. )

Середину почитайте!

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


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

всем спасибо!

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

не уверен что делаю правильно, но знаю что хочу получить.

 

to RobFPGA: спасибо, значит мыслю в нужном направлении! как раз такой вариант реализации я сейчас и пробую!

 

цитата: "Aldec предназначен для ввода и серьезного моделирования работы цифровых схем (не важно каких производителей)." - не совсем понял почему серьезного моделерования.. у меня сложилось впечатление, что он сам по себе может только функциональный анализ (т.е. без реальных задержек), а чтобы он делал анализ более менее реальной прошивки (timing analys, кажется это называется, после "заливки" в кристалл) нужно подключать quartus,xilinx и т.п. и компилить в них, а он потом просто отрисует что получилось.. может я конечно не прав потому что только сейчас буду пытаться разобраться с active-ом.. :)

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


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

цитата: "Aldec предназначен для ввода и серьезного моделирования работы цифровых схем (не важно каких производителей)." - не совсем понял почему серьезного моделерования.. у меня сложилось впечатление, что он сам по себе может только функциональный анализ (т.е. без реальных задержек), а чтобы он делал анализ более менее реальной прошивки (timing analys, кажется это называется, после "заливки" в кристалл) нужно подключать quartus,xilinx и т.п. и компилить в них, а он потом просто отрисует что получилось.. может я конечно не прав потому что только сейчас буду пытаться разобраться с active-ом.. :)
Имеется ввиду то, что обычно сначала всё пишется и симулируется на функциональном уровне. При этом могут использоваться (у меня почти всегда они есть) констурукции кода, не синтезируемые, например работа с файлом. Наиболее часто, судя по постам тут, используют или Active HDL или ModelSim (поройтесь в архивах, их много сравнивали). Синтез и времянка делается после или паралельно (переодически запускаем синтез) с написанием кода. При этом практика показывает, что если код функционально написан корректно (нет потыток сделать типа того, что вы хотели), то симуляции с учётом времянки делать не требуется, достаточно отчёта синтезатора, что все ограничения выполнены.

В самом квартусе симулятор достаточно слабый, в нём можно делать только самый примитив, я например его только пару раз попробовал, когда пересаживался в MAX+II и больше не запускаю, нет необходимости.

Это если кратко.

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


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

В самом квартусе симулятор достаточно слабый, в нём можно делать только самый примитив, я например его только пару раз попробовал, когда пересаживался в MAX+II и больше не запускаю, нет необходимости.

 

его слабость только в том, что он текстовое входное воздействие при моделировании не поддерживает.

А будущего у него нет. Не выгодно и затратно. Скорее всего в последующих версиях моделирования в квартусе не станет.

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


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

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

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

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

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

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

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

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

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

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