Перейти к содержанию

diwil

Свой
  • Публикаций

    366
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о diwil

  • Звание
    Местный
  • День рождения 05.06.1968

Контакты

  • ICQ
    2658389

Информация

  • Город
    Санкт-Петербург
  1. Уважаемые господа, у меня возникла задача передать данные по воздуху. Ограничения для канала и протокола (обусловленные дизайном системы вообще) такие: 1. Частота дискретизации выходного потока 8кГц 2. Длина фрейма, с которым можно работать - 8мс (64 отсчета) 3. Динамик хреновый 4. Микрофон еще хуже 5. Шума, наверное мало и он , в основном, низкочастотный 6. А вот эха (реверберации) может быть много - мне прислали запись с длиной эха до 200мс (по уровню -13дБ от исходного) Первое, что мне пришло в голову, так это сделать ОФДМ на 4х частотах (1.5кГц, 2, 2.5 и 3 - гармоники друг в друга не попадают). И оно заработало при С/Ш аж -6 дБ (правда с рида соломовой 11,15 коррекцией) Однако, при наличии даже малого эха (длина символа 8мс), все к чертям разваливается. Я не спец в ОФДМ, но почитав про межсимвольную интерференцию и т.д. и вообще, у меня возникло несколько вопросов: 1. Насколько я понимаю межсимвольный интервал должен быть больше длины интерференции. Т.е. в моем случае более 200мс. Это так? 2. Я не совсем понял что такое channel equalization. Это калибровка фаз и амплитуд в ссответствующих каналах? Или как раз борьба с эхом? 3. При наличии clock skew какой длины и как часто надо вставлять сиинхропоследовательность (типа калиброваться)? Я посмотрел кто что делает и ничё сильно разумного не нашел. Ну да, передают там по 100 бит в секунду . но тогда можно в моем случае использовать М-последовательность и коррелятор в приемнике. Известные алгоритмы модемов я тоже не особо представляю как использовать. Подскажите, плз. Может есть какое-то решение?
  2. Цитата(Mt_ @ Jan 24 2018, 10:48) Да, в шлем задувает. Он не герметичный. Очень интересная идея, но пока я не видел хорошей реализации, которая давала бы приемлимое качество Да. Кроме ветрозащиты, как показала практика, нужна еще и виброзащита. Т.к. вибрации шлема от набигащего потока высоки. Реализация ее тоже вопрос. А шлем, случаем, не кисс или куки?
  3. Цитата(Mt_ @ Jan 20 2018, 12:10) Были сделаны первые практические прикидки. Результаты: ветер полностью перегружает микрофоны, от речи там остается очень мало. Ларингофоны чуть лучше, но с разборчивостью проблемы (сильно завалена ВЧ голоса). Разборчивость определяется тестовой группой. Нужно, чтобы любой, даже неподготовленный человек, смог использовать наше устройство. Да. ну.. да. и микрофоны тоже. но можно посмотреть это - http://alango.com/technologies-awnr.php
  4. Цитата(_Anatoliy @ Dec 12 2017, 13:47) Мой АЦП - LTC2245(см. выше), и единственная подходящая схема в DS такая(см.фото). А как Вы узнали что там другой драйвер и он получше? ну... напр. смещения задается АЦП... тут вариантов не много. линеровские драйверы заточены для работы с их же АЦП, поэтому имеют вход напряжения смещения. мой опыт использования LTC6401-20 показывает, что в принципе возможно использовать их, но он шумит примерно 6дБ как заявлено, а вот imd3 значительно меньше, чем заявлено (т.е. хуже) Однако, если можно обойтись без драйвера (об этом ниже), то лучше без него. Тем не менее. Если драйвер нужен, то надо смотреть в сторону 6404 или подобных, ибо надо еще подумать что делать с постоянным смещением на входе, если таковое имеется. Что дальше делать с этими данными? рисовать кривую как осциллограф? тогда даже 10 эффективных бит будет достаточно и 300 кГц это любой операционник в корпусе о 8и ногах. выделять узкополосный сигнал из имеющегося? тогда, если можно пожертвовать постоянной составляющей на входе, драйвер не нужен, нужен трансформатор. В этом случае нужно не на биты смотреть а на требуемое отношение С/Ш.
  5. Цитата(_Anatoliy @ Dec 12 2017, 09:46) Давненько уже с операционниками не приходилось сталкиваться,подзабыл уже многое. Коллеги, нужен драйвер АЦП LTC2245, смотрю на AD8137, по параметрам подходит да заблудился в трёх соснах - как его правильно включить для моего режима(VDD = 3V,Vocm = 1,5V,Vin = 0...1V,common mode). В DS на AD8137 есть похожая схема, но она для биполярного входного сигнала. Подойдёт ли она для моего случая или нужно что либо изменить? нужно смотреть в сторону ltc64XX. Там все прозрачно. Другой вопрос - зачем драйвер этот нужен. Т.е. - - что на входе (в смысле согласования) - уровень входа - частоты - ну и т.д.
  6. stm32 передать в ком поток 49мБит

    Цитата(Rst7 @ Nov 25 2017, 17:47) Я просто оставлю это здесь. [attachment=109938:Bootcore.zip] На самом деле это tftp-бутлоадер для LPC1768. В нем есть ARP, ICMP (на пинг отвечает) и UDP (ибо сам tftp по UDP бегает). Переделываете под свои нужды всякие InitEMAC()/ETH_Out() и отпиливаете все, что в ветке switch(udp.tftp_rq.opcode), ибо это уже TFTP. Крайне сложная цепочка функций SendUDP -> SendIP -> ETH_Out - вот это Ваше все будет. Для красоты не забудьте выбросить там лишнее копирование. Ну а по поводу настоящего прибора - у меня тут многоканальный аудиоинтерфейс живет на Ethernet'е (проц LPC1768/100МГц), 16 каналов на вход, 16 на выход, 48кГц, 32 бита. Т.е. 25Мбит/с в каждую сторону. По TCP живет, шлет данные в обе стороны один раз в миллисекунду, с полноценной реализацией Fast Retransmit в обе стороны, так что джиттер в случае потери пакета не превышает 500мкс. И до 100% загрузки процессора там очень и очень далеко. о! то что нужно. примного благодарен
  7. stm32 передать в ком поток 49мБит

    Цитата(jcxz @ Nov 25 2017, 15:37) Обработку IP до уровня UDP можно и самому написать, без сторонних костылей. Без DHCP. можно. Но! 1. надо быстро. 2. надо еще заморочиться с драйвером физуровня. на компе, винде, сырые сокеты простыми способами не поддерживаются. Так кто-нибудь вообще пробовал?
  8. stm32 передать в ком поток 49мБит

    Цитата(diwil @ Nov 24 2017, 22:55) 2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать) 3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ? 4. И вообще, 50МБит получится? Я, тогда, задам вопрос по-другому: На stm32 (хотя, должно быть, на всех процах одинаково), если я, работая в режиме без оси, хочу передать 100к с UDP, lwip, то * надо ли мне несколько раз вызывать sendto() или * lwip сам, в прерываниях, соберет пакеты и их отправит? или есть другой IP стэк, который это сделает хорошо и быстро?
  9. stm32 передать в ком поток 49мБит

    Цитата(mantech @ Nov 25 2017, 00:23) Каким образом будет реализован прием на компе, в смысле протокол поверх эзернета? Если есть возможность писать драйвер, можно вообще кидать чистыми эзернет кадрами, что заметно ускорит работу, если так не получается, придется пилить IP, затем, хотя бы UDP. Есть стеки более простые, чем lwip, и работают быстрее. lwip без оси работает, и без сокетов тоже, но в виду буферирования и динамической памяти может оказаться не слишком резв.. на компе BSD сокеты. другие не хочу (в промискис режиме читать не хочу) у меня задача - отправить по UDP, абы не заморачиваться в подтверждениями rst/ack и т.д . Но отправить хочу сразу много. т.е. стэк должен уметь фрагментировать пакеты. И, желательно, чтобы он (стэк) это делал сам. Желательно, чтобы стэк это делал где-то в прерываниях и тихо, ибо процу тоже есть чем заняться, а ось накручивать на это не хочу. а какие стэки еще есть, которые разумно ложатся на stm32 линейки f/h7?
  10. stm32 передать в ком поток 49мБит

    Цитата(Студент заборстроительного @ Nov 24 2017, 23:02) Обсуждалось уже много раз. Поиском что ли не умеете пользоваться? К примеру почитайте тему https://electronix.ru/forum/index.php?showtopic=144619 благодарю за ссылку, но там не ответов на мои вопросы
  11. stm32 передать в ком поток 49мБит

    Уважаемые, до этого меня устраивала скорость около 4 мбит на f405 через usb fs. сейчас возникла необходимость передавать в комп примерно 50-60 мбит. Я накапливаю эти данные в проц через 2 SPI и система работает следующим образом: * ОСи нет. * каждые 16мс по одному SPI накапливается 8*8*16*2 = 4кБайт * по второму 3*2*960*16 = 92160 байт. оба SPI синхронизированы, поэтому я знаю когда мне надо данные вычитывать и передавать. И вот по этому событию (прерыванию от дма) я хочу передавать данные в комп. Принимать от компа данные... ну может байт 60 раз в секунду. Поток, который надо (92160 + 4096)*8*62.5 = 48.128 мегабит (теоретически) + еще чуть-чуть. Необходимо выбрать транспорт. * USB FS отпадает. Хотя и хорошо работает вплоть (я пробовал) до 4мБит. * Поскольку мне необходимо использовать двойной буфер + буфер для отправки данных, то мне нужно минимум 300к памяти. * А это только Н7. * поскольку у меня места мало, то могу использовать только 100 или (хуже) 144 -х ногие корпуса. А в них нет USB HS. * Внешний PHY для USB HS у меня плохо влезает, конфликтует с другими девайсами и сильно по корпусу раскидан. За сим: * Я думаю в сторону изернета. * из доступных примеров я нашел только реализацию на LAN1820/1842. Там тоже все ноги по корпусу раскиданы, но его я смог его развести. * но я не нашел внятных примеров как оно работает. Поскольку у Н7 косяк - нет физики HS, то, похоже, хоть и с внешним MII, ETH выигрывает. За сим вопросы: 1. LwIP без оси работает? Надеюсь, что да. 2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать) 3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ? 4. И вообще, 50МБит получится? Я проискал посмотрел, но кроме общих слов ничего внятного не нашел... Заранее благодарю.
  12. Ищу работу в Питере.

    Цитата(sqrt(2) @ Apr 21 2017, 16:04) Политехникам - привет! А какого рода проекты вы делали на ПЛИС? из сравнительно не самого простого SDR, например.
  13. Ищу работу в Питере.

    прошло 2 года... работодателю стало важнее вести переговоры, нежели держать работников. За сим возобновляю поиск работы. Изменился только возраст.
  14. Цитата(Mt_ @ Mar 29 2016, 15:31) Здравствуйте. Молодому и развивающемуся проекту mytiming.ru требуются перспективные разработчики по направлениям: 1) Антенно-фидерные устройства; 2) Устройства на базе ПЛИС; 3) Устройства на базе МК с примененим ОС Linux; 4) Программирование на php/JavaScript. Работа удаленно, свободный график. Требования к разработчикам: теоретические знания в своей области, желание получить практический опыт и проффесиальную помощь в решении поставленных задач. Данная вакансия будет интересна, в первую очередь начинающим специалистам, выпускникам и обучающимся в высших учебных заведениях. Мы готовы предложить интересный современный проект, квалифицированную поддержку, оплату за успешно реализованные проекты. Ваши предложения высылайте на почту: mail@mytiming.ru и где территориально можно с вами пообщаться?
  15. Цитата(krux @ Feb 17 2016, 19:49) Код else           cnext <= coeffs[0];       else         if( )             cnext <= coeffs[caddr]; а этот кусок допускает подачу на шину адреса памяти одновременно двух разных адресов. вот терь понятно. Примного благодарствую. А если я сделаю так: assign saddr = !latched ? 8'd0: caddr; и потом везде cnext <= coeffs[saddr] то на шине будет ставится только этот мультиплексированный адрес?