Вам нужно сделать единую входную защелку, по возможности на триггерах в IO-целлах. По записи в эту защелку взводить флаг того, что данные уже пришли. А дальше, пропустив выход этого флага через синхронизатор с основным клоком, по сигналу с выхода этого синхронизатора забирать данные из защелки, и сбрасывать флаг. Одновременно можно использовать этот флаг как сигнал занятости шины (если он есть). Или вместе с синхронизатором сделать столько же этапов конвейера по данным, тогда вместе с появлением флага данные уже будут защелкнуты в синхронный с клоком регистр.