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

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

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

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

Рік:
2014
Тип роботи:
Лабораторна робота
Предмет:
Моделювання комп ютерних систем

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра «Електронні обчислювальні машини» / Лабораторна робота №7 “ Проектування сканеру клавіатури із застосуванням діаграм скінчених автоматів для опису об'єктів в САПР Active-HDL ” з дисципліни: “ Моделювання комп'ютерних систем ” Львів – 2014 Порядок виконання роботи: 1. Створити новий порожній проект в Active-HDL. 2. Виходячи з основного принципу роботи сканера клавіатури, визначити основні стани пристрою і умови переходу від одного стану до іншого. 3. Визначити інтерфейс системи. 4. За допомогою Add New File і State Diagram Wizard створити макет діаграми скінчених автоматів. 5. Скласти діаграму скінчених автоматів. 1. Використовуючи кнопку робочої панелі FSM State Editor, створити в робочій області необхідну кількість кружків відповідно до кількості можливих станів сканера (S0, S1, ...), які були визначені в п.2. 2. Використовуючи кнопку робочої панелі FSM State Editor, відобразити за допомогою стрілок зв'язки між станами. 3. Оскільки як в режимі очікування, так і в режимі сканування потрібно перевіряти, чи має хоча б один з сигналів Ret значення '1', то буде зручно ввести локальний сигнал Cond = (Ret(0) or Ret(1) or Ret(2) or Ret(3)) за допомогою кнопки робочої панелі FSM State Editor. 4. Використовуючи кнопку робочої панелі FSM State Editor, визначити умови переходів між станами. 5. Використовуючи кнопку робочої панелі FSM State Editor, визначити дії, що виконуються в кожному стані скінченого автомата. 6. Використовуючи кнопку робочої панелі FSM State Editor, додати джерело діаграми, встановивши його на стан S0. 7. Ознайомитись з властивостями кожного об'єкту (параметрами, діями, умовами). Для відкриття відповідного діалогового вікна слід навести курсор на об'єкт, клацнути правою кнопкою миші і вибрати пункт "Properties" з локального меню. 6. Послідовним натисненням кнопок і сформувати і відобразити VHDL-код, що відповідає створеній діаграмі скінчених автоматів. 7. Вивчити відповідність графічних об'єктів діаграми і VHDL-коду. 8. Скомпілювати пристрій та промоделювати його роботу. 9. Підготувати звіт до захисту. 1. Режим очікування: 1. На всі рядки матриці клавіатури, які позначені Scan(0), Scan(1), Scan(2), Scan(3) подається логічна одиниця. 2. Всі стовбці матриці клавіатури, позначені Ret(0), Ret(1), Ret(2), Ret(3) мають низький рівень сигналу. 3. Рівень сигналів Ret перевіряється з кожним синхронізуючим імпульсом ClLK, і, якщо один з них змінить своє значення з '0' на '1', це сигналізує про натиснення однієї з клавіш. При цьому сканер переходить в наступний режим. 2. Режим сканування: 1. На рядок Scan(0) подається сигнал високого рівня, а на всі інші рядки - низького рівня. 2. Перевіряється рівень сигналів Ret. 3. Якщо рівень одного з Ret (наприклад, Ret(1)) зміниться з "низького" на "високий", це означає, що було замкнено контакт, який розташований на перетині рядка Scan(0) та стовбця Ret(1). Тобто номер елемента матриці клавіатури, якому відповідає натиснена клавіша, знайдено. 4. Сканер передає цю інформацію у кодер для формування відповідного коду обраної цифри або операції та знову переходить до режиму очікування. 5. Якщо рівень всіх рядків Ret залишається низьким, то проводиться перевірка наступного рядка матриці, і т.д. Мета роботи Вивчити принцип роботи сканера клавіатури. Отримати навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL. Функціональна схема сканера клавіатури / Основні стани сканеру клавіатури і умови переходу від одного стану до іншого Основні стани: S0, S1, S2, S3, S4, S5 S0 – початковий стан, режим очікування, якщо не відбувається зміна сигналу Ret(0) .. Ret(3) стан зберігається, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S1, змінній KeyCode присвоюється значення “00000000” S1 – в цьому стані змінній Scan присвоюється значення “0001” і якщо не відбувається зміна сигналу Ret(0) .. Ret(3) відбувається перехід в стан S2, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S5 S2 - в цьому стані змінній Scan присвоюється значення “0010” і якщо не відбувається зміна сигналу Ret(0) .. Ret(3) відбувається перехід в стан S3, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S5 S3 - в цьому стані змінній Scan присвоюється значення “0100” і якщо не відбувається зміна сигналу Ret(0) .. Ret(3) відбувається перехід в стан S4, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S5 S4 - в цьому стані змінній Scan присвоюється значення “1000” і якщо не відбувається зміна сигналу Ret(0) .. Ret(3) відбувається перехід в стан S0, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S5 S5 - в цьому стані змінній KeyCode присвоюється значення змінних Ret&Scan та змінній Storbe значення ‘1’, якщо не відбувається зміна сигналу Ret(0) .. Ret(3) відбувається перехід в стан S0, якщо сигнал Ret(0) .. Ret(3) змінюється змінна Cond набуває значення ‘1’ і відбувається перехід в стан S5 / Опис інтерфейсу системи entity scanner is port ( CLK: in STD_LOGIC; Ret: in STD_LOGIC_VECTOR (3 downto 0); KeyCode: out STD_LOGIC_VECTOR (7 downto 0); Storbe: out STD_LOGIC; Scan: inout STD_LOGIC_VECTOR (3 downto 0)); end scanner; Розроблена діаграма скінчених автоматів / Відповідний VHDL-код для розробленої діаграми скінчених автоматів library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity scanner is port ( CLK: in STD_LOGIC; Ret: in STD_LOGIC_VECTOR (3 downto 0); KeyCode: out STD_LOGIC_VECTOR (7 downto 0); Storbe: out STD_LOGIC; Scan: inout STD_LOGIC_VECTOR (3 downto 0)); end scanner; architecture scan_arch of scanner is signal Cond: STD_LOGIC; type Sreg0_type is ( S1, S3, S5, S2, S0, S4 ); signal Sreg0: Sreg0_type; begin Sreg0_machine: process (CLK) begin if CLK'event and CLK = '1' then case Sreg0 is when S1 => Scan <= "0001"; if Cond='0' then Sreg0 <= S2; elsif Cond='1' then Sreg0 <= S5; end if; when S3 => Scan <= "0100"; if Cond='0' then Sreg0 <= S4; elsif Cond='1' then Sreg0 <= S5; end if; when S5 => KeyCode <= Ret&Scan; Storbe <= '1'; if Cond='1' then Sreg0 <= S5; elsif Cond='0' then Sreg0 <= S0; end if; when S2 => Scan <= "0010"; if Cond='0' then Sreg0 <= S3; elsif Cond='1' then Sreg0 <= S5; end if; when S0 => Scan <= "1111"; Storbe <= '0'; KeyCode <= "00000000"; if Cond='1' then Sreg0 <= S1; elsif Cond='0' then Sreg0 <= S0; end if; when S4 => Scan <= "1000"; if Cond='0' then Sreg0 <= S0; elsif Cond='1' then Sreg0 <= S5; end if; when others =>null; end case; end if; end process; end scan_arch; Результати моделювання в графічному та табличному вигляді та їх аналіз Результати у графічному вигляді: / Результати у табличному вигляді: // Висновки На цій лабораторній роботі я вивчив принципи роботи принцип роботи сканера клавіатури. Та отримав навички проектування цифрових пристроїв за допомогою скінчених автоматів засобами Active-HDL.
Антиботан аватар за замовчуванням

27.05.2014 23:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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