Конфигурируемый процессор реализован на плате FPGA - PullRequest
4 голосов
/ 23 октября 2008

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

Ответы [ 3 ]

3 голосов
/ 15 декабря 2008

Вы можете проверить мой ответ на связанный вопрос . Мы сделали почти то же самое, создав процессор на VHDL для платы FPGA.

2 голосов
/ 04 июля 2009

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

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

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

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

2 голосов
/ 04 июля 2009

Это всего лишь макет, поэтому, пожалуйста, имейте в виду, что я его уберу

получить инструкцию 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: блок арифметической логики (здесь пригодится дрейнинг) AN ALU имеет 2 входных порта и выходной порт. Включаются 2 входных порта, и результат выводится. Чтобы узнать, какую инструкцию ALU должен выполнить, существует порт управления. В основном это имя команды. Таким образом, если порт управления имеет 4 бита, есть 16 возможных инструкций.

часть 2 REGISTER UNIT: это набор ячеек памяти (кеш-память). Содержимое этой памяти часто передается на входные порты АЛУ.

Part3 Блок управления: Это своего рода мастер оркестра процессора. Его работа заключается в 1 отправить данные на вход ALU 2Читайте, какие инструкции должны выполняться в регистрах команд, отправьте эти коды на управляющие порты ALU

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

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

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

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

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

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

...