Извините, но здесь так много неправильного, что я не знаю, с чего начать.
Давайте начнем с заявления о том, что вы предоставили только небольшой фрагмент кода. Для лучшей оценки вы должны предоставить полный код плюс тестовый стенд. Так что я должен сделать некоторые предположения здесь и там.
Далее, здесь нет «циклов», поскольку нет часов. У вас просто есть набор из трех процессов. Если вы действительно хотите иметь «циклы», вы должны добавить часы и работать с их краями (есть много примеров).
Тогда: процессы не имеют правильного списка чувствительности. Вы используете только T: Process ( T )
. Любые изменения в data
или Ir
или PC
игнорируются. Ваш код может симулировать, но он не будет соответствовать тому, что делает оборудование.
Что касается "t (2) AR vale - это" xxxx "." У вас есть два процесса, меняющих AR. Это состояние гонки. Вы не знаете, кто из этих двух победит (и ваш инструмент синтеза откажется строить логику для этого). Я также ожидаю, что ваш симулятор VHDL будет жаловаться на это. Вы сделали что-то, чтобы обойти это?
Исправить некоторые, если это перестает писать, как если бы VHDL был стандартным языком последовательного программирования. В HDL все происходит / меняется одновременно , и ваш код должен справиться с этим.
Например: ваш T имеет как минимум три «бита»? Может быть, больше или другие значения, но мы не можем видеть это, так как вы опустили определения. Таким образом, ваш T может иметь значения восемь! .
Поместите весь код в один процесс с правильным списком чувствительности и проработайте комбинацию T Восемь . Решите, каким должен быть результат в каждом из восьми случаев.
Я повторяюсь: вышеизложенное - мое лучшее предположение о том, что вам нужно, много информации отсутствует.