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