Каков рекомендуемый шаблон проектирования MyHDL для операций с несколькими тиками?

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

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

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

  • Контроль А
    • Галочка:: Компоненты
  • Контроль Б
    • Галочка:: Компоненты
  • Контроль C
    • Галочка:: Компоненты
  • Вернуться к

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

1 ответ

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

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

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

Другие вопросы по тегам