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

Quasar

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные Quasar


  1. А вот вопрос, по практике. У меня на одной железке, начались проблемы со сборкой фрагментированных IP пакетов. В LwIP IP_REASSEEMBLY = 1, и иногда, при приеме например ICMP размером 30Кбайт, стеку не хватает памяти (malloc возвращает NULL), и обмен подвисает, пока стек не очистит очередь IP фрагментов, ожидающих сборки, я взял и отключил IP_REASSEEMBLY, теперь стек не задумывается, но вопрос, чем это не грозит?

  2. Да. Стоит ли слепо всё это повторять? Может лучше подобрать ФНЧ по минимуму межсимвольной интерференции и максимуму сигнал/шум.

     

    В общем, алгоритм который я задумал, с поиском максимальной корреляции данных в FIFO с синхро-последовательностью, при поступлении каждого нового семпла, у меня так и не заработал как надо. Не понимаю в чем проблема. При потоковой передаче псевдослучайной-последовательности с целью замера BER, все получается, вплоть до уровня -115 ...-116 дБ (в качестве приемника/передатчика использую обычный аналоговый репитер). Но при реальной работе в эфире иногда (1 из 50 пакетов) проскакивают ошибки даже в ближней зоне.

     

    Решил пока забить на этот алгоритм и начал изучать демодулятор из GNU Radio, с целью понять причину периодических ошибок во время его работы:

     

    https://github.com/luizrenault/op25/blob/ma...emod_ff_impl.cc

     

    В нем, для получения отсчетов во время каждого символа используют MMSE интерполяцию, но мне не ясно, как построили таблицу taps'ов для интерполяции и почему время подстраивают вот таким образов?

     

    // symbol clock tracking loop gain
          const double K_SYMBOL_TIMING = 0.025;
          if(interp_p1 < interp) {
             d_symbol_clock += symbol_error * K_SYMBOL_TIMING;  
          } else {
             d_symbol_clock -= symbol_error * K_SYMBOL_TIMING;
          }

     

    Плюс, может кто подскажет, почему используют такой непонятный способ борьбы с постоянной составляющей?

     

    // our output symbol will be interpolated value corrected for symbol_spread and frequency offset
          interp -= fine_frequency_correction;
          interp_p1 -= fine_frequency_correction;
    ...
    // coarse tracking loop: for eventually frequency shift request generation
          static const double K_COARSE_FREQUENCY = 0.00125;    // time constant for coarse tracking loop
          coarse_frequency_correction += ((fine_frequency_correction - coarse_frequency_correction) * K_COARSE_FREQUENCY);
    
          // fine loop 
          static const double K_FINE_FREQUENCY = 0.125;        // internal fast loop (must be this high to acquire symbol sync)
          fine_frequency_correction += (symbol_error * K_FINE_FREQUENCY);

     

    То есть, высчитывают постоянную составляющую исходя из текущей ошибки в отсчете символа.

    Почему бы просто не пропустить через фильтр ВЧ с частотой среза 1-2 Гц?

     

     

  3. в процедуре ethernetif_input куба.

     

    Да, тоже столкнулся с таким в свое время, вот такой там код был:

    void ethernetif_input( void const * argument )
    
    {
    
      struct pbuf *p;
      struct netif *netif = (struct netif *) argument;
    
      for(;; )
      {
        if (osSemaphoreWait( s_xSemaphore, TIME_WAITING_FOR_INPUT)==osOK)
        {
          p = low_level_input( netif );
          if   (p != NULL)
          {
            if (netif->input( p, netif) != ERR_OK )
            {
              pbuf_free(p);
              p = NULL;
            }
          }
        }
    
      }
    }

     

    TolikG проверьте, есть у вас такое?

     

  4.  

    Это не довод. Вероятность низкая, но всё равно не годится если нужна надёжность. 1000раз не случилось в 1001й раз попадёт сбой во время записи.

    Если не проблема переконфигурить устройство при таком случае - то тогда на страшно.

    Но если ответственная область, где важна надёжность работы и трудно будет переконфигурить заново - не годится.

     

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

     

  5. Такой вариант (с некоторыми изменениями приемлем), но в DMA есть хороший режим, т.е. прерывание на половине и конце буфера.

     

    Еще в DMA есть режим с двумя буферами, Double Buffer Mode, я использую его для воспроизведения или записи чего-либо.

     

    3. В прерывании таймера читаем половину буфера (по счетчику), сдвигаем каждое uint16_t слово на >>4 (приводим к 12 битам)

    4. Выкладываем в DAC (настроенный на 12 битный режим)

    5. Далее вторая половинка буфера.

     

    Но вы должны выдвигать данные в DAC с частотой равной частоте семплирования, которую вы прочитали в заголовке WAV файла.

  6. Я во флеш храню настройки как на старых железках на LPC23xx, так и на новых на процессорах STM 407/417, целостность данных контролирую CRC, жалоб на пропадание настроек пока не поступало. Партии около 1000 изделий, но это правда на LPC23xx, думаю на STM будет результат не хуже.

  7. Интересная вакансия, Hi-Fi, High-End аудиотехника мое хобби, а профессионально занимаюсь радиосвязью, но вот переезд, конечно смущает. А в РФ случаем не планируете открыть отдел разработки? :-)

     

    По поводу Европы, хорошо там или нет, я лично убежден, что это сугубо индивидуально, имею знакомых, которые прижились и им там Ok, а есть и те, кто вернулся в РФ.

  8. Короче, в личку у меня не получилось написать Quasar напишите свои координаты для общения, там обсудим поподробнее все

     

    Job.andrei (дог) gmail.com

     

    Я исполнителя нашел, так что именно данный вопрос закрыт, но пообщаться можно, так как подобные задачи бывают с некоторой периодичностью. В общем welcome.

     

  9. Почему-то никто ничего не пишет про Мегаполис.

     

    Работали с ними в течение 3 лет, причем заказывали помимо плат сборку изделий (около 200 плат в год). Было ОЧЕНЬ большое количество брака (60-70% годных), причем из-за непротравов в печатных платах. Дабы это устранить, ввели программу тестирования и приемки. Каждую плату принимали ТОЛЬКО после того, как внутреннее тестовое ПО запустится и загорятся светодиоды согласно программе тестирования. Те платы, которые не запускались согласно договору исправлялись силами Мегаполиса. На выходе получали порядка 97% годных изделий (изделий из двух процессоров (LPC23xx) и ethernet Phy). Потом менеджер занимавшийся нами уволился, начала работать некая Юлия. В итоге, она начала писать нам, что любое тестирование это еще +100500 млн. рублей к цене заказа, да и вообще, почему мы за ваше изделие должны отвечать (типа мы за 100500 млн. рублей протестируем, если чего не заработает, мы здесь не причем). Из-за некоторого косяка с нашей стороны (понадеялись, что качество у них стало лучше, за 3-то года), мы все-таки заказали у них партию без тестирования, оказалось 50% брака, запороли деталей тысяч на 150, потратили время. Теперь с ними не работаем.

  10. Народ просто обратил своё внимание на нестыковки. Наверное, чтобы лишний раз не тревожить Вас в ЛС.

     

    Нет тут ни каких нестыковок. ГОСТ, просто из-за того, что мы в РФ по большей части находимся, и надо от чего-то отталкиваться, описывая задачу. Как я сказал, параметры в ТЗ не жесткие, их можно варьировать, главное что бы шаг сетки частот и диапазон были как в ТЗ.

     

    А по поводу порядка цен, сразу скажу, что люди, считающие NBF приемник и передатчик упакованные в корпус из Чипа и Дипа многомиллионной нанотехнологией, которую надо целый год разрабатывать, могут идти дальше и не тратить свое ужасно дорогое время на этот топик, он не стОит их внимания :-)

     

     

  11. Сертификации? если такой срок, то денюшку уже освоили, стало быть, а аппаратуры нет. печально

     

    Не надо фантазировать и нести бред! Это частная разработка не под чей-либо заказ. Есть идей запустит продукт, продукт запускается под собственные деньги, поэтому жевать сопли нет времени.

     

    ТС думает, наверное, что прототип обойдётся дешевле хорошего покупного трансивера.

     

    Я не против готовых решений, но я честно говоря не нашел в подходящем мне конструктиве трансивер. На рынке дофика всяких ICOMов и Vertex'ов, а готовых модулей нет (либо я не нашел). Плюс нужен девайс с 9600 входом/выходом, я не звук передавать собираюсь, поэтому всякие CTCSS фильтры, фильтры предыскажений +6 dB мне не нужны.

     

    А высокие требования ему для сертификации нужны.

    Нет, ни какой сертификации не подразумевается, поэтому, если упрощение каких-либо параметров ускорит разработку или у кого-то уже есть наработки с худшими характеристиками, то обсуждаемо.

     

    Посмотрите вот на эти изделия.

    http://center-proton.ru/kat/priemnoe-oboru...riemnik-prm450/

    http://center-proton.ru/kat/peredajushhee-...atchik-prdp450/

    там мощность 5Вт, но используется модуль RA07, который можно заменить на более мощный

    Спасибо, поизучаю. А вы их использовали сами? Не ясен порядок цен, я запрос послал, но пока не отвечают.

     

    Требования стандарта ETSI EN 300 113-1

    Я опирался на ГОСТ 12252, при написании ТЗ :-)

     

  12. Приветствую.

     

    Понадобились блоки приема и передачи узкополосной FM на 400-480. Нужно свой модем сделать. К этому сообщению прикреплены мини ТЗ, для начала разговора я думаю достаточно. Желательна повторяемость и простота, может быть кто-нибудь предложить что-то из своих наработок. Уточняющие вопросы и вопросы по оплате писать в ЛС. Хотелось бы иметь прототипы к концу января - середине февраля.

     

    Receiver_for_UHF_band.pdf

    Transmitter_for_UHF_band.pdf

  13. Приветствую.

     

     

    Может кто посоветует. Ищу контору для сборки печатных плат, также важна услуга по закупке комплектующих. То есть схема работы должна быть следующей, мы передаем необходимую документацию, а на выходе получаем необходимое количество собранных печатных плат. Расположение конторы я думаю неважно, так как вся документация в электронном виде, а собранные печатные платы можно и по почте переслать. Платы в среднем SMD 0603, меньше не используем. Крупные партии по такой схеме мы в Китае делаем, но вот для мелких надо бы найти здесь (В РФ). Есть какие-нибудь предложения?

  14. Я работал в десятком фирм занимавшихся так или иначе встраиваемым софтом. Нигде при мне не применялся контроль версий! :biggrin:

     

    Ну я надеюсь CAD'ы-то там применялись? Altium Designer там, Mentor, P-CAD, AutoCAD? :biggrin:

  15. Просто замените это барахло на что-то типа такого:

     

    http://www.ti.com/lit/ds/symlink/tps78223.pdf

     

    И т.п., такого добра много делают.

     

    А насчёт 4,2 В — не сомневайтесь, практически в точности так и есть к концу заряда любого аккумулятора такого типа, потому что это не происки врагов, а голая электрохимия, т.е. законы природы.

     

     

    Поставил TPS78223, результат отличный и плату переразводить не пришлось.

  16. Вот как это понимать? В приёмнике у вас изначально не было, исправлено было уже после моего поста. Зачем приподнятый косинус приёмнике?

     

    Виноватsm.gif Даже не обратил на это внимание, прошу прощения. Конечно же, не за чем!

     

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

     

    По фильтрам тогда я не понимаю, почему фильтр в приемнике обзывают Integrate and Dump, хотя по сути получается это обычный Moving Average? Или он должен быть засинхронизирован с символами и сбрасывать свое состояние после того, как все отсчеты принадлежащие текущему символу закончились?

     

    http://www.mathworks.com/help/comm/ref/integrateanddump.html

  17. Первый в приёмнике, второй в передатчике.

     

    Тогда еще вопрос, в догонку, а я правильно понимаю, что частота среза у RC фильтра 2400 (то есть половина символ рейта) и параметр beta=0.2? В приложениях для синтеза подобного фильтра спрашивают частоту среза (ну её-то по АЧХ понять можно) и бету, вот насчет беты сомнения у меня.

  18. Пинцетный аргумент не убедил. А снять АЧХ в области хотя бы от 3Гц до 100Гц мысли не было?

    Я вас не собираюсь ни в чем убеждать.

     

    А у вас не было мысли, что АЧХ этой микросхемы мне давно известна и как было сказано ниже, в НЧ области она полностью соответствует выбранному ЦФ. И ваш пассаж "Или сигма-дельта преобразователи научили работать на постоянном токе?" про какую-то иную реальность, но не нашу. Нет ни каких проблем у сигма-дельта с НЧ областью.

     

    в связи с этим предложение автору- разземлить один из неиспользуемых входов по DC, заземлить по AC, а с самого входа взять смещение DC = 1.35 так больше надежды на единый источник смещения.

     

    Да, спасибо, я примерно понял чего с этим делать, только поскольку ножки в данный момент заземлены, мне кажется, что в случае выбора регистрами входа АЦП, смещение с них снимается. А иначе, если источник один, получается его выход заземлен сейчас. Хотя я естественно могу ошибаться. Позже проверю, подняв ножки с платы.

     

     

  19. Убрать конденсатор и обеспечить подачу постоянного тапряжения на вход можно. Но каким образом сигма-дельта АЦП кодека оцифрует сигнал, лежащий вне ego рабочей полосы? Или сигма-дельта преобразователи научили работать на постоянном токе?

     

    Да вроде умеют :-)

     

    Если я на своей существующей схеме пинцетом замкну INP на землю например, то код будет на выходе -32768, если INM то 32768 и он будет вполне постоянный.

  20. Ну, разве что, если ОУ сдохнет...

     

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

     

     

  21. C выхода BIAS можно получить 1.35 вольт, идентичные тем, которыми смещены входы. Но это не документировано. Также это смещение можно получить с ВХОДОВ INP/M2, которые Вы на землю засадили по причине неиспользования, но это тоже не документировано.

     

    Операционник включить по схеме суммирования входного напряжения с BIAS-ом, переключенным в 1.35 вольт, чтобы, когда на сигнале - 0, на выходе опера был BIAS. НО, повторю, это не документировано!

     

    Схема суммирования такая? Иными словами подать смещение на вход ОУ, но ведь в этом случае, это смещение и в источник попадать будет, так?

     

    image010.jpg

     

     

  22. Приветствую.

     

     

    Есть схема с TLV320AIC14, вход сделан сейчас по даташиту с разделительными конденсаторами в каждом плече, задача их убрать, то есть расширить полосу до 0Гц. Поискал AppNot'ы на сайте Texas и был удивлен, что ни чего подобного там не освещается.

     

    2ewzk0o.png

     

    Собственно меня смущает смещение 1.35 В на обоих входах в покое. Я так понимаю нужна какая-то схема сдвига? Двухполярное питание в схеме есть и добавить операционник не проблема, но как его выход подключить ко входу кодека не совсем понятно, может кто направит в верном направлении?

  23. 1. По стандарту в передатчике C4FM два фильтра: Raised Cosine и isinc. Соответственно, приемную сторону нужно проектировать с учетом данного факта.

    2. Вроде бы apco25 C4FM передается в полосе 12.5 кГц, не мало ли будет полосы в 8 кГц на входе?

     

    В стандарте схема демодулятора приведена такая:

    qouiih.png

     

    То есть используется Integrate and Dump фильтр, но честно говоря, я не совсем понимаю, как принимать с его помощью.

    По поводу полосы, да, полоса в эфире 12.5 КГц. По стандарту, при формировании модулирующего сигнала, его пропускают через Raised Cosine и isinc фильтры, ограничивая полосу частотой 2880.

     

    The response of the filter above 2880 Hz is not specified because the filter H(f) should cut off above 2880 Hz.

     

     

     

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

     

    Это все конечно прекрасно, я же не спорю. Задача на уже существующем железе это сделать.

×
×
  • Создать...