![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 109110111112113114115 ... 233 Модель комбинационного автомата языка CUPL, показанная на рис. 5.7, использует шесть компонентов: входная комбинаторная логическая схема, запоминающие регистры, биты состояния, выходы регистров, выходы логической схемы. COMBINATORIAL LOGIC Non-Registered Outputs STORAGE REGISTERS Regislerad Outputs Stats Bits Puc. 5.7. Модель конечных автоматов Inputs (входы). Это входные сигналы устройства, генерируемые какими-либо другими устройствами. Combinatorial Logic (комбинаторная логическая схема). Любая комбинация логических вентилей (обычно AND и OR), которая порождает выходной сигнал, появляющийся спустя время задержки распространения Tpd при подаче любых сигналов с устройства, управляющего этими вентилями. Tpd представляет собой время задержки между моментом возбуждения входа или цепей обратной связи и моментом появления сигнала на выходах комбинаторной логической схемы. State bits (биты состояния). Сигналы обратной связи с выходов регистров для управления комбинаторной логикой. Эти сигналы содержат информацию о предыдущем состоянии регистров. Storage Registers (запоминающие регистры). Это триггеры любого вида, на входы которых подаются сигналы с комбинаторной логической схемы. Одни регистры используются для получения битов состояния, другие - для буферизации выходов. Сигналы на выходах регистров появляются через время Тсо после подачи тактового импульса. Тсо представляет собой время задержки между моментом возбуждения входа тактового сигнала и моментом появления сигнала на выходах триггеров. Для успешной реализагщи конечных автомагов язык CUPL имеет синтаксис, позволяющий описать любую функцию внутри них. Ключевое слово SEQUENCE определяет выходы конечных автоматов, за которым следуют операторы, определяющие вьшолняемую ими функцию. Ключевое слово SEQUENCE определяет тип запоминающего регистра и тип выхода регистра как тип по умолчанию для конкретного целевого устройства. Кроме того, существуют и другие ключевые слова, производные от SEQUENCE: SEQUENCED, SEQUENCEJK, SEQUENCERS и SEQUENCET. Они принудительно задают тип запоминающего регистра и тип выхода регистра как D-, Ж-, SR и Т-триггеры соответственно. Формат оператора SEQUENCE следующий: SEQUENCE state var list { PRESENT state nO IF (conditionl) IF (condition2) DEFAULT PRESENT state nl NEXT state n2; NEXT state nl; NEXT State n2 NEXT State n0; OUT out nO; PRESENT state nn statements ; где: state var list - список переменных битов состояния, используемых в блоке конечных автоматов. Список переменных может быть представлен полем переменной; state n - индекс состояний, является дешифрированным значением state vsrjist и должен быть уникальным для каждого оператора PRESENT; statements - операторы условия или операторы NEXT или OUT, описываемые далее в следующих подразделах этого раздела. Наборы конечных автоматов Синтаксис языка CUPL позволяет в одном проекте описать несколько конечньпс автоматов. Иногда разработчику хотелось бы соединить друг с другом несколько конечных автоматов таким образом, что после того, когда один автомат достигнет определенного состояния, начинает функционировать другой. Существует два способа выполнить такое соединение: использовать ряд операций над битовыми состояниями или задать глобальный регистр, доступ к которому могут иметь оба конечньпс автомата. Условный оператор одного конечного автомата может содержать имя другого, за которым следует индекс или диапазон индексов состояния. Условный оператор примет значение ИСТИНА (TRUE) при достижении определенного состояния другим автоматом. Тот же результат будет достигнут при использовании регистра, доступного нескольким комбинационным автоматам. Однако для этого способа понадобится использование одного из выходов устройства или одного внутреннего регистра. В зависимости от ситуации глобальный регистр также может быть комбинаторным, что может внести разнообразие в поведение конечного автомата в момент получения информации от другого конечного автомата. Оператор условия Оператор CONDITION обеспечивает определение логических функций на более высоком уровне, чем при их описании стандартными логическими выражениями булевой алгебры. CONDITION { IF exprO OUT var ; IF exprn OUT var ; DEFAULT OUT var ; Синтаксис оператора CONDITION эквивалентен синтаксису оператора асинхронного условного выхода конечного автомата, за исключением того, что там нет ссьшки на конкретное состояние. Переменная логически декларируется всякий раз, когда встречается логическое выражение или условие DEFAULT. Определение пользовательских функций Ключевое слово FUNCTION позволяет создавать пользовательские ключевые слова посредством описания подразумеваемых под ними логических выражений и задания имени. Это имя затем может быть использовано в любых логических выражениях для вызова данной функции. Формат записи пользовательских функций следующий: FUNCTION name {[parameterO,.....parametern]) {body} Операторы внутри тела функции могут определять высказывание функции или могут быть несвязанными уравнениями. Число параметров как при определении, так и при вызове функции должно быть одинаково. Параметры, определенные в теле функции, заменяются параметрами при вызове функции, указанными в логических уравнениях. Переменная, используемая при вызове функции, определяется телом функции. Если в операторах, представленных в теле функции, не сделано ни каких определений, переменной при вызове функции присваивается значение ЪО. Компиляция проекта на ПЛИС в этом разделе рассказьшается о том, как правильно выбрать целевую мгафосхему, настроить пфаметры компилятора проекта на ПЛИС и задать нужные выходные форматы. Выбор целевой микросхемы Компилятор проектов на базе ПЛИС, как и любой другой компилятор, обрабатывает исходный файл и генерирует выходной файл, основываясь на архитектуре указанного целевого устройства. Количество архитектур, поддерживаемых данным компилятором, превышает несколько сотен. Это позволяет не производить значительных изменений в исходном файле при реализации проекта на базе другой архитектуры. Целевое устройство (конкретный тип микросхемы) выбирается в диалоговом окне Configure PLD. На вкладке Options отражается заданный на данный момент тип микросхемы. Изменение типа устройства производится щелчком мыши по кнопке Ctiange, что вызовет появление диалогового окна Tsrget Device. При компиляции проекта CUPL компилятором можно воспользоваться опцией виртуального устройства (Virtual Device). Она позволяет проверить, будет ли вообще компилироваться проект, а также определить требуемое необходимое максимальное количество КЛБ (термов произведения). Их число приводится в DOC файле. Большое число КЛБ в конечном счете может стать причиной использования кристалла с неоправданно большим их объемом. Чем больше блоков необходимо для проекта, тем больше их должно быть в кристалле. Различные комбинации опций и параметров оптимизации компилятора позволяют сократить число требуемых КЛБ. Задание типа микросхемы в файле источнике Тип микросхемы, на котором будет реализован данный проект можно задать в заголовке исходного файла компилятора в поле DEVICE. При выборе другого типа микросхемы в диалоговом окне Configure PLD это поле автоматически обновляется. Задание типа микросхемы в диалоговом окне Target Device Диалоговое окно Tsrget Device вызывается щелчком левой кнопки мыши по кнопке Ctisnge, расположенной в окне Configure PLD. В окне Target Device отображается список и краткое описание всех поддерживаемых типов микросхем (рис. 5.8). Чтобы изменить целевое устройство, необходимо выбрать его тип и имя, после чего нажать кнопку ОК. 0 ... 109110111112113114115 ... 233 |