@CaPpuCcino, @Kuzmi4 огромное спасибо.

Хорошо знать, что такая хрень произошла не только со мной и имеет конкретную причину. А то я пол дня убил на то что бы найти ошибку в коде, и всё без результатно.
Цитата(Kuzmi4 @ Jul 21 2008, 17:25)

2 Grenka - похожая фигня как раз недавно у меня была - квартус соптимизировал как мог и в результате получил каку.
Хотя отдельно компонент когда проверял - идеальная диаграммка получалась.
Подход там поменять пришлось, чтоб заработало корректно..

Подход поменять? При компилировании или при написании? А можно эту оптимизацию отключить нафиг?
Цитата(CaPpuCcino @ Jul 20 2008, 23:46)

код проекта - в студию. (скорее всего при синтезе происходит упрощение)
SUBDESIGN stateMachineIEEE1284
(
Clk, HostClk, HostAck, nReverseRequest, Zaehler0 : INPUT;
EnableADC, EnableDAC, ErrorS, Multipl, nAckReverse : OUTPUT;
PeriphAck, PeriphClk, ZaehlerReset, ZaehlerZaehlen : OUTPUT;
%Data[7..0] : BIDIR;%
)
VARIABLE
stateMachine : MACHINE
OF BITS (EnableADC, EnableDAC, ErrorS, Multipl, nAckReverse, PeriphAck, PeriphClk, ZaehlerReset, ZaehlerZaehlen)
WITH STATES (
Q0 = B"000110110",
Q1 = B"010111101",
Q2 = B"000110110",
Q3 = B"100001110",
Q4 = B"000001001",
Q5 = B"000001110",
Q6 = B"000001101",
Q7 = B"000001110",
Q8 = B"001100010");
BEGIN
stateMachine.clk=Clk;
CASE stateMachine IS
WHEN Q0 =>
% Из Q0 в Q1. PC - передатчик. Он сигнализирует, что данные выставлвны.%
IF (nReverseRequest & !HostClk & HostAck) THEN
stateMachine = Q1;
END IF;
% Из Q0 в Q3. PC запрашивает данные.%
IF (!nReverseRequest & !HostAck) THEN
stateMachine = Q3;
END IF;
% Q1 Запуск счётчика.%
WHEN Q1 =>
% Из Q1 в Q2. Если счётчик не досчитал и PC считает, что данные переданы.%
IF (HostClk & HostAck & !Zaehler0) THEN
stateMachine = Q2;
END IF;
% Из Q1 в Q8. Счётчик досчитал до нуля и PC не ответил.%
IF (Zaehler0) THEN
stateMachine = Q8;
END IF;
WHEN Q2 =>
% Из Q2 в Q0. Передача PC к устойству закончена.%
IF (1) THEN
stateMachine = Q0;
END IF;
%Q3 посылаем сигнал к ADC%
WHEN Q3 =>
% Из Q3 в Q4. Если PC ещё в режиме приёма (!nReverseRequest).%
IF (!nReverseRequest) THEN
stateMachine = Q4;
END IF;
%Данные от ADC получены. Запуск счётчика.%
WHEN Q4 =>
% Из Q4 в Q5. Если счётчик не досчитал и PC подтверждает приём.%
IF (!nReverseRequest & HostAck & !Zaehler0) THEN
stateMachine = Q5;
END IF;
% Из Q4 в Q8. Счётчик досчитал до нуля и PC не ответил.%
IF (Zaehler0) THEN
stateMachine = Q8;
END IF;
% Q5 - вспомогательное состояние, для перезапуска счётчика.%
WHEN Q5 =>
% Из Q5 в Q6. Если PC ещё в режиме приёма (!nReverseRequest).%
IF (!nReverseRequest) THEN
stateMachine = Q6;
END IF;
%Устройство считает, что данные были переданы, снимает сигнал PeriphClk и запускает счётчик.%
WHEN Q6 =>
% Из Q6 в Q7. Счётчик не досчитал до нуля и PC сообщает о готовности принять новые данные.%
IF (!HostAck & !Zaehler0) THEN
stateMachine = Q7;
END IF;
% Из Q6 в Q8. Счётчик досчитал до нуля и PC не ответил.%
IF (Zaehler0) THEN
stateMachine = Q8;
END IF;
WHEN Q7 =>
% Из Q7 в Q0. Передача от устройства к PC закончена.%
IF (nReverseRequest) THEN
stateMachine = Q0;
END IF;
WHEN Q8 =>
% Из Q8 в Q0.%
IF (!nReverseRequest) THEN
stateMachine = Q0;
END IF;
% WHEN OTHERS =>
__statement;
__statement; %
END CASE;
END;
Хорошего всем времени суток.

Ах да забыл написать. Глючит Выходной сигнал Multipl. Графический дизайн был прицеплен к сообщению открывающему тему.