реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> БПФ, Прошу пояснения
serjj
сообщение Apr 21 2015, 07:06
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

Matlab rolleyes.gif Считаем по формуле: w_sin(k) = imag(exp(-1i*2*pi*k/N)), w_cos(k) = real(exp(-1i*2*pi*k/N)), k=0...N-1
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Apr 21 2015, 07:06
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(Dmitriyspb @ Apr 21 2015, 10:43) *
Хорошо. biggrin.gif Напишите поподробнее пожалуйста как вы считаете коэффициенты? 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.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 07:32
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(serjj @ Apr 21 2015, 10:06) *
Matlab rolleyes.gif


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

Цитата(Kapsik @ Apr 21 2015, 10:06) *
Вы в #11 привели картинку. Там есть поворачивающие множители W. Их коэффициенты 0,1,2,3. Они рассчитываются у меня как W2, коэффициенты 0,1,2,3 записаны в k2. Получается вектор коэффициентов W с картинки из #11.


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

to Kapsik
Я на verilog это все дело планирую транслировать.
Вы в matlab будете коэффициенты считать?

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 21 2015, 07:37
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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


Ну да. Прореживание по времени / прореживание по частоте. На dsplib эти техники как раз и разобраны.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 08:03
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(serjj @ Apr 21 2015, 10:37) *
Ну да. Прореживание по времени / прореживание по частоте. На dsplib эти техники как раз и разобраны.


Хорошо. Т.е.
1. Я складываю N (2048) отсчетов от АЦП в память.
2. После заполнения памяти начинаю вычитывать эти значения, НО вычитываю не по порядку а использую бит-реверсивный преобразователь адреса для памяти.

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

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

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

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


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 21 2015, 08:11
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

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

Подумайте сразу еще и о скалирование результатов умножения. Чтобы потом не было сюрпризов. Это нужно делать на каждом этапе при целочисленной реализации. Очень важный и тонкий момент реализации. При этом FFT может выступать в качестве некоторого АРУ. Исходный масштаб можно восстановить, если вы будете накапливать информацию о скалировании с каждого шага.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 08:22
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(serjj @ Apr 21 2015, 11:11) *
Если в вашем преобразовании есть восстановление порядка следования, то да.


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

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


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 21 2015, 08:37
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

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

Хы, какой я раритет нашёл, очень винтажно rolleyes.gif
Прикрепленный файл  kabalr1985.pdf ( 1.34 мегабайт ) Кол-во скачиваний: 194

Хоть самому читай. Ну а вообще поиск по scaling during fft stages можно смотреть.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 08:50
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



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

Цитата(serjj @ Apr 21 2015, 11:37) *
Это от алгоритма будет зависить. Можно сделать 1001 способом. Логичнее все манипуляции с перестановками делать отдельно а бабочку отдельно и кормить ее всегда данными, вычитываемыми по порядку. На dsplib объясняются 2 самых основных подхода к мультиплексированию, но наверное есть еще всякие частные решения, заточенные под конкретное железо.

Хы, какой я раритет нашёл, очень винтажно rolleyes.gif
Прикрепленный файл  kabalr1985.pdf ( 1.34 мегабайт ) Кол-во скачиваний: 194

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


спасибо


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Apr 21 2015, 09:13
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(Dmitriyspb @ Apr 21 2015, 12:50) *
А что по этому поводу думает уважаемый Kapsik?

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

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

.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 10:02
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(Kapsik @ Apr 21 2015, 12:13) *
Интересно, что скажут остальные по поводу такой реализации

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

А дальше что вы планируете с этими отсчетами делать?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Apr 21 2015, 10:43
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(Dmitriyspb @ Apr 21 2015, 14:02) *
Остальные пока молчат.
Вот моя версия. Думаю что-то очень похожее.

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

Вообще я делаю эквалайзер. Так что буду выводить на VGA моник.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 21 2015, 10:49
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(Kapsik @ Apr 21 2015, 13:43) *
Вообще я делаю эквалайзер. Так что буду выводить на VGA моник.


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


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
Kapsik
сообщение Apr 21 2015, 10:59
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 28-08-13
Из: SPb
Пользователь №: 78 086



Цитата(Dmitriyspb @ Apr 21 2015, 14:49) *
вы в Matlab коэффициенты считать для ROM будите? или уже посчитали?

Да, в матлабе посчитаю и в mif засуну.
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Apr 22 2015, 10:25
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Товарищи, правильно ли я считаю коэффициент для своей бабочки????????????????????????????????
В коде приведено 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;


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 11:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016