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

EKirshin

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  • День рождения 20.03.1983

Контакты

  • Сайт
    Array

Информация

  • Город
    Array

Посетители профиля

857 просмотров профиля
  • smipp

  1. Конроллеры на базе ARM

    Здравствуйте! На тему электромагнитной совместимости довольно много материалов, но разбросаны они по самым разным местам, поэтому вопрос тем, кто уже с этим сталкивался. Интересует поведение микроконтроллеров под воздействием серьёзных электромагнитных помех (близость к силовым системам, гроза и т.п.). Многое, конечно, можно вывести самому, но изобретать велосипед, как известно, не практично. Посоветуйте книги/статьи о том, как правильно оформить код, какие меры предпринять для повышения устойчивости системы с позиции программного обеспечения. Есть ли какие-то теоретические расчёты показателей стабильности с учетом вероятности возникновения тех или иных ситуаций? Есть ли какая-то специфика применительно к ядрам ARM?
  2. А в чём проблема? Есть метод прямого вычисления sin, есть табличный, есть совмещённый. Выбирайте любой. На таком процессоре сигнал такой частоты сгенерить очень просто.
  3. Всем большое спасибо! Я имел возможность только начать разбираться в предложенных решениях. Сейчас, к сожалению, нас всех выгнали в отпуск :) Нахожусь на удалении...
  4. Да, действительно, 1 Мгц. А что не так? Да, именно это и интересно. Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала. Да, действительно. Указанные 100db - это, пожалуй, максимум. А данные две реализации - лишь пример.
  5. Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR. Да, скажу сразу: сигнал комплексный - получается после фильтрации. Возможно изменение в пределах всего спектра. Известна, но точность не гарантируется - может смещаться. Ну её значение ведь можно получить оценкой тем же fft? Или необходима большая точность, чем может предоставить какой-либо метод? Менее 5 кГц с каждой стороны основной гармоники. В том числе и генераторы. Вернее - это основное назначение. Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс. Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re. 2_1M_0.txt 2_1M_0_.txt 2_1M_1.txt 2_1M_1_.txt
  6. Частота выборки сигнала переключается. К примеру, 1 МГц. Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра). Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает. Не совсем понимаю, что имеется ввиду под "когерентностью". Если это совпадение фазы гармонического сигнала, то когерентность не сохраняется.
  7. Нет, не так! Интересуют детали на частотах, близких к основной. Это нужно для исследования качества входной синусоиды.
  8. Проясню, что требуется, т.к. задал вопрос действительно кошмарно... :01: Имеется устройство (АЦП, ...), которое способно периодически (период не фиксирован) получать сигнал со входа - N точек. Частота дискретизации более 1 МГц. Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте. Оставшаяся часть спектра нас не интересует (вернее, интересует, но уже в других целях). Устройство не может по архитектурным причинам получать за раз данных больше N отсчётов. Под стационарностью я понимаю неизменность параметров сигнала: частота сигнала (синусоиды) остаётся неизменной (не учитывая качество самого сигнала: дрожание частоты и т.п., изменяющие частоту сигнала), уровень шума и его другие характеристики также неизменны. Один из рассматриваемых нами способов - это "усреднение" различных реализаций сигнала. Однако, не ясно, как склеить M кусков, чтобы получить из этого какую-то дополнительную информацию. Фаза синусоиды, естественно различна в каждом из М кусков. Поэтому их простое "склеивание" ни к чему хорошему не приводит, даже с наложением окон для устранения эффекта резкого скачка фазы.
  9. Здравствуйте! Такая задачка. Есть стационарный сигнал: шум + синусоида. Из этого сигнала периодически набирается N отсчётов. Вопрос: можно ли, имея M кусков этого сигнала использовать их для получения спектра сигнала размерностью M*N? Какой будет эффект, если на каждый из этих кусков наложить окно, "склеить" эти куски (получится сигнал длиной M*N), затем сделать fft на M*N точек?
  10. STR912FAW47

    Установили новый кристалл STR912FAW47. После попытки прошивать Flash Bank1 128K получаем ошибку - таймаут доступа к Flash. Это насчёт алгоритма ICP. Обычный тоже не работает, но ошибка другая (не работал и ранее). Если прошивать алгоритмом ICP для версии FAW44 (которым пользовались ранее), то прошивка проходит. Но здесь уже возникает проблема непосредственно с запуском самой программы. О запуске. Для старого чипа используем startup-файл, строки инициализации FMI: FMI_CR_Val EQU 0x00000018 FMI_BBSR_Val EQU 0x00000000 FMI_BBADR_Val EQU 0x00000000 FMI_NBBSR_Val EQU 0x00000006 FMI_NBBADR_Val EQU 0x00080000 FLASH_CFG_Val EQU 0x00001000 ; Setup Flash Memory Interface (FMI) LDR R0, =FMI_BASE LDR R1, =FMI_BBSR_Val STR R1, [R0, #FMI_BBSR_OFS] LDR R1, =FMI_NBBSR_Val STR R1, [R0, #FMI_NBBSR_OFS] LDR R1, =(FMI_BBADR_Val:SHR:2) STR R1, [R0, #FMI_BBADR_OFS] LDR R1, =(FMI_NBBADR_Val:SHR:2) STR R1, [R0, #FMI_NBBADR_OFS] LDR R2, =FMI_CR_Val STR R2, [R0, #FMI_CR_OFS] ; Write "Write flash configuration" command (60h) LDR R0, =FMI_BBADR_Val MOV R1, #0x60 STRH R1, [R0, #0] ; Write "Write flash configuration confirm" command (03h) LDR R2, =(FLASH_CFG_Val:SHL:2) ADD R0, R0, R2 MOV R1, #0x03 STRH R1, [R0, #0] Для нового изменяем следующие параметры: FMI_BBSR_Val на 0x02 FMI_NBBSR_Val на 0x08 FMI_NBBADR_Val на 0x200000 Бит, который выбирает Flash для загрузки (CSX) установлен в "1" -> загрузка из bank1. В свойствах проекта на вкладке "Target" изменяем все 0x80000 на 0x20000 и 0x8000 на 0x20000. После запуска по debugger'у видно, что программа делает переход на вектор неверного адреса при попытке запустить следующую команду после команды "LDR R0, =FMI_BBADR_Val". При этом в окне дизассемблера текущие команды уже не опознаются (стоит "???"), т.е. - явно неверная инициализация адреса и т.п. Исполузуем MDK 3.22. Кто-нибудь уже работал с STR912FAW47 ?
  11. Да, но вот как раз и интересно, на какую дисперсию нужно домножить, чтобы получить нужный SNR. Нужно ли при этом компенсировать это ослабление, домножая сигнал на какую-то величину? Как она рассчитывается? Я и имею ввиду не просто количество точек fft, а количество точек в выборке. К примеру, генерируем сигнал с уровнем A, добавляем шум. Но ведь при этом увидим разлчиный SNR на спектре, если сгенерируем раздичное число точек выборки (и, соответственно, fft сделаем на то же число точек)? В Матлабе при генерации сигнала без шума получаю интересный эффект: во-первых, сигнал этот не достигает уровня 0 db и его уровень зависит от частоты. Есть предположение, что такой эффект получается из-за того, что полосы частот fft дискретны и чем ближе частот к границе "бинов", тем меньше должен быть уровень этой частоты. Верно ли это, либо причина в другом?
  12. Осваиваю DSP в Matlab. Для дальнейшего движения вперёд хочу создать/найти функцию, которая генерит сигнал - набор синусоид с заданным уровнем, а таже подмешивает шум. Всё показалось простым до того момента как дело дошло до проверки сгенерированного сигнала на спектре. Основной вопрос - как правильно рассчитать амплитуду генерируемого шума, чтобы потом на спектре увидеть ровно тот самый SNR, что задавался в качестве параметра. Пытаясь создать такую функцию, я столкнулся со следующими проблемами/нюансами: 1. Расчёт амплитуды генерируемого шума. 2. Точное построение спектра сигнала. Как учитывать следующие факторы: - уменьшение энергии сигнала при домножении на оконную функцию - нормализация спектра учитывая длину выборки (как сохранить и нужно ли энергию сигнала). Необходимо ли учитывать теорему Парсеваля? - как учитывать различие комплексного и вещественного сигналов? Например, понятно, что если сигнал вещественный, то спектр его будет симметричным. Поэтому практически все примеры выводят только половину спектра, но энергия-то содержится в обоих частях спектра? - каково влияние числа точек FFT на уровень шума в спектре: 10log10(N/2) либо 10log10(sqrt(N))? И уже совсем примитивный вопрос: никак не удаётся сгенерить сигнал размахом в 1 и увидеть его на спектре на уровне 0db. Разъясните, пожалуйста, эти вопросы.
  13. Да, fmin и fmax в относительных частотах. А чем определяется разрешение по частоте? dF = 1/T - Это не для случая ли получения полного спектра, для частот 0-f/2?
  14. Информации не добавили, но в данном случае мы ведь жертвуем информацией о частотах вне интересующего нас диапазона. Хотя, если подходить иначе: разобьём весь диапазон частот [0; F/2] на, скажем, M участков. Для каждого сделаем такое "узкое" FFT, всё это соберём вместе и скажем "вот вам спектр с повышенной разрешающей способностью по частоте!" Рассуждая так, становится понятно, что это невозможно. Однако, хотелось бы увидеть математическое обоснование. Кто-нибудь может подкинуть?
  15. Здравствуйте! Необходимо, имея выборку длины N получить спектр только лишь выбранной частотной области (скажем, в нормализованном частотном диапазоне 0.2-0.3 вместо обычных 0-0.5). Попробовали сделать ДПФ последовательности, взяв в качестве базисных функций не cos(2*pi*k*n/N), sin(2*pi*k*n/N), a cos(2*pi*(fmin+k*[(fmax-fmin)/N])*n/N), sin(2*pi*(fmin+k*[(fmax-fmin)/N])*n/N), т.е. интересующий нас диапазон частот. Выполнили ДПФ. Результат разочаровывающий: никакой новой информации о промежуточных частотах не получили: видна лишь (видимо) интерполяция соседних частот. Вопрос: либо что-то криво сделали, либо это фундаментальный эффект? Пока не можем найти объяснения. Что мешает получить более высокое разрешение по частоте, жертвуя при этом диапазоном частот?
×
×
  • Создать...