* K555KP17 DUAL 1-OF-4 DATA SELECTORS/MULTIPLEXERS WITH 3-STATE OUTPUTS * * .SUBCKT K555KP17M G1BAR_I G2BAR_I A_I B_I 1C0_I 1C1_I 1C2_I 1C3_I + 2C0_I 2C1_I 2C2_I 2C3_IY1_OY2_O;имя модели мультиплексора К555КП17, ;перечисление имен входов + OPTIONAL: DPWR=$G_DPWRDGND=$G_DGND;контакты питания и земли + PARAMS: MNTYMXDLY=0 IO_LEVEL=0 * UKP17MLOGLOGICEXP(12,14) DPWRDGND;имя примитива, 12 – число входов в логический блок, ; 14 – число выходов из логического блока, контакты питания и земли + G1BAR_I G2BAR_I A_I B_I 1C0_I 1C1_I 1C2_I 1C3_I 2C0_I 2C1_I 2C2_I 2C3_I ;имена ;входныхузлов в логический блок + G1BARG2BARAB 1C0 1C1 1C2 1C3 2C0 2C1 2C2 2C3 Y1 Y2 ;имена выходных узлов ;логического блока, они являются внутренними сигналами модели + D0_GATEIO_LSIO_LEVEL={IO_LEVEL} ;ссылка на модель динамики, ссылка на модель ;вход/выход + LOGIC: ;логическая секция + G1BAR = { G1BAR_I } ;прямая трансляция входных данных на выход блока + G2BAR = { G2BAR_I } + A = { A_I } + B = { B_I } + 1C0 = { 1C0_I } + 1C1 = { 1C1_I } + 1C2 = { 1C2_I } + 1C3 = { 1C3_I } + 2C0 = { 2C0_I } + 2C1 = { 2C1_I } + 2C2 = { 2C2_I } + 2C3 = { 2C3_I } + G1 = { ~G1BAR } + G2 = { ~G2BAR } + ABAR = { ~A } + BBAR = { ~B } + I0 = { G1 & BBAR & ABAR & 1C0 } ;описаниеоперации мультиплексирования + I1 = { G1 & BBAR & A & 1C1 } ;с помощью логических выражений + I2 = { G1 & B & ABAR & 1C2 } + I3 = { G1 & B & A & 1C3 } + I4 = { G2 & BBAR & ABAR & 2C0 } + I5 = { G2 & BBAR & A & 2C1 } + I6 = { G2 & B & ABAR & 2C2 } + I7 = { G2 & B & A & 2C3 } + Y1 = { ~(I0 | I1 | I2 | I3) } + Y2 = { ~(I4 | I5 | I6 | I7) } * UKP17MDLY PINDLY (2,2,10) DPWR DGND ;Началоблока задержки, 2 – числопутей, 2 – ;число входов разрешения, 10 – число внутренних узлов + Y1 Y2 ;примитив имеет 2 пути, для которых вычисляется задержка + G1BARG2BAR;входы разрешения работы узла + AB 1C0 1C1 1C2 1C3 2C0 2C1 2C2 2C3 ;внутренние узлы примитива + Y1_OY2_O;имя выходных узлов, для которых вычисляется задержка + IO_LS;модель вход/выход + MNTYMXDLY = {MNTYMXDLY} IO_LEVEL = {IO_LEVEL} + BOOLEAN: ;секция определяет промежуточные переменные, использующиеся для ;вычисления задержек + DATA1 = { (CHANGED(1C0,0) | CHANGED(1C1,0) | CHANGED(1C2,0) | + CHANGED(1C3,0)) } ;истина, если было изменение состояния на каком-либо из ;информационных входов первого «подмультиплексора» + DATA2 = { (CHANGED(2C0,0) | CHANGED(2C1,0) | CHANGED(2C2,0) | + CHANGED(2C3,0)) };истина, если было изменение состояния на каком-либо из ;информационных входов второго «подмультиплексора» + SELECT = { CHANGED(A,0) | CHANGED(B,0) } ;истина, если изменилось значение ;сигнала на каком-либо адресном входе + TRISTATE: ;три состояния: L, H, Z. + ENABLELOG1BAR;Работа разрешена при низком уровне сигнала на входе ;разрешения + Y1_O = { ;Выход первого «подмультиплексора» + CASE( ;оператор выбора, проверяет все выражения, пока не обнаружит первое ;истинное, после этого задержкам присваиваются значения из соответствующей ; выполненному условию строки + TRN_ZH, DELAY(-1,11NS,23NS), ;Задержка переключения выхода из ;высокоомного состояния в высокий уровень сигнала. Функция TRN_... следит за изменением ;выходных узлов, для которых вычисляются задержки. Эта функция не имеет аргументов и ;просто фиксирует изменение состояния выходного узла в текущий момент. + TRN_ZL, DELAY(-1,15NS,23NS), ;Задержка переключения выхода из ;высокоомного состояния в низкий уровень сигнала + TRN_HZ, DELAY(-1,27NS,41NS), ;Задержка переключения выхода из ;высокого уровня сигнала в состояние «Отключено» + TRN_LZ, DELAY(-1,12NS,27NS), ;Задержка переключения выхода из ;низкого уровня сигнала в состояние «Отключено» + SELECT & TRN_LH, DELAY(-1,20NS,45NS), ;Задержка переключения выхода из ;низкого уровня в высокий при изменении сигнала на адресном входе + SELECT & TRN_HL, DELAY(-1,21NS,32NS), ;Задержка переключения выхода из ;высокого уровня в низкий при изменении сигнала на адресном входе + DATA1 & TRN_LH, DELAY(-1,11NS,25NS), ;Задержка переключения выхода из ;низкого уровня высокий при изменении сигнала на информационном входе + DATA1 & TRN_HL, DELAY(-1,13NS,20NS), ;Задержка переключения выхода из ;высокого уровня в низкий при изменении сигнала на информационном входе + DELAY(-1,28NS,46NS) ;Задержка, если не сработало ни одно условие выше ;Оператор DELAY(<min>,<typ>,<max>) определяет соответственно минимальную, ;номинальную и максимальную задержки. Для определения неизвестной величины используется ;значение «-1». + ) + } + TRISTATE: ;То же самое, что для первого «подмультиплексора», см. выше! + ENABLE LO G2BAR + Y2_O = { + CASE( + TRN_ZH, DELAY(-1,11NS,23NS), + TRN_ZL, DELAY(-1,15NS,23NS), + TRN_HZ, DELAY(-1,27NS,41NS), + TRN_LZ, DELAY(-1,12NS,27NS), + SELECT & TRN_LH, DELAY(-1,20NS,45NS), + SELECT & TRN_HL, DELAY(-1,21NS,32NS), + DATA2 & TRN_LH, DELAY(-1,11NS,25NS), + DATA2 & TRN_HL, DELAY(-1,13NS,20NS), + DELAY(-1,28NS,46NS) + ) + } * .ENDS ;конец макромодели |
Рис. 28.Функциональное описание проектируемого узла с помощью примитивов LOGICEXP, PINDLY. |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.