|
|
  |
Оператор wait в VHDL ..., особенности применения |
|
|
|
Nov 9 2006, 07:11
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Начинаю осваивать VHDL и ПЛИС в Quartus 6.0. Написал простейшую схему Код entity Generator is port(clock inout std_logic); end Generator;
architecture behavioral of Generator is begin process begin clock <= '0'; wait for 50 ns; clock <= not clock; end process; end behavioral; При компиляции Quartus ругается на оператор wait, что-то типа "для оператора wait необходимо ещё и указывать условие until ". То же самое происходит, если я беру, например, готовое ядро с opencores (я брал pci_core) - та же ошибка на оператор wait; Но ведь в VHDL синтаксисом предусмотрены конструкции Код wait; wait for ... ns; wait until ...; В чём тут проблема ? Где я ошибаюсь ?
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Nov 9 2006, 07:20
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Demeny @ Nov 9 2006, 10:11)  Начинаю осваивать VHDL и ПЛИС в Quartus 6.0. Написал простейшую схему Код entity Generator is port(clock inout std_logic); end Generator;
architecture behavioral of Generator is begin process begin clock <= '0'; wait for 50 ns; clock <= not clock; end process; end behavioral; При компиляции Quartus ругается на оператор wait, что-то типа "для оператора wait необходимо ещё и указывать условие until ". То же самое происходит, если я беру, например, готовое ядро с opencores (я брал pci_core) - та же ошибка на оператор wait; Но ведь в VHDL синтаксисом предусмотрены конструкции Код wait; wait for ... ns; wait until ...; В чём тут проблема ? Где я ошибаюсь ? проблема в том что это конструкция не синтезируемая! и нужна для моделирования
--------------------
Cogito ergo sum
|
|
|
|
|
Nov 9 2006, 09:20
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Цитата(Postoroniy_V @ Nov 9 2006, 10:20)  проблема в том что это конструкция не синтезируемая! и нужна для моделирования Это мне интуитивно понятно. Мы не можем синтезировать в логическую схему в "силиконе" произвольную временную задержку сигнала, так ? Тогда в связи с этим еще ряд вопросов. 1. Как же тогда синтезировать обычный генератор меандра , который я пытался сделать с помощью оператора "wait for ... ns" ? 2. Является ли конструкция "wait until ... " синтезируемой ? 3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ?
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Nov 9 2006, 10:01
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Demeny @ Nov 9 2006, 12:20)  Цитата(Postoroniy_V @ Nov 9 2006, 10:20)  проблема в том что это конструкция не синтезируемая! и нужна для моделирования
Это мне интуитивно понятно. Мы не можем синтезировать в логическую схему в "силиконе" произвольную временную задержку сигнала, так ? Тогда в связи с этим еще ряд вопросов. 1. Как же тогда синтезировать обычный генератор меандра , который я пытался сделать с помощью оператора "wait for ... ns" ? 2. Является ли конструкция "wait until ... " синтезируемой ? 3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ? 1) 1 триггер (DFF) и есть генератор меандра, и не понятно зачем Вам нужно это синтезировать... подайте снаружи тактовую 2) читайте мануалы 3) видимо нужно про configuration Вам почитать тоесть см п.2
--------------------
Cogito ergo sum
|
|
|
|
|
Nov 9 2006, 10:44
|
Местный
  
Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788

|
Цитата(Demeny @ Nov 9 2006, 12:20)  3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ? Не знаю про Quartus знаю что для симуляции надо юзать симулятор (Aldec, ModelSim, NC-Sim ...)
|
|
|
|
|
Nov 9 2006, 12:10
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Цитата(Postoroniy_V @ Nov 9 2006, 13:01)  1) 1 триггер (DFF) и есть генератор меандра, и не понятно зачем Вам нужно это синтезировать... подайте снаружи тактовую Если снаружи идёт тактовая, то сгенерировать меандр также просто, как решить уравнение X=2 для всех X от -10 до 10. Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит. Цитата(Postoroniy_V @ Nov 9 2006, 13:01)  2) читайте мануалы 3) видимо нужно про configuration Вам почитать тоесть см п.2 Читаю очень прилежно, например, начал с книги Сергиенко А. М. "VHDL для проектирования вычислительных устройств". С оператором wait понятно. Но прочитал про configuration страничку (с. 78) - и ни хрена не понял. Понятно только, что с помощью конфигурации мы можем для объектов назначать разные реализации (архитектуры). Но как указать компилятору, что данный объект (скажем, тестбенч) мы не собираемся синтезировать, а только симулировать им сигналы для другого объекта (который мы будем синтезировать и прошивать в ПЛИС) - мне совершенно непонятно.
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Nov 9 2006, 13:00
|

Участник

Группа: Свой
Сообщений: 73
Регистрация: 11-04-06
Из: Украина, Днепр(самтаймз Эстония :)
Пользователь №: 16 022

|
Цитата(Demeny @ Nov 9 2006, 14:10)  Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит. Кто-то тут явно плохо читал мануалы. Если у вас такое получится, надо будет всем электрониксом скинуться и памятник вам поставить. Кроме шуток, если б вы изучили получше архитектуру плисины, то поняли бы, какую глупость написали.
--------------------
С утра нет желания работать? Откройте журнал "Форбс" и найдите там свою фамилию... Не нашли? Поднимайтесь и марш на работу!
|
|
|
|
|
Nov 10 2006, 17:49
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039

|
Цитата(Demeny @ Nov 9 2006, 17:10)  ...Понятно только, что с помощью конфигурации мы можем для объектов назначать разные реализации (архитектуры). Но как указать компилятору, что данный объект (скажем, тестбенч) мы не собираемся синтезировать, а только симулировать им сигналы для другого объекта (который мы будем синтезировать и прошивать в ПЛИС) - мне совершенно непонятно. Вам уже ответили на этот вопрос  возьмите нормальный симулятор Active HDL или ModelSim, у них есть примеры, разобраться несложно. Murr Von Karter - с возвращением
--------------------
Программа выполнила невыполнимое и допустила недопустимое
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|