ачею сигналу синхронізації на деякі з тригерів, цей сигнал інвертується.
На малюнку 1.8 зображено приклад, в якому сигнал синхронізації управляє тригерами, які перемикаються за різними напрямками синхроимпульса.
Малюнок 1.8 - Приклад сигнал синхронізації керуючого тригерами, які перемикаються за різними напрямками синхроимпульса
Такі підключення можуть викликати різні проблеми в проекті, наприклад, такі як збільшення тимчасових вимог, складність розуміння і труднощі при оптимізації проекту. Також у цьому випадку неможливий синхронний скидання, так як тригери управляються різними фронтами синхроимпульса. Коли в проекті інвертується сигнал синхронізації, це може викликати додаткові проблеми, наприклад, проінвертірованний сигнал синхронізації може не містити відповідних часових співвідношень з вихідним сигналом.
Тригери, які синхронізують комбінаційну логіку, яка використовується для формування сигналу синхронізації, можуть переключатися з різних напрямів. Однак ці тригери не викликають проблем у проекті.
2. Застосування правил
Розглянемо кілька прикладів. Для початку створимо простенький проект як показано на малюнку 2.1.
Малюнок 2.1 - Приклад неправильного використання сигналу синхронізації
З малюнка 2.1 видно, що сигнал синхронізації CLK заводиться на логічний елемент, і тим самим робить проект асинхронним. Це порушує правило C104 зі списку Design Assistant configuration rule names Clock.
Зробимо компіляцію проекту. Ніяких повідомлень про помилки немає.
Тепер зайдемо через меню Assignments Settings на вкладку Design Assistant виберемо в списку Design Assistant configuration rule names пункт Clock і встановимо галочку навпроти Run Design Assistant during compilation (див. малюнок 1.1). Знову зробимо компіляцію. Результат компіляції представлений на малюнку 2.2.
Малюнок 2.2 - Результат компіляції проекту
У цьому випадку з'являється повідомлення наступного виду :: (Medium) Rule C104: Clock signal source should drive only input clock ports. Found 1 nodes related to this rule .: Node CLK
У цьому повідомленні пишеться, що порушується правило С104 (джерело сигналу синхронізації повинен управляти тільки вхідними портами синхронізації).
Зробимо деякі зміни в проекті (малюнок 2.3).
Малюнок 2.3 - Змінений проект
Знову зробимо компіляцію. Повідомлень про помилки немає.
Розглянемо ще один приклад, для цього створимо схему як показано на малюнку 2.4.
Малюнок 2.4 - Приклад неправильного управління тригерами
З малюнка 2.4 видно, що сигнал синхронізації CLK перед подачею на третій тригер інвертується. Це порушує правило C106 зі списку Design Assistant configuration rule names Clock.
Після компіляції проекту отримуємо таке повідомлення про помилку (малюнок 2.5).
Малюнок 2.5 - Результат компіляції проекту
Це повідомлення має наступний вигляд :: (Medium) Rule C106: Clock signal source should not drive registers that are triggered by different clock edges. Found 1 node (s) related to this rule .: Node CLK
У цьому повідомленні пишеться, що порушується правило С106 (джерело сигналу синхронізації не повинен управляти тригерами, які перемикаються за різними напрямками сигналу синхронізації).
Зробимо деякі зміни в проекті (малюнок 2.6).
Малюнок 2.6 - Змінений проект
Знову зробимо компіляцію. Повідомлення про помилки відсутні.
Висновки
У ході виконання даної розрахунково-графічної роботи била розглянута така можливості САПР Quartus II, як Assignments Settings Design Assistant Design Assistant configuration rule names Clock.
Дана можливість дозволяє здійснювати перевірку проекту, створеного в САПР Quartus II, на шість правил пов'язаних з сигналами синхронізації. Це дозволяє знаходити неправильні використання цих сигналів, які можуть знижувати швидкодію проекту або навіть призводити до його неправильної роботи.