Синтез цифрового автомата, имеющего два режима работы: двоичный суммирующий счетчик (М=0) и регистр сдвига к старшему разряду (М=1), страница 3

MQ1/Q0

0

1

00

0

0

01

0

1

11

0

0

10

1

1

MQ1/Q0

0

1

00

0

0

01

0

1

11

1

1

10

0

0


В таблицах 8  и 9 представлены карты Карно для J2 и K2 соответственно. Получается следующее: и .

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

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

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

USE 'ELEM_FOR_STRUCT';

PROCEDURE STRUCT (

            INPUT M, D, C, R ;

            OUTPUT Q0, Q1, Q2;

);

NODE NM, ND, NR, J0, K0, K1, J2, K2, F1, NQ0, NQ1, NQ2;

HS1:  INV_DSL(R, NR);

HS2:  INV_DSL(D, ND);

HS3:  INV_DSL(M, NM);

HS4:  NAND2_DSL(ND, M, J0);

HS5:  NAND2_DSL(D, M, K0);

HS6:  XOR2_DSL(M, Q0, K1);

HS7:  JK_DSL(J0, C, K0, NR, Q0, NQ0);

HS8:  JK_DSL(Q0, C, K1, NR,Q1, NQ1);

HS9:  AND2_2_OR2_DSL(M, Q1, Q1, Q0, J2);

HS10:AND2_DSL(Q0, Q1, F1);

HS11:AND2_2_OR2_DSL(NM, F1, M, NQ1, K2);

HS12:JK_DSL(J2, C, K2, NR,  Q2, NQ2);

END STRUCT;

Модели элементов располагаются в файле ELEM_FOR_STRUCT.DSL, вот его содержание:

PROCEDURE AND2_2_OR2_DSL(

              INPUT IN1,IN2,IN3,IN4;

              OUTPUT OUT1;);

OUT1 = (IN1*IN2)+(IN3*IN4);

END AND2_2_OR2_DSL;

PROCEDURE XOR2_DSL(

              INPUT IN1,IN2;

              OUTPUT OUT1;);

OUT1 = IN1(+)IN2;

END XOR2_DSL;

PROCEDURE INV_DSL(

              INPUT IN1;

              OUTPUT OUT1;);

OUT1 = /IN1;

END INV_DSL;

PROCEDURE NAND2_DSL(

              INPUT IN1,IN2;

              OUTPUT OUT1;);

OUT1 = /(IN1*IN2);

END NAND2_DSL;

PROCEDURE AND2_DSL(

              INPUT IN1,IN2;

              OUTPUT OUT1;

); OUT1 = IN1*IN2;

END AND2_DSL;

PROCEDURE JK_DSL(

              INPUT J,C,K,R;

              OUTPUT Q, NQ;);

JK_FLOP F CLOCKED_BY /C RESET_BY /R;

F.J = J; F.K = K;

Q = F; NQ = /F;

END JK_DSL;

Схема верификации иерархического блока со структурной DSL-моделью представлена на рис. 3, а результат работы на  рис. 4.

Рис. 3

Рис. 4

4. Проектирование иерархических символов для своей схемы.

Ниже на рис. 5 представлены иерархические символы (а если быть точнее – их УГО) для проектируемой схемы. А их DSL-модели были приведены при проектировании структурной DSL-модели.

Рис. 5

Хочу заметить (хотя стоило сделать это ранее), что для возбуждения  я не использовал элемент 3И, так как это бы потянуло использование 2ИЛИ, вместо этого получился неплохой симбиоз элементов 2-2И-2ИЛИ и 2И, так как 2-2И-2ИЛИ уже использовался до этого для входа другого триггера и не было смысла придумывать кучу других элементов.

5. Проектирование иерархического блока со схемой замещения на ранее созданных иерархических символах.

На рис. 6 представлена схема замещения на иерархических  символах, на рисунке 7 – схема верификации, а на рисунке 8 – результаты работы.

Рис.6

Рис.7

Рис.8

6. Поведенческая DSL-модель цифрового автомата с любой комбинацией операторов.

Ниже приведен текст поведенческих DSL-моделей (все комбинации операторов).

PROCEDURE CT_RG_IF (

            INPUT M, D, C, R ;

            OUTPUT Q0, Q1, Q2 CLOCKED_BY /C RESET_BY R;

);

IF M = 0 THEN [Q2..Q0] = [Q2..Q0].+.1;

ELSE [Q2..Q0] = [Q1,Q0, D];

END IF;

END CT_RG_IF;

PROCEDURE CT_RG_CASE (

            INPUT M, D, C, R ;

            OUTPUT Q0, Q1, Q2 CLOCKED_BY /C RESET_BY R;

);

CASE M

  WHEN 0 => [Q2..Q0] = [Q2..Q0].+.1;

  WHEN 1 => [Q2..Q0] = [Q1,Q0, D];

END CASE;

END CT_RG_CASE;

PROCEDURE CT_RG_TRUTH (

            INPUT M, D, C, R ;

            OUTPUT Q0, Q1, Q2 CLOCKED_BY /C RESET_BY R;