Приравнивая х=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;
Результаты моделирования приведены на рисунке. Как видно из сравнения рисунков, при подаче однотипных воздействий поведенческая и структурная модели автомата функционируют идентично.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.