Каковы типичные области применения программного процессора, такого как MicroBlaze?


8

Я знаю, что комбинация FPGA-DSP обычно используется для мощной электроники / ультразвука / МРТ / и т.д. Возможно ли программный процессор полностью заменить DSP даже на младших FPGA, таких как Spartan 3/6?

Добавлено: В чем причина наличия нескольких процессоров SoftCore в одной FPGA?


Зависит от того, насколько DSP-интенсивно ваше приложение, в основном.
Fizz

Вспоминаются ненавистные винмодемы , хотя там у вас был универсальный процессор, выполняющий DSPing.
Fizz

По-видимому, вы можете делать программно-определяемое радио на Virtex 5, а также на Altera Stratix .
Fizz

И, видимо, некоторые пробовали это на спартанском 6 LX45. Какое приложение вы имеете в виду?
Fizz

Основной проблемой, которую я увидел в этой теме, является полезное (основанное на ПК) программное обеспечение Vivado, которое работает для генерации фильтров и т. Д. Для Virtex, не позволяя вам нацеливаться на спартанца. Я не уверен, что это было только маркетинговое [сегментарное] решение, или спартанское оборудование слишком скромное.
Fizz

Ответы:


11

Не стесняйтесь читать или пропустить до конца. Я понимаю, что продолжал немного!


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

То, где мягкие процессоры входят в их элемент - это управление и координация

Если бы вы проектировали систему, которая должна была обрабатывать большой объем данных, скажем, для получения изображений с высокой частотой кадров, было бы невозможно использовать процессор с мягким ядром для обработки всех данных, просто было бы слишком много накладных расходов. в процессоре. Что бы вы сделали, это разработали специальную прошивку для выполнения конкретной задачи сбора данных (например, фильтрации данных, сохранения в памяти и т. Д.).

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

Другой (реальный) пример, я работал над системой сбора ультразвуковых данных, которая передает данные через PCIe. Задачи, которые он выполняет, передаются от пользователя, и различные части системы нуждаются в настройке. Для координации системы не требуются большие объемы данных, но вместо этого требуется гибкость, поэтому она хорошо подходит для программируемого в данном случае процессора с мягким ядром C. Для того же действия на физическом оборудовании потребуются огромные ресурсы большинство из которых будет использоваться нечасто, поэтому не будет никакой выгоды по сравнению с процессором.

Стоит отметить, что некоторые задачи могут отличаться в зависимости от пользовательского ввода, но все же лучше в выделенном оборудовании. Фактически одна часть кода (программирование контроллеров DMA для хранения данных по триггеру) изначально выполнялась в ЦП примерно в 15 строках кода, но поскольку этот бит должен быть выполнен в момент возникновения триггера, с использованием ЦП, который может быть заняты другими вещами не идеально. Задача вместо этого запрограммирована в модуль Verilog, но в процессе становится огромным 500-строчным конечным автоматом с примерно 15 состояниями и целой кучей вспомогательной логики - на самом деле нет. Но даже если он потребляет гораздо больше ресурсов, это критично ко времени, поэтому это необходимо.

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


Итак, подведем итог:

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

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

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

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

Тебе придется немного извинить бессвязных, но мне нравится это поле EE. Надеюсь, вышесказанное понятно и дает вам дополнительное представление о чудесном мире FPGA.


@tcrosley Я понимаю вашу точку зрения, но если, скажем, вы хотите добавить два 128-битных числа на 32-битном процессоре, это займет несколько циклов. Акцент был сделан на мощь . Но на самом деле это полностью зависит от того, что вы делаете в целом. Если бы все, что вы хотели сделать, - это добавить, то наличие целого ЦП было бы бессмысленно в ПЛИС - просто создать экземпляр сумматора. Так что я думаю, что уберу этот бит.
Том Карпентер

1

Как отметил Том, MicroBlaze - это не столько вопрос замены DSP, сколько замена традиционного микроконтроллера, который в противном случае может быть на плате.

Это связано с тем, что ядро ​​мягкого процессора MicroBlaze не является особенно хорошей заменой DSP, поскольку в нем отсутствуют специальные функции DSP, такие как инструкция MAC (умножение и накопление), циклические буферы, адресация с обратной битовой адресацией и логика насыщения.

Таким образом, отдельное мягкое ядро ​​DSP, такое как описанное в этой статье для Xilinx Virtex-4, будет лучшим выбором.

Многие DSP-модели выиграли бы от наличия обоих мягких ядер, поскольку многим, если не большинству цифровых конструкций, включающих FPGA, также необходим какой-то общий микроконтроллер. Пока в FPGA имеется достаточно ресурсов (см. Ниже), программные процессоры, такие как MicroBlaze, не только исключают часть в спецификации (и, конечно, связанную с ней стоимость), но также освобождают контакты на FPGA, поскольку есть нет необходимости соединять FPGA и микроконтроллер. Пространство, необходимое для следов между двумя частями, также освобождается.

MicroBlaze может работать на частоте 210 МГц на Virtex-5. Версии с MMU могут работать под Linux. Минимальный MicroBlaze требует около 600 LUT и может вырасти до 4000, если добавить FPU, MMU, кэш и другие полезности. Упомянутый выше программный процессор DSP использовал 1700 LUT.

Так как FPGA Virtext-5 может иметь от 30000 до 200000 LUT, даже включение обоих этих мягких ядер составляет лишь часть чипа. Включение обоих позволяет параллельно выполнять как обычные, так и DSP-операции, если это необходимо, за счет некоторой дополнительной сложности для синхронизации между ними.

IP-адрес для MicroBlaze является бесплатным, если вы используете его на FPGA Xilinx и имеете лицензию на ISE Design Suite Embedded Edition (или эквивалентную).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.