Изучение методов синтеза и проектирования в пакете Design Lab 8 автоматов с памятью (вычитающего счетчика-регистра), страница 3

  Таблица 4. Переходы JK триггеров

J

K

 

0

0

0

*

 

0

1

1

*

 

1

0

*

1

 

1

1

*

0

 

При М=0 J2=/(Q1+Q0) K2=/(Q1+Q0) **** J1=/Q0 K1=/Q0 **** J0=/Q0(1) K0=Q0(1)

 При М=1 D=0 J2=Q2 K2=Q2 **** J1=Q2 K1=/Q2              J0=Q1 K0=/Q1

При   M=1 D=1 J2=Q2(1) K2=/Q2(0) *** J1=Q2 K1=/Q2 *** J0=Q1 K0=/Q1

Теперь составляем карты Карно, чтобы окончательно найти функции возбуждения триггеров. Для этого сначала строим таблицы для каждого из триггеров (таблицы 5, 6, 7).

Таблица 5

M

Q1

J0

K0

0

0

1

1

0

1

1

1

1

0

0

1

1

1

1

0

Таблица 6

M

Q2

Q0

J1

K1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

1

1

0

0

1

0

0

0

1

1

0

1

0

1

1

1

0

1

0

1

1

1

1

0

Таблица 7

M

Q2

Q1+Q0

D

J2

K2

0

0

0

0

1

1

0

0

0

1

1

1

0

0

1

0

0

0

0

0

1

1

0

0

0

1

0

0

1

1

0

1

0

1

1

1

0

1

1

0

0

0

0

1

1

1

0

0

1

0

0

0

0

0

1

0

0

1

1

0

1

0

1

0

0

0

1

0

1

1

1

0

1

1

0

0

1

1

1

1

0

1

1

0

1

1

1

0

1

1

1

1

1

1

1

0

Строим карты Карно по таблицам 5,6,7 и получаем следующие функции для входов J и K входов триггеров.

J0=/M+Q1

 K0=/M+/Q1

J1=/M/Q0+MQ2

K1=/M/Q0+M/Q2

J2=MQ2+/M/Q1/Q0+MD

K2=/M/Q1/Q0+MQ2/D

4. Проектирование структурной DSL-модели автомата.

Ниже располагается текст структурной DSL-модели автомата.

PROCEDURE INV_DSL ( INPUT IN ;OUTPUT NIN ;

);

      NIN=/IN;

END INV_DSL;

PROCEDURE JK_DSL ( INPUT J, C, K, R ; OUTPUT Q, NQ ;

);

JK_FLOP NODE F CLOCKED_BY /C  RESET_BY R;

F.J=J;

F.K=K;

Q=F; NQ=/F;

END JK_DSL;

PROCEDURE AND2_2_OR2_DSL (INPUT I1, I2, I3, I4 ;OUTPUT OUT2 ;

);

      OUT2=(I1*I2)+ (I3*I4);

END AND2_2_OR2_DSL;

PROCEDURE AND2_3_2_OR3_DSL ( INPUT II1, II2, II3, II4, II5, II6, II7 ;OUTPUT OUT3 ;

);

OUT3=(II1*II2)+ (II3*II4*II5)+(II6*II7);

END AND2_3_2_OR3_DSL;

PROCEDURE AND3_3_OR2_DSL ( INPUT IN1,IN2, IN3, IN4, IN5, IN6  ;OUTPUT OUT4 ;

);

OUT4=(IN1*IN2*IN3)+(IN4*IN5*IN6);  

END AND3_3_OR2_DSL;

PROCEDURE  OR2_DSL( INPUT IN1, IN2 ;OUTPUT OUT5 ;

);

OUT5=IN1+IN2;

END OR2_DSL;

PROCEDURE MYCOUNTER ( INPUT M, D, C, R ;OUTPUT Q0, Q1, Q2 ;

);

      " TODO: add your DSL code below.