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

Оператор wait в VHDL ...

Начинаю осваивать 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 ...;

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

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


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

Начинаю осваивать 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 ...;

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

проблема в том что это конструкция не синтезируемая! и нужна для моделирования

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


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

проблема в том что это конструкция не синтезируемая! и нужна для моделирования

Это мне интуитивно понятно. Мы не можем синтезировать в логическую схему в "силиконе" произвольную временную задержку сигнала, так ? Тогда в связи с этим еще ряд вопросов.

1. Как же тогда синтезировать обычный генератор меандра , который я пытался сделать с помощью оператора "wait for ... ns" ?

2. Является ли конструкция "wait until ... " синтезируемой ?

3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ?

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


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

проблема в том что это конструкция не синтезируемая! и нужна для моделирования

Это мне интуитивно понятно. Мы не можем синтезировать в логическую схему в "силиконе" произвольную временную задержку сигнала, так ? Тогда в связи с этим еще ряд вопросов.

1. Как же тогда синтезировать обычный генератор меандра , который я пытался сделать с помощью оператора "wait for ... ns" ?

2. Является ли конструкция "wait until ... " синтезируемой ?

3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ?

1) 1 триггер (DFF) и есть генератор меандра, и не понятно зачем Вам нужно это синтезировать... подайте снаружи тактовую

2) читайте мануалы

3) видимо нужно про configuration Вам почитать тоесть см п.2

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


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

3. Как мне "указать" Quartus-у, что я не собираюсь использовать entity Generator с конструкцией "wait ... ns" для синтеза и прошивки CPLD, а он мне нужен для моделирования в составе TestBench-а, ну например, для тестирования PCI-device ядра ?

Не знаю про Quartus

знаю что для симуляции надо юзать симулятор (Aldec, ModelSim, NC-Sim ...)

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


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

1) 1 триггер (DFF) и есть генератор меандра, и не понятно зачем Вам нужно это синтезировать... подайте снаружи тактовую

:biggrin:

Если снаружи идёт тактовая, то сгенерировать меандр также просто, как решить уравнение X=2 для всех X от -10 до 10.

:biggrin:

Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит.

2) читайте мануалы

3) видимо нужно про configuration Вам почитать тоесть см п.2

Читаю очень прилежно, например, начал с книги Сергиенко А. М. "VHDL для проектирования вычислительных устройств".

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

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


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

(скажем, тестбенч) мы не собираемся синтезировать

Просто не синтезируйте этот файл. Синтезируйте толлько те файлы, которые должны синтезироваться.

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


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

Вопрос был о другом. Как синтезировать "черный ящик" с единственным выходом, с которого идёт меандр (какой-то определённой частоты), не прибегая к оператору VHDL "wait for ... ns", который, как выяснилось, синтезу в логическую схему не подлежит.

 

:blink: :blink: :blink:

 

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

 

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

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


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

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

 

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

 

:bb-offtopic:

 

Murr Von Karter - с возвращением :cheers: :biggrin:

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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