[an error occurred while processing this directive]
Вопрос по реализации алгоритмов на VHDL... (+)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Mit 11 февраля 2004 г. 12:44

Здраствуйте!

Я самостоятельно изучаю VHDL и у меня есть пара вопросов.
Изучаю на практике, с помощью Altera EPM7160S и логического анализатора.
В среде Quartus II version 3.0.

Конструкция типа:
=====================
process
begin
wait until RISING_EDGE(GCLK1);
...
end process;
=====================
работает совершенно понятно.
Процесс срабатывает по каждому положительному фронту GCLK1.
А в конструкции типа:
=====================
process (GCLK1)
begin
...
end process;
=====================
механизм запуска процесса мне не понятен :(
Разъясните, плиз, смысл списка чувствительности процесса и когда этот процесс запускается?

Также разъясните, как человечески описать синхронизацию по двум фронтам?
Конструкции типа:
=====================
process
begin
wait until RISING_EDGE(GCLK1) or FALLING_EDGE(GCLK1);
...
end process;
=====================
не принимаются компилятором.
Приходится выделять каждый фронт отдельно, в виде пиков, и потом объединять по "или" эти пики.
Мне кажется это не красиво...
Выглядит это так:
=====================
signal reGCLK1, feGCLK1 : STD_LOGIC;
signal frntGCLK1 : STD_LOGIC;

--Rising Edge GCLK1.
process (GCLK1, reGCLK1)
begin
if reGCLK1 = '1' then reGCLK1 <= '0';
elsif RISING_EDGE(GCLK1) then reGCLK1 <= '1';
end if;
end process;
--Falling Edge GCLK1.
process (GCLK1, feGCLK1)
begin
if feGCLK1 = '1' then feGCLK1 <= '0';
elsif FALLING_EDGE(GCLK1) then feGCLK1 <= '1';
end if;
end process;
--Front GCLK1.
frntGCLK1 <= reGCLK1 or feGCLK1;
=====================
В результате на любой фронт GCLK1 я получаю пик frntGCLK1 и работаю с ним.

А так же проясните пожалуйста ситуацию с функциями разрешения для сигналов с множественными драйверами?
В некоторых случаях компилятор пропускает прогу с парой драйверов сигнала в разных процессах, в некоторых нет.
Введение функции разрешения не помогает, все равно пишет, что не может разобраться с множественными драйверами.
Зачем ему разбираться с драйверами, когда есть функция разрешения?
Имя функции разрешения я указываю перед типом объявляемого сигнала.
В самой функции пробегаюсь по всем драйверам и возвращаю нужное мне значение...
Я что-то не так делаю, не так понимаю, или это грабли компилятора?

Спасибо!

С уважением,
Митя

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru