Fa3a-Ravil 0 28 мая, 2018 Опубликовано 28 мая, 2018 · Жалоба Здравствуйте! Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения. В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде. 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 3 28 мая, 2018 Опубликовано 28 мая, 2018 · Жалоба Мне нужна помощь Напишите мне на почту или в скайп... Мой адрес - в личной карточке форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 мая, 2018 Опубликовано 28 мая, 2018 · Жалоба Здравствуйте! Мне нужна помощь в написании программы для управления светофорным контроллером, при помощи датчиков движения. В общем я уже попытался написать нечто похожее, но плохое знание языка приводит к большому количеству ошибок в коде. 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 1 29 мая, 2018 Опубликовано 29 мая, 2018 · Жалоба Если знания VHDL хромают, то самый простой способ - сделать и отладить автомат состояний в Matlab/Stateflow(точнее, вот вам уже готовая модель, и еще, и еще, которую нужно только модифицировать под ваши датчики движения), а затем одним кликом сгенерировать HDL код с помошью HDC Coderа, который будет делать в точности то же, что и модель и будет без ошибок. Потратите в 10 раз меньше времени на разработку и отладку, так как все сможете отладить на модели, а в FPGA будете заливать уже рабочую прошивку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться