Разработка дешифратора ххххИД14 (за основу «эталонного» дешифратора был взят дешифратор КР1554ИД14), страница 10

Рис. 34. Схема замещения иерархического символа

      Схема замещения, естественно, не отличается от выше приведенных схем замещений. Для элементов К155ЛН1 и К155ЛА4 были разработаны PML-модели, которые приведены ниже. Схема верификации и временная диаграмма результата работы иерархического символа приведены в п. 4.4 и п.4.6 соответственно.

********************** Элемент К155ЛА4 *********************

#la4 source

INPUTS VCC, GND, A2,A1,A0;

OUTPUTS VCC_LD,A2_LD,A1_LD,A0_LD,Q;

INTEGERS tblIndex;

REALS tplh_val, tphl_val,  tt_val,ril_val, rih_val, ricc_val;

PWR_GND_PINS(VCC,GND);      //set pwr_param and gnd_param values

IO_PAIRS(A2:A2_LD,A1:A1_LD,A0:A0_LD);

IF (init_sim) THEN

  BEGIN

  tplh_val= (MIN_TYP_MAX(tp_param: NULL, 8.5n,NULL));

  tphl_val= (MIN_TYP_MAX(tp_param: NULL,7.5n,NULL));

  tt_val= (MIN_TYP_MAX(tt_param: NULL, 1n,  NULL));

  ril_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 125k));

  rih_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 10.5k));

  ricc_val= (MIN_TYP_MAX(i_param: NULL, 2500, 1250));

STATE Q=ZERO;

  EXIT;

  END;

DRIVE Q = (v0=vol_param,v1=voh_param,ttlh=tt_val,tthl=tt_val);

LOAD A2_LD =(v0=vol_param,r0=ril_val,v1=voh_param,r1=rih_val,io=1e9,t=1p);

LOAD A1_LD =(v0=vol_param,r0=ril_val,v1=voh_param,r1=rih_val,io=1e9,t=1p);

LOAD A0_LD =(v0=vol_param,r0=ril_val,v1=voh_param,r1=rih_val,io=1e9,t=1p);

EXT_TABLE tblIndex

A0   A1    A2          Q

0    0      0     H        

0    0      1     H

0    1      0     H

0    1      1     H

1    0      0     H        

1    0      1     H

1    1      0     H

1    1      1     L;

LOAD VCC_LD = (v0=gnd_param,r0=ricc_val,t=1p);

IF (warn_param) THEN

 BEGIN

  END;

DELAY Q =

  CASE (TRAN_LH) : tplh_val

  CASE (TRAN_HL) : tphl_val

END;

EXIT;

******************* Элемент К155ЛН1 *******************

#ln1 source

 INPUTS VCC, GND, IN1;

OUTPUTS VCC_LD, IN1_LD, OUT1;

 INTEGERS tblIndex;

 REALS tplh_val, tphl_val,  tt_val,ril_val, rih_val, ricc_val;

PWR_GND_PINS(VCC,GND);      //set pwr_param and gnd_param values

IO_PAIRS(IN1:IN1_LD);

IF (init_sim) THEN

  BEGIN

  tplh_val= (MIN_TYP_MAX(tp_param: NULL, 0.1n, NULL));

  tphl_val= (MIN_TYP_MAX(tp_param: NULL,0.1n, NULL));

  tt_val= (MIN_TYP_MAX(tt_param: NULL, 0.1n,  NULL));

  ril_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 125k));

  rih_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 10.5k));

 ricc_val= (MIN_TYP_MAX(i_param: NULL, 2500, 1250));

 STATE OUT1=ZERO;

  EXIT;

  END;

DRIVE OUT1 = (v0=vol_param,v1=voh_param,ttlh=tt_val,tthl=tt_val);

LOAD IN1_LD =(v0=vol_param,r0=ril_val,v1=voh_param,r1=rih_val,io=1e9,t=1p);

EXT_TABLE tblIndex

IN1 OUT1

0   H

1   L;

LOAD VCC_LD = (v0=gnd_param,r0=ricc_val,t=1p);

IF (warn_param) THEN

 BEGIN

  END;

DELAY OUT1 =

  CASE (TRAN_LH) : tplh_val

  CASE (TRAN_HL) : tphl_val

END;

EXIT;

4.2.  Условное графическое обозначение узла для PML ­ модели

Рис. 35. УГО узла на основе PML-модели

Рис. 36. УГО узла на основе PML-модели с выводом MDL-атрибутов

            Для проверки правильности выполненных операций по созданию элемента, приводятся две секции элемента КР1554ИД14.

4.3.  Поведенческая модель на языке PML

************************ КР1554ИД14 **********************

//Директива начала модели

#id14 source

//входы и выходы, указанные в соответствии с атрибутом SimPins

INPUTS VCC, GND, E,A0,A1;

OUTPUTS VCC_LD,E_LD,A0_LD,A1_LD,Q0,Q1,Q2,Q3;

//внутрен. переменная

INTEGERS tblIndex;

//переменные для временных соотношений

REALS tplh_val, tphl_val,  tt_val,ril_val, rih_val, ricc_val;

PWR_GND_PINS(VCC,GND);      //set pwr_param and gnd_param values

//связывание внутр. переменных и входов

IO_PAIRS(E:E_LD,A0:A0_LD,A1:A1_LD);

IF (init_sim) THEN

  BEGIN

//имитация задержек

  tplh_val= (MIN_TYP_MAX(tp_param: NULL, 8.5n,NULL));

  tphl_val= (MIN_TYP_MAX(tp_param: NULL,7.5n,NULL));

  tt_val= (MIN_TYP_MAX(tt_param: NULL, 1n,  NULL));

 //нагрузочная способность элемента

  ril_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 125k));

  rih_val= (MIN_TYP_MAX(ld_param: NULL, NULL, 10.5k));