![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 130131132133134135136 ... 233 Входной сигнал DIR задает направление счета. Когда сигнал DIR имеет высокий уровень, то значение счетчика уменьшается на единицу с приходом каждого импульса синхронизации. При низком уровне на входе DIR содержимое счетчика, наоборот, увеличивается. Сигнал CLR осуществляет синхронный сброс счетчика (рис. 5.32). ![]() Рис. 5.32. Схема реверсивного счетчика Исходный CUPL код, реализующий такой счетчик: COUNT10.PLD
/***********************************************************/ Decade Counter This is a 4-bit up/dovm decade counter with synchronous clear capability. An asynchronous ripple carry output is provided for cascading multiple devices. CUPL state machine syntax /* is used */ /***********************************************************/ /* Allowable Target Device Types: PAL16RP4, GAL16V8, EP300 */ /** Inputs **/ Pin 1 = elk; Pin 2 = clr; Pin 3 = dir; Pin 11 = !oe; /* counter clock /* counter clear input /* counter direction input /* Register output enable /* Outputs Pin [14..17) = [Q3..01; /* counter outputs Pin 18 = carry; /* ripple carry out /* Declarations and Intermediate Variable Definitions field count = [Q3..0]; /* declare counter bit field Sdefine SO bOOOO $define SI -ЬООО! $define S2 bOOlO $define S3 "bOOll $define S4 bOlOO $define S5 bOlOl $define S6 bOllO $define S7 >b0111 $define S8 -blOOO $define S9 blOOl field node = tclr,dirl; up = mode: 0 ,-down = mode;1; clear = mode:[2..3); /* Logic Equations */ sequence count { /* declare filed node control */ /* define count up mode */ /* define count down mode */ /* define count clear mode */ /* free running counter
carry; /* assert carry output */ Первая часть файла содержит справочную информацию о проекте и описание функции, реализуемой в проекте, а также тип подходящего устройства ПЛИС. Далее приведено описание входных и выходных выводов в соответствии с диаграммой, приведенной на рис. 5.32. Секция Declarations and Intermediate Variable Definitions файла содержит описание переменных, упрощающих описание схемы. Имя count присвоено выходным переменным Q3, Q2, Q1 и Q0. Команда $DEFINE используется для присвоения имен десяти бинарным состояниям, представленным на выходе системы конечных автоматов. Имена состояний в последствии можно использовать в логических выражениях для представления соответствующих бинарных чисел. Ключевое слово FIELD используется для определения входных сигналов CLR и DIR в состояние, названное mode. Это состояние описывается следующим набором выражений: up = mode:О; dovm = mode: 1 ; clear = mode [2. .3] ,- Состояние mode описывает входные сигналы CLR и DIR таким образом, что приведенные выше три выражения становятся эквивалентными следующим выражениям: up = !с1г & !dir ; dovm = !clr & dir ; clear = (clr & !dir) # (clr & dir) ; Три различных режима работы счетчика определяются следующим образом: "Р суммирование - на входах DIR и CLR присутствует низкий уровень; down вычитание - на входе DIR присутствует высокий уровень, на входе CLR - низкий; clear сброс - на входе CLR присутствует высокий уровень, на входе CLR произвольный. Секция Logic Equations файла содержит описание состояний счетчика с помощью синтаксиса конечных автоматов. В первой строке с ключевым словом SEQUENCE переменной count (т. е. выходам Q3, Q2, Q1 и Q0) присваиваются определенные бинарные значения. Присутствующие здесь наборы из трех операторов проверки условий предназначены для определения всех возможных состояний выходов на последующем и предыдущем шагах в зависимости от трех режимов работы счетчика. Например, в случае состояния S4 в режиме суммирования следующим состоянием будет S5, в режиме вычитания - S3, в режиме сброса счетчик перейдет в состояние SO. Данный пример показывает преимущества синтаксиса конечных автоматов для ясного и четкого описания функционирования разрабатываемого устройства. В данном примере состояние SO (бинарное 0000) используется как состояние, в которое устройство переводится при прохождении сигнала CLR. Однако, следует помнить о важности начальной установки какого-либо состояния. В общем случае, рекомендуется в качестве начального достоверного состояния использовать состояние с нулевыми значениями на всех выходах, т. е. 0000, что не позволит системе "зависать". Это может произойти, если в момент включения напряжения питания на выходах установятся шестнадцатеричные значения А - F, для которых не определено ни одного условного оператора. Ниже показано, как данный проект может быть записан как виртуальный. Это тот же самый файл, но в нем сделаны изменения, необходимые для демонстрации отличий между виртуальным проектом и проектом, ориентированным на конкретное устройство. 0 ... 130131132133134135136 ... 233 |