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

Написание программы VHDL

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

Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения.

В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде.

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity det is
port (
	vhodA : in std_logic;
	vhodB : in std_logic;
	VhodC : in std_logic;
	VhodD : in std_logic;  -- 4 сигнала с датчиков
	Error : in std_logic;  -- и сигнал ошибки датчиков
	svetA, svetB, svetC, svetD : in std_logic;  -- сигналы обратной связи светофоров
	ErrOut : out std_logic;  -- выходной сигнал аварийного отключения
	A, B, C, D : out std_logic  -- 4 сигнала управления контроллером всетофоров
	);
end det;

architecture beh of det is
  begin
	process
		begin
			if (vhodA = '1') and (svetA = '0') then  -- проверка на наличие сигнала с датчика и запрещающего сигнала светофора
				A <= '1';                                   -- включение соответствующего вывода
				wait on svetA'event until (svetA = '1');  -- ожидание изменения сигнала
				A <= '0';                                    -- сброс сигнала
			elsif (vhodB = '1') and (svetB = '0') then   -- далее последовательный опрос других датчиков
				B <= '1';
				wait on svetB until (svetB = '1');
				B <= '0';
			elsif (vhodC = '1') and (svetC = '0') then
				C <= '1';
				wait on svetC until (svetC = '1');
				C <= '0';
			elsif (vhodD = '1') and (svetD = '0') then
				D <= '1';
				wait on svetC until (svetC = '1');
				D <= '0';
			end if;
	end process;
end beh;

 

В данном варианте выходит ошибка "statement WAIT not allowed in a process with a sensitivity list" тогда как задать задержку на исполнение процедуры?

Заранее благодарю за любую помощь!

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


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

Напишите мне на почту или в скайп...

Мой адрес - в личной карточке форума.

 

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


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

Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения.

В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде.

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity det is
port (
	vhodA : in std_logic;
	vhodB : in std_logic;
	VhodC : in std_logic;
	VhodD : in std_logic;  -- 4 сигнала с датчиков
	Error : in std_logic;  -- и сигнал ошибки датчиков
	svetA, svetB, svetC, svetD : in std_logic;  -- сигналы обратной связи светофоров
	ErrOut : out std_logic;  -- выходной сигнал аварийного отключения
	A, B, C, D : out std_logic  -- 4 сигнала управления контроллером всетофоров
	);
end det;

architecture beh of det is
  begin
	process
		begin
			if (vhodA = '1') and (svetA = '0') then  -- проверка на наличие сигнала с датчика и запрещающего сигнала светофора
				A <= '1';                                   -- включение соответствующего вывода
				wait on svetA'event until (svetA = '1');  -- ожидание изменения сигнала
				A <= '0';                                    -- сброс сигнала
			elsif (vhodB = '1') and (svetB = '0') then   -- далее последовательный опрос других датчиков
				B <= '1';
				wait on svetB until (svetB = '1');
				B <= '0';
			elsif (vhodC = '1') and (svetC = '0') then
				C <= '1';
				wait on svetC until (svetC = '1');
				C <= '0';
			elsif (vhodD = '1') and (svetD = '0') then
				D <= '1';
				wait on svetC until (svetC = '1');
				D <= '0';
			end if;
	end process;
end beh;

 

В данном варианте выходит ошибка "statement WAIT not allowed in a process with a sensitivity list" тогда как задать задержку на исполнение процедуры?

Заранее благодарю за любую помощь!

Слышали про выражение : "Без внятного ТЗ - результат ХЗ" ?

1. На VHDL описывается схема, а не программа.

2. Если у Вас плохое знание языка VHDL, то что Вы хотите получить в итоге ? Если научиться - то это одно. Если сделать и забыть, то Вы ошиблись темой.

3. Где список чувствительности в процессе ?

4. Так не делают.

P.S. Начните сначала с правильной постановки вопроса.

P.S.S Если действительно хотите научиться, не пренебрегайте помощью уважаемого iosifk

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


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

Если знания VHDL хромают, то самый простой способ - сделать и отладить автомат состояний в Matlab/Stateflow(точнее, вот вам уже готовая модель, и еще, и еще, которую нужно только модифицировать под ваши датчики движения), а затем одним кликом сгенерировать HDL код с помошью HDC Coderа, который будет делать в точности то же, что и модель и будет без ошибок. Потратите в 10 раз меньше времени на разработку и отладку, так как все сможете отладить на модели, а в FPGA будете заливать уже рабочую прошивку.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация