В этом примере показана и пояснена методология проектирования «сверху вниз», применяемая к алгоритму обнаружения краев Sobel. Алгоритм обнаружения краев Sobel является популярным, но простым алгоритмом обнаружения краев и является основным в этом примере. На этом примере вы узнаете:
Как Simulink ® позволяет разработать алгоритм цифровой обработки сигналов (DSP) на системном уровне.
Как разработать дизайн, чтобы сделать его реализуемым в аппаратном обеспечении.
Совместное моделирование написанного вручную кода HDL (соответствующего модели Simulink) с ModelSim ® или Cadence ® Incisive ® в среде Simulink.
Этот подход является примером конструирования на основе модели. Дополнительные сведения о конструировании на основе модели см. в разделе http://www.mathworks.com/model-based-design
Для запуска всех моделей в примере необходимы следующие продукты:
MATLAB ®
Simulink
Designer™ с фиксированной точкой
Verifier™ ЛПВП
Компьютерное зрение Toolbox™
Toolbox™ системы DSP
ModelSim SE или PE. или Cadence Incisive
По мере того, как конструкции становятся больше и сложнее, становится необходимым описывать конструкцию на высоком уровне. Это высокоуровневое описание не только позволяет проектировщику быстрее выполнять моделирование, но и может использоваться в процессе разработки для проверки. Этот процесс позволяет разработчикам выявлять ошибки на ранней стадии и избегать дорогостоящего обнаружения ошибок в конце разработки. Этот высокоуровневый проект обычно выполняется системными инженерами.
Для реализации алгоритма DSP на аппаратном обеспечении, таком как ASIC или FPGA, инженер системного уровня сначала проектирует алгоритм и проверяет, удовлетворяет ли алгоритм требованиям проекта. Эта конструкция становится золотой основой для инженеров, ответственных за перенос алгоритма на аппаратные средства.
В этом примере алгоритм Sobel Edge Detection реализован в Simulink. Откройте исполняемую модель и дважды щелкните по блоку «Sobel Edge Detection», чтобы узнать, как алгоритм реализован в Simulink. При двойном щелчке по блоку Sobel Edge Detection можно увидеть, что алгоритм состоит из двух 2D фильтров: один для вычисления градиента в направлении столбца (верхний фильтр) и один для вычисления градиента в направлении строки (нижний фильтр). Оба фильтра используют ядро 3x3.
Эта модель Simulink служит спецификацией для остального пути разработки. Это исполнимая спецификация, которая позволяет легко выполнять эту модель в среде Simulink.
В этом примере спутниковое изображение используется в качестве входного сигнала алгоритма обнаружения краев. Это изображение служит входным тестовым вектором и используется во всем примере. Если инженеры, ответственные за аппаратную реализацию алгоритма, также работают в среде Simulink, нет необходимости в дополнительных накладных расходах при переносе тестовых векторов в различные приложения или создании тестовых жгутов, подверженных человеческим ошибкам. Тестовый жгут, используемый в исполняемой спецификации, используется во всем примере.

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

Поскольку нашей конечной целью является реализация алгоритма в FPGA или ASIC, мы должны преобразовать нашу конструкцию с двойной точностью в конструкцию с фиксированной точкой. Это можно легко сделать с помощью Simulink. Модель двойной точности, разработанная в предыдущем разделе, используется для непосредственной разработки модели с фиксированной точкой без введения новых блоков. Simulink позволяет определить количество битов и масштабирование для данных, а также математических операций, и обеспечивает отличную среду для анализа работы системы с фиксированной точкой.
В этой схеме с фиксированной точкой вход в фильтры является значащим 9-битовым целым числом, а выходы фильтров являются значащими 11-битными целыми числами. При двойном щелчке по каждому вычислительному блоку, такому как фильтры или суммарные блоки, можно увидеть, что разработчик может легко настроить битовую ширину и масштабирование, связанные с внутренними вычислениями этого блока. Это дает большое преимущество конструктору для компромисса между согласованием выходных данных золотого эталона при использовании наименьшего количества битов, необходимого для экономии области на устройстве.
Откройте модель с фиксированной точкой и проверьте, как реализуется фиксированная точка, дважды щелкнув вычислительные блоки, такие как фильтры 2D или блок сложения, и взглянув на соответствующую панель с фиксированной точкой.

В нашем примере вход в алгоритм обнаружения краев представляет собой двумерное изображение размером 200x100. В системе реального времени вход, скорее всего, является не матрицей, а последовательным потоком данных; например, этот последовательный поток данных может генерироваться устройством с зарядовой связью (CCD). Поэтому нам необходимо модифицировать структуру конструкции таким образом, чтобы алгоритм обнаружения краев принимал и выполнял 2D фильтрацию последовательного потока данных.
В этом случае сначала выполняется сериализация входного изображения. Затем выполняется 2D фильтрация этих последовательных данных. Позже мы десериализируем поток данных, чтобы иметь возможность сравнивать выходные данные с золотой ссылкой. Чтобы узнать, как это делается, обратитесь к модели разработки обнаружения краев.
Эта операция выполняется только для нижнего фильтра. Как и ожидалось, новая конструкция по-прежнему дает те же точные результаты, что и раньше. Для компенсации полировки в блоке сериализатора были добавлены два элемента задержки. Эта конструкция также демонстрирует многоскоростные возможности Simulink. Выходной сигнал блока сериализатора в 20000 раз выше по частоте дискретизации относительно входного сигнала этого блока.

Модель из предыдущего раздела может быть передана конструктору HDL, который может использовать фильтр 2D, разработанный в последнем разделе, для записи соответствующего кода VHDL или Verilog. После написания кода разработчик ЛПВП может использовать Verifier™ ЛПВП для моделирования конструкции ЛПВП в среде Simulink с помощью ModelSim или Incisive и сравнивать выходные данные конструкции ЛПВП с выходными данными исполняемой спецификации. Следует отметить, что в этом процессе нет необходимости создавать стенд для испытаний ЛПВП. Модель Simulink подает входной тестовый вектор в ModelSim или Incisive через HDL Verifier и извлекает данные из ModelSim или Incisive обратно в среду Simulink. Разработчик ЛПВП может легко проверить, соответствует ли код ЛПВП спецификациям.
ModelSim/QuestaSim
Обратитесь к модели VHDL или Verilog, чтобы узнать, как средство проверки HDL используется для косимуляции Simulink и ModelSim. На последнем рисунке показан снимок сигналов, отображаемых в ModelSim.


Insisive/Xcelium Обратитесь к модели Verilog, чтобы узнать, как программное обеспечение HDL Verifier используется для косимуляции Simulink и платформы Insisive.
