реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Оператор wait в VHDL ..., особенности применения
Demeny
сообщение Nov 9 2006, 07:11
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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 ...;

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


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Nov 9 2006, 07:20
Сообщение #2


МедвеД Инженер 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
Go to the top of the page
 
+Quote Post
Demeny
сообщение Nov 9 2006, 09:20
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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 ядра ?


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Nov 9 2006, 10:01
Сообщение #4


МедвеД Инженер 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
Go to the top of the page
 
+Quote Post
klop
сообщение Nov 9 2006, 10:44
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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 ...)
Go to the top of the page
 
+Quote Post
Demeny
сообщение Nov 9 2006, 12:10
Сообщение #6


Знающий
****

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



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


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
vetal
сообщение Nov 9 2006, 12:27
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



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

Просто не синтезируйте этот файл. Синтезируйте толлько те файлы, которые должны синтезироваться.
Go to the top of the page
 
+Quote Post
Murr Von Kater
сообщение Nov 9 2006, 13:00
Сообщение #8


Участник
*

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



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


blink.gif blink.gif blink.gif

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

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


--------------------
С утра нет желания работать? Откройте журнал "Форбс" и найдите там свою фамилию... Не нашли? Поднимайтесь и марш на работу!
Go to the top of the page
 
+Quote Post
ishergin
сообщение Nov 10 2006, 17:49
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039



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


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

bb-offtopic.gif

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


--------------------
Программа выполнила невыполнимое и допустила недопустимое
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 11:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016