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

 
 
 
Reply to this topicStart new topic
> Оцифровка 40 MSPS 2 канала, затем - алгоритм Герцеля, Успею ли?
kt368
сообщение Oct 8 2012, 05:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Здравствуйте!
С ПЛИС только начинаю работать, до этого чуть-чуть пробовал "писать" на VHDL.
Есть задача: за 1 мксек оцифровать с частотой семплирования 40МГц два аналоговых сигнала (т.е. 40 точек на сигнал), за следующие несколько микросекунд (до десяти) над полученными массивами провести преобразование Герцеля для определения амплитуды и фазы 1-ой гармоники, затем сравнить амплитуду и фазу отношения первой гармоники первого сигнала к первой гармонике второго сигнала с заранее заданными константами и принять несложное решение. Параллельно в ПЛИС будет крутиться подобие ядра DDS, собственно частота его выходного сигнала и будет определяться результатом сравнения (предыдущее предложение). Реально ли такое сделать (и насколько сложно)? ПЛИС, наверное, будет определяться в зависимости от того сколько ЛУТов для этого всего потребуется, но пока думаю над XC6SLX9-3TQG144C.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
litv
сообщение Oct 8 2012, 06:21
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



реально, несложно(from my point of view), а вместо герцеля прямо fft.
Go to the top of the page
 
+Quote Post
eugen_pcad_ru
сообщение Oct 8 2012, 06:53
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



Может быть я чего то не понял, но алгоритм Герцеля вроде бы не дает информации о фазе. Я не прав?
Не проще ли реализовать фильтр Гильберта для обоих сигналов и вычислить разницу фаз? А для оценки амплитуд FFT? Информация о сигналах есть? Это синусоиды?


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
kt368
сообщение Oct 8 2012, 07:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Так Герцеля вроде-бы быстрее должен быть при малом количестве частотных компонент на выходе. И ещё насколько будет сложно подключить к этой ПЛИС память, чтобы в неё можно было сохранить 10 МБ данных, которые потом неспешно будут передаваться в ПК? Например, память IS42S16400J-7TL? Вообще, для таких целей (учитывая мои слабые познания в ПЛИС) наверно имеет смысл использовать SDRAM? А АЦП подобрал примерно такой: AD9629BCPZ-40, драйвер АЦП - ADA4938-1. ЦАП (для DDS) - AD9760ARUZ50. Они оба с параллельной шиной. Тактовую хочу брать с отдельной микросхемы-генератора с низким джиттером, а на ПЛИС, ЦАП и АЦП подавать через Fanout Buffer NB3L553DG. Будет это все в связке работать?
Судя по википедии алгоритм Герцеля дает информацию и о фазе. Сигналы....ну синусоиды, с шумком, вернее пачки синусоид с колоколоподобной огибающей (для уменьшения ширины спектра, приближения спектра к одной "палочке"). Известны частоты сигналов. Про фильтр Гилберта пошёл читать, было в универе что-то про преобразование Гильберта, надо вспоминать...

Сообщение отредактировал kt368 - Oct 8 2012, 07:18
Go to the top of the page
 
+Quote Post
ivan219
сообщение Oct 8 2012, 07:15
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



С помощью вот этого http://www.dsplib.ru/content/goertzel/goertzel.html алготитма Герцеля можно и фазу и амплитуду узнать.

Вся проблема Герцеля в том что он сам является генератором и если на его основе что то делать то надо в серьёзе подойти к точности вычислений. Внутри алгоритма. В противном случает частота входного сигнала и частота измеренного сигнала могут не совпадать.
На его же основе можно сделать и DDS я этот вариант на Циклоне 3 продумывал так там с 45 бит. шиной на умножение скорость была в районе 60 МГц шаг в алгоритме 1 кГц точность по частоте 0.01 Гц.
Мне нужно было 80 МГц по этому я эту идею бросил и решил попробовать классический ДПФ и DDS из библиоткеи.
Для вас думаю в пол не подойдёт.
Go to the top of the page
 
+Quote Post
kt368
сообщение Oct 8 2012, 07:20
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Цитата(ivan219 @ Oct 8 2012, 10:15) *
...На его же основе можно сделать и DDS...
На основе алгоритма Герцеля?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 8 2012, 08:38
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



В случае FPGA удобнее просто скалярно умножить входную последовательность на комплексный вектор из тех же 40 точек. Так можно получить нормальную точность на стандартном 18 битовом перемножителе, а с рекурсивным Герцелем придётся извращаться с умножениями. Кроме того, можно ещё непрямоугольное окно наложить, если надо. SDRAM лучше взять DDR, с 8 битной шиной данных, так как Spartan 6 имеет встроенный MCB, который поддерживает DDR SDRAM, а вот SDR - не поддерживает.
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 8 2012, 08:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(kt368 @ Oct 8 2012, 13:20) *
На основе алгоритма Герцеля?

ну алгоритм Герцеля это просто обычный интеграл Фурье для заданной частоты, только прямое вычисление синуса заменено на цифровой осциллятор
Go to the top of the page
 
+Quote Post
TRILLER
сообщение Oct 8 2012, 08:52
Сообщение #9


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

Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



Цитата(litv @ Oct 8 2012, 10:21) *
реально, несложно(from my point of view), а вместо герцеля прямо fft.

Полностью согласен. И на счёт FFT тоже. Герцеля пидётся ручками делать, а это ненужные сложности. FFT же стандартный, и его скорости хватит с головой - зачем усложнять?

Сообщение отредактировал TRILLER - Oct 8 2012, 10:51
Go to the top of the page
 
+Quote Post
kt368
сообщение Oct 8 2012, 09:31
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Цитата(Timmy @ Oct 8 2012, 11:38) *
В случае FPGA удобнее просто скалярно умножить входную последовательность на комплексный вектор из тех же 40 точек. Так можно получить нормальную точность на стандартном 18 битовом перемножителе, а с рекурсивным Герцелем придётся извращаться с умножениями. Кроме того, можно ещё непрямоугольное окно наложить, если надо. SDRAM лучше взять DDR, с 8 битной шиной данных, так как Spartan 6 имеет встроенный MCB, который поддерживает DDR SDRAM, а вот SDR - не поддерживает.

А про умножение "скалярно умножить входную последовательность на комплексный вектор" это что имеется в виду? Это используется в FFT? Не понял...
Спасибо за совет, возьму память W9412G6JH-5I.

Цитата(TRILLER @ Oct 8 2012, 11:52) *
Полностью согласен. И на счёт FFT тоже. Герцеля пидётся ручками длеать, а это ненужные сложности. FFT же стандартный, и его скорости хватит с головой - зачем усложнять?

В общем по ходу разберусь, наверно всё-таки не буду трогать Герцеля.

З.Ы. Чувствую, будет очень много вопросов (и касательно проектирования этого устройства, и касательно конфигурирования ПЛИС), буду их наверное где-то здесь спрашивать.
Go to the top of the page
 
+Quote Post
kt368
сообщение Oct 8 2012, 11:11
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Да, и ещё: Если обмен АЦП, ЦАП и ПЛИС будут тактироваться от внешнего генератора через Fanout Buffer, можно ли в ПЛИС задействовать что-то типа PLL, чтобы внутренние рассчёты производились на скорости повыше, чем Fclk АЦП/ЦАП, а обмен данными с АЦП/ЦАП был на Fclk АЦП/ЦАП?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 8 2012, 12:29
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(kt368 @ Oct 8 2012, 13:31) *
А про умножение "скалярно умножить входную последовательность на комплексный вектор" это что имеется в виду? Это используется в FFT? Не понял...
Спасибо за совет, возьму память W9412G6JH-5I.

Если скалярно умножить кусок входного сигнала на кусок комплексной синусоиды нужной частоты, то получится как раз один бин DFT, с амплитудой и фазой, Герцель делает тоже самое меньшим числом умножений, однако требователен к точности.
Вы моделировали свой алгоритм в каком-нибудь Матлабе? А то возможны неприятные сюрпризы.

Если не нужна пропускная способность шины памяти в 800мегабайт/сек. , то лучше взять восьмибитную, развести будет проще, да и свободные пины на FPGA могут внезапно закончиться, это только кажется, что их много.
Использовать PLL в FPGA для умножения внутренней частоты - это святое.
Go to the top of the page
 
+Quote Post
kt368
сообщение Oct 8 2012, 13:51
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135



Блин, у Spartan-6 Memory Controller Block присутствует только у микросхем в БГА исполнении...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:39
Рейтинг@Mail.ru


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