Проектирование цифрового автомата в САПР OrCAD 9.1 и Active-HDL 8.1, страница 5

                             Y : out STD_LOGIC

                   );

end NAND2;

--}} End of automatically maintained section

architecture NAND2 of NAND2 is

begin

                Y<='1' after 11ns when (A and B)='0'

                else '0' after 7ns;

end NAND2;

ü  Инвертор:

ibrary IEEE;

use IEEE.STD_LOGIC_1164.all;

entity INV is

               port(

                             A : in STD_LOGIC;

                             Q : out STD_LOGIC

                   );

end INV;

architecture INV of INV is

begin

               -- enter your statements here --

  Q<='1' after 12ns when A='0'

  else '0' after 8ns;

end INV;


Реализация спроектированного автомата в виде иерархического блока со схемой замещения на абстрактных символах.

Рис. 7 Иерархический блок со схемой замещения на абстрактных элементах

На рисунке 7 показан иерархический блок со схемой замещения на спроектированных абстрактных символах, поддерживаемых VHDL – моделями. Понизив уровень иерархии на один уровень (раскрыв «черный ящик»), мы можем увидеть схему замещения (рис. 8).

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


Рис. 8 Схема замещения на абстрактных символах

Рис. 9 Результаты верификации схемы замещения на абстрактных символах (отображено время задержки по фронту С)

1 маркер стоит на точке 375ns,  2 маркер стоит на точке 399ns – задержка равна 24ns.

Рис. 9.1 Результаты верификации схемы замещения на абстрактных символах (отображено время задержки по сбросу R)

1 маркер стоит на точке 100ns,  2 маркер стоит на точке 125ns – задержка равна 25ns.


Разработка функциональной VHDL-модели цифрового автомата

Определим некоторые закономерности двоичных счётчиков. Для прямого счета, можно отметить две закономерности:

1.  Значение переменной Qi изменяется тогда, когда переменная в соседнем младшем разряде Qi-1 переходит из состояния «1» в состояние «0».

2.  Значение выходной переменной Qi изменяется при поступлении очередного импульса счета в том случае, когда переменные во всех младших разрядах Qi-1, ..., Q1 находятся в состоянии «1». В нашем задании нужно разработать ЦА, который при значении сигнала М=0 будет выполнять функцию двоичного суммирующего счетчика по модулю 14, т.е. будет считать до D (1101) и сбрасываться в 0.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.std_logic_unsigned.all;

entity \M14-DR_FUNC\ is

               port(

                             M : in STD_LOGIC;

                             DR : in STD_LOGIC;

                             C : in STD_LOGIC;

                             R : in STD_LOGIC;

                             Q : out STD_LOGIC_VECTOR(3 downto 0)

                   );

end \M14-DR_FUNC\;

architecture \M14-DR_FUNC\ of \M14-DR_FUNC\ is

signal TEMP_QV : std_logic_vector(3 downto 0);

begin

              process(M,C,DR,R)

              begin

              if (R='0')              then TEMP_QV <= (others => '0');

              elsif (C='1' and C'EVENT) then

                            if(M='0') then                                                                              

                                           if TEMP_QV>"1100" then TEMP_QV<="0000";       

                                           else TEMP_QV<=TEMP_QV+"0001";

                                           end if;   

                            else  TEMP_QV <=DR & TEMP_QV(3 downto 1);                

                            end if;   

              end if;                                             

              end process;