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

repstosw

Участник
  • Постов

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

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

    2

Весь контент repstosw


  1. Вот и пользуйте их в своих изделиях.... А я как-нибудь обойдусь без этого вандализма.
  2. Объясните, как пользоваться LDPC ? Вот взять к примеру кодек Рида-Соломона: есть процедура кодирования и декодирования. В качестве исходных данных - массив бит или байт. При кодировании получаем - дополнительные проверочные слова. При декодировании - получаем восстановленное сообщение (если повезёт). А как LDPC использовать? Смотрю примеры на гитхабе с LDPC, и чё-т я вкурить не могу - там какие-то полярные модуляции, шумы замешивают... какие -то вероятности... Ничего не понимаю. Мне нужно закодировать массив байт и потом раскодировать. Не вижу прозрачности в пользовании LDPC кодов. Что не так? И почему?
  3. Также подумал. На ВЧ от статики защищаются вроде как индуктивностью на землю: видел такое решение в модуле на CMT2300A: там согласующее звено содержало катушку, замнкнутую на GND. Тем не менее, модули работают на скорости 1,25 МБит/c (4GFSK, кварц 37.5 МГц вместо 30 МГц) на 435 МГц с мощностью всего 0,1 мВт (-10 дБм) в пределах помещения с настроенной в резонанс (по VNA) J-антенной и FEC, исправляющей по всему пакету максимум 10% ошибок, длина пакета 6 кБ. И я рад!
  4. Ответ от официального представителя NiceRF:
  5. Для Si4463 указана чувствительность для диапазона 868 МГц: -88 dBm на скорости 1 МБит/c , модуляция 4GFSK. PER 1%. 1) Как пересчитать чувствительность для диапазона 433 МГц ? (в даташите данные отсутствуют) 2) Как пересчитать чувствительность для битрейта 1,25 МБит/c ? 3) Как перевести PER в BER? Нужен BER, чтобы определить минимальную маржу из бюджета линка связи и исправляющей способности FEC. Производитель хитропопый - на высоких битрейтах вместо замера чутья при заданном BER, делает замеры при заданной PER. Интересует не число принятых пакетов, а число ошибочно принятых бит. Чтобы соотнести с графиком BER vs. Eb/N0. Иными словами, мне нужно посчитать максимальную дальность в свободном пространстве, которую даст моя система связи с заданными мощностью, чувствительностью, антенной, скоростью, FEC.
  6. SDK Allwinner V3s

    Для SDK T113-s3 добавлен модуль I2S (для внешних аудио-ЦАП, цифровых УНЧ). Предложения актуальны. По всем вопросам пишите на repstosw2018 @ gmail.com
  7. Мне лень было подключать PNG-декодер, и я в GIMP сконвертировал ваш PNG в RAW в формате ABGR: mantech.zip Там же - в виде сишного хедера.
  8. Не поленился, скачал картинку и проверил. Никакой бороды нет, не надо ничего выравнивать, и не надо менять высоту и не нужно выделять лишнюю память. Поворот на 270 градусов 350x157: Координаты (0,0): Координаты (200,100): Прямоугольник: Проверял на таких режимах: #define LCD_PIXEL_WIDTH 800 #define LCD_PIXEL_HEIGHT 480 #define BYTE_PER_PIXEL 4 #define DE2_FORMAT_ABGR_8888 0x01 G2D_BLT.src_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.dst_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.flag=G2D_BLT_ROTATE270; Форматы DE и G2D(источник и приёмник) - полностью совпадают. В противном случае, возможно, при поворотах может быть всё, что угодно. Очевидно, что-то криво настроено: TCON, DE, G2D, или всё вместе.
  9. Ну так поворачивайте область с высотой 158, при этом 158-ю линию сделать с прозрачностью 0. Увидите только 157. Не пойму вашей сути боданий с G2D. Нужен шустрый 2D-блиттер: значит смиритесь с рестрикциями, налагаемыми на автомат G2D. Способов красивых обходов масса: от вспомогательного буфера и вырезанию нужной области, до альфы прозрачности...
  10. А декодеры не пишут напрямую в память? VE тоже работает с памятью. Кто мешает выделить буфера для G2D с падами ДО- и ПОСЛЕ- активной области? Тем самым - проверить эти пады после работы G2D. А TCON настроить на активную область. Память с падами проинициализировать псевдо-рэндомом, фазировка фиксированным сидом. После работы G2D прочекать пады.
  11. Понимаю ваши недовольства. Сам был в аналогичной ситуации. По-хорошему - надо проверить что и куда пишут аппаратные декодеры. У меня на FHD H264 энкодер иногда записывал во вспомогательные буфера больше, чем надо. Вопрос решил дополнительными падами в памяти (привет, перерасход 🙂 ), иначе некорректно отрабатывала функция освобождения (free) памяти, так как структуры аллокатора разрушались, Плюс убеждал заказчика испольовать фреймы с размерами кратными 16. P.S. Надеюсь, функцию memalign используете, для выделения выровненного куска памяти? Иначе, придётся запоминать значение указателя до выравнивания, чтобы потом его корректно освобождать.
  12. Поднял I2S на T113-s3. Теперь нет шумов, тресков во время работы устройства. Проверил даже в наушниках. Применено дифференциальное включение и отвязка аналогового домена от китайской платы. Доволен, тем что вышло. Китайцы знатно налажали в разводке платы MangoPi. На видео макет устройства: аудио-ЦАП UDA1334BTS, усилок LM4871T (дифференциальное включение по входу и выходу). В релиз хочу поставить MAX98357. Это и ЦАП и усилок и регулятор усиления. Из даташита на усилитель: Тоесть, работа микросхемы должна быть устойчива к наводкам ВЧ, что немаловажно для моих проектов.
  13. Если он может читать из видео-ОЗУ и выводить в стекляшку уже повёрнутый на 90 градусов кадр - тогда это будет очень полезно для мелких дисплеев с портретной ориентацией, которые используются в горизонтальном положении.
  14. Второй TCON я уже давно раскурил в этой теме. Работает в паре с TVE для вывода кадра на экран ТВ (NTSC/PAL CVBS)
  15. А вот и нифига... В моём случае ваш тезис неправильный. Правильными будут те координаты, которые я давал для своего примера. Очевидно, всё дело в исходниках, которые используются. И не найдёте. Выравниваю на кратность 4.
  16. Не понял. А в чём сложность расчитать самостоятельно координаты для вашего случая? Или проверить на мелком прямоугольнике?
  17. Шумит. Потому что у него земля AGND соединяется с остальной землёй. Никакого разделения земель нет. Потому что китайцам фиолетово на правильную топологию. Надеюсь, сплошная плоскость на печатной плате улучшит ситуацию. Потому что низкоимпедансная эквипотенциальная земля. Чуто-выше написал ответ - противофазные сигналы дали полезный сигнал, посторонних не слышу (если в аудио-ЦАП нули засылать):
  18. Сделал два противофазных сигнала с каналов Left/Right. Работает. Посторонних звуков теперь нет. Даже при работающем источнике тока для подсветки. Вывод А1 микросхемы - резистор отлепил от GND и подключил ко второму каналу.
  19. Так и сделано: Но в случае с этой платой CPU, шум не убирается. Остаётся попробовать сделать противофазные сигналы программно: стерео, один из каналов - инверсия второго.
  20. Не знаю. Мне достаточно было Linux-исходников. Вот ещё что подумалось: если высота кадра всего 1080, то повернутый прямоугольник 1920x1080 не влезет полность в экран, срежется снизу. Скорее всего G2D не умеет отсечение. Поэтому область задавать надо 1920x1920.
  21. С ходу так не определить... Для своих случаев я рисовал картинку на бумаге и арифметически рассчитывал. В первом приближении - представить исходный прямоугольник с начальными координатами левого верхнего угла, затем его повернуть. И рассчитать новое положение этого угла - в координатах дисплея (дисплейного буфера) Он повёрнут. Просто камера одного из собеседников(слева) не была повёрнута на 90 градусов. Очевидно, что да. Эксперименты покажут. Для начала я бы всё-таки попытался вывести не 1920x1080, а в 10 раз меньше 192x108 в центр экрана. Тогда никаких вылетов за пределы видеопамяти не будет. Затем нашёл бы формулу нахождения координат при нужном угле. А потом -вернулся к 1920x1080
  22. Имеется два выхода - левый и правый каналы. К сожалению, они не могут работать в противофазе, как это мог делать чип-предшественник(V3s). Поэтому вопрос остается открытым - как сделать дифференциальный выход из однополярного? Пробовал полевой транзистор с двумя резисторами - в цепи стока и истока, и с резисторов снимал два сигнала. Но выигрыша в помехозащищённости это не дало, так как всё крутится вокруг грязной земли. Ситуацию ухудшает источник тока для подсветки (на фотах не показан) - мощный светодиод с током 300 мА, который диммируется ШИМ: если заполнение импульса не равно 0 или 100%, то я слышу также гудение этого преобразователя (источник тока на базе микросхемы DC/DC).
  23. А вот и нифига... Взял внешний УНЧ класса D, запитал его напрямую от аккумулятора. Также запитал плату MangoPi напрямую. Плюс и минус питания: разветвляются на УНЧ и на CPU-плату. В наушниках отчётливо слышу чирикание при загрузке программы с SD-карты. Фото ниже: Потом попробовал перекинуть GND УНЧ на другие пины на плате CPU. Нашёл положение с "чистой" землёй. При таком положении чирикание SD-карты в наушниках пропало. Земля очень уязвима - вход УНЧ относительно высокоомный. Плюс на питание УНЧ поставил ФНЧ из резистора 47 Ом и конденсатора 470 мкФ (керамика также присутствует) - для того, чтобы убрать одиночные потрескивания иногда. Фото ниже: Ну, и.... Какие выводы напрашиваются?
  24. Но это не означает, что его нельзя написать самому, переложив на SIMD. В TMS320C6745 самостоятельно делал поворот видеобуфера на 90 градусов (потому что дисплей был с портретной ориентацией развёртки, нужна была отрисовка соосная с ходом луча для VSYNC) : void Rot_Buffer(void) { for(int y=0;y<(SCREEN_HEIGHT<<1);y+=8) { u64 * __restrict vc=(u64*)(VIDEO_CACHE+y); u64 * __restrict vb0=(u64*)&VRAMBuffer[((SCREEN_WIDTH-4)<<1)+(SCREEN_WIDTH*y)]; u64 * __restrict vb1=vb0+(SCREEN_WIDTH>>2); u64 * __restrict vb2=vb1+(SCREEN_WIDTH>>2); u64 * __restrict vb3=vb2+(SCREEN_WIDTH>>2); for(int x=0;x<(SCREEN_WIDTH>>2);x++) { _amem8(&vc[(3*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16) _amem8(&vb0[-x]) ))|((u64)((u16) _amem8(&vb1[-x]) )<<16)|((u64)((u16) _amem8(&vb2[-x]) )<<32)|((u64)((u16) _amem8(&vb3[-x]) )<<48); _amem8(&vc[(2*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>16)))|((u64)((u16)(_amem8(&vb1[-x])>>16))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>16))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>16))<<48); _amem8(&vc[(1*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>32)))|((u64)((u16)(_amem8(&vb1[-x])>>32))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>32))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>32))<<48); _amem8(&vc[(0*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>48)))|((u64)((u16)(_amem8(&vb1[-x])>>48))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>48))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>48))<<48); } } } Так вот, оно очень хорошо запараллелилось. Проблема в некорректном указании координат вывода финального изображения. Там будет не (0,0). А с учётом поворота. Прямоугольные тоже поворачивает. Рисую на экран 320x240 пару фреймов 160x240 повёрнутые на 270 градусов. Координаты вывода такие: #define BUFFER_WIDTH 320 #define BUFFER_HEIGHT 240 #define WINDOW0_WIDTH 240 #define WINDOW0_HEIGHT 160 #define WINDOW1_WIDTH WINDOW0_WIDTH #define WINDOW1_HEIGHT WINDOW0_HEIGHT #define WINDOW0_X (((3*BUFFER_WIDTH)/4)-(WINDOW0_HEIGHT/2)) #define WINDOW0_Y ((BUFFER_HEIGHT-WINDOW0_WIDTH)/2) #define WINDOW1_X ((BUFFER_WIDTH/4)-(WINDOW1_HEIGHT/2)) #define WINDOW1_Y ((BUFFER_HEIGHT-WINDOW1_WIDTH)/2) //... G2D_Rot.dst_x=WINDOW0_X; //координаты вывода левого фрейма G2D_Rot.dst_y=WINDOW0_Y; G2D_Rot.dst_x=WINDOW1_X; //координаты вывода правого фрейма G2D_Rot.dst_y=WINDOW1_Y;
×
×
  • Создать...