Конфигурируемый процессор, реализованный на плате FPGA.

StackOverflow https://stackoverflow.com/questions/228989

Вопрос

Для университетского среднесрочного проекта мне нужно разработать настраиваемый процессор, написать код на VHDL, а затем синтезировать его на плате Spartan 3E FPGA от Digilent.Я новичок, так что не могли бы вы указать мне некоторую информацию о настраиваемых процессорах и некоторые идеи, связанные с этой концепцией?

Это было полезно?

Другие советы

Это всего лишь макет, так что имейте в виду, я его подчищу.

получить инструкцию1,
получить инструкцию2, получить данные1
получить инструкцию3, получить данные2, обработать данные1
выборка инструкции4, выборка данных3, обработка данных2, сохранение1 данных1
выборка инструкции5, выборка данных4, обработка данных3, сохранение2 данных1
получить команду6, получить данные5, обработать данные4, сохранить3 данные1
получить команду7, получить данные6, обработать данные5, сохранить4 данные1
получить команду8, получить данные7, обработать данные6, сохранить5 данные1

В основном это основные компоненты процессора, часть 1 Alu:Арифметическая логическая единица (именно здесь пригодится дрейги). Alu имеет 2 входных порта и выходной порт.Два входных порта активируются, и результат выводится.Чтобы узнать, какую инструкцию должен выполнить АЛУ, существует порт управления.По сути, это название команды.Таким образом, если порт управления имеет 4 бита, существует 16 возможных инструкций.

ЧАСТЬ 2 РЕГИСТРАЦИЯ ЕДИНИСТЕР:Это набор ячеек памяти (кэш-память).Содержимое этой памяти часто передается на входные порты АЛУ.

ЧАСТЬ3 Блок управления:Это что-то вроде оркестрового мастера процессора.Его задача - 1 поставить данные в ALU Input 2read, которая должна произойти в регистрах инструкций, отправьте эти коды в порты управления ALU

Интерфейс.Вот как ОЗУ и другие периферийные устройства взаимодействуют с процессором.

Каждый раз, когда инструкция выводит результат, его необходимо сохранить.Его можно хранить в ОЗУ, поэтому запись в ОЗУ должна быть готова, как только будет готов результат.В то же время может произойти чтение из ОЗУ входов следующей инструкции. И в то же время следующая инструкция может быть извлечена из ОЗУ.

Генерация 1 инструкции обычно требует более 1 такта.Обработка инструкции аналогична промышленному производству.Итак, работа по цепочке завершена.

VLIW Программирование, которое мы пишем, является линейным, то есть инструкции выполняются одна за другой.Но сегодня процессоры (но не ARM) имеют несколько ALU, поэтому несколько инструкций обрабатываются одновременно.

Таким образом, у вас есть цепочка обработки единиц, работающая несколько инструкций одновременно (трубопровод), и у вас есть много этих единиц (SuperScalar)

Тогда возникает вопрос, что можно/нужно сделать, чтобы адаптировать архитектуру вашего процессора.

Я сделал похожий проект, реализуя процессор с 5-ступенчатым конвейером в VHDL.

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

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

Если у вас есть надежная диаграмма, фактическая реализация в VHDL должна быть относительно простой. Вы можете использовать поведенческое моделирование VHDL, чтобы точно объяснить, что именно вы видите на диаграмме.

scroll top