Здравствуйте, у меня есть этот простой процесс VHDL (сгенерированный из кода MyHDL):
DIGIPOT_CONTROLLER_CONNECTCLOCK: process (delayedClock) is
begin
if to_boolean(clkEn) then
if to_boolean(delayedClock) then
scl_d <= '0';
else
scl_d <= 'Z';
end if;
else
if to_boolean(sclIdleValue) then
scl_d <= 'Z';
else
scl_d <= '0';
end if;
end if;
end process DIGIPOT_CONTROLLER_CONNECTCLOCK;
Оригинальный код MyHDL:
@always(delayedClock)
def connectClock():
if(clkEn):
if(delayedClock):
scl_d.next = False
else:
scl_d.next = None
else:
if(sclIdleValue):
scl_d.next = None
else:
scl_d.next = False
В моделировании он работает отлично (как симулятор ISIM, так и MyHDL), но когда я пытаюсь синтезировать его в Spartan 6, он выдает следующие предупреждения: clken должен быть в списке чувствительности процесса sclidlevalue должен быть в списке чувствительности процесса
Насколько я понимаю, он каким-то образом сделал вывод, что этот процесс должен быть чувствителен к сигналам clkEn и sclIdleValue. Но, конечно, это не то, что я имел в виду. Я хочу, чтобы он менял вывод только тогда, когда delayedClock меняет свое состояние, а не когда clkEn или sclIdleValue меняют свои соответствующие состояния.
Это что-то, чего нельзя было сделать в архитектуре Spartan 6? Или я должен описать процесс иначе, чтобы иметь предполагаемое поведение?
delayedClock
сигнал ваших часов? Если нет (что я предполагаю), как это зависит от вашего тактового сигнала? ЕслиdelayedClock
не является тактовым сигналом, ваш процесс является комбинационным (в отличие от последовательного) процессом. - person simon   schedule 04.04.2013if Rising_edge(delayedClock) then ...
самым внешним оператором. - person user_1818839   schedule 04.04.2013