-
Постов
41 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о EKirshin
-
Звание
Участник
- День рождения 20.03.1983
Контакты
-
Сайт
Array
Информация
-
Город
Array
Посетители профиля
-
Здравствуйте! На тему электромагнитной совместимости довольно много материалов, но разбросаны они по самым разным местам, поэтому вопрос тем, кто уже с этим сталкивался. Интересует поведение микроконтроллеров под воздействием серьёзных электромагнитных помех (близость к силовым системам, гроза и т.п.). Многое, конечно, можно вывести самому, но изобретать велосипед, как известно, не практично. Посоветуйте книги/статьи о том, как правильно оформить код, какие меры предпринять для повышения устойчивости системы с позиции программного обеспечения. Есть ли какие-то теоретические расчёты показателей стабильности с учетом вероятности возникновения тех или иных ситуаций? Есть ли какая-то специфика применительно к ядрам ARM?
-
Разработка генератора частоты дял BF537
EKirshin ответил Erwin тема в Алгоритмы ЦОС (DSP)
А в чём проблема? Есть метод прямого вычисления sin, есть табличный, есть совмещённый. Выбирайте любой. На таком процессоре сигнал такой частоты сгенерить очень просто. -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Всем большое спасибо! Я имел возможность только начать разбираться в предложенных решениях. Сейчас, к сожалению, нас всех выгнали в отпуск :) Нахожусь на удалении... -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Да, действительно, 1 Мгц. А что не так? Да, именно это и интересно. Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала. Да, действительно. Указанные 100db - это, пожалуй, максимум. А данные две реализации - лишь пример. -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR. Да, скажу сразу: сигнал комплексный - получается после фильтрации. Возможно изменение в пределах всего спектра. Известна, но точность не гарантируется - может смещаться. Ну её значение ведь можно получить оценкой тем же fft? Или необходима большая точность, чем может предоставить какой-либо метод? Менее 5 кГц с каждой стороны основной гармоники. В том числе и генераторы. Вернее - это основное назначение. Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс. Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re. 2_1M_0.txt 2_1M_0_.txt 2_1M_1.txt 2_1M_1_.txt -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Частота выборки сигнала переключается. К примеру, 1 МГц. Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра). Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает. Не совсем понимаю, что имеется ввиду под "когерентностью". Если это совпадение фазы гармонического сигнала, то когерентность не сохраняется. -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Нет, не так! Интересуют детали на частотах, близких к основной. Это нужно для исследования качества входной синусоиды. -
Увеличение разрешения по частоте
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Проясню, что требуется, т.к. задал вопрос действительно кошмарно... :01: Имеется устройство (АЦП, ...), которое способно периодически (период не фиксирован) получать сигнал со входа - N точек. Частота дискретизации более 1 МГц. Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте. Оставшаяся часть спектра нас не интересует (вернее, интересует, но уже в других целях). Устройство не может по архитектурным причинам получать за раз данных больше N отсчётов. Под стационарностью я понимаю неизменность параметров сигнала: частота сигнала (синусоиды) остаётся неизменной (не учитывая качество самого сигнала: дрожание частоты и т.п., изменяющие частоту сигнала), уровень шума и его другие характеристики также неизменны. Один из рассматриваемых нами способов - это "усреднение" различных реализаций сигнала. Однако, не ясно, как склеить M кусков, чтобы получить из этого какую-то дополнительную информацию. Фаза синусоиды, естественно различна в каждом из М кусков. Поэтому их простое "склеивание" ни к чему хорошему не приводит, даже с наложением окон для устранения эффекта резкого скачка фазы. -
Увеличение разрешения по частоте
EKirshin опубликовал тема в Алгоритмы ЦОС (DSP)
Здравствуйте! Такая задачка. Есть стационарный сигнал: шум + синусоида. Из этого сигнала периодически набирается N отсчётов. Вопрос: можно ли, имея M кусков этого сигнала использовать их для получения спектра сигнала размерностью M*N? Какой будет эффект, если на каждый из этих кусков наложить окно, "склеить" эти куски (получится сигнал длиной M*N), затем сделать fft на M*N точек? -
Установили новый кристалл 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 ?
-
Генератор сигналов с шумом
EKirshin ответил EKirshin тема в Алгоритмы ЦОС (DSP)
Да, но вот как раз и интересно, на какую дисперсию нужно домножить, чтобы получить нужный SNR. Нужно ли при этом компенсировать это ослабление, домножая сигнал на какую-то величину? Как она рассчитывается? Я и имею ввиду не просто количество точек fft, а количество точек в выборке. К примеру, генерируем сигнал с уровнем A, добавляем шум. Но ведь при этом увидим разлчиный SNR на спектре, если сгенерируем раздичное число точек выборки (и, соответственно, fft сделаем на то же число точек)? В Матлабе при генерации сигнала без шума получаю интересный эффект: во-первых, сигнал этот не достигает уровня 0 db и его уровень зависит от частоты. Есть предположение, что такой эффект получается из-за того, что полосы частот fft дискретны и чем ближе частот к границе "бинов", тем меньше должен быть уровень этой частоты. Верно ли это, либо причина в другом? -
Генератор сигналов с шумом
EKirshin опубликовал тема в Алгоритмы ЦОС (DSP)
Осваиваю DSP в Matlab. Для дальнейшего движения вперёд хочу создать/найти функцию, которая генерит сигнал - набор синусоид с заданным уровнем, а таже подмешивает шум. Всё показалось простым до того момента как дело дошло до проверки сгенерированного сигнала на спектре. Основной вопрос - как правильно рассчитать амплитуду генерируемого шума, чтобы потом на спектре увидеть ровно тот самый SNR, что задавался в качестве параметра. Пытаясь создать такую функцию, я столкнулся со следующими проблемами/нюансами: 1. Расчёт амплитуды генерируемого шума. 2. Точное построение спектра сигнала. Как учитывать следующие факторы: - уменьшение энергии сигнала при домножении на оконную функцию - нормализация спектра учитывая длину выборки (как сохранить и нужно ли энергию сигнала). Необходимо ли учитывать теорему Парсеваля? - как учитывать различие комплексного и вещественного сигналов? Например, понятно, что если сигнал вещественный, то спектр его будет симметричным. Поэтому практически все примеры выводят только половину спектра, но энергия-то содержится в обоих частях спектра? - каково влияние числа точек FFT на уровень шума в спектре: 10log10(N/2) либо 10log10(sqrt(N))? И уже совсем примитивный вопрос: никак не удаётся сгенерить сигнал размахом в 1 и увидеть его на спектре на уровне 0db. Разъясните, пожалуйста, эти вопросы. -
Да, fmin и fmax в относительных частотах. А чем определяется разрешение по частоте? dF = 1/T - Это не для случая ли получения полного спектра, для частот 0-f/2?
-
Информации не добавили, но в данном случае мы ведь жертвуем информацией о частотах вне интересующего нас диапазона. Хотя, если подходить иначе: разобьём весь диапазон частот [0; F/2] на, скажем, M участков. Для каждого сделаем такое "узкое" FFT, всё это соберём вместе и скажем "вот вам спектр с повышенной разрешающей способностью по частоте!" Рассуждая так, становится понятно, что это невозможно. Однако, хотелось бы увидеть математическое обоснование. Кто-нибудь может подкинуть?
-
FFT zoom
EKirshin опубликовал тема в Сигнальные процессоры и их программирование - DSP
Здравствуйте! Необходимо, имея выборку длины 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), т.е. интересующий нас диапазон частот. Выполнили ДПФ. Результат разочаровывающий: никакой новой информации о промежуточных частотах не получили: видна лишь (видимо) интерполяция соседних частот. Вопрос: либо что-то криво сделали, либо это фундаментальный эффект? Пока не можем найти объяснения. Что мешает получить более высокое разрешение по частоте, жертвуя при этом диапазоном частот?