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

Serhiy_UA

Свой
  • Постов

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

  • Посещение

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

    1

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


  1. Извините, что побеспокоил. On-Chip Memory перенесли в другую группу: Basic Function > On-Chip Memory > On-Chip Memory (RAM or ROM). Сразу не заметил.
  2. Пытаюсь в Q17.0 вставить NiosII для EP4CE6E22C8, где хотел бы для памяти программ использовать On-Chip Memory. Но в библиотеке QSys не нахожу On-Chip Memory. Скрин доступной памяти прилагается и там внутренней памяти нет. Что делать?
  3. Советую по теме С++ в МК посмотреть на http://mypractic.ru/uroki-stm32 , и в частности, на http://mypractic.ru/urok-13-razrabotka-i-ispolzovanie-klassov-v-c-sozdanie-klassa-obrabotki-diskretnyx-signalov-debounce.html, Там статья "Урок 13. Разработка и использование классов в C++. Создание класса обработки дискретных сигналов Debounce.". Но это все - простые примеры
  4. HardEgor, согласен, придется идти и таким путем.
  5. В одних Datasheet указывают соединить Exposed Pad с земляным полигоном, а в других таких указаний нет, в то же время пины для подключения GND у всех чипов имеются. Еще, есть указание на низко-эмпидансное подключение к GND. Это как-то сввязано с диаметром переходных отверстий на этих площадках (рабочая частота где-то 500 МГц)
  6. Планирую разводку в Altium_Designer 4-х слойной платы смешанных сигналов, где 1-й и 4-й слои сигнальные, а 2-й и 3-й преимущественно под полигоны GND и питания. На плате будет до 15 чипов QFN с числом выводов от 16 до 56. Под каждым из этих QFN-чипов теплоотводящая квадратная площадка для пайки с аналогичной площадкой в 1-ом слое платы, от которой идут сквозные металлизированніе отверстия на противоположный 4-й слой. Полагаю, что на противоположном слое тоже должна быть подобная площадка. Так нормально? Еще, можно ли эти теплоотводящие площадки соединять с GND?
  7. Буду пробовать искать что-то из SDR на одноплатниках.
  8. Спасибо за советы, но пока внешний компьютер исключается, как и внешний анализатор. Все должно быть портативным и встраиваемым. В приборе есть высокостабильный генератор 406 МГц, может он чем-то помочь?
  9. Стоит задача измерить частоту передатчика 406 МГц, с допустимым разбросом в пределах плюс/минус 1200 Гц. Передатчик излучает OQPSK-сигналы с длиной пакета в 1с и фазовой модуляцией около 80кГц. Излучение идет пакетами с нерегулярными задержками между ними от 2 до 10 с, а сам передатчик расположен в спасательном буе. Буду признателен за советы, ссылки на статьи, сайты и книги, или готовые для этого ИМС.
  10. Большое спасибо за быстрые ответы. Сразу помогла рекомендация от x893. В main.c для переменной Tic5ms доопределил volatile как рекомендовано, теперь все работает нормально: volatile char Tic5ms;
  11. Работаю с платой STM32F407VET6 в среде STM32CubeIDE версии 1.12.1, в которой не получалось запустить программу, работающую нормально в среде IAR версии 7.70. В программах таймер 3, вызывает прерывание каждые 5 мс, и в нем для глобальной переменной выполняется Tic5ms = 1. Для IAR в main.c организован бесконечный цикл входа каждые 5мс в функциональный блок, внутри которого уже Tic5ms = 0. Выглядит цикл так: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(Tic5ms){ MyLedBlink(150); MyUart1_Compil(); Tic5ms = 0; } /* USER CODE END WHILE */ } Для IAR все работает как задумано, действия повторяются каждые 5 мс. Но для CubeIDE этот функциональный блок не работает, в него нет захода без дополнительного оператора HAL_GPIO, что установлен перед if(Tic5ms). В CubeIDE в этом месте программа такая: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); if(Tic5ms) { MyLedBlink(150); MyUart1_Compil(); Tic5ms = 0; } /* USER CODE END WHILE */ } То есть, без дополнительного обращения выводу С7 перед if(Tic5ms), вход в блок почему-то в CubeIDE не выполняется. Вместо С7 можно вставить другой вывод, лишь бы был такой дополнительный оператор. Прерывание же для обеих сред выглядит одинаково: void TIM3_IRQHandler(void) { /* USER CODE BEGIN TIM3_IRQn 0 */ extern char Tic5ms; Tic5ms = 1; /* USER CODE END TIM3_IRQn 0 */ HAL_TIM_IRQHandler(&htim3); /* USER CODE BEGIN TIM3_IRQn 1 */ /* USER CODE END TIM3_IRQn 1 */ } В принципе можно работать и с дополнительным оператором, хоть и пришлось помучаться чтобы найти это решение. Но все же вопрос остался, почему так происходит. Других отклонений не находил, программы из обеих сред работают нормально, а выбор в пользу CubeIDE имеет некое преимущество в силу бесплатности и легальности.
  12. Макет для приема данных из QPSK сделан и работает. В основе EP4CE6E22C8 с частотой 25МГц, загрузка чуть более 15 процентов. Задействовано два PLL, три ROM и один RAM, а также полтора десятка fsm. Входная частота пока 390кГц, в схеме реализована автоматическая подстройка к ней. Разборки мои в этом топике конечно дилетантские, но обсуждение было полезным, многое пришлось переосмыслить, но главное результат.
  13. Spirit_1, спасибо за понимание, для меня эта тема была нова. На гитхаб загляну. С помощью подсказок «из зала» мне стало понятней как принимать данные из QPSK, для этого: 1.Определить период тактовой частоты ПТЧ (время между двумя прохождениями на подъемах Q или I через ноль) 2.Найти момент равенства положительных кодов I и Q (соответствует углу 45 градусов), по которому занести в вычитающий счетчик код ПТЧ и вычитать единицу по Clk до достижения нуля. 3.В момент равенства счетчика нулю принять следующую пару кодов I, Q и сравнить между собой. Если разница модулей большая, то просуммировать фазовое приращение\уменьшение с кодом ПТЧ, чтобы уменьшить отклонению в кодах I, Q, чем подстраиваем фазу. Суммарное значение записать в счетчик, продолжив его вычитание по Clk. Далее постоянно выполнять пункт 3. 4.Текущую фазу 45, 135, 225 и 315 градусов и соответствующие им символы 00, 10, 11 и 01 можно определять по знакам кодов I, Q, то есть без вычисления фазы в CORDIC. 5.Символьную синхронизацию (изменение фазы) можно получить с помощью автокорреляции на пол периода. Здесь так же вычисляется между символьный период, а внутри каждого их эти периодов один и тот же символ вычисляется по несколько раз. 6.В задании есть скремблирование каждого символа псевдослучайной М-последовательностью из 255 бит. Для определения момента кадровой синхронизации решено использовать четыре цифровых согласованных фильтра на логических схемах. С помощью этих фильтров также определять какой из символов реально находится в первом квадранте. Если что-то попутал, то поправьте. Работы еще по QPSK много.
  14. _4afc_, не совсем понял Вашу идею. Если оцифровывать входной сигнал в 406 МГц с УВХ менее 2.5 нс, и с АЦП с частотой дискретизацией 10-60 МГц, то как это согласовывается с теоремой Котельникова-Найквиста. Потом, будет ли все же сохранена фаза и её сдвиги на 90, 180 и 360 градусов. Мне не понятен этот метод. Spirit_1, мне показалось, что Вы предложили автокорреляцию выполнять не с задержанным периодом, а с его половиной. Я промоделировал это на своей С++ программе. Результат приятно удивил, получается, что объем вычислений сократился вдвое и этот метод можно использовать. Демодулятор с автокорреляционным (АК) методом выделения момента изменения фазы я нашел в прилагаемой статье на рис.3. Но там предлагалось вычислять АК со сдвигом на период. 02-Kokhanov.pdf
  15. spirit_1, Вы пишите, "Я бы сделал немного по другому" Мои познания в высокочастотной аналоговой технике слабоваты, если можно, приводите принципиальную схему на ИМС, мне станет понятнее, или ссылку на источник (хотя, настаивать не могу). Цель - обсудить несколько методов разграничения битовых последовательностей и выделить лучший. Данные о проекте мною приведены выше, вопросов ещё много, и пока такой. Можно ли сделать две ступени преобразования, например с 406 МГц на 10.7 МГц, а потом где-то на 200 кГц, для дальнейшей цифровой обработки (почему 10.7 МГц - мне сказали, что можно легко купить уже готовый фильтр). Не повлияют ли эти ступени на достоверность фаз, и как лучше в этом случае поступить.
  16. EdgeAlignet, если можно, утоните о каких микросхемах декодеров PSK идет речь. Я столкнулся с тем, что многие ИМС очень скудно описаны, например, AD9361. Предполагаю выделять информацию на ПЧ до 1 МГц.
  17. Провел небольшое моделирование на С++ для отработки алгоритма определения момента изменения фазы путем вычисления автокорреляционной функции с задержкой на период. Здесь три группы графиков с изменением фазы на 90, 180 и 270 градусов. В каждой исходная синусоида, она же сдвинутая на период и значение автокорреляционной функции, вычисленной скользящей сверткой. Думаю, что можно было бы это применить.
  18. spirit_1, спасибо за подсказку. Для меня аналоговая тема сложна, а с ПЛИС и МК – могу многое, опыт большой. Был реальный цифровой вычислитель с измерением фазы и амплитуды на ПЧ 250кГц для регулировок в ФАР у РЛС, но там работал со знатоками аналоговых схем. ZeroIF может и подойдет, надо изучить, особенно если будет дополнительная возможность подключиться компараторами к сигналам I и Q. Это упростит, например, измерения периода, а также позволит в цифре подстраиваться под фазу. Если есть еще варианты в русле темы, то сообщайте, пока со структурой окончательно не определились.
  19. spirit_1, большое спасибо за разъяснения, информация для меня очень интересна. Немного о задаче, что надо решить. Это гражданский контрольно-тестовый прибор для приема данных от спасательных радиобуев, с несущей 406 МГц. Там в секунду надо принять около 300 бит, из них примерно 50 преамбула, 200 информация, 50 контроль информации по БЧХ. То есть итоговая скорость у OQPSK 150 символов в секунду. Каждый бит I и Q у двух-битного символа на протяжении его передачи дополнительно модулирован псевдослучайной М-последовательность из 255 бит, причем I прямой, а Q зеркальной (не инверсной). Таким образом в итоге получаем скорость около 30 кбит/с. В микросхеме AD9361 и подобных, а хотелось бы использовать AD9361, не видно Costas Loop не для QPSK (OQPSK), ни для BPSK. Как там без неё обходятся, пока не понятно. Похоже, еще есть какие-то алгоритмы, так как AD9361 достаточно популярна. Момент изменения фазы у синуса пока планировал определять с помощью автокорреляционной функции, с задержанным на период значением. По части символьной синхронизации с использованием М-последовательности, планирую вычислять окончание символа корреляционным значением из скользящей свертки. Если есть другие методы и соображения, то хотел бы их узнать.
  20. Мне не хватает понимания методов демодуляции QPSK, почему-то эти методы не описаны (или я не нашел) по сравнению с большим множеством описаний модуляторов. Из-за этого не понятна роль в демодуляторах составляющих I и Q. Назначение и важность петли Костаса для восстановления несущей понятна. А как именно получать итоговый код из QPSK – полный туман. Нужна подсказка.
  21. Уважаемый, blackfin, мне не удалось найти ответ по этой ссылке, и по использованию возможностей самой AD9361 тоже. Что-то у меня зреет подозрение, что разность мгновенных фаз, что описана в моем посте выше, всегда равна 90 градусов. В общем, совсем тупик, нигде толково прочесть об этих подробностях в AD9361 не могу.
  22. Пока планирую для демодуляции применить AD9361. Но не понятно, как работать с этой ИМС при вычислении текущей фазы. Будет ли правильно, если взяв два отсчета с выходов ADC со смещением в 90 градусов по каналу I, и далее CORDIC-ом вычислять текущую мгновенную фазу по этому каналу I. Аналогично и одновременно с выборками I, но по каналу Q, и с тем же сдвигом в 90 градусов будут взяты два отсчета по которым также будет вычислена мгновенная фаза от Q. Разность от двух этих мгновенных фаз и даст искомое текущее значение фазы демодулятора. Предполагаю, что временной интервал для 90 градусов надо будет определять с помощью ПЛИС. Будет ли это правильным для AD9361, или там надо работать как-то иначе. Пытался, но пока безуспешно разобраться с данным вопросом в «Software-Defined Radio for Engineers» из книги https://www.gods69.com/download/Pluto_SDR/SDR4Engineers.pdf Есть, правда, еще одна книга "Software-Defined Radio Handbook", с которой я еще не успел поработать https://cdn.everythingrf.com/live/software-defined-radio-v12.PDF, но ее беглый просмотр не дал результатов. Подскажите правильный метод, кто уже прошел этой извилистой дорогой.
  23. Оbam, спасибо за подсказку на CML. Нашел демонстрационную платформу "CML Microcircuits DE9941A Demonstration Platform" в https://ar.mouser.com/new/cml-microcircuits/cml-de9941a-platform/ На первый взгляд она нам подходит. К ней есть и небольшой pdf https://ar.mouser.com/datasheet/2/976/cml_referer_download-1830294.pdf Основа платформы вот эта микросхема CMX994 RF https://eu.mouser.com/new/cml-microcircuits/cml-microcircuits-cmx994/ Цена чуть меньше 1000 USD.
  24. Мною предложена инженерная идея борьбы с гонками для асинхронных счетчиков с разным значением пересчета. Для уточнений решений нужно видеть хотя бы функциональную, на уровне логических элементов схему используемого триггера.
×
×
  • Создать...