Проектування цифрових пристроїв на основі САПР QUARTUS II: Практикум, страница 55

г) виконати компіляцію і функціональне моделювання та перевірити правильність функціонування пристрою за часовими діаграмами.

Приклад: 800reg_decl.tdf, .vwf (на кшталт 800gkp1.bdf, схемa 2).

3.2 Виконати п. 3.1 на мегафункції регістра у тестовому файлі (.tdf)проекту8XXmega_gkp(ri) на кшталт схеми намегафункції з графічного файлу. Для цього включити до складу проекту мегафункцію регістра зсуву lpm_shiftreg із зазначенням її імені і параметрів в підсекції Instance Declaration (parametererized) секції змінних (Variable Section) та до логічної секції (Logic Section) вставити шаблон підсекції булевих рівнянь (Boolean Equation), за допомогою яких утворити з’єднання на зразок графічного файлу. Скомпілювати і змоделювати проект та перевірити правильність функціонування пристрою за часовими діаграмами.

Приклад: 800mega_gkp.tdf, .vwf (на кшталт 800gkp1.bdf, схемa 3).

3.3 Виконати п. 3.1 на автоматично створеному за допомогою менеджера MegaWizard Plug-In Manager різновиді мегафункції регістра у тестовому файлі (.tdf) проекту8XXwiz_gkp(ri) на кшталт аналогічної схеми з графічного файлу. Для цього включити до складу проекту створений у      п. 2.5 різновид мегафункцій регістра (Include Statement) без зазначення параметрів у підсекції Instance Declaration (non-parametererized) секції змінних (Variable Section) та до логічної секції (Logic Section) вставити шаблон підсекції булевих рівнянь (Boolean Equation), за допомогою яких утворити з’єднання на зразок графічного файлу. Скомпілювати і змоделювати проект та перевірити правильність функціонування пристрою за часовими діаграмами.

Приклад: 800wiz_reg.tdf, 800wiz_gkp.tdf, .vwf (на кшталт схеми 4 файлу 800gkp1.bdf).

4. Засвоїти основи побудови послідовнісного пристрою як скінченного автомата (State Machine) виконанням завдання за п. 2.

 4.1 За перемикальним графом (файл 8XXgkp(ri)1.bdf, рис. 8.5) створити пристрій з використанням оператора вибору Case Statement у тестовому файлі (.tdf) проекту8XXsmcase_gkp(ri), для чого після оголошення портів (див. 800smcase_gkp.tdf):

 а) у секцію змінних Variable Section вставити шаблон підсекції оголошення скінченного автомата StateMachineDeclaration, в який ввести символічну назву скінченного автомата, наприклад, gkp або ri, після якої залишити двокрапку і ключове слово Machine; відтак після ключових слів OF BITS у круглих дужках ввести через кому або у вигляді масиву символічну назву розрядів автомата, наприклад, (q2, q1, q0) або (q[2..0]); нарешті, після ключових слів WITH STATES у круглих дужках ввести через кому символічні назви станів автомата і через знак рівності їх значення в одній із систем числення, наприклад, (s0 = 0, s1 = H”1”, s2 = B”011”, …); у кінці залишити крапку з комою:

VARIABLE                                            % Variable Section                  %

        gkp    :  MACHINE                        %  State Machine Declaration  %

        OF BITS (q[2..0])

        WITH STATES (s0 = 0,  s1 = 1,  s2 = 3,  s3 = 7,  s4 = 6,  s5 = 4,

                                     il1 = 2,  il2 = 5);

FПримітки:

1. У підсекції State Machine Declaration речення OF BITS залежно від розв’язуваного завдання є необов’язковим, тобто компілятор сам може призначити кількість розрядів n пристрою за критерієм мінімальної схеми (інколи схема є простішою за більшої величини n через спрощення міжрозрядних зв’язків).

2. У реченні WITH STATES можна подати список символічних назв станів без зазначення їх кодів, якщо важливою є лише кількість станів, наприклад, (s0, s1, s2, ...).

3. З усіх 2n можливих станів дозволеними є ті, що подані в списку символічними назвами. Для усунення недозволених станів їх потрібно також перелічити в списку, наприклад, il1, il2 (від illegal);

б) до логічної секції Logic Section вставити шаблон булевих рівнянь Boolean equations, до якого ввести булеві рівняння керування, що зв’язують порти (входи та виходи) автомата із зовнішніми портами пристрою.

BEGIN

gkp.clk = C;  Q[] = gkp.q[];

END;