Исследование возможностей САПР Quartus

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

1. Теоретические сведения

Целью данной расчетно-графической работы является исследование такой возможности САПР Quartus II, как AssignmentsSettingsDesign Assistant Design Assistant configuration rule namesClock.

Design Assistant (помощник проекта) — это своего рода средство диагностики, позволяющее проверить созданный проект на соответствие некоторым правилам. Оно находится в меню Assignments / Settings. На рисунке 1.1 показано окно для работы с Design Assistant.

Рисунок 1.1 — Окно для работы с Design Assistant

Для того чтобы установить проверку проекта нужно на вкладке Design Assistant выбрать правила на соответствие которым необходимо проверить проект, для этого всего лишь необходимо установить галочку напротив нужного правила. Далее нужно установить галочку напротив Run Design Assistant during compilation, что позволит выполнять проверку на соответствие выбранным правилам во время компиляции проекта. Если проект не будет соответствовать какому либо правилу, то в отчет о компиляции будет выведено соответствующее предупреждение (Critical Warning). Далее в расчетно-графической работе будут рассмотрены только правила касающиеся сигналов синхронизации, которые находятся в разделе Clock.

Всего в разделе Clock находится шесть правил как показано на рисунке выше. Рассмотрим каждое из них более подробно.

Первое из них носит название Rule C101: Gated clock should be implemented according to the Altera standard scheme (Правило С101: Сигнал синхронизации, получений при помощи логической ячейки, должен быть реализован в соответствии со стандартной схемой фирмы Altera).

В проекте можно использовать комбинационную логику для формирования тактового сигнала. При этом комбинационная логика должна следовать следующим правилам:

— в качестве комбинационной логики следует использовать двухвходовой элемент И или двухвходовой элемент ИЛИ;

— должен быть только один входной контакт, который действует в качестве основного входного тактового сигнала для элемент И или элемент ИЛИ;

— второй вход элемент И или элемент ИЛИ, разрешающий проходить сигналам синхронизации, должен быть синхронизирован с триггером. В свою очередь, триггер должен синхронизироваться тем же входным сигналом, который действует в качестве основного входного тактового сигнала для элемент И или элемент ИЛИ;

— если в качестве комбинационной логики используется элемент И, то вход синхронизации триггера управляющего элементом И должен активизироваться спадающим фронтом синхроимпульса, тогда как вход синхронизации триггера управляемого элементом И должен активизироваться нарастающим фронтом синхроимпульса;

— если в качестве комбинационной логики используется элемент ИЛИ, то вход синхронизации триггера управляющего элементом ИЛИ должен активизироваться нарастающим фронтом синхроимпульса, а вход синхронизации триггера управляемого элементом ИЛИ должен активизироваться спадающим фронтом синхроимпульса;

— для уменьшения вероятности сбоев, логический вентиль должен размещаться вблизи от управляющего триггера.

На рисунке 1.2 показан пример комбинационной логики, используемой в качестве тактового сигнала, где логика стробирования является двухвходовым логическим элементом И.

Рисунок 1.2 — Пример комбинационной логики, используемой в качестве тактового сигнала

Второе правило носит название Rule C102: Logic Cell Should Not be Used to Generate Inverted Clock (Правило С102: Логическая ячейка не должна использоваться для генерации инвертированного синхроимпульса).

Инвертор, управляющий входом синхронизации триггера и позволяющий использовать отрицательный фронт синхроимпульса, не должен реализовываться с помощью логической ячейки.

На рисунке 1.3 показан пример неправильного инвертирования сигнала синхронизации.

Рисунок 1.3 — Пример использования логической ячейки для инвертирования синхросигнала

Реализация инвертора с помощью логической ячейки может привести к тактовой задержке и перекосу, что может вызвать определенные проблемы в проекте. Кроме того, для всех устройств фирмы Altera, которые поддерживаются средой разработки Quartus II, нет необходимости в использовании инвертора на логической ячейке, так как синхроимпульсы триггеров имеют программируемые инверторы.

На рисунке 1.4 показан пример правильного инвертирования сигнала синхронизации.

Рисунок 1.4 — Пример использования программируемого инвертора для инвертирования синхросигнала

Третье правило носит название Rule C103: Gated Clock is Not Feeding at Least a Pre-Defined Number of Clock Ports to Effectively Save Power (Правило С103: Сигнал синхронизации, получений при помощи логической ячейки, не тактирует по крайней мере наперед заданное число входов синхронизации для эффективного энергосбережения).

Проект не должен содержать сигнал синхронизации, получений с помощью логической ячейки, который тактирует меньше наперед заданного числа входов синхронизации.

Для эффективного снижения энергопотребления с помощью сигнала синхронизации, полученного при помощи логической ячейки, следует убедиться, что все такие сигналы синхронизации в проекте тактируют, по крайней мере, наперед определенное число входов синхронизации.

Для того чтобы определить это число входов синхронизации, необходимо в меню AssignmentsSettings на вкладке Design Assistant выделить правило Rule C103: Gated clock is not feeding at least a pre-defined number of clock ports to effectively save power. После этого внизу окна появится кнопка Gated Clock Settings. Нужно нажать на эту кнопку и в поле Report all gated clocks that feed less than < n> clock ports указать число входов синхронизации, которое должен тактировать сигнал синхронизации, полученный при помощи логической ячейки. По умолчанию это значение равно тридцати.

Четвертое правило носит название Rule C104: Clock Signal Source Should Drive Only Input Clock Ports (Правило С104: Источник сигнала синхронизации должен управлять только входными портами синхронизации).

Сигнал синхронизации в проекте должен управлять только входными портами синхронизации. Когда проект содержит сигнал синхронизации, который подключен к портам отличным от портов синхронизации, он становится асинхронным, что может вызвать определенные проблемы.

На рисунке 1.5 изображен пример сигнала синхронизации, который ошибочно управляет входом логического элемента И.

Рисунок 1.5 — Пример неправильного использования сигнала синхронизации

Однако это правило не распространяется на следующие случаи:

— когда источник сигнала синхронизации управляет комбинационной логикой, которая используется в качестве сигнала синхронизации, и эта комбинационная логика реализована в соответствии со стандартной схемой фирмы Altera;

— когда сигнал с источника сигнала синхронизации заводится на вход мультиплексора, который выбирает один из источников в качестве сигнала синхронизации из числа нескольких различных источников. Однако, поскольку такое применение мультиплексора усложняет временной анализ проекта, следует избегать использования таких мультиплексоров в проекте.

Пятое правило носит название Rule C105: Clock Signal Should be a Global Signal (Правило С105: Сигнал синхронизации должен быть глобальным сигналом).

Все сигналы синхронизации в проекте должны быть глобальными сигналами. Не глобальные сигналы синхронизации могут быть медленнее и иметь больший перекос, чем глобальные сигналы.

Вы можете использовать логическую опцию Global Signal для того чтобы определить, что сигнал синхронизации является глобальным сигналом. Эта опция может быть установлена при помощи Assignment Editor. Для этого необходимо в меню Assignments выбрать Assignment Editor. В появившемся окне нужно выбрать категорию (Category) Global Signal и определить сигнал, который должен быть глобальным. На рисунке 1.6 показан пример определения сигнала CLK как глобального.

Рисунок 1.6 — Пример определения сигнала как глобального с помощью Assignment Editor

Вы также можете использовать логическую опцию Auto Global Clock, разрешающую сборщику (Fitter) автоматически устанавливать сигналы синхронизации как глобальные сигналы. Сборщик может автоматически устанавливать все сигналы синхронизации как глобальные сигналы. Эта опция может быть установлена при помощи Assignment Editor либо же через диалоговое меню Settings на вкладке Fitter Settings. При использовании второго способа необходимо в меню Assignments Settings выбрать вкладку Fitter Settings. Далее необходимо нажать на кнопку «More Settings…» в результате чего появится окошко More Fitter Settings. После этого необходимо выбрать опцию Auto Global Clock в поле Name и в поле Setting выбрать On. Теперь сборщик будет автоматически устанавливать сигналы синхронизации как глобальные сигналы. На рисунке 1.7 показана вкладка Fitter Settings, с помощью которой устанавливается опция Auto Global Clock.

Рисунок 1.7 — Вкладка Fitter Settings

design assistant комбинационный сигнал

Если проект содержит сигналов синхронизации больше чем количество сигналов, которые можно определить как глобальные для данного устройства, то необходимо уменьшить количество сигналов синхронизации в проекте. Если, однако, проект должен содержать больше сигналов синхронизации, чем количество сигналов, которые можно определить как глобальные, то необходимо определить как глобальные те сигналы синхронизации, к которым выдвигаются самые жесткие требования по быстродействию.

Для проектов, нацеленных на устройства семейств MAX 3000 и MAX 7000, это правило применяется как после анализа и синтеза (Analysis & Synthesis) так и после того, как проект будет обработан сборщиком (Fitter). Для всех остальных устройств это правило применяется только после того, как проект будет обработан сборщиком.

Шестое правило носит название Rule C106: Clock Signal Source Should Not Drive Registers That are Triggered by Different Clock Edges (Правило С106: Источник сигнала синхронизации не должен управлять триггерами, которые переключаются по различным фронтам сигнала синхронизации).

Проект не должен содержать узлы, в которых сигнал синхронизации управляет триггерами в один из следующих способов:

— сигнал синхронизации заводится на тактовые входы триггеров, одна часть из которых переключается по положительному фронту синхроимпульса, а другая часть по отрицательному фронту синхроимпульса;

— сигнал синхронизации заводится на тактовые входы триггеров, которые либо все переключается по положительному фронту синхроимпульса, либо по отрицательному фронту синхроимпульса, но перед подачей сигнала синхронизации на некоторые из триггеров, этот сигнал инвертируется.

На рисунке 1.8 изображен пример, в котором сигнал синхронизации управляет триггерами, которые переключаются по различным фронтам синхроимпульса.

Рисунок 1.8 — Пример сигнал синхронизации управляющего триггерами, которые переключаются по различным фронтам синхроимпульса

Такие подключения могут вызвать различные проблемы в проекте, например, такие как увеличение временных требований, сложность понимания и затруднения при оптимизации проекта. Также в этом случае невозможен синхронный сброс, так как триггеры управляются разными фронтами синхроимпульса. Когда в проекте инвертируется сигнал синхронизации, это может вызвать дополнительные проблемы, например, проинвертированный сигнал синхронизации может не содержать соответствующих временных соотношений с исходным сигналом.

Триггеры, которые синхронизируют комбинационную логику, которая используется для формирования сигнала синхронизации, могут переключаться по различным фронтам. Однако эти триггеры не вызывают проблем в проекте.

2. Применение правил

Рассмотрим несколько примеров. Для начала создадим простенький проект как показано на рисунке 2.1.

Рисунок 2.1 — Пример неправильного использования сигнала синхронизации

Из рисунка 2.1 видно, что сигнал синхронизации CLK заводится на логический элемент, и тем самым делает проект асинхронным. Это нарушает правило C104 из списка Design Assistant configuration rule namesClock.

Произведем компиляцию проекта. Никаких сообщений об ошибках нет.

Теперь зайдем через меню AssignmentsSettings на вкладку Design Assistant выберем в списке Design Assistant configuration rule names пункт Clock и установим галочку напротив Run Design Assistant during compilation (см. рисунок 1. 1). Снова произведем компиляцию. Результат компиляции представлен на рисунке 2.2.

Рисунок 2.2 — Результат компиляции проекта

В этом случае появляется сообщение следующего вида:

Warning: (Medium) Rule C104: Clock signal source should drive only input clock ports. Found 1 nodes related to this rule.

Warning: Node «CLK»

В этом сообщении пишется, что нарушается правило С104 (источник сигнала синхронизации должен управлять только входными портами синхронизации).

Произведем некоторые изменения в проекте (рисунок 2. 3).

Рисунок 2.3 — Измененный проект

Снова произведем компиляцию. Сообщений об ошибках нет.

Рассмотрим еще один пример, для этого создадим схему как показано на рисунке 2.4.

Рисунок 2.4 — Пример неправильного управления триггерами

Из рисунка 2.4 видно, что сигнал синхронизации CLK перед подачей на третий триггер инвертируется. Это нарушает правило C106 из списка Design Assistant configuration rule namesClock.

После компиляции проекта получаем следующее сообщение об ошибке (рисунок 2. 5).

Рисунок 2.5 — Результат компиляции проекта

Это сообщение имеет следующий вид:

Warning: (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.

Warning: Node «CLK»

В этом сообщении пишется, что нарушается правило С106 (источник сигнала синхронизации не должен управлять триггерами, которые переключаются по различным фронтам сигнала синхронизации).

Произведем некоторые изменения в проекте (рисунок 2. 6).

Рисунок 2.6 — Измененный проект

Снова произведем компиляцию. Сообщения об ошибках отсутствуют.

Выводы

В ходе выполнения данной расчетно-графической работы била рассмотрена такая возможности САПР Quartus II, как AssignmentsSettingsDesign Assistant Design Assistant configuration rule namesClock.

Данная возможность позволяет осуществлять проверку проекта, созданного в САПР Quartus II, на шесть правил связанных с сигналами синхронизации. Это позволяет находить неправильные использования этих сигналов, которые могут снижать быстродействие проекта или даже приводить к его неправильной работе.

ПоказатьСвернуть
Заполнить форму текущей работой