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

+   HOLDTIME = 3NS

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

+ SETUP_HOLD:

+   DATA(1) = RBAR

+   CLOCK LH = CLK

+   RELEASETIME_LH = 25NS

*

.ENDS

*

*$

7.9  Схема верификации символа с подключённой к нему макромоделью.

Рис. 14.    Схема верификации символа с подключённой к нему макромоделью

Рис. 15.    График из постпроцессора моделирования

8.  Моделирование счетчика КМ555ИЕ9 в пакете Orcad 9.1.

8.1  УГО моделируемого узла.

Рис. 16.   УГО моделируемого узла


8.2  Принципиальная схема замещения проектируемого узла

Рис. 17.  Принципиальная схема  моделируемого узла.

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

Рис. 18.   Схема верификации  моделируемого узла

8.4  Поведенческая VHDL-модель узла

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_SIGNED.all;

entity K555IE9 is

PORT (

            D0 : IN std_logic;

            D1 : IN std_logic;

            D2 : IN std_logic;

            D3 : IN std_logic;

            Q0 : OUT std_logic;

            Q1 : OUT std_logic;

            Q2 : OUT std_logic;

            Q3 : OUT std_logic;   

            C, CET,CEP, R, PE,GND,PWR : IN std_logic;

           TC: OUT std_logic);

end K555IE9;

architecture MODEL of K555IE9 is

begin

   process(PE,R,C,CET,CEP)

   variable        Q_INT: std_logic_vector (3 downto 0);

   variable        D_INT: std_logic_vector (3 downto 0);

   variable        PER_INT: std_logic;

egin

    D_INT:=D3&D2&D1&D0;

    if R='0' then

      Q_INT:="0000";

              PER_INT:= '0';

    elsif (PE='0') then

       Q_INT:=D_INT;

            if(D_INT = X"9")then

        PER_INT:='1';

         end if;

         IF(Q_INT > "1001" ) THEN

            Q_INT:="0000";

         END IF;  

    elsif (C='1' and C'EVENT AND CET ='1' AND CEP='1') then

       if(Q_INT = x"9" )then

            Q_INT:="0000";      

        else

        Q_INT:=Q_INT+"0001";

        end if; 

         if(Q_INT = x"9")then

            PER_INT:= '1';

        else        

            PER_INT:= '0';

        end if;                

            end if;

     IF(Q_INT= X"2" OR Q_INT= X"4" OR Q_INT= X"6" OR Q_INT= X"8")THEN       

    (Q3,Q2,Q1,Q0)<=Q_INT after 27ns;

            ELSIF (R='1')then

    (Q3,Q2,Q1,Q0)<=Q_INT after 24ns;

            elsif (R='0')    then

            (Q3,Q2,Q1,Q0)<=Q_INT after 28ns;

            END IF;

    TC<=PER_INT after 35ns;

  end process; 

end MODEL;

8.5  Результаты моделирования в пакете OrCad 9.1.

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

Рис. 20.    Определение задержки от входа R до Q H->L

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

Рис. 22.    Определение задержки от входа С до Q L->H

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


9.  Моделирование счетчика КМ555ИЕ9 в пакете ActiveHDL 5.1

9.1  УГО моделируемого узла

Рис. 23.   УГО моделируемого узла

9.2  Принципиальная схема замещения проектируемого узла

Рис. 24.  Принципиальная схема  моделируемого узла

9.3  Поведенческая VHDL-модель узла

Если говорить о поведенческой модели счетчика, то тут в Active HDL 5.1 всё делается быстро и легко. К тому же VHDL-модель писать снова нет необходимости – её можно взять из OrCad’a, что я собственно и сделал. Поэтому, чтобы не повторяться,  второй раз приводить VHDL описание не буду. См. пункт 8.4.

9.4  Результаты моделирования в пакете ActiveHDL 5.1

Рис. 25.  Диаграмма работы счетчика в режиме счета

Рис. 26.  Задержка распространения от С до Q  L->H.

Рис. 27.  Задержка распространения от С до Q  H->L.

Рис. 28.  Задержка распространения от С до TC.

Рис. 29.  Задержка распространения от R доQ