2017-02-20 19 views
0

Я пытаюсь изучить MyHDL, написав очень простую машину с несколькими инструкциями и операциями. То, с чем я борюсь, - лучший способ разработать мою машину для обработки операций, которые требуют нескольких тактовых циклов. В настоящее время все аппаратные компоненты, которые я написал, нуждаются только в одном тике, чтобы решить, так что это блок управления, с которым у меня возникают проблемы.Какой рекомендуемый шаблон дизайна MyHDL для операций с несколькими тиками?

Например, предположим, что все операции моей машины занимают от 1 до 3 тактов, что означает, что мне нужно иметь 3 цикла для каждой инструкции (поскольку я не выполняю параллелизм прямо сейчас).

Это будет означать, что мне нужно три этапа для моей машины или, в терминах HDL, три тактовых логических блока. Одна полная итерация машина будет выглядеть так:

  • контролируете
    • Tick :: Компоненты
  • управления B
    • Tick :: Компоненты
  • Контроль C
    • Tick :: Компоненты
  • Назад к A

Поскольку нет никакого параллелизма и каждый этап использования общего аппаратного обеспечения, я хочу блоки управления, чтобы быть вызваны последовательно и в порядке. Чтобы сделать это, хочу ли я несколько часов? Один такт для компонентов и один для управления, где тикинг часов компонентов выполняется в конце каждой фазы управления? Но тогда управление A, B и C будет выполняться вместе с каждым тактом. Должен ли я тогда использовать четыре такта, один для компонентов и один для каждой фазы управления, где компонентный такт и часы следующей фазы продвигаются в конце каждой фазы управления? Или я хочу только один такт и некоторые логические сигналы, которые сообщают каждую фазу, когда они должны идти (каждая контрольная фаза проверяет флаг, и если он установлен, они будут выполнять и устанавливать флаг для следующей фазы)?

ответ

1

Из вашего описания я думаю, что вы могли бы попытаться решить вашу проблему с помощью конечного автомата и разделить свои схемы на независимые блоки.

Поскольку вы сказали, что не хотите добавлять какой-либо паралиализм в свой дизайн, вы можете попытаться сохранить свой дизайн в рамках одной схемы, используя только один такт и управляя поведением с использованием регистров. Попытайтесь описать схему, считая, что одно действие будет принято за такт.

Попробуйте добавить примерный код и более конкретную информацию.