0,1,0,1 :: 0,1,1,0 ;
0,1,1,0 :: 0,1,1,1;
0,1,1,1 :: 1,0,0,0;
1,0,0,0 :: 1,0,0,1;
1,0,0,1 :: 1,0,1,0;
1,0,1,0 :: 1,0,1,1;
1,0,1,1 :: 1,1,0,0;
1,1,0,0 :: 0,0,0,0;
1,1,0,1 :: 0,0,0,0;
1,1,1,0 :: 0,0,0,0;
1,1,1,1 :: 0,0,0,0;
END TRUTH_TABLE;
ELSE
TRUTH_TABLE
Y[3],Y[2],Y[1],Y[0] :: Y[3],Y[2],Y[1],Y[0];
"--------------------------------
0,0,0,0 :: 0,0,0,1;
0,0,0,1 :: 0,0,1,0;
0,0,1,0 :: 0,0,1,1;
0,0,1,1 :: 0,1,0,0;
0,1,0,0 :: 0,1,0,1;
0,1,0,1 :: 0,1,1,0;
0,1,1,0 :: 0,1,1,1;
0,1,1,1 :: 1,0,0,0;
1,0,0,0 :: 0,0,0,0;
1,0,0,1 :: 0,0,0,0;
1,0,1,0 :: 0,0,0,0;
1,0,1,1 :: 0,0,0,0;
TRUTH_TABLE
Y[3],Y[2],Y[1],Y[0] :: Y[3],Y[2],Y[1],Y[0];
"--------------------------------
0,0,0,0 :: 0,0,0,1;
PROCEDURE COUNTDSL (
INPUT M, C, R ;
OUTPUT Q3, Q2, Q1, Q0 ;
);
NODE Y[4] CLOCKED_BY C RESET_BY /R;
IF M = 0 THEN
TRUTH_TABLE
Y[3],Y[2],Y[1],Y[0] :: Y[3],Y[2],Y[1],Y[0];
"--------------------------------
0,0,0,0 :: 0,0,0,1;
0,0,0,1 :: 0,0,1,0;
0,0,1,0 :: 0,0,1,1;
0,0,1,1 :: 0,1,0,0;
0,1,0,0 :: 0,1,0,1;
0,1,0,1 :: 0,1,1,0 ;
0,1,1,0 :: 0,1,1,1;
0,1,1,1 :: 1,0,0,0;
1,0,0,0 :: 1,0,0,1;
1,0,0,1 :: 1,0,1,0;
1,0,1,0 :: 1,0,1,1;
1,0,1,1 :: 1,1,0,0;
1,1,0,0 :: 0,0,0,0;
1,1,0,1 :: 0,0,0,0;
1,1,1,0 :: 0,0,0,0;
1,1,1,1 :: 0,0,0,0;
END TRUTH_TABLE;
ELSE
TRUTH_TABLE
Y[3],Y[2],Y[1],Y[0] :: Y[3],Y[2],Y[1],Y[0];
"--------------------------------
0,0,0,0 :: 0,0,0,1;
0,0,0,1 :: 0,0,1,0;
0,0,1,0 :: 0,0,1,1;
0,0,1,1 :: 0,1,0,0;
0,1,0,0 :: 0,1,0,1;
0,1,0,1 :: 0,1,1,0;
0,1,1,0 :: 0,1,1,1;
0,1,1,1 :: 1,0,0,0;
1,0,0,0 :: 0,0,0,0;
1,0,0,1 :: 0,0,0,0;
1,0,1,0 :: 0,0,0,0;
1,0,1,1 :: 0,0,0,0;
1,1,0,0 :: 0,0,0,0;
1,1,0,1 :: 0,0,0,0;
1,1,1,0 :: 0,0,0,0;
1,1,1,1 :: 0,0,0,0;
END TRUTH_TABLE;
END IF;
[Q3..Q0]=Y;
END COUNTDSL;
Результаты моделирования схемы приведены на рисунке 6.
Рис.6
6.Разработка иерархических символов, поддерживаемых DSL-моделями и используемых в проекте.
Для реализации автомата необходимы следующие логические элементы: 3-И, 4-И, 5-И, 3-ИЛИ, 5-ИЛИ, инвертор, D-триггер.
УГО элементов приведены на рисунке 7.
Рис.7
Ниже приведены DSL-модели данных логических элементов:
PROCEDURE AND3_DSL (
INPUT A, B, C ;
OUTPUT Y ;
);
Y=*(A,B,C);
END AND3_DSL;
PROCEDURE AND4_DSL (
INPUT A, B, C, D ;
OUTPUT Y ;
);
Y=*(A,B,C,D);
END AND4_DSL;
PROCEDURE AND5_DSL (
INPUT A, B, C, D, E ;
OUTPUT Y ;
);
Y=*(A,B,C,D,E);
END AND5_DSL;
PROCEDURE OR3_DSL (
INPUT A, B,C;
OUTPUT Y ;
);
Y=+(A,B,C);
END OR3_DSL;
PROCEDURE OR5_DSL (
INPUT A, B, C, D, E ;
OUTPUT Y ;
);
Y=+(A,B,C,D,E);
END OR5_DSL;
PROCEDURE INV_DSL (
INPUT A ;
OUTPUT Y ;
);
Y=/A;
END INV_DSL;
PROCEDURE D_DSL (
INPUT S, R, D, C ;
OUTPUT Q, NQ ;
);
NODE Y CLOCKED_BY C RESET_BY /R PRESET_BY /S;
Y.D=D;
Q=Y;
NQ=/Y;
END D_DSL;
Схема, построенная на спроектированных элементах, приведена на рисунке 8.
Результаты моделирования приведены на рисунке 9.
Рис.9
Учитывая, что функция возбуждения зависит от 5 переменных необходимо спроектировать мультиплексор 32->1. На его адресные входы подавать значения аргументов функции возбуждения, а на входы данных – значения самой функции при соответствующих значениях аргументов. В соответствии с заданием мультиплексор реализуем в виде DSL-блока, используя оператор TRUTH-TABLE.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.