Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

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

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

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

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

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Інші

Частина тексту файла

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ  Лабораторна робота №7 Проектування сканеру клавіатури із застосуванням діаграм скінчених автоматів для опису об'єктів в САПР Active-HDL Мета роботи: Вивчити принцип роботи сканера клавіатури. Отримати навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL. Теоретична частина Клавіатура більшості обчислювальних пристроїв змонтована у вигляді прямокутної матриці, у точках перетину рядків і стовбців якої розташовуються кнопочні контакти. Скануючий пристрій, що розробляється, повинен визначати номер елемента матриці, який відповідає натисненій клавіші, і видавати відповідний йому двійковий код.  Сканер працює у двох головних режимах: Режим очікування: На всі рядки матриці клавіатури, які позначені Scan(0), Scan(1), Scan(2), Scan(3) подається логічна одиниця. Всі стовбці матриці клавіатури, позначені Ret(0), Ret(1), Ret(2), Ret(3) мають низький рівень сигналу. Рівень сигналів Ret перевіряється з кожним синхронізуючим імпульсом ClLK, і, якщо один з них змінить своє значення з '0' на '1', це сигналізує про натиснення однієї з клавіш. При цьому сканер переходить в наступний режим. Режим сканування: На рядок 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' Сканер переходить в режим очікування.   Тексти VHDL-кодів: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; 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; architecture Keyboard of Keyboard is -- diagram signals declarations signal Cond: STD_LOGIC; -- SYMBOLIC ENCODED state machine: Sreg0 type Sreg0_type is ( S1, S2, S3, S4, S5, S0 ); -- 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 <= "0001"; if Cond = '0' then Sreg0 <= S2; elsif Cond = '1' then Sreg0 <= S5 end if; when S2 => Scan <= "0010"; if Cond = '0' then Sreg0 <= S3; elsif Cond = '1' then Sreg0 <= S5; end if; when S3 => Scan <= "0100"; if Cond = '0' then Sreg0 <= S4; ...
Антиботан аватар за замовчуванням

12.09.2013 18:09

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини