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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерної техніки, автоматики та метрології
Факультет:
Не вказано
Кафедра:
Не вказано

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ ЗВІТ ЛАБОРАТОРНОЇ РОБОТИ №7 З ПРЕДМЕТУ: «Моделювання комп'ютерних систем» ТЕМА: «Проектування сканеру клавіатури із застосуванням діаграм скінчених автоматів для опису об'єктів в САПР Active-HDL» Підготувала: студентка групи КІ-21 Петруняк Марта Перевірив: Колодчак О.М. Львів – 2012 Мета: Вивчити принцип роботи сканера клавіатури. Отримати навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL. Теоретичні відомості Функціональна схема сканера клавіатури. Клавіатура більшості обчислювальних пристроїв змонтована у вигляді прямокутної матриці, у точках перетину рядків і стовбців якої розташовуються кнопочні контакти. Скануючий пристрій, що розробляється, повинен визначати номер елемента матриці, який відповідає натисненій клавіші, і видавати відповідний йому двійковий код.  Основні стани сканеру клавіатури і умови переходу від одного стану до іншого. Сканер працює у двох головних режимах: 1. Режим очікування: - На всі рядки матриці клавіатури, які позначені Scan(0), Scan(1), Scan(2), Scan(3) подається логічна одиниця. - Всі стовбці матриці клавіатури, позначені Ret(0), Ret(1), Ret(2), Ret(3) мають низький рівень сигналу. - Рівень сигналів Ret перевіряється з кожним синхронізуючим імпульсом ClLK, і, якщо один з них змінить своє значення з '0' на '1', це сигналізує про натиснення однієї з клавіш. При цьому сканер переходить в наступний режим. 2. Режим сканування: - На рядок Scan(0) подається сигнал високого рівня, а на всі інші рядки - низького рівня. - Перевіряється рівень сигналів Ret. - Якщо рівень одного з Ret (наприклад, Ret(1)) зміниться з "низького" на "високий", це означає, що було замкнено контакт, який розташований на перетині рядка Scan(0) та стовбця Ret(1). Тобто номер елемента матриці клавіатури, якому відповідає натиснена клавіша, знайдено. - Сканер передає цю інформацію у кодер для формування відповідного коду обраної цифри або операції та знову переходить до режиму очікування. - Якщо рівень всіх рядків Ret залишається низьким, то проводиться перевірка наступного рядка матриці, і т.д. Приклад роботи сканера у випадку натиснення клавіши '3': № Дії Результати Висновки  1. Scan = "1111" Ret = "0000" Сканер знаходиться в стані очікування.  2. Scan = "1111" Ret = "0010" Одержано інформацію про натиснення клавіши. Сканер переходить в режим сканування.  3. Scan = "0001" Ret = "0000" Натиснена клавіша не знаходиться в першому рядку матриці.  4. Scan = "0010" Ret = "0000" Натиснена клавіша не знаходиться в другому рядку матриці.  5. Scan = "0100" Ret = "0010" Натиснена клавіша знаходиться на перетині третього рядка і другого стовбця матриці.  6. KeyCode = Scan & Ret KeyCode = "01000010" Strobe = '1' Сканер переходить в режим очікування.   Опис інтерфейсу системи. entity Keyboard is port ( CLK: in STD_LOGIC; RET: in STD_LOGIC_VECTOR (3 downto 0); KEYCODE: out STD_LOGIC_VECTOR (7 downto 0); STROBE: out STD_LOGIC; SCAN: inout STD_LOGIC_VECTOR (3 downto 0)); end Keyboard; Діаграма скінчених автоматів  Лістинг програми: ------------------------------------------------------------------------------- -- -- Title : No Title -- Design : lr_7 -- Author : Ада -- Company : BlackShine -- ------------------------------------------------------------------------------- -- -- File : c:\My_Designs\lr_7\compile\skaner.vhd -- Generated : 02/13/12 11:44:08 -- From : c:\My_Designs\lr_7\src\skaner.asf -- By : FSM2VHDL ver. 5.0.3.4 -- ------------------------------------------------------------------------------- -- -- Description : -- ------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity skaner is port ( CLK: in STD_LOGIC; RET: in STD_LOGIC_VECTOR (3 downto 0); KEYCODE: out STD_LOGIC_VECTOR (7 downto 0); STROBE: out STD_LOGIC; SCAN: inout STD_LOGIC_VECTOR (3 downto 0)); end skaner; architecture skaner_arch of skaner is -- diagram signals declarations signal Cond: STD_LOGIC; -- SYMBOLIC ENCODED state machine: Sreg0 type Sreg0_type is ( S1, S2, S3, S4, S5, S6 ); -- attribute enum_encoding of Sreg0_type: type is ... -- enum_encoding attribute is not supported for symbolic encoding signal Sreg0: Sreg0_type; begin ---------------------------------------------------------------------- -- Machine: Sreg0 ---------------------------------------------------------------------- Sreg0_machine: process (CLK) begin if CLK'event and CLK = '1' then -- Set default values for outputs, signals and variables Cond <= Ret(0) or Ret(1) or Ret(2) or Ret(3); case Sreg0 is when S1 => SCAN <= "1111"; STROBE <= '0'; if Cond='0' then Sreg0 <= S1; elsif Cond='1' then Sreg0 <= S2; end if; when S2 => SCAN <= "0001"; if Cond='1' then Sreg0 <= S6; elsif Cond='0' then Sreg0 <= S3; end if; when S3 => SCAN <= "0010"; if Cond='1' then Sreg0 <= S6; elsif Cond='0' then Sreg0 <= S4; end if; when S4 => SCAN <= "0100"; if Cond='1' then Sreg0 <= S6; elsif Cond='0' then Sreg0 <= S5; end if; when S5 => SCAN <= "1000"; if Cond='1' then Sreg0 <= S6; elsif Cond='0' then Sreg0 <= S1; end if; when S6 => STROBE <= '1'; if Cond='0' then Sreg0 <= S1; elsif Cond='1' then Sreg0 <= S6; end if; when others => null; end case; end if; end process; -- signal assignment statements for combinatorial outputs KEYCODE_assignment: KEYCODE <= "00000000" when (Sreg0 = S1) else RET&SCAN when (Sreg0 = S6) else "00000000"; end skaner_arch;  Висновки: виконавши дану лабораторну роботу, я вивчила принцип роботи сканера клавіатури та отримала навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL.
Антиботан аватар за замовчуванням

25.11.2012 18:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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