Я не знаю, как это точно описать, но может быть, что-то вроде этого?Как реализовать монитор данных в VHDL?
void monitor_thread(void)
{
for(;;){
if (data==10){
data=0;
data2++;
}
}
}
Для меня, я понимаю, что этот путь в VHDL:
signal data,data2:std_logic_vector(3 downto 0);
...
process(data)
begin
case data is:
when "0101" => data2<=data2+1;
when others =>
end case;
end process;
Но это вызовет предупреждений при компиляции в Quartus II. Я думаю, что это не правильный способ сделать это. Какие-либо предложения?
Предупреждения:
Warning (10492): VHDL Process Statement warning at xxx: signal "data2" is read inside the Process Statement but isn't in the Process Statement's sensitivity list
Warning (10631): VHDL Process Statement warning at xxx: inferring latch(es) for signal or variable "data", which holds its previous value in one or more paths through the process
Я боюсь, что совершенно неясно, чего вы пытаетесь достичь, –
Без 'data2' в списке чувствительности вы создаете защелки на' data2', с помощью которых производятся значения из 'data'. В зависимости от места размещения и маршрутизации, которые могут быть небезопасными, даже если «данные» зарегистрированы, вы можете увеличивать «данные2», когда между другими значениями «данные». Казалось бы, вы должны использовать синхронизированный процесс. И как Евгений Ш. отмечает, что вы не предоставляете [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), что делает все возможное для создания решения, которое вы можете использовать. – user1155120
@EugeneSh. Я пытаюсь создать монитор для данных, когда сигнал становится определенным значением, он заставит сигнал получить новое значение. Что-то вроде асинхронного прозрачного сигнала для счетчика, когда оно достигает 10. – Ben