nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

QuatCore: the story so far

Если помните, в начале марта мы развили "бурную деятельность" по оцифровке аналогового сигнала высокой чёткости:

25 февраля - Техническое зрение в реальном времени "для бедных"
26 февраля - Аналоговые сигналы высокой чёткости,
Кадровая развёртка в сигналах высокой чёткости,
Оцифровка аналоговых сигналов высокой чёткости

Затем нужно было "заново" (силами QuatCore) научиться настраивать тактовую частоту на макетке в 25 МГц (вместо 4 МГц): SPI на 3 устройства (27 февраля), Торжественно отключаем Ethernet (4 марта).

После этого можно было реализовать детектор синхроимпульсов (5 марта) и селектор синхроимпульсов (6 марта).

Не обошли стороной и управление "джойстиком" (чтобы влезть в меню аналоговой камеры и всё настроить, в первую очередь формат видеосигнала - CVBS, CVI, TVI или AHD)

Чтобы можно было сохранить куда-то изображение, сначала я надеялся на SD-карточку, но на пол-пути "сдался" - чтобы успеть на неё записывать, нужно выйти на тактовую частоту 50 МГц, да ещё вместо SPI применить "нативный интерфейс" SD с 4 линиями данных и несколькими управляющими линиями. (см. Ещё про память, 3 марта), поэтому решил взамен воспользоваться статической памятью (10 марта).

Казалось бы: следующий логичный шаг записать изображение в эту память, передать по UART и предать широкой общественности! И тут началось: сначала застрял на несколько месяцев с "разгоном" QuatCore до 25 МГц, т.к в своём изначальном виде он не мог работать на частоте свыше 6 МГц. Сначала отрабатывал "ядро" на симуляторе, потом, когда оно заработало - начал подключать периферию, и 29 мая "под самый конец" подключил статическую память, и убедился что и она работает на 25 МГц, хотя бы "в нормальных условиях".

И потом ещё застрял на 4 месяца!

Сразу после этого мы начали громко думать над видеопроцессором. К 17 июня была написана черновая версия программы обнаружения точек, написан сам видеопроцессор и сделана самая первая версия FIFO на логических элементах.

Стало ясно, что QuatCore был слишком "заточен" под работу с массивами (будь то массив из 3 элементов, то бишь вектор, из 4, то бишь кватернион, или всевозможные матрицы), то есть с "однородными данными", а когда нужно ковырять яркость, диаметр, горизонтальную и вертикальную координаты (т.е они обрабатываются СОВЕРШЕННО ПО-РАЗНОМУ, ведь мы принимаем изображение в реальном времени, строка за строкой), написание программы превращается в пытку.

Последовала серьёзная переделка - вместо непосредственных значений от -64 до +63 мы ввели возможность использовать ЛЮБЫЕ 16-битные числа, но всего 128 штук (и пока наш рекорд по использованию: 44 штуки). Изменения в самом QuatCore были незначительные, но вот компилятор пришлось "перебрать" основательно... К 30 июня это было сделано, хоть не самым эффективным образом, но по крайней мере работало и давало возможность довольно легко "вставить" новый, более эффективный алгоритм.

Когда мы продолжили работать над программой обнаружения точек, стало ясно: нужны связанные списки, а вместе с ними - "динамическое выделение памяти". Его сделали довольно быстро, разумеется со спецификой QuatCore, а к 16 июля и программа была готова.

Но отлаживать её было негде - видеопроцессор до сих пор не был увязан с QuatCore. К 31 июля всё соединили, 3 августа готовы были запустить всё это хозяйство, но как всегда, "просели тайминги" - не вписывалась вся эта конструкция в свои 25 МГц. Я подумал на "таблицу непосредственных значений", которая заполнялась "в лоб", и ещё неделю провозился с построением более компактной таблицы, до 10 августа.

Потом меня, увы, отвлекли на всякую хрень более чем на неделю, и 20 августа наконец-то началась отладка всего этого комплекса в сборе: видеопроцессор, "вычислительное ядро" QuatCore, завязанные между собой, и исполняющие программу обнаружения точек. А к входу подключён "генератор тестового изображения".

К 7 сентября отладка на симуляторе была завершена - пришла пора всё это дело проверить "в железе". Увы, со всей подключённой периферией максимально допустимая частота просела и вовсе до 23 МГц, и чтобы выйти на свои 25 МГц, пошёл на "крайние меры" - вообще выкинул относительные адреса! С той поры все прыжки стали по абсолютным адресам.

И наконец, к середине сентября, впервые с 29 мая, мы вернулись к "железу". И маленькими шажками, введя ещё одну фичу (байтовый режим), наконец-то испытали программу обнаружения точек, но пока что на тестовом изображении, которое было зашито в память.

Сейчас наладили "двустороннюю связь" с компьютером, чего с QuatCore отродясь не случалось...


И вот, после всех окольных путей пора возвращаться к тому, на чём когда-то остановились в марте: научиться записывать изображение в статическую память, а потом передавать его на компьютер. Потом "подрихтуем" изображение - наверняка оно будет не самым качественным - и придётся ещё раз кардинально сменить род деятельности - изготовить себе оптическую мишень! На КПАшников (делающих Контрольно-Проверочную Аппаратуру) надежды нет - они сделают только мишень ближней дистанции, поскольку по стандарту предприятия (СТП) они делают только КПА, это штука для прохождения ВХОДНОГО КОНТРОЛЯ, а на входном контроле достаточно показать работоспособность изделия, а исчерпывающе проверять все режимы работы и достижение заявленных точностей - это задача ПриёмоСдаточных Испытаний, для которых вместе с КПА нужно ещё и РАБОЧЕЕ МЕСТО. Его они делать отказываются (это должен делать разработчик изделия), и ШТАТНОЕ рабочее место появится только после оформления всей документации, её согласования с начальством, военными и заказчиком, выделения финансирования, и когда завод освободится от более насущных задач. В общем, ГОДА ДВА, МИНИМУМ. А мне нужно ЧЕРЕЗ МЕСЯЦ ПОЛУЧИТЬ РАБОТАЮЩИЙ МАКЕТ!

Ладно, из ДСП, светоотражающего материала и какой-то матери чего-нибудь соберу...
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

  • Формулы приведения, что б их... (и atan на ТРЁХ умножениях)

    Формулу арктангенса на 4 умножениях ещё немножко оптимизировал с помощью алгоритма Ремеза: Ошибка уменьшилась с 4,9 до 4,65 угловой секунды, и…

  • Алгоритм Ремеза в экселе

    Вот и до него руки дошли, причина станет ясна в следующем посте. Изучать чужие библиотеки было лениво (в том же BOOSTе сам чёрт ногу сломит), писать…

  • atan на ЧЕТЫРЁХ умножениях

    Мишка такой человек — ему обязательно надо, чтоб от всего была польза. Когда у него бывают лишние деньги, он идёт в магазин и покупает какую-нибудь…

  • Ай да Пафнутий Львович!

    Решил ещё немного поковыряться со своим арктангенсом. Хотел применить алгоритм Ремеза, но начал с узлов Чебышёва. И для начала со своего "линейного…

  • atan(y/x) на двух умножениях!

    Чего-то никак меня не отпустит эта тема, всё кажется, что есть очень простой и эффективный метод, надо только его найти! Сейчас вот такое…

  • Таблица коэффициентов для atan1

    Пора уже добить этот несчастный арктангенс, что-то слишком долго его ковыряю. Мы упоминали, что в оперативной памяти будет лежать таблица в 15 слов:…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 2 comments