O
Opel_Corsa
Guest
У меня есть код для FSM:
Код:
Библиотеки IEEE;
использование IEEE.std_logic_1164.all;
использование ieee.std_logic_arith.all;лицо ФШМ
порта (
ключ: в std_logic_vector (3 DOWNTO 0); - Кнопочные переключатели
Ю: В std_logic_vector (8 DOWNTO 0) - Авто-переключатели
ledg: из std_logic_vector (7 DOWNTO 0) - зеленый светодиод (вы можете использовать
- Для отображения текущего состояния)
lcd_rw: из std_logic; - R / W управляющий сигнал для ЖК
lcd_en: из std_logic; - обеспечения контроля сигнала для ЖК-дисплея
lcd_rs: из std_logic; - будь то отправка инструкций или характер
lcd_on: из std_logic; - используется для включения ЖК-дисплея
lcd_blon: из std_logic; - используется для включения подсветки
lcd_data: из std_logic_vector (7 DOWNTO 0)) - используется для передачи инструкций или символы
FSM конца;архитектура поведенческого из ФШМ
Тип state_type является (M, O, S, T, A);
Сигнал Y: state_type;
начинать
lcd_blon <= '1 '; - подсветка всегда включена
lcd_on <= '1 '; - LCD всегда на
lcd_en <= ключ (0) - подключение часы на ввод lcd_en
ledg (0) <= ключ (0); - Отправьте часы на зеленый свет, чтобы помочь в отладке
lcd_rw <= '0 '; - всегда письменной форме в ЖК[COLOR = Red] процесса (Key) [/ COLOR]
начинать
если (ключ (3) = '0 '), затем - сброс ЖК
lcd_rs <= '0 '; - Отправьте инструкции
lcd_data <= "00111000"; - подготовить ЖК
lcd_data <= "00111000";
lcd_data <= "00001100";
lcd_data <= "00000001";
lcd_data <= "00000110";
lcd_data <= "10000000";
ELSIF (ключ (3) = '1 '), то
lcd_rs <= '1 '; - отправить символы
если (Key (0) 'и ключевые события (0) = '1'), то
Y <= M;
У дела
при М => если (SW (0) = '0 '), то
Y <= O;
ELSIF (SW (0) = '1 '), то
Y <= A;
End If;
при O => Если (SW (0) = '0 '), то
Y <= S;
ELSIF (SW (0) = '1 '), то
Y <= M;
End If;
когда S =>, если (SW (0) = '0 '), то
Y <= T;
ELSIF (SW (0) = '1 '), то
Y <= O;
End If;
при Т => если (SW (0) = '0 '), то
Y <= A;
ELSIF (SW (0) = '1 '), то
Y <= S;
End If;
при A =>, если (SW (0) = '0 '), то
Y <= M;
ELSIF (SW (0) = '1 '), то
Y <= T;
End If;
конец делу;
End If;
End If;
конце процесса;с у выберите
lcd_data <= "01001101", когда М, - отображение М
"01101111", когда O, - отображение O
"01110011", когда село, - дисплей с
"01110100", когда T, - отображение T
"01100001", когда; - отображатьповеденческие конца;
Код:
Библиотеки IEEE;
использование IEEE.std_logic_1164.all;
использование ieee.std_logic_arith.all;лицо ФШМ
порта (
ключ: в std_logic_vector (3 DOWNTO 0); - Кнопочные переключатели
Ю: В std_logic_vector (8 DOWNTO 0) - Авто-переключатели
ledg: из std_logic_vector (7 DOWNTO 0) - зеленый светодиод (вы можете использовать
- Для отображения текущего состояния)
lcd_rw: из std_logic; - R / W управляющий сигнал для ЖК
lcd_en: из std_logic; - обеспечения контроля сигнала для ЖК-дисплея
lcd_rs: из std_logic; - будь то отправка инструкций или характер
lcd_on: из std_logic; - используется для включения ЖК-дисплея
lcd_blon: из std_logic; - используется для включения подсветки
lcd_data: из std_logic_vector (7 DOWNTO 0)) - используется для передачи инструкций или символы
FSM конца;архитектура поведенческого из ФШМ
Тип state_type является (M, O, S, T, A);
Сигнал Y: state_type;
начинать
lcd_blon <= '1 '; - подсветка всегда включена
lcd_on <= '1 '; - LCD всегда на
lcd_en <= ключ (0) - подключение часы на ввод lcd_en
ledg (0) <= ключ (0); - Отправьте часы на зеленый свет, чтобы помочь в отладке
lcd_rw <= '0 '; - всегда письменной форме в ЖК[COLOR = Red] процесса (Key) [/ COLOR]
начинать
если (ключ (3) = '0 '), затем - сброс ЖК
lcd_rs <= '0 '; - Отправьте инструкции
lcd_data <= "00111000"; - подготовить ЖК
lcd_data <= "00111000";
lcd_data <= "00001100";
lcd_data <= "00000001";
lcd_data <= "00000110";
lcd_data <= "10000000";
ELSIF (ключ (3) = '1 '), то
lcd_rs <= '1 '; - отправить символы
если (Key (0) 'и ключевые события (0) = '1'), то
Y <= M;
У дела
при М => если (SW (0) = '0 '), то
Y <= O;
ELSIF (SW (0) = '1 '), то
Y <= A;
End If;
при O => Если (SW (0) = '0 '), то
Y <= S;
ELSIF (SW (0) = '1 '), то
Y <= M;
End If;
когда S =>, если (SW (0) = '0 '), то
Y <= T;
ELSIF (SW (0) = '1 '), то
Y <= O;
End If;
при Т => если (SW (0) = '0 '), то
Y <= A;
ELSIF (SW (0) = '1 '), то
Y <= S;
End If;
при A =>, если (SW (0) = '0 '), то
Y <= M;
ELSIF (SW (0) = '1 '), то
Y <= T;
End If;
конец делу;
End If;
End If;
конце процесса;с у выберите
lcd_data <= "01001101", когда М, - отображение М
"01101111", когда O, - отображение O
"01110011", когда село, - дисплей с
"01110100", когда T, - отображение T
"01100001", когда; - отображатьповеденческие конца;