Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Написание программы VHDL
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Fa3a-Ravil
Здравствуйте!
Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения.
В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде.

CODE
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" тогда как задать задержку на исполнение процедуры?
Заранее благодарю за любую помощь!
iosifk
Цитата(Fa3a-Ravil @ May 28 2018, 11:03) *
Мне нужна помощь

Напишите мне на почту или в скайп...
Мой адрес - в личной карточке форума.
Flip-fl0p
Цитата(Fa3a-Ravil @ May 28 2018, 11:03) *
Здравствуйте!
Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения.
В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде.

CODE
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
syoma
Если знания VHDL хромают, то самый простой способ - сделать и отладить автомат состояний в Matlab/Stateflow(точнее, вот вам уже готовая модель, и еще, и еще, которую нужно только модифицировать под ваши датчики движения), а затем одним кликом сгенерировать HDL код с помошью HDC Coderа, который будет делать в точности то же, что и модель и будет без ошибок. Потратите в 10 раз меньше времени на разработку и отладку, так как все сможете отладить на модели, а в FPGA будете заливать уже рабочую прошивку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.