Не стесняйтесь читать или пропустить до конца. Я понимаю, что продолжал немного!
Обычно вы не используете мягкий процессор для замены DSP. Выделенное оборудование, как правило, может обрабатывать большие объемы данных быстрее, потому что вы бы спроектировали его так, чтобы оно выполняло определенную задачу очень хорошо, а не было центральным процессором общего назначения.
То, где мягкие процессоры входят в их элемент - это управление и координация
Если бы вы проектировали систему, которая должна была обрабатывать большой объем данных, скажем, для получения изображений с высокой частотой кадров, было бы невозможно использовать процессор с мягким ядром для обработки всех данных, просто было бы слишком много накладных расходов. в процессоре. Что бы вы сделали, это разработали специальную прошивку для выполнения конкретной задачи сбора данных (например, фильтрации данных, сохранения в памяти и т. Д.).
Однако вам все еще нужен какой-то способ указать ему, когда нужно что-то делать - когда вы хотите захватывать, было ли устройство проинструктировано о разгрузке данных и т. Д. Эти вещи не очень легко сделать на выделенном оборудовании, если нет последовательности событий с пользовательским вводом, в основном задачи, которые не делают одно и то же снова и снова. В этом случае вы бы использовали программный процессор, поскольку для некоторых задач гораздо проще написать процедурный код.
Другой (реальный) пример, я работал над системой сбора ультразвуковых данных, которая передает данные через PCIe. Задачи, которые он выполняет, передаются от пользователя, и различные части системы нуждаются в настройке. Для координации системы не требуются большие объемы данных, но вместо этого требуется гибкость, поэтому она хорошо подходит для программируемого в данном случае процессора с мягким ядром C. Для того же действия на физическом оборудовании потребуются огромные ресурсы большинство из которых будет использоваться нечасто, поэтому не будет никакой выгоды по сравнению с процессором.
Стоит отметить, что некоторые задачи могут отличаться в зависимости от пользовательского ввода, но все же лучше в выделенном оборудовании. Фактически одна часть кода (программирование контроллеров DMA для хранения данных по триггеру) изначально выполнялась в ЦП примерно в 15 строках кода, но поскольку этот бит должен быть выполнен в момент возникновения триггера, с использованием ЦП, который может быть заняты другими вещами не идеально. Задача вместо этого запрограммирована в модуль Verilog, но в процессе становится огромным 500-строчным конечным автоматом с примерно 15 состояниями и целой кучей вспомогательной логики - на самом деле нет. Но даже если он потребляет гораздо больше ресурсов, это критично ко времени, поэтому это необходимо.
Точно так же мне нужна точная генерация триггера тактового цикла, поэтому модуль для выполнения этой задачи является частью системы, а не делает это в процессоре. И это ядро, и приведенное выше являются примерами того, как вы можете использовать ЦП для выполнения некоторых задач, но для других важных вы можете разработать аппаратное обеспечение для дополнения ЦП - так же, как у вас есть таймеры и т. Д. В микроконтроллере.
Итак, подведем итог:
ПЛИС являются отличными гибкими инструментами, но большинству проектов требуется комбинация мягких процессоров, настраиваемых модулей (например, таймеров) и выделенного аппаратного обеспечения для одной задачи.
Процессоры отлично подходят для взаимодействия с пользователем, контроля порядка событий, настройки контроллеров. Они как координатор, мозг.
Некоторым проектам может потребоваться выполнить несколько довольно повторяющихся задач, которые могут быть настроены для разных входов - модули таймера, отображение символов, отладка кнопок и т. Д. Это можно легко сделать с помощью ЦП, но если вы хотите выполнить несколько из них точно в как только это становится более сложным - они совместно используют одни и те же ресурсы процессора. Поэтому вы можете переместить их в выделенное оборудование, которое тесно связано с процессором, - дать процессору возможность выполнять другие задачи. Это помогает процессору выполнять свою работу и взаимодействовать с окружением, таким как его чувства.
Выделенный DSP, передача данных (DMA) - практически любая задача, которая будет делать одно и то же снова и снова на высоких скоростях - может действительно выиграть от выделенной логики с точки зрения скорости, а также, возможно, мощности. Это как мышцы устройства, делают всю тяжелую работу.
Тебе придется немного извинить бессвязных, но мне нравится это поле EE. Надеюсь, вышесказанное понятно и дает вам дополнительное представление о чудесном мире FPGA.