|
|
  |
Оцифровка 40 MSPS 2 канала, затем - алгоритм Герцеля, Успею ли? |
|
|
|
Oct 8 2012, 05:57
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135

|
Здравствуйте! С ПЛИС только начинаю работать, до этого чуть-чуть пробовал "писать" на VHDL. Есть задача: за 1 мксек оцифровать с частотой семплирования 40МГц два аналоговых сигнала (т.е. 40 точек на сигнал), за следующие несколько микросекунд (до десяти) над полученными массивами провести преобразование Герцеля для определения амплитуды и фазы 1-ой гармоники, затем сравнить амплитуду и фазу отношения первой гармоники первого сигнала к первой гармонике второго сигнала с заранее заданными константами и принять несложное решение. Параллельно в ПЛИС будет крутиться подобие ядра DDS, собственно частота его выходного сигнала и будет определяться результатом сравнения (предыдущее предложение). Реально ли такое сделать (и насколько сложно)? ПЛИС, наверное, будет определяться в зависимости от того сколько ЛУТов для этого всего потребуется, но пока думаю над XC6SLX9-3TQG144C. Заранее спасибо.
|
|
|
|
|
Oct 8 2012, 07:12
|
Местный
  
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 8 2012, 07:15
|
Местный
  
Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680

|
С помощью вот этого http://www.dsplib.ru/content/goertzel/goertzel.html алготитма Герцеля можно и фазу и амплитуду узнать. Вся проблема Герцеля в том что он сам является генератором и если на его основе что то делать то надо в серьёзе подойти к точности вычислений. Внутри алгоритма. В противном случает частота входного сигнала и частота измеренного сигнала могут не совпадать. На его же основе можно сделать и DDS я этот вариант на Циклоне 3 продумывал так там с 45 бит. шиной на умножение скорость была в районе 60 МГц шаг в алгоритме 1 кГц точность по частоте 0.01 Гц. Мне нужно было 80 МГц по этому я эту идею бросил и решил попробовать классический ДПФ и DDS из библиоткеи. Для вас думаю в пол не подойдёт.
|
|
|
|
|
Oct 8 2012, 07:20
|
Местный
  
Группа: Свой
Сообщений: 454
Регистрация: 13-10-10
Из: Киев
Пользователь №: 60 135

|
Цитата(ivan219 @ Oct 8 2012, 10:15)  ...На его же основе можно сделать и DDS... На основе алгоритма Герцеля?
|
|
|
|
|
Oct 8 2012, 08:52
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 8 2012, 09:31
|
Местный
  
Группа: Свой
Сообщений: 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 же стандартный, и его скорости хватит с головой - зачем усложнять? В общем по ходу разберусь, наверно всё-таки не буду трогать Герцеля. З.Ы. Чувствую, будет очень много вопросов (и касательно проектирования этого устройства, и касательно конфигурирования ПЛИС), буду их наверное где-то здесь спрашивать.
|
|
|
|
|
Oct 8 2012, 12:29
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(kt368 @ Oct 8 2012, 13:31)  А про умножение "скалярно умножить входную последовательность на комплексный вектор" это что имеется в виду? Это используется в FFT? Не понял... Спасибо за совет, возьму память W9412G6JH-5I. Если скалярно умножить кусок входного сигнала на кусок комплексной синусоиды нужной частоты, то получится как раз один бин DFT, с амплитудой и фазой, Герцель делает тоже самое меньшим числом умножений, однако требователен к точности. Вы моделировали свой алгоритм в каком-нибудь Матлабе? А то возможны неприятные сюрпризы. Если не нужна пропускная способность шины памяти в 800мегабайт/сек. , то лучше взять восьмибитную, развести будет проще, да и свободные пины на FPGA могут внезапно закончиться, это только кажется, что их много. Использовать PLL в FPGA для умножения внутренней частоты - это святое.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|