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

А может для этого существует какая-то программка специализированная, которая умеет считать коэффициенты? Никто не знает?

Matlab :rolleyes: Считаем по формуле: w_sin(k) = imag(exp(-1i*2*pi*k/N)), w_cos(k) = real(exp(-1i*2*pi*k/N)), k=0...N-1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо. :biggrin: Напишите поподробнее пожалуйста как вы считаете коэффициенты? Wn = exp(-i*2*pi/n), n - размер фурье (число точек), i = [0 ..(n/2)-1] - номер коэффициента. А у Вас еще какой-то "k2" в формуле??????????

Вы в #11 привели картинку. Там есть поворачивающие множители W. Их коэффициенты 0,1,2,3. Они рассчитываются у меня как W2, коэффициенты 0,1,2,3 записаны в k2. Получается вектор коэффициентов W с картинки из #11.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Matlab :rolleyes:

 

Ах... простите=))) глупый вопрос

 

Вы в #11 привели картинку. Там есть поворачивающие множители W. Их коэффициенты 0,1,2,3. Они рассчитываются у меня как W2, коэффициенты 0,1,2,3 записаны в k2. Получается вектор коэффициентов W с картинки из #11.

 

Тогда вроде все укладывается. Даже понятно.

_________________________________________________

Тут другой вопросик. Если в бабочку грузить отсчеты по порядку 0,1,2,3... и.т.д. ны выходе получаем кашу. Для того, чтобы этой каши не было используют при загрузки бит-реверсивную перестановку отсчетов. Я правильно понял? Т.е. перемешиваем на входе и имеем по порядку на выходе ИЛИ имеем по порядку на входе, тогда перемешиваем на выходе, чтобы упорядочить?

 

to Kapsik

Я на verilog это все дело планирую транслировать.

Вы в matlab будете коэффициенты считать?

post-74498-1429601273_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в бабочку грузить отсчеты по порядку 0,1,2,3... и.т.д. ны выходе получаем кашу. Для того, чтобы этой каши не было используют при загрузки бит-реверсивную перестановку отсчетов. Я правильно понял? Т.е. перемешиваем на входе и имеем по порядку на выходе ИЛИ имеем по порядку на входе, тогда перемешиваем на выходе, чтобы упорядочить?

 

Ну да. Прореживание по времени / прореживание по частоте. На dsplib эти техники как раз и разобраны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да. Прореживание по времени / прореживание по частоте. На dsplib эти техники как раз и разобраны.

 

Хорошо. Т.е.

1. Я складываю N (2048) отсчетов от АЦП в память.

2. После заполнения памяти начинаю вычитывать эти значения, НО вычитываю не по порядку а использую бит-реверсивный преобразователь адреса для памяти.

 

на этом этапе у меня есть корректные отсчеты в нужном порядке.

 

3. Теперь я прохожу необходимое кол-во ступеней преобразования отсчетов из временной области в частотную (БАБОЧКА)

3.1. Тут использую ROM с отсчетами Wk, которые использую при вычислениях.

 

4. Через постоянное времени моей цифровой системы начнут выскакивать отсчеты в правильном порядке.

 

5. Эти отсчеты уже можно перенести на плоскость с заданным шагом (Частота дискретизации/ число точек)?????

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5. Эти отсчеты уже можно перенести на плоскость с заданным шагом (Частота дискретизации/ число точек)?????

Если в вашем преобразовании есть восстановление порядка следования, то да. При этом смотрим например альтеровскую корку. Там есть опции прямого и обратного следования. В кастомизируемых корках еще может быть опция центрирования, когда 0 стоит не в начале выборки а в 1, что удобно в некоторых приложениях спектрального анализа.

 

Подумайте сразу еще и о скалирование результатов умножения. Чтобы потом не было сюрпризов. Это нужно делать на каждом этапе при целочисленной реализации. Очень важный и тонкий момент реализации. При этом FFT может выступать в качестве некоторого АРУ. Исходный масштаб можно восстановить, если вы будете накапливать информацию о скалировании с каждого шага.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в вашем преобразовании есть восстановление порядка следования, то да.

 

Если я их загружаю в БАБОЧКУ в бит-реверсивном порядке, тогда у меня на выходе все должно быть упорядочено. Верно понимаю?

 

На счет скалирования (по просту говоря масштабирования) еще не думал. Ткните пожалуйста где почитать можно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я их загружаю в БАБОЧКУ в бит-реверсивном порядке, тогда у меня на выходе все должно быть упорядочено. Верно понимаю?

Это от алгоритма будет зависить. Можно сделать 1001 способом. Логичнее все манипуляции с перестановками делать отдельно а бабочку отдельно и кормить ее всегда данными, вычитываемыми по порядку. На dsplib объясняются 2 самых основных подхода к мультиплексированию, но наверное есть еще всякие частные решения, заточенные под конкретное железо.

 

Хы, какой я раритет нашёл, очень винтажно :rolleyes:

kabalr1985.pdf

Хоть самому читай. Ну а вообще поиск по scaling during fft stages можно смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что по этому поводу думает уважаемый Kapsik? Как он все это дело планирует в verilog описывать. Можно функционально рассказать

 

Это от алгоритма будет зависить. Можно сделать 1001 способом. Логичнее все манипуляции с перестановками делать отдельно а бабочку отдельно и кормить ее всегда данными, вычитываемыми по порядку. На dsplib объясняются 2 самых основных подхода к мультиплексированию, но наверное есть еще всякие частные решения, заточенные под конкретное железо.

 

Хы, какой я раритет нашёл, очень винтажно :rolleyes:

kabalr1985.pdf

Хоть самому читай. Ну а вообще поиск по scaling during fft stages можно смотреть.

 

спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что по этому поводу думает уважаемый Kapsik?

Хех, уважаемый, приятно, но боюсь пока не заслуженно ;-)

 

Набросал вот такую блочную схему. Коротенько описание. ser2par сдвиговый регистр, в нем копятся 16 отсчетов. Lat_data защелкивает эти отсчеты одновременно совершая перестановку. Далее идет мультиплексор который коммутирует отсчеты по нужным бабочкам, на выходе бабочек умножение и все по новой. Интересно, что скажут остальные по поводу такой реализации

 

.post-78086-1429607522_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, что скажут остальные по поводу такой реализации

Остальные пока молчат.

Вот моя версия. Думаю что-то очень похожее.

 

А дальше что вы планируете с этими отсчетами делать?

post-74498-1429610453_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Остальные пока молчат.

Вот моя версия. Думаю что-то очень похожее.

 

А дальше что вы планируете с этими отсчетами делать?

Вообще я делаю эквалайзер. Так что буду выводить на VGA моник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще я делаю эквалайзер. Так что буду выводить на VGA моник.

 

вы в Matlab коэффициенты считать для ROM будите? или уже посчитали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы в Matlab коэффициенты считать для ROM будите? или уже посчитали?

Да, в матлабе посчитаю и в mif засуну.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Товарищи, правильно ли я считаю коэффициент для своей бабочки????????????????????????????????

В коде приведено k=2, N=2048;

>> k=2;
>> N=2048;
>> W2=exp(-j*2*pi*k/N)

W2 =

   1.0000 - 0.0061i

>> W2= 1-0.0061

W2 =

    0.9939

>> % Преобразовываю в 16-ти разрядную
>> % целочисленную форму (1бит-знаковый + 15бит мантисса)
>>  L = (2^15)-1

L =

       32767

>> F = W2*L

F =

  3.2567e+004

>> round (F)

ans =

       32567;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...