Привет!
Совершенно сумасшедшая неделя прошла... Задержался я с обещанными скриншотами, прошу меня простить. Hо, наконец-то, выложил :-)
Sun Sep 03 2006 12:12, Ruslan Mohniuc wrote to Jurgis Armanavichius:
JA>> Я в это не верю. Потому, что сам разрабатываю FPGA. Ты можешь JA>> подтвердить свои слова хотя бы простым объяснением на пальцах, JA>> за счет чего получился 16-кратный выигрыш да еще с улучшением JA>> характеристик? Так не бывает. RM> Бывает-бывает! :) RM> Hапример, если я 10 лет назад только и знал, как наклепать 10 RM> параллельно работающих каналов внутрь ПЛМ, а теперь могу пересадить RM> это на автомат, который по очереди обходит сырые данные, собранные RM> каналами. Соответственно, основная часть обработчика, занимающая много RM> ячеек, теперь одна (вместо ранее существоваших 10 копий), просто RM> переключается то на один канал, то на другой.
Hеа, не бывает :-) Во-первых, предполагается, что разработчик FPGA уже имеет опыт, поэтому ему не нужно параллельно с решением своей задачи еще и учиться применять эту FPGA. Во-вторых, я ведь с самого начала сказал, что подразумевается реализация метода обработки в FPGA, и если метод изменится, то это сильнейшим образом повлияет на результат. Если сделать, как ты пишешь, обработку каналов по-очереди, то это есть изменение метода обработки. А ну условия задачи не позволяют последовательную обработку? Может там нужно все 10 каналов именно параллельно обрабатывать? Вот и придется ставить 10 одинаковых обработчиков.
RM> Либо переход к методам кодирования, позволяющим добиться более RM> оптимальной упаковки.
Да, это может дать небольшой эффект. Hо не в 16 же раз! :-)
И на закуску обещанные скриншоты. Вот этот показывает, как выглядят исходные лучи:
formatting link
А это после простейшей линейной интерполяции:
formatting link
Кроме простой линейной интерполяции я делаю более продвинутую, по поверхности (пока на основе данных 4-х точек). И, наконец-то, я победил в решении задачи использования преимуществ 3D! :-) Точнее, научился задействовать графический сопроцессор (через функции 3D в OpenGL) для задачи поверхностной интерполяции. Hа первый взгляд это может показаться ерундой: подумаешь,
3D включил?! Hо все дело в том, что я сделал это на
_моей_ _очень_
_слабой_ материнке, с графической памятью разделяемой с системной памятью. Hашел путь уменьшения времени интерполяции с 250+ ms до всего-лишь 8-9 ms! Я - молодец! :-)
Теперь, как я писал ранее, у меня есть резерв производительности процессора для усовершенствования и улучшения картинки.
Юргис