Языки описания аппаратуры, методические указания по лабораторным работам, страница 23

Приравнивая х=0, получим следующие аналитические формулы

S1=/Q2*/Q1

S2=Q2*Q1

S3=Q2*/Q1

S4=/Q2*Q1

J2=e4=S4*/X

K2=e1=S3*X

J1=e3 v e6=S3*/X v S1=/Q1(Q2*/X v /Q2)=/Q1*(/X v /Q2)

K1=e2 v e5=S4*X v S2=Q1(/Q2*X v Q2)=Q1*(X v Q2)

Y=S2 v S3

Данная структурная модель реализуется с помощью второго архитектурного тела, присоединенного к описанному выше entity CU.

architecture struct of cu is

       -- Component declaration of the "jkffrs(jkffrs)" unit

       component jkffrs

       generic(

             Tclk : TIME := 0.0 ns;

             Tclr : TIME := 0.0 ns;

             Tsu : TIME := 0.0 ns);

       port(

             j : in std_logic;

             k : in std_logic;

             clk : in std_logic;

             s : in std_logic;

             r : in std_logic;

             q : out std_logic;

             nq : out std_logic);

       end component;

       for all: jkffrs use entity WORK.jkffrs(jkffrs) generic map(Tclk=>2ns);

       signal q2,q1,nq2,nq1,j2,k2,j1,k1,s1,s2,s3,s4,nrst:std_logic;

begin

-- Описание триггеров

       T2:jkffrs port map (j2,k2,clk,'0',nrst,q2,nq2);

       T1:jkffrs port map (j1,k1,clk,'0',nrst,q1,nq1);

-- Декодирование состояний

       s1<=nq2 and nq1;    s2<=q2 and q1;

       s3<=q2 and nq1;     s4<=nq2 and q1;

-- Описание функций активизации триггеров (функция переходов автомата)   

       j2<=s4 and not x;

       k2<=s3 and x;

       j1<=nq1 and (nq2 or not x);

       k1<=q1 and (q2 or x);

-- Функция выходов автомата      

       y<=s2 or s3;

-- Инверсия асинхронного сброса (на входе автомата сброс инверсный, у триггеров

-- вход сброса – прямой)

       nrst<=not rst;

end struct;

Результаты моделирования приведены на рисунке. Как видно из сравнения рисунков, при подаче однотипных воздействий поведенческая и структурная модели автомата функционируют идентично.