Как узнать, будет ли код HW / SW полезен для конкретного приложения? - PullRequest
2 голосов
/ 29 июля 2011

Я буду на последнем курсе (электротехника и вычислительная техника) в следующем семестре, и я ищу дипломный проект по разработке встроенных систем или аппаратного обеспечения. Мой профессор посоветовал мне найти текущую систему и попытаться улучшить ее с помощью аппаратного / программного кодирования, и он привел мне пример «Системы автоматического распознавания номерных знаков», где я могу использовать выделенное оборудование с помощью VHDL или Verilog, чтобы система работала. лучше.

Я немного искал и нашел несколько видео на YouTube, которые показывают, что система работает нормально.

Так что я не знаю, есть ли место для улучшения. Как узнать, являются ли определенные алгоритмы или системы медленными и могут ли они извлечь выгоду из кодового знака?

Ответы [ 5 ]

2 голосов
/ 01 августа 2011

Первое, что нужно сделать при разбиении, это посмотреть на потоки данных. Нарисуйте блок-схему того, куда подходит каждый из «подалгоритмов» вместе с входящими и исходящими данными. Каждый раз, когда вам нужно переместить большие объемы данных из одного домена в другой, начните искать перемещение части проблемы на другую сторону разделения.

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

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

Лучше сделать аппаратный порог. Затем вы можете сдвинуть 8 "1-бит-пикселей" / байт. (Или даже длину пробега закодируйте).

Если у вас есть разумный раздел полосы пропускания, вы должны выяснить, подходят ли блоки, подходящие для каждого домена, для этого домена, или, возможно, рассмотреть другой раздел.

2 голосов
/ 01 августа 2011

Как узнать, работают ли определенные алгоритмы или системы медленно и могут ли от кодового знака?

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

Пример жесткого чехла - любой современный процессор для мобильного телефона. Посмотрите на TI OMAP5430 . Обратите внимание, что у него есть по меньшей мере 10 процессоров разных типов (один блок PowerVR имеет несколько исполнительных блоков) и десятки периферийных устройств. В любое время, когда вы хотите что-то разгрузить от «основных» процессоров, есть потенциальная стоимость шины / площадь кремния / время выхода на рынок, которое необходимо учитывать.

Легкий случай - что-то вроде того, что упомянул твой профессор. DSP / GPU / FPGA будет выполнять задачи обработки изображений, такие как свертка 2D, на несколько порядков быстрее, чем процессор. Но такие «домашние» задачи, как управление файлами, - это не то, что можно решить с помощью ПЛИС.

В вашем случае, я не думаю, что ваш профессор ожидает, что вы сделаете что-то «настоящее». Я думаю, что он ищет, чтобы вы понимали, какие процессоры / графические процессоры / DSP хороши, и на каком оборудовании хорошо. Возможно, вы захотите поискать интересную нишевую проблему, например, в биоинформатике .

2 голосов
/ 29 июля 2011

Я не знаю, что такое кодовый знак, но я делал несколько проверок раньше;Я думаю, что простые задачи обработки изображений (или сигналов) являются хорошими кандидатами для таких встроенных систем, поскольку во многих случаях они включают обработку в реальном времени больших массивов данных (предпочтительно операций SIMD).

Задачи обработки изображений часто выглядят легкими,потому что наш мозг делает ошеломительно сложную обработку для нас, но на самом деле они очень сложны.Я думаю, что эта проблема важна, если бы такая система не была внедрена раньше.Я бы пошел с реализацией преобразования Хафа (сначала для линий и окружностей, чем для обобщенного - это считается медленным алгоритмом при обработке изображений) и сделал бы некоторую сегментацию в реальном времени.Я уверен, что это будет сложной задачей по мере развития.

1 голос
/ 21 августа 2011

Я бы добавил, что в общем код HW / SW полезен, когда он уменьшает стоимость .

Встраиваемые системы имеют 2 основных фактора стоимости:

  • стоимость разработки
  • себестоимость

Чем выше объем производства, тем важнее стоимость производства, а стоимость разработки становится менее важной.

Сегодня разрабатывать аппаратные средства сложнее, чем программные. Это означает, что стоимость разработки codeSign-решения сегодня будет выше. Это означает, что это полезно в основном для массового производства. Тем не менее, сегодня вам нужны FPGA (или аналогичные) для кодирования, и они стоят дорого.

Это означает, что код знака будет полезен, когда стоимость необходимой FPGA будет ниже, чем существующее решение для вашего типа проблемы (CPU, GPU, DSP и т. Д.), При условии, что оба решения соответствуют вашим другим требованиям. И это будет иметь место (в основном) для высокопроизводительных систем, потому что ПЛИС сегодня дороги.

Итак, в основном вы захотите присвоить код вашей системе, если она будет производиться в больших объемах и является высокопроизводительным устройством.

Это немного упрощено и может стать ложным через десять лет или около того. Ведутся исследования по синтезу HW / SW на основе спецификаций высокого уровня + цены на ПЛИС падают. Это означает, что через десять лет или около того кодовое обозначение может стать полезным для большинства встроенных систем.

0 голосов
/ 30 июля 2011

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

...