roboforum.ru

Технический форум по робототехнике.

Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 02 июл 2011, 20:39

Не согласен. Потому что сдвиговый регистр будет внутри FIR только при определенной и далеко не самой оптимальной его организации. Обычно используют кольцевой буфер, а не сдвиговый регистр.

Добавлено спустя 55 секунд:
Я уж не говорю про то, что FIR не обязан получать пакеты и выдавать сдвинутые пакеты наружу, т.е. вокруг FIR надо построить еще нехилую обвязку, чтобы он был сдвиговым регистром.

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 02 июл 2011, 20:43

чем отличается кольцевой буфер от сдвигового регистра?
в случае fir шириной в один бит, вся обвязка это элементы "исключающее или"

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 02 июл 2011, 20:52

FIR по определению имеет на входе N-битное число и на выходе M-битное число, внутри у него пакет из K коэффициентов и механизм обработки, как вы из него собираетесь сделать сдвиговый регистр с одними только XOR снаружи - мне неведомо.

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 02 июл 2011, 20:55

это я тебе потом обьясню, давай последовательно все делать?
мне не понятно определение: "кольцевой буфер"
чем отличается кольцевой буфер от сдвигового регистра?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 02 июл 2011, 21:15

Ну вы даёте, это же базовые структуры данных... кольцевой буфер размером N добавляет элемент и удаляет элемент за время O(1), а классический сдвиговый регистр делает это за O(N).

Добавлено спустя 1 минуту 20 секунд:
http://en.academic.ru/dic.nsf/enwiki/6503588

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 02 июл 2011, 21:27

ты ни чего не путаешь?
как кольцевой буфер из твоей ссылки применить к фир из твоей же ссылки?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 02 июл 2011, 21:32

Напрямую, для хранения X[n]...X[n-N], а в чем проблема?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 02 июл 2011, 21:36

в фир частота дискретизации постоянная, зачем там такое устройство?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 02 июл 2011, 21:47

Такое ощущение, что мы с вами на разных языках говорим. Я выше явно указал зачем, разве что код не написал.

Вот статья про FIR: http://ru.wikipedia.org/wiki/FIR

Там в примере кольцевого буфера нету, поэтому приходится делать сдвиг:
Код: Выделить всёРазвернуть
/* Смещаем задержаный сигнал */
    for (i = 127; i > 0; i--)
        sample[i] = sample[i - 1];

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 02 июл 2011, 23:07

>Такое ощущение, что мы с вами на разных языках говорим.
скорее всего да, поэтому я и пытаюсь понять твой язык... давай на ты?
сдвиг в этой статье и есть регистр сдвига.
Как из кольцевого буфера делать отводы от внутр. значений регистра?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Romikgy » 03 июл 2011, 00:31

и я свою мелочь вставлю )))
у фира основное не сдвиги , а операция умножения и сложения....поэтому для реализаций фир юзают dsp , а не плисы...
реализовать фир на сдвигах и ксорах думаю реально , но по производительности не будет отбивать используя заточеные камни для таких целей...
PS плюс последний пример вообще из другой оперы ,ибо там уже 16 битный камень.... если заюзать арм еще круче будет ...да и по цене на камень они сравнились с пиками и аврами....

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 03 июл 2011, 04:11

если природа сигнала однобитная, какой должен быть фир?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 03 июл 2011, 07:17

Dmitry__ писал(а):Как из кольцевого буфера делать отводы от внутр. значений регистра?

Примерно так:
Код: Выделить всёРазвернуть
/* КИХ Фильтр на 128 отводов */
float fir_filter(float input)
{
    int i;
    static float sample[128];
    static int ptr=0;
    float acc;
    float output;

    sample[ptr] = input;

    acc = 0.0f;                     /* Аккумулятор */

    /* Умножение с накоплением */
    for (i = 0; i < 128; i++) {
        acc += (h[i] * sample[(ptr+i)&127]);
    }

    ptr=(128-1+ptr)&127;

    /* Выход */
    output = acc;

    return output;
}

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

Dmitry__ » 03 июл 2011, 13:33

т.е. кольцевой буфер это реализация сдвигового регистра длиной 128 и шириной float на процессоре у которого это плохо получается?
для малоточечного фир зачем такие сложности?

Re: Переход с АVR на PIC, перешедший в холивар AVR vs PIC =)

=DeaD= » 03 июл 2011, 14:14

Тяжелый случай...


cron
Rambler\'s Top100 Mail.ru counter