НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 131132133134135136137 ... 233


COUNT10.PLD

Name

CountlO;

Partno

CA0018;

Revision

Date

07/16/87;

Designer

Kahl;

Company

ATI;

Location

None;

Assembly

None;

Device

VIRTUAL;

/* ./

/* Decade Counter */

/* This is a 4-bit up/down 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 **/

/* counter clock */

/* counter clear input */

/* counter direction input */

/* Register output enable */

Pin Pin Pin Pin

= elk = clr = dir = !oe

Outputs **/

Pin = [Q3..0); Pin = carry;

/* counter outputs /* ripple carry out

/** Declarations and Intermediate Variable Definitions

field count = Sdefine SO b $define SI Sdefine S2 Sdefine S3 $define S4 Sdefine S5 Sdefine S6 Sdefine S7 Sdefine S8 Sdefine S9 field node = up = mode:0; down = mode:1; clear = mode:2..3); /* Logic Equations sequence count {

present SO

present SI

[Q3..0); 0000 bOOOl •bOOlO bOOll •bOlOO •bOlOl bOllO bOlll •blOOO •blOOl = [clr,dir)

/* declare counter bit field

**/ */

/* declare filed node control /* define count up mode /* define count down mode /* define count clear mode

/* free running counter

if up next SI;

if down next S9;

if clear next SO

if up next S2

i f down next SO

if clear next SO



present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

present

next

down

next

clear

next

carry;

assert

Здесь возможно использовать некоторые функции CUPL препроцессора для значительного сокращения PLD файла. Ниже приведенный пример показывает, как тот же самый файл может быть записан с помощью структуры $REPEAT, позволяющей значительно сократить его объем.

Name Partno Revision Date

Designer

Company

Location

Assembly

Device

CountlO;

CA0018;

07/16/87; Kahl; ATI; None; None; VIRTUAL;

Decade Counter This is a 4-bit up/down 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 **/

= elk;

counter clock

= clr;

counter clear input

= dir;

counter direction input

= !oe;

Register output enable



/** Outputs *•/

Pin = [Q3..0J; /* counter outputs */

Pin = carry; /* ripple carry out */

/* Declarations and Intermediate Variable Definitions */

field count = [Q3..0]; /* declare counter bit field */

field node = [clr,dir]; /• declare filed node control */

up = mode:0; /* define count up mode */

down = mode:l; /* define count down mode */

clear = mode:2..3]; /* define count clear mode */

/* state macliine description */ sequence count { present 0

if up & !clear next 1

if down & !clear next 9

if clear next 0

$REPEAT i=[l..9] present I

if up & !clear next {(i+l)%10};

if down & clear next {{i-l)%10};

if clear next 0;

SREPEND

В этом варианте команда $DEFINE убрана, так как вместо нее используются номера строк. Самым важным изменением здесь является введение циклической конструкции $REPEAT, определяющей большинство логических состояний и используемой, вместо индивидуального их задания. Это стало возможным, так как все состояния идут последовательно и могут быть легко рассчитаны. Исключение составляет состояние О, определяемое отдельной логической конструкцией.

В цикле для расчета текущего логического состояния используется текущее значение переменной i. При работе счетчика в режиме суммирования следующее значение этой переменной определяется как (i+l)%10, что означает суммирование по модулю 10. Это введено, чтобы в состоянии 9 следующее значение i = 9 +1 = 10 по модулю 10 было равно 0. При работе счетчика в режиме вычитания следующее значение этой пч)еменной определяется как (i-l)%10. Так как невозможно вьшолнить вычитание из О, введено отдельное определение состояния 0.

Пример 5. Дешифратор семисегментного жидкокристаллического индикатора

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

Сегменты индикатора а - g соединяются с соответствующими выводами устройства, показанного на рисунке.

Ниже приведен исходный код проекта (смотри пример HEXDISP.PLD).

HEXDISP.PLD Name Hexdisp;

Partno CA0007;

Revision 02;



0 ... 131132133134135136137 ... 233