У меня есть реализация блока управления (UC) в AHDL, и я должен имитировать его и посмотреть, работает ли он так, как определено на соответствующей диаграмме ASM.
Я использовал MAX + plus II , чтобы смоделировать его, и он не работает, как я ожидал, но я не могу сказать, что не так, потому что я не знаком с AHDL, не говоря уже о TABLE часть.
Вот мой блок управления:
SUBDESIGN EXP1_UC
(
CLKUC: INPUT;
RES: INPUT;
N1,N2,M1,M2: INPUT;<br>
CLR1, CLR2, CLR3, EN1, EN2, EN3, SEL: OUTPUT;
)
VARIABLE
UC: MACHINE OF BITS (CLR1, CLR2, CLR3, EN1, EN2, EN3, SEL)
WITH STATES
(
s0 = B"1110000",
s1= B"0001000",
s2= B"0000100",
s3= B"0000000",
s4= B"0000010",
s5= B"0000001",
s6= B"0000011"
);
BEGIN
UC.CLK = CLKUC;
UC.RESET = RES;
TABLE
UC, N1,N2,M1,M2 => UC;
s0, 0, 0, X, X => s0;
s0, 1, X, X, X => s1;
s0, X, 1, X, X => s2;
s1, X, X, X, X => s3;
s2, X, X, X, X => s3;
s3, 0, 0, 0, 0 => s3;
s3, 1, X, X, X => s1;
s3, X, 1, X, X => s2;
s3, X, X, 1, X => s4;
s3, X, X, X, 1 => s5;
s4, X, X, X, X => s3;
s5, X, X, X, X => s6;
s6, X, X, X, X => s3;
END TABLE;
END;
В симуляции есть 2 ситуации, которые я не понимаю:
1) Когда текущее состояние S3 и входы M1 = 1 и M2 = 1, следующее состояние S6. Я не понимаю этого, потому что, как я вижу, невозможно перейти на S6, не пройдя сначала S5.
2) Когда текущее состояние S0 и входы N1 = 1 и N2 = 1, следующее состояние определяется в симуляции как «12». Ну нет такого государства ...
Кто-нибудь может мне помочь?
Спасибо.
ОБНОВЛЕНИЕ:
1) Я должен использовать ADHL и MAX + plus II, хотя это едва ли лучшая комбинация инструментов, потому что это документы для колледжа, и я не писал код (как я уже сказал, я просто должен чтобы смоделировать это, я не могу это изменить).