Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: фильтрация фазового шума
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
sergey sva
Нужно измерить временные характеристики импульсов они приходят с другого модуля. Частота килогерцы, плис циклон 3. Посмотрел осциллографом , импульсы дрожат градусов 20-30, с таким шумом измерить сигнал с точностью 0,05мкс не получится.
Каким фильтром можно отфильтровать этот фазовый шум? Ставить аппаратные фильтры на пер. конденсаторах не хочется, в плис можно что то подобное сделать?
Golikov A.
что такое фазовый шум импульсов?
У них фаза относительно чего?

я бы сделал блок который долбит на максимальной частоте ПЛИС счетчик, и по фронтам каждого импульса выбирал бы значение времени, и считал длительность импульса вверху и внизу, а фильтровал бы уже эти значения, цифровым образом...
sergey sva
Не правильно написал я, сорри. Сигналов приходит несколько (8шт) и у них дрожит фаза друг относительно друга.
Какой фильтр лучше подходит для такой задачи cir fir... ?
Golikov A.
так у вас ПЛИС, отцифруйте (замерьте длину) каждый своим счетчиком параллельно, а потом уже решите, может просто усреднить хватит...
sergey sva
Пытаюсь сделать фильтр средствами quartus mega-wizard. Настроил, сгенерировал код. Не совсем понимаю как это работает. На вход фильтра сигнал приходит 16 бит а на выходе 55 бит. Если правильно понял то это происходит из за того что коэффициенты с разрешением 32бита и после умножения они не приводятся к 16 бит разрешению. Сигнал на входе фильтра дискретный с 16 битного счетчика он не может стать 55 битным. Думаю если взять младшие биты 15:0 а остальные не задействовать, или старшие 54:38 ? Еще в настройках указал фильтр двух канальный а в сгенерированном коде вход выход один.
Код
module pp (
    clk,
    reset_n,
    ast_sink_data,
    ast_sink_valid,
    ast_source_ready,
    ast_sink_sop,
    ast_sink_eop,
    ast_sink_error,
    ast_source_data,
    ast_sink_ready,
    ast_source_valid,
    ast_source_sop,
    ast_source_eop,
    ast_source_channel,
    ast_source_error);


    input        clk;
    input        reset_n;
    input    [15:0]    ast_sink_data;
    input        ast_sink_valid;
    input        ast_source_ready;
    input        ast_sink_sop;
    input        ast_sink_eop;
    input    [1:0]    ast_sink_error;
    output    [54:0]    ast_source_data;
    output        ast_sink_ready;
    output        ast_source_valid;
    output        ast_source_sop;
    output        ast_source_eop;
    output        ast_source_channel;
    output    [1:0]    ast_source_error;


    pp_ast    pp_ast_inst(
        .clk(clk),
        .reset_n(reset_n),
        .ast_sink_data(ast_sink_data),
        .ast_sink_valid(ast_sink_valid),
        .ast_source_ready(ast_source_ready),
        .ast_sink_sop(ast_sink_sop),
        .ast_sink_eop(ast_sink_eop),
        .ast_sink_error(ast_sink_error),
        .ast_source_data(ast_source_data),
        .ast_sink_ready(ast_sink_ready),
        .ast_source_valid(ast_source_valid),
        .ast_source_sop(ast_source_sop),
        .ast_source_eop(ast_source_eop),
        .ast_source_channel(ast_source_channel),
        .ast_source_error(ast_source_error));
endmodule


Нажмите для просмотра прикрепленного файла


sergey sva
Нашел инструкцию полистал все стало понятно.))
Как проверить фильтр в железе, специально получить шум 16 разрядный с разной амплитудой что бы пропустить через фильтр добавив к основному сигналу, может есть примеры формул?
фильтр ких.
Golikov A.
в матлабе полно фильтров, и в итоге он вам может даже верилог файл сгенерить, не очень хороший, но может...

фильтр можно испытать подав импульс и снять импульсную характеристику, или же подать смесь нескольких синусов (сумма) и поглядеть на выходе отфильтровались ли синусы ненужных частот...
sergey sva
Хотел проверить внутри плис, подать сигнал на модуль fir а с выхода вывести через цап и посмотреть осциллографом.
Ацп на плате нет, можно было вывести через звуковую карту на фильтр и вывести через цап.
А так получить шумный сигнал из клока, или как ?
Golikov A.
ну что-то вы сложное делаете....

делаете таблицу y = sin(x); X - от 0 до 1000, 0 - 0, 1000 = 2*pi.

дальше берете под каким то клоком постоянно считаете
x1= x1 + 1;
x2 = x2 + 2;
x3 = x3 + 10;
y = sin(x1) + sin(x2) + sin(x3);
подбирая приращения иксов и частоту клока вы получаете синусы разной частоты, можете их по фазам еще подвигать

y - суммарный сигнал подаете на ваш фильтр, выход можете на ЦАП, а можно все в симуляторе глядеть. Можно нормировку добавить. Надо следить чтобы Х при переходе через 1000 сбрасывал ее, то есть 1001 = 1, 1002 = 2 и т.д.

В общем сигнал можно сгенерить внутри плис.

Если хотите шум, то есть генераторы случайных чисел на основе сдвигового регистра и перемычек, можно с него нагенерить шумный сигнал
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.