Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оператор wait в VHDL ...
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Demeny
Начинаю осваивать 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 ...;

В чём тут проблема ? Где я ошибаюсь ?
Postoroniy_V
Цитата(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 ...;

В чём тут проблема ? Где я ошибаюсь ?

проблема в том что это конструкция не синтезируемая! и нужна для моделирования
Demeny
Цитата(Postoroniy_V @ Nov 9 2006, 10:20) *
проблема в том что это конструкция не синтезируемая! и нужна для моделирования

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

Не знаю про Quartus
знаю что для симуляции надо юзать симулятор (Aldec, ModelSim, NC-Sim ...)
Demeny
Цитата(Postoroniy_V @ Nov 9 2006, 13:01) *
1) 1 триггер (DFF) и есть генератор меандра, и не понятно зачем Вам нужно это синтезировать... подайте снаружи тактовую

biggrin.gif
Если снаружи идёт тактовая, то сгенерировать меандр также просто, как решить уравнение X=2 для всех X от -10 до 10.
biggrin.gif
Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит.
Цитата(Postoroniy_V @ Nov 9 2006, 13:01) *
2) читайте мануалы
3) видимо нужно про configuration Вам почитать тоесть см п.2

Читаю очень прилежно, например, начал с книги Сергиенко А. М. "VHDL для проектирования вычислительных устройств".
С оператором wait понятно. Но прочитал про configuration страничку (с. 78) - и ни хрена не понял. Понятно только, что с помощью конфигурации мы можем для объектов назначать разные реализации (архитектуры). Но как указать компилятору, что данный объект (скажем, тестбенч) мы не собираемся синтезировать, а только симулировать им сигналы для другого объекта (который мы будем синтезировать и прошивать в ПЛИС) - мне совершенно непонятно.
vetal
Цитата
(скажем, тестбенч) мы не собираемся синтезировать

Просто не синтезируйте этот файл. Синтезируйте толлько те файлы, которые должны синтезироваться.
Murr Von Kater
Цитата(Demeny @ Nov 9 2006, 14:10) *
Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит.


blink.gif blink.gif blink.gif

Кто-то тут явно плохо читал мануалы. Если у вас такое получится, надо будет всем электрониксом скинуться и памятник вам поставить.

Кроме шуток, если б вы изучили получше архитектуру плисины, то поняли бы, какую глупость написали.
ishergin
Цитата(Demeny @ Nov 9 2006, 17:10) *
...Понятно только, что с помощью конфигурации мы можем для объектов назначать разные реализации (архитектуры). Но как указать компилятору, что данный объект (скажем, тестбенч) мы не собираемся синтезировать, а только симулировать им сигналы для другого объекта (который мы будем синтезировать и прошивать в ПЛИС) - мне совершенно непонятно.


Вам уже ответили на этот вопрос smile.gif возьмите нормальный симулятор Active HDL или ModelSim, у них есть примеры, разобраться несложно.

bb-offtopic.gif

Murr Von Karter - с возвращением cheers.gif biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.