Разработка счетчика типа К555ИЕ9, представляющего собой декадный двоично-десятичный счетчик. Создание его структурных и поведенческих моделей в пакетах DesignLab 8.0 и OrCAD 9.1, страница 4

.STIMULUS D STIM (4, 1111) ;! Hex

+   +0s 0100

+   199.5ns 0001

+   402.5ns 0000

+   605.5ns 0010

+   2.1315us 0110

7.5  Схема верификации иерархического символа

Рис. 6.    Схема верификации  микросхемы К555ИЕ9

7.6  Результаты моделирования в пакете DesignLab 8.0.

Рис. 7.    Работа счетчика в режиме счета

Рис. 8.    Определение задержки от входа R до Q

Рис. 9.    Определение задержки от входа С до TC

Рис. 10.    Определение задержки от входа С до Q

Рис. 11.  Реакция счетчика на загрузку недопустимых данных

Как видно из временных диаграмм счетчик ИЕ9 работает правильно, все временные задержки соблюдены (конечно не один в один).  

7.7  Оценка скоростных возможностей.

Хотя предельная частота работы счетчика 555ИЕ9  составляет 25Мгц, максимальная частота моделируемого узла (при которой он стабильно работает) оказалась равной 18Мгц. Она была получена при последовательном увеличении частоты синхросигнала с 10Мгц до 18Мгц. При дальнейшем увеличении частоты синхросигнала счетчик начинает работать не стабильно.

Рис. 12.    Демонстрация скоростных свойств узла. Частота сигнала C 18Мгерц.

Рис. 13.    Демонстрация скоростных свойств узла. Некорректная работа узла.

7.8  Функциональное описание моделируемого узла.

* 555IE9_MAC  Synchronous 4-bit Decade Counters with asynchronous clear

.SUBCKT 555IE9_MAC  CLK_I CEP_I CET_I RBAR_I PEBAR_I D0_I D1_I D2_I D3_I

+ Q0_O Q1_O Q2_O Q3_O TC_O

+ OPTIONAL: DPWR=$G_DPWR DGND=$G_DGND

+ PARAMS: MNTYMXDLY=0 IO_LEVEL=0

*

ULS160ALOG LOGICEXP(13,15) DPWR DGND * БЛОКЛОГИКИ

+ CLK_I CEP_I CET_I RBAR_I PEBAR_I D0_I D1_I D2_I D3_I Q0 Q1 Q2 Q3

+ CLK CEP CET RBAR PEBAR D0 D1 D2 D3 TC DD0 DD1 DD2 DD3 CE

+ D0_GATE IO_STD IO_LEVEL={IO_LEVEL}

+ LOGIC:

+   CLK = { CLK_I }                     ;Buffering

+   CEP = { CEP_I }

+   CET = { CET_I }

+   RBAR = { RBAR_I }

+   PEBAR = { PEBAR_I }

+   D0 = { D0_I }

+   D1 = { D1_I }

+   D2 = { D2_I }

+   D3 = { D3_I }

+   LOAD = { ~PEBAR }              

+   CE = { CEP & CET & PEBAR }

+   Q0B = { ~Q0 }

+   Q1B = { ~Q1 }

+   Q2B = { ~Q2 }

+   Q3B = { ~Q3 }

+   DD0 = { (~CE & PEBAR & Q0) | (CE & Q0B) | (LOAD & D0) }

+   DD1 = { (Q1 & ~(Q0 & CE) & PEBAR) | (Q0 & CE & Q3B & Q1B)

+     | (LOAD & D1) }

+   DD2 = { (Q2 & ~(Q1 & Q0 & CE) & PEBAR) | (Q1 & Q0 & CE & Q2B)

+     | (LOAD & D2) }

+   DD3 = { (Q3 & ~(Q0 & CE) & PEBAR) | (Q2 & Q1 & Q0 & CE & Q3B)

+     | (LOAD & D3) }

+   TC = { CET & Q0 & Q3 }

*

UDFF DFF(4) DPWR DGND $D_HI RBAR CLK DD0 DD1 DD2 DD3

+ Q0 Q1 Q2 Q3 Q0BAR Q1BAR Q2BAR Q3BAR D0_EFF IO_STD

*

ULS160ADLY PINDLY (5,0,10) DPWR DGND *БЛОКЗАДЕРЖЕК

+ TC Q0 Q1 Q2 Q3

+ CLK PEBAR CET RBAR CEP D0 D1 D2 D3 CE

+ TC_O Q0_O Q1_O Q2_O Q3_O

+ IO_STD MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}

+ BOOLEAN:

+   CLOCK = { CHANGED_LH(CLK,0) }

+   CNTENT = { CHANGED(CET,0) }

+ PINDLY:

+   Q0_O Q1_O Q2_O Q3_O = {

+     CASE(

+       CLOCK & TRN_LH, DELAY(-1,24NS,24NS),

+       CLOCK & TRN_HL, DELAY(-1,27NS,27NS),

+       CHANGED_HL(RBAR,0), DELAY(-1,28NS,38NS),

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

+          )

+     }

+   TC_O = {

+     CASE(

+       CNTENT, DELAY(-1,14NS,14NS),

+       CLOCK & TRN_LH, DELAY(-1,35NS,35NS),

+       CLOCK & TRN_HL, DELAY(-1,35NS,35NS),

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

+       )

+     }

+ FREQ: *ЧАСТОТА И ДЛИТЕЛЬНОСТЬ СИГНАЛОВ

+   NODE = CLK

+   MAXFREQ = 25MEG

+ WIDTH:

+   NODE = CLK

+   MIN_LO = 25NS

+   MIN_HI = 25NS

+ WIDTH:

+   NODE = RBAR

+   MIN_LO = 20NS

+ SETUP_HOLD:

+   DATA(1) = PEBAR

+   CLOCK LH = CLK

+   SETUPTIME = 20NS

+   HOLDTIME = 3NS

+   WHEN = { RBAR!='0 }

+ SETUP_HOLD:

+   DATA(2) = CEP CET

+   CLOCK LH = CLK

+   SETUPTIME = 20NS

+   HOLDTIME = 3NS

+   WHEN = { RBAR!='0 & (PEBAR!='0 ^ CHANGED(PEBAR,0))

+     & CHANGED(CE,20NS) }

+ SETUP_HOLD:

+   DATA(4) = D0 D1 D2 D3

+   CLOCK LH = CLK

+   SETUPTIME = 20NS