Привожу нижеследующий код:
Код
OnButtonLeft_Down:
process(OnBtnLeft_DownEvent)
begin
if rising_edge(OnBtnLeft_DownEvent) then
if (PulsePerPeriod_VAR > 0) then
PulsePerPeriod_VAR := PulsePerPeriod_VAR - 1; --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
end if;
end if;
end process OnButtonLeft_Down;
OnButtonRight_Down:
process(OnBtnRight_DownEvent)
begin
if rising_edge(OnBtnRight_DownEvent) then
if (PulsePerPeriod_VAR < PulsePerPeriod_VAR_MAX) then
PulsePerPeriod_VAR := PulsePerPeriod_VAR + 1; --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
end if;
end if;
end process OnButtonRight_Down;
(PulsePerPeriod_VAR объявлена как shared variable)process(OnBtnLeft_DownEvent)
begin
if rising_edge(OnBtnLeft_DownEvent) then
if (PulsePerPeriod_VAR > 0) then
PulsePerPeriod_VAR := PulsePerPeriod_VAR - 1; --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
end if;
end if;
end process OnButtonLeft_Down;
OnButtonRight_Down:
process(OnBtnRight_DownEvent)
begin
if rising_edge(OnBtnRight_DownEvent) then
if (PulsePerPeriod_VAR < PulsePerPeriod_VAR_MAX) then
PulsePerPeriod_VAR := PulsePerPeriod_VAR + 1; --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
end if;
end if;
end process OnButtonRight_Down;
Это обработка нажатия двух кнопок (вправо, влево)
Само нажатие работает нормально, по которому я формирую "событие-сигнал" нажатия кнопки (либо правой, либо левой - по названиям процессов все понятно)
при этом обращаю внимание на выделенные две строки. Если их закоментировать - все компилируется. Если оставить одну из них - тоже компилируется. А вот обе - сразу дает ошибку.
Я чую конечно что так писать нельзя. (Переменная PulsePerPeriod_VAR в обоих процессах одна и таже)
Но почему? Не могу понять и найти объяснение. Уже неделю копаю и в инете и в книгах Бибило.
1. Может кто-нибудь популярно объяснить почему так нельзя?
2. Как реализовать нажатие нескольких кнопок, когда по нажатию надо изменять значение одного и того же параметра (в данном случае увеличить или уменьшить значение переменной PulsePerPeriod_VAR)
3. Может кто посоветовать литературу такого плана - дается к.л. конструкция кода и далее какую структуру она порождает и описание это (примеры). Не готовые схемы счетчиков и т.п. а наоборот, с т.з. языка vhdl. Код -> структура -> описание.