Я пытаюсь изучить MyHDL, написав очень простую машину с несколькими инструкциями и операциями. То, с чем я борюсь, - лучший способ разработать мою машину для обработки операций, которые требуют нескольких тактовых циклов. В настоящее время все аппаратные компоненты, которые я написал, нуждаются только в одном тике, чтобы решить, так что это блок управления, с которым у меня возникают проблемы.Какой рекомендуемый шаблон дизайна MyHDL для операций с несколькими тиками?
Например, предположим, что все операции моей машины занимают от 1 до 3 тактов, что означает, что мне нужно иметь 3 цикла для каждой инструкции (поскольку я не выполняю параллелизм прямо сейчас).
Это будет означать, что мне нужно три этапа для моей машины или, в терминах HDL, три тактовых логических блока. Одна полная итерация машина будет выглядеть так:
- контролируете
- Tick :: Компоненты
- управления B
- Tick :: Компоненты
- Контроль C
- Tick :: Компоненты
- Назад к A
Поскольку нет никакого параллелизма и каждый этап использования общего аппаратного обеспечения, я хочу блоки управления, чтобы быть вызваны последовательно и в порядке. Чтобы сделать это, хочу ли я несколько часов? Один такт для компонентов и один для управления, где тикинг часов компонентов выполняется в конце каждой фазы управления? Но тогда управление A, B и C будет выполняться вместе с каждым тактом. Должен ли я тогда использовать четыре такта, один для компонентов и один для каждой фазы управления, где компонентный такт и часы следующей фазы продвигаются в конце каждой фазы управления? Или я хочу только один такт и некоторые логические сигналы, которые сообщают каждую фазу, когда они должны идти (каждая контрольная фаза проверяет флаг, и если он установлен, они будут выполнять и устанавливать флаг для следующей фазы)?