Проектирование цифрового узла 155КП1, страница 4

Также в проектах по-разному задаются входные воздействия. PSPICE-проект в этом плане удобнее: сигналы можно изменять и задавать “кликом” по диаграмме. В PCB Simulate проекте нужно прописывать все сигналы вручную.

Задержки в PSPICE также удобней измерять – оба маркера привязаны к правой и левой кнопке мыши.

7.11.  Поведенческая VHDL – модель проектируемого узла.

Поведенческая модель описывает все режимы работы проектируемого узла.

library IEEE;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all; 

use ieee.std_logic_unsigned.all;

entity \155KP1\ is        

      port( S,A0,A1,A2,A3,X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15

 : in STD_LOGIC;--входы

Y : out STD_LOGIC); --выход

end \155KP1\;

architecture model of \155KP1\ is   

begin

PROCESS (S,A0,A1,A2,A3,X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15)

  --поведенческая модель - описание процессом

variable Xvar : std_logic_vector(15 downto 0);  

--внутренняя переменная - виртуальная шина для информационных входов

variable Avar : std_logic_vector(3 downto 0); 

  --внутренняя переменная - виртуальная шина для адресных входов

 BEGIN

      Avar := A3&A2&A1&A0;   -- конкатенация - объединение входов в шину

      Xvar := X15&X14&X13&X12&X11&X10&X9&X8&X7&X6&X5&X4&X3&X2&X1&X0;

        -- конкатенация - объединение входов в шину

if S='1' then Y<='1' after 24 ns;  -- при стробирующем входе на Y всегда подается 1

      else

        if (X0'event or X1'event or X2'event or X3'event Or X4'event or X5'event or X6'event

or X7'event  or X8'event or X9'event or X10'event or X11'event

or X12'event or X13'event or X14'event or X15'event) then                    

               if(Xvar(TO_INTEGER (UNSIGNED(Avar))) ='0') then  Y <= '1' after 14 ns;

                     elsif(Xvar(TO_INTEGER (UNSIGNED(Avar))) ='1') then Y <= '0' after 20 ns;      

                     end if;  

               else

                     if (S'event) then

                              if(Xvar(TO_INTEGER (UNSIGNED(Avar))) ='0') then  Y <= '1' after 30 ns;

                              else Y <= '0' after 30 ns;      

                              end if;    

                    else

                              if(Xvar(TO_INTEGER (UNSIGNED(Avar))) ='0') then  Y <= '1' after 35 ns;

                              else Y <= '0' after 33 ns;      

                              end if;     

                  end if;

      end if;

   end if;                           

end process;  

end model;

7.12.  Схема верификации узла с подключенной VHDL-моделью.

Схема верификации узла 155КП1, реализованного в виде VHDL модели и в  виде схемы замещения в PCB-Simulate-проекте представлена на рис. 28.

                              

Рис.28. Схема верификации элемента 155KП1 (VHDL-модель).

7.13.  Результаты моделирования VHDL-модели проектируемого узла.

Режимы работы элемента в PCB Simulate – проекте полностью соответствуют режимам работы VHDL – модели (рис.29).

Для того чтобы убедиться в том, что задержки подобраны верно, рассмотрены временнее диаграммы моделируемого узла для проверки идентичности VHDL модели со схемой замещения из пункта 8 диаграммы показаны в одном окне.

Рис.29.Результат моделирования узла 155KП1 (VHDL-модель)

.

Как видно из рис.29 выходной сигнал VHDL-модели полностью соответствует выходному сигналу схемы замещения – с абсолютно теми же задержками.

8.  Моделирование узла в пакете Active-HDL 8.1.

8.1.  Макромодель, представленная как иерархический символ.

Внешнее описание узла в виде графического изображения представлено на рис. 30.

.

Рис. 30. Внешнее описание макромодели узла — в виде графического изображения.

В схеме замещения используются элементы из таблицы 4, УГО элементов представлено на рисунке 31.

                       

Рис. 31. УГО исользуемых элементов.