Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Давайте устраивать на форуме конкурсы
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > Новости и обсуждения сайта и форума
Страницы: 1, 2
ar__systems
Цитата(ViKo @ Aug 17 2011, 13:00) *
Пример для конкурса - декодировать mp3 на Cortex-M3 с минимальным использованием ресурсов микроконтроллера - памяти, времени...
Какие-то сторонние готовые библиотеки здесь уже обсуждаются. А что, если своё создать, совместно? Правда, это будет уже не конкурс. sm.gif

Это задачи которые уже требуют по меньше мере часов 100-200 на реализацию. Это не тот формат, который я предлагаю. Лишнего времени в таком объеме, наверное, нет ни у кого. Опять же, а кому нужен такой мп3 декодер? Кому-то конечно да, но не всем.
AlexandrY
Цитата(ar__systems @ Aug 17 2011, 21:27) *
Это задачи которые уже требуют по меньше мере часов 100-200 на реализацию. Это не тот формат, который я предлагаю. Лишнего времени в таком объеме, наверное, нет ни у кого. Опять же, а кому нужен такой мп3 декодер? Кому-то конечно да, но не всем.


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

Потом тоже сделать с портированием JPEG, потом MPEG, потом FS, TCP, кучей войс кодеков и т.д.
Это будет и полезно и забавно. Просто рассказы как начал портировать и обломался тоже будут интересны.

Это как публикация результатов тестов CoreMark на разных платформах.
Опубликовать результат может любой, а дальше хотите верьте хотите нет.
Но нужно сделать рейтинг доверия.
ar__systems
Цитата(AlexandrY @ Aug 17 2011, 15:06) *
Тут сутки -двое. Это и будет мастерство.

Сутки двое на что - чтобы отпортировать работающий код? Согласен. Чтобы в нем еще и разобраться, если он чужой, и оптимизировать - не верю.
ViKo
Здесь важна не столько практическая польза от работы, сколько обучение хитростям программирования. Придется ассемблер изучить внимательнее, алгоритмы кодирования звука (и не только звука, как уже говорилось, можно и изображения, видео...). И оценить результат найдется много желающих, так что можно рассчитывать на объективность при выборе победителя. Хотя, на мой взгляд, победителями будут все. sm.gif
Времени, конечно, отберет... Тогда назовите свои варианты конкурса, попроще. Но разве мы куда-то торопимся, опаздываем?
VCO
Цитата(ViKo @ Aug 18 2011, 11:15) *
Тогда назовите свои варианты конкурса, попроще. Но разве мы куда-то торопимся, опаздываем?

Вот именно, что торопиться не надо, а надо дождаться возвращения потенциальных участников олимпиад и представителей администрации из отпусков. Ждать недолго осталось, примерно до сентября. А там к октябрю и вторая волна одиноких людей нахлынет...
ARV
помнится, была тут темка на счет отзеркаливания битов в байте - такого типа задачки предполагаются? wink.gif если склероз не подводит, самая короткая процедурка в 11 ассемблерных команд вышла (AVR8)....
Rst7
QUOTE
помнится, была тут темка на счет отзеркаливания битов в байте


Да ну. Все эти трюки давно собраны тут - http://graphics.stanford.edu/~seander/bithacks.html
ar__systems
Цитата(ARV @ Aug 23 2011, 12:21) *
помнится, была тут темка на счет отзеркаливания битов в байте - такого типа задачки предполагаются? wink.gif если склероз не подводит, самая короткая процедурка в 11 ассемблерных команд вышла (AVR8)....

Ну это уже совсем для дошкольников. Я же написал, что задачи все практические sm.gif

PS. На арме специальная команда есть - 1 командой аж целых 32 бита реверсируются.
Rst7
QUOTE
На арме специальная команда есть - 1 командой аж целых 32 бита инвертируются.


Кстати, довольно бесполезная. Я ее сначала на радостях употребил для перестановки в БПФ, а потом, когда первый раунд (который только суммы и разности без умножений) в Radix4-алгоритме с этой перестановкой скрестил, то понял, что табличка (небольшая) была бы одинакова по быстродействию. Ибо еще надо двигать результат, а в табличке все заряжено.
ar__systems
Цитата(Rst7 @ Aug 23 2011, 16:24) *
Ибо еще надо двигать результат

Ну он вроде двигает бесплатно практически в любой команде. Ну и то, что в конкретном месте она не дала преимущества, не значит, что она вообще бесполезная sm.gif
Rst7
QUOTE
Ну он вроде двигает бесплатно практически в любой команде.


К сожалению, при индексации - сдвиг отнюдь не на любое количество бит.
ar__systems
Цитата(ARV @ Aug 23 2011, 12:21) *
помнится, была тут темка на счет отзеркаливания битов в байте - такого типа задачки предполагаются? wink.gif если склероз не подводит, самая короткая процедурка в 11 ассемблерных команд вышла (AVR8)....

Кстати, а что так много - на пике у меня 5 получилось:
Код
movlw 8
Loop:
rlcf    Source, F
rrcf    Dest, F
addlw 0xFF
bnz   Loop

Чисто 5 минут подумал пока собачку выгуливал. С АВР не знаком, что у них такая система команд плохая, что в два раза больше команд надо?
Rst7
QUOTE
Кстати, а что так много - на пике у меня 5 получилось:


Речь об оптимизации по скорости без использования таблицы.
ar__systems
Цитата(Rst7 @ Aug 24 2011, 07:58) *
Речь об оптимизации по скорости без использования таблицы.

тогда 16 -
Код
rlcf Source, F
rrcf Dest, F
;; повторить 8 раз
Rst7
QUOTE
тогда 16 -


Это метод в лоб. На AVR он тоже, кстати, занимает 16 тактов. Есть способ быстрее.
ar__systems
Цитата(Rst7 @ Aug 24 2011, 08:53) *
Это метод в лоб. На AVR он тоже, кстати, занимает 16 тактов. Есть способ быстрее.

Понял. На пике тоже получилось 11 команд.
ViKo
Из книжки выудил:
Код
x = (x & 0x55) << 1 | (x & 0xaa) >> 1;
x = (x & 0x33) << 2 | (x & 0xcc) >> 2;
x = (x & 0x0f) << 4 | (x & 0xf0) >> 4;

Будет любопытно взглянуть, что сделает Hi-Tech PICC компилятор. Последнее выражение - одна команда. А как с первыми двумя обойдется? (Проверю сам, позже, сейчас нет времени)
san822
Цитата(AlexandrY @ Aug 17 2011, 23:06) *
Потом тоже сделать с портированием JPEG, потом MPEG, потом FS, TCP, кучей войс кодеков и т.д.
Это будет и полезно и забавно. Просто рассказы как начал портировать и обломался тоже будут интересны.


Ничего себе конкурсы...
biggrin.gif

А чем тогда это будет отличаться от тем типа "подарю проект", которые, кстати, не очень часто появляются на форуме ?
ARV
Цитата(Rst7 @ Aug 23 2011, 20:48) *
Да ну. Все эти трюки давно собраны тут - http://graphics.stanford.edu/~seander/bithacks.html
поглядел на счет реверсирования битов - увы, не все трюки там sm.gif я говорил о реверсировании битов в байте применительно для AVR на асме. то, что по ссылке для AVR будет скомпилировано далеко не в 11 команд biggrin.gif
singlskv
Цитата(ar__systems @ Aug 24 2011, 17:51) *
Понял. На пике тоже получилось 11 команд.

Не, на пике 12тактов
на авр 13 тактов
лучше не сделать
@Ark
Цитата
Не, на пике 12тактов
на авр 13 тактов
лучше не сделать

Лучше можно сделать. Но лучше не делать. sm.gif
Берете один восмибитный порт МК и соединяете его с другим в обратном порядке. В один порт пишите, из другого читаете.
Итого всего две команды (а не такта). Но очень расточительно с точки зрения использования ног МК...
Возможны более "щадящие" варианты, с использованием только одного порта...
VCO
Цитата(@Ark @ Sep 1 2011, 00:53) *
Итого всего две команды (а не такта). Но очень расточительно с точки зрения использования ног МК...

У PIC это одна команда movff
Цитата
Возможны более "щадящие" варианты, с использованием только одного порта...

В CPLD и FPGA это вообще не проблема...
@Ark
Цитата
У PIC это одна команда movff

Одной командой не получится. Почему - подумайте. sm.gif
Цитата
В CPLD и FPGA это вообще не проблема...

Это да. Но речь, вроде бы, идет об МК.
ar__systems
Цитата(YIG @ Sep 2 2011, 03:38) *
У PIC это одна команда movff

Команда-то одна, да тактов все равно два.
@Ark
Цитата
Команда-то одна, да тактов все равно два.

Дело не в тактах. Эта команда сначала читает, а потом записывает.
А нужно - все наоборот. Сначала записать данные в порт, а затем извлечь результат из другого порта.
Причем, лучше это сделать с некоторой паузой между записью и чтением...
VCO
Цитата(@Ark @ Sep 4 2011, 22:40) *
А нужно - все наоборот. Сначала записать данные в порт, а затем извлечь результат из другого порта.

А это всё зависит от того, как задачу поставить! В Вашей "рекурсии" я увидел только один резонный подход:
Данные поступают из 8-битового параллельного порта PORTB в регистр DATA.
Вы цепляете невостребованный PORTC для зеркального байта в регистр MIRR.
movff PORTC,MIRR
Потому и ПЛИС пригрезились, что там это всё ни к чему, до того всё гибко и быстро...
Цитата
Причем, лучше это сделать с некоторой паузой между записью и чтением...

А разве задержки в такт (и более) не хватит???
@Ark
Цитата
Данные поступают из 8-битового параллельного порта PORTB в регистр DATA.
Вы цепляете невостребованный PORTC для зеркального байта в регистр MIRR.
movff PORTC,MIRR

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

Зависит от тактовой частоты.
VCO
Цитата(@Ark @ Sep 9 2011, 23:10) *
Я такого не писал и не предлагал. Если исходные данные поступают извне, то проще сразу задать
нужный порядок следования битов коммутацией внешнего порта, и не городить огород на пустом месте.
Здесь же рассматривается задача перекодировки данных.

То, что Вы предложили зеркальную перекодировку посредством аппаратного вывода-ввода, Вами написано чётко и понятно. Просто я предложил свой вариант, когда нужны и прямые, и зеркальные данные, а до этого просто ошибся.
Ну да Бог с ним!
Мне тут более интересные мысли (как мне кажется) на досуге пришли, чем банальная перекодировка .
Для интелектуального развития молодых мозгов не стоит сковывать их в средствах решения элементарных задач каким-либо AVRом или PICом. Лучше ставить задачи абстрактные, а чем они будут решены - это выбор разработчика.

Например: Нужно сделать программируемый цифровой фильтр звуковой-ультразвуковой частоты до 100 кГц (ФНЧ) с перестраиваемой частотой среза 1,2,5,10,20,50,100 кГц с минимальной себестоимостью и с минимальными габаритами (последнее - главное требование). Здесь выбор элементной базы весьма широк: микроконтроллер, DSP, ADC+FPGA+DAC, специальные ИС и др. Для себя я эту задачу уже почти решил, но хотелось бы проверить, не ошибся ли с выбором. Кому интересно - можете тоже попробовать решить.
Rst7
QUOTE
Нужно сделать программируемый цифровой фильтр


Это типа задание? Лол. Разрядность данных, частота дискретизации, порядок фильтра, типы интерфейсов, питание и так далее - где?
VCO
Цитата(Rst7 @ Sep 10 2011, 19:38) *
Это типа задание? Лол. Разрядность данных, частота дискретизации, порядок фильтра, типы интерфейсов, питание и так далее - где?

Это типа Вы меня подло-подловить решили??? Я ждал вопросов по теме!!! Разрядность определяет разработчик, лучше всего - 16 бит. Тактовая частота - 100 МГц. Порядок - 6-й. LVDS only!!! Питание - какое хотите!
Rst7
QUOTE
Это типа Вы меня подло-подловить решили???


Нет. Это я просто посмеяться пришел. Улыбают сильно исходные данные.
VCO
Цитата(Rst7 @ Sep 10 2011, 20:58) *
Нет. Это я просто посмеяться пришел. Улыбают сильно исходные данные.

Да? Предмет нездорового смеха - в студию!
Rst7
QUOTE
Предмет нкездорового смеха - в студию!


Не могу. Ибо смех такой, нормальный, иронический. Никаких признаков психического нездоровья.
VCO
Цитата(Rst7 @ Sep 10 2011, 21:26) *
Не могу. Ибо смех такой, нормальный, иронический. Никаких признаков психического нездоровья.

Всё понятно... Отдыхай... те...
GetSmart
Врача вызывали? sm.gif
VCO
Цитата(GetSmart @ Sep 10 2011, 21:29) *
Врача вызывали? sm.gif

Кому? Куда? Зачем? laughing.gif
ViKo
Цитата(YIG @ Sep 10 2011, 21:32) *
Кому? Куда? Зачем? laughing.gif

Так не GetSmart ли несколько жизней назад на Электрониксе был "дохтуром"? Видимо, желает принять участие в конкурсе. sm.gif

По сути вопроса - разве специальные микросхемы не всегда лучше универсальных? Что-то там на переключаемых конденсаторах...
Другое дело, что в универсальную ИС, микроконтроллер или ПЛИС, можно запихнуть сразу целую кучу задач.
VCO
Цитата(ViKo @ Sep 11 2011, 10:31) *
По сути вопроса - разве специальные микросхемы не всегда лучше универсальных? Что-то там на переключаемых конденсаторах...
Другое дело, что в универсальную ИС, микроконтроллер или ПЛИС, можно запихнуть сразу целую кучу задач.

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

Второй пример (не для новичков): Разработать синтезатор на программируемую частоту от 10 МГц до 2 ГГц с очень чистым спектром (ФШ-не хуже -120дБн/Гц на 10 кГц, спуры -100дБ), имеющий минимальные размеры (2 на 3 см), цену (не более 20$) и сроки разработки и сборки (не более 1 мес.) Предложение использовать генератор не принимается.

Теперь кто хочет, может поржать, а для остальных скажу, что сам решал её месяц назад. Тут тоже пришлось перебрать все варианты решения: DDS, PLL, генератор гармоник, VCXO, прямой синтез и т.д. и сделать 5 синтезаторов за неделю, прежде чем определился самый лучший вариант.

В чём суть такого подхода к полстановке задачи: Он комплексно развивает мышление разработчика, не концентрируя на деталях, которые могут оказаться несущественными в процессе анализа. Жизнь ставит задачи и посложнее, чем приведённые мною примеры. Реальные ситуации в этом форуме доказывают это. Уж если развивать мозги, так сразу комплексно, а не по мелочи. Хотя в электронике как раз мелочей не бывает...
ViKo
Stop lbe, а то засерет весь форум!
Kopa
Цитата(ViKo @ Jul 31 2015, 09:27) *
Stop lbe, а то засерет весь форум!

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

P.S.
Цитата(ar__systems @ Aug 15 2011, 16:51) *
О, еще один старый бычок заглянул на огонек.

Какая милая реплика. sm.gif
VCO
Цитата(Kopa @ Jan 4 2016, 16:23) *
И где посмотреть конкурсы и результаты? sm.gif
Или тему несбывшихся устремлений в утиль?

В утиль laughing.gif
ViKo
Конкурс должен предполагать наличие жюри и призов победителям. Иначе стимула нет.
VCO
Цитата(ViKo @ Jan 13 2016, 07:32) *
Конкурс должен предполагать наличие жюри и призов победителям. Иначе стимула нет.

Да ерунда это всё! Этот форум и есть самый толковый конкурс, зачем ещё что-то выдумывать...

...А в качестве призов победителям - доступ в Свои и на FTP. Кому неинтересно - давно смылись.
ViKo
Доступ и так дадут. А подарок - ооооо.... платку Дискавери, или РПи... Мультиметр...
VCO
Цитата(ViKo @ Jan 13 2016, 08:09) *
Доступ и так дадут. А подарок - ооооо.... платку Дискавери, или РПи... Мультиметр...

Такие "раздачи слонов" есть на профильных семинарах, вебинарах, мастер-классах и конкурсах от производителей.
Там есть смысл стимула. А здесь сам форум и помощь участников могут стать лучше всяких безделушек и мелочей...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.