Проектування сканеру клавіатури із застосуванням діаграм скінчених автоматів для опису об'єктів в САПР Active-HDL

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2011
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Моделювання
Група:
КІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство Освіти і Науки Національний Університет «Львівська політехніка» кафедра ЕОМ Звіт про виконання лабораторної роботи №7 з предмету «Моделювання комп’ютерних систем» на тему : «Проектування сканеру клавіатури із застосуванням діаграм скінчених автоматів для опису об'єктів в САПР Active-HDL» Мета роботи: Вивчити принцип роботи сканера клавіатури. Отримати навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL. Код програми : library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity diagram is port ( CLK: in STD_LOGIC; Ret: in STD_LOGIC_VECTOR (15 downto 0); KeyCode: out STD_LOGIC_VECTOR (7 downto 0); Strobe: out STD_LOGIC; Scan: inout STD_LOGIC_VECTOR (3 downto 0); temp: inout STD_LOGIC_VECTOR (3 downto 0)); end diagram; architecture diagram_arch of diagram is -- diagram signals declarations signal Cond: STD_LOGIC :='0'; -- SYMBOLIC ENCODED state machine: Diagram type Diagram_type is ( S0, S2, S3, S4, S1, S5 ); -- attribute enum_encoding of Diagram_type: type is ... -- enum_encoding attribute is not supported for symbolic encoding signal Diagram: Diagram_type; begin ---------------------------------------------------------------------- -- Machine: Diagram ---------------------------------------------------------------------- Diagram_machine: process (CLK) begin if CLK'event and CLK = '1' then -- Set default values for outputs, signals and variables -- ... case Diagram is when S0 => Scan <= "1111"; Strobe <= '0'; if Cond = '0' then Diagram <= S0; elsif Cond = '1' then Diagram <= S1; end if; when S2 => Scan <= "0010"; temp <= Ret (7 downto 4); if Cond = '0' then Diagram <= S3; elsif Cond = '1' then Diagram <= S5; end if; when S3 => Scan <= "0100"; temp <= Ret (11 downto 8); if Cond = '0' then Diagram <= S4; elsif Cond = '1' then Diagram <= S5; end if; when S4 => Scan <= "1000"; temp <= Ret (15 downto 12); if Cond = '1' then Diagram <= S5; elsif Cond = '0' then Diagram <= S0; end if; when S1 => Scan <= "0001"; temp <= Ret (3 downto 0); if Cond = '1' then Diagram <= S5; elsif Cond = '0' then Diagram <= S2; end if; when S5 => Strobe <= '1'; Scan <= "1111"; if Cond = '0' then Diagram <= S1; elsif Cond = '1' then Diagram <= S5; end if; --vhdl_cover_off when others => null; --vhdl_cover_on end case; end if; end process; -- signal assignment statements for combinatorial outputs Cond_assignment: Cond <= Ret(0) or Ret(1) or Ret(2) or Ret(3)or Ret(4)or Ret(5)or Ret(6)or Ret(7)or Ret(8)or Ret(9)or Ret(10)or Ret(11)or Ret(12)or Ret(13)or Ret(14)or Ret(15) when (Diagram = S0) else Ret(4) or Ret (5) or Ret (6) or Ret (7) when (Diagram = S2) else Ret(8) or Ret (9) or Ret (10) or Ret (11) when (Diagram = S3) else Ret(12) or Ret (13) or Ret (14) or Ret (15) when (Diagram = S4) else Ret(0) or Ret(1) or Ret(3) when (Diagram = S1) else '0' when (Diagram = S5) else Ret(0) or Ret(1) or Ret(2) or Ret(3)or Ret(4)or Ret(5)or Ret(6)or Ret(7)or Ret(8)or Ret(9)or Ret(10)or Ret(11)or Ret(12)or Ret(13)or Ret(14)or Ret(15); KeyCode_7_assignment: KeyCode(7) <= '0' when (Diagram = S0) else Scan(3) when (Diagram = S5) else '0'; KeyCode_6_assignment: KeyCode(6) <= '0' when (Diagram = S0) else Scan(2) when (Diagram = S5) else '0'; KeyCode_5_assignment: KeyCode(5) <= '0' when (Diagram = S0) else Scan(1) when (Diagram = S5) else '0'; KeyCode_4_assignment: KeyCode(4) <= '0' when (Diagram = S0) else Scan(0) when (Diagram = S5) else '0'; KeyCode_3_assignment: KeyCode(3) <= '0' when (Diagram = S0) else temp(3) when (Diagram = S5) else '0'; KeyCode_2_assignment: KeyCode(2) <= '0' when (Diagram = S0) else temp(2) when (Diagram = S5) else '0'; KeyCode_1_assignment: KeyCode(1) <= '0' when (Diagram = S0) else temp(1) when (Diagram = S5) else '0'; KeyCode_0_assignment: KeyCode(0) <= '0' when (Diagram = S0) else temp(0) when (Diagram = S5) else '0'; end diagram_arch; На рис.№1 діаграма скінченних автоматів : / Рис.№1 На рис.№2 результат виконання програми / Рис.№2 Висновок виконуючи цю роботу ми вивчили принцип роботи сканера клавіатури. Отримали навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL.
Антиботан аватар за замовчуванням

25.11.2012 18:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!