Проектирование цифрового узла (дешифратор ИД7), страница 3

+      +504ns 1

+      +504ns 0

+   EndRepeat

.STIMULUS V2 STIM (1, 1) ;! CLOCKP 2016ns 1008ns 1 200ns

+   +0s 1

+   +200ns 0

+   Repeat Forever

+      +1.008us 1

+      +1.008us 0

+   EndRepeat

.STIMULUS V3 STIM (1, 1) ;! CLOCKP 4032ns 2016ns 1 200ns

+   +0s 1

+   +200ns 0

+   Repeat Forever

+      +2.016us 1

+      +2.016us 0

+   EndRepeat

Далее приведены временные диаграммы, полученные в ходе тестирования. На рис. 6 и 7 показаны задержки распространения сигнала от входов стробирования до выходов. На рис. 8-11 показаны задержки распространения от адресных входов до выходов. Задержки показаны только для выходов 0 и 1. Задержки распространения до выходов 0,2,4,6 одинаковы; и до выходов 1,3,5,7 тоже одинаковы. Отметим что задержки отличаются от задержек реального элемента.


Рис. 5

Рис. 6

Рис. 7

Рис. 8

Рис. 9

Рис. 10

Рис. 11


3.2. Проектирование с использованием макромодели.

Поскольку УГО символа ничем не отличается от УГО символа в предыдущем пункте, то оно не приводится. По аналогичной причине не приводится схема тестирования.

Текст макромодели:

* K555ID7_2  DECODER/DEMULTIPLEXER 3-8 LINE

*

* TTL LOGIC STANDARD TTL, S, LS DATA BOOK, APR 1988, TI

* JLS   8-4-92   REMODELED USING LOGICEXP, PINDLY, AND CONSTRAINT DEVICES

*   

.SUBCKT K555ID7_2   V1_I V2BAR_I V3BAR_I A0_I A1_I A2_I

+ Q0_O Q1_O Q2_O Q3_O Q4_O Q5_O Q6_O Q7_O

+ OPTIONAL: DPWR=$G_DPWR DGND=$G_DGND

+ PARAMS: MNTYMXDLY=0 IO_LEVEL=0

*

U555ID7LOG LOGICEXP (6,15) DPWR DGND

+ V1_I V2BAR_I V3BAR_I A0_I A1_I A2_I

+ V1   V2BAR   V3BAR   A0   A1   A2   ENABLE

+ Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

+ D0_GATE IO_LS

+ IO_LEVEL={IO_LEVEL}

+

+ LOGIC:

+   V1     = { V1_I }

+   V2BAR = { V2BAR_I }

+   V3BAR = { V3BAR_I }

+   A0      = { A0_I }

+   A1      = { A1_I }

+   A2      = { A2_I }

+   A0BAR   = { ~A0 }

+   A1BAR   = { ~A1 }

+   A2BAR   = { ~A2 }

+   ENABLE = { ~V2BAR & ~V3BAR & V1 }

+   Q0     = { ~(ENABLE & A2BAR & A1BAR & A0BAR) }

+   Q1     = { ~(ENABLE & A2BAR & A1BAR & A0   ) }

+   Q2     = { ~(ENABLE & A2BAR & A1    & A0BAR) }

+   Q3     = { ~(ENABLE & A2BAR & A1    & A0   ) }

+   Q4     = { ~(ENABLE & A2    & A1BAR & A0BAR) }

+   Q5     = { ~(ENABLE & A2    & A1BAR & A0   ) }

+   Q6     = { ~(ENABLE & A2    & A1    & A0BAR) }

+   Q7     = { ~(ENABLE & A2    & A1    & A0   ) }

*

U555ID7DLY PINDLY (8,0,7) DPWR DGND

+ Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

+ ENABLE V1 V2BAR V3BAR A0 A1 A2

+ Q0_O Q1_O Q2_O Q3_O Q4_O Q5_O Q6_O Q7_O

+ IO_LS

+ MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}

+

+ BOOLEAN:

+   ABLE1 = { CHANGED(ENABLE,0) &  CHANGED(V1,0) }

+   ABLE2 = { CHANGED(ENABLE,0) & (CHANGED(V2BAR,0) | CHANGED(V3BAR,0)) }

+   ADDRA = { CHANGED(A0,0) }

+   ADDRB = { CHANGED(A1,0) }

+   ADDRC = { CHANGED(A2,0) }

+   ADDR  = { CHANGED(A0,0) | CHANGED(A1,0) | CHANGED(A2,0) }

+

+ PINDLY:

+   Q0_O = {

+     CASE (

+       ADDR  & TRN_LH, DELAY(-1,19NS,20NS),

+       ADDR  & TRN_HL, DELAY(-1,19NS,41NS),

+       ABLE1 & TRN_LH, DELAY(-1,19NS,26NS),

+       ABLE1 & TRN_HL, DELAY(-1,18NS,38NS),

+       ABLE2 & TRN_LH, DELAY(-1,12NS,18NS),

+       ABLE2 & TRN_HL, DELAY(-1,20NS,32NS),

+       DELAY(-1,20NS,41NS)

+       )

+     }

+   Q1_O = {

+     CASE (

+       ADDRA & TRN_LH, DELAY(-1,09NS,27NS),

+       ADDRA & TRN_HL, DELAY(-1,10NS,39NS),

+       ADDR  & TRN_LH, DELAY(-1,19NS,20NS),

+       ADDR  & TRN_HL, DELAY(-1,19NS,41NS),

+       ABLE1 & TRN_LH, DELAY(-1,19NS,26NS),

+       ABLE1 & TRN_HL, DELAY(-1,18NS,38NS),

+       ABLE2 & TRN_LH, DELAY(-1,12NS,18NS),

+       ABLE2 & TRN_HL, DELAY(-1,20NS,32NS),