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

 
 
> ДПФ на ПЛИС
enzaime
сообщение Feb 15 2016, 08:49
Сообщение #1


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

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Хочу написать ДПФ. Чтобы оно выполнялось как можно быстрее. Определяться частоты будут например, от 0 до 100 МГц. Частота дискретизации 230 МГц. Количество определяемых частот 500, отсчётов сигнала 2000. Самое простое мне видится это параллельно определять несколько частот. Например, написать модуль, который возвращает сумму перемножений выборок сигнала с соответствующими коэффициентами. Запускать таких модулей одновременно столько штук, сколько позволяют ресурсы ПЛИС. Подавать им на вход отсчёты и коэффициенты пока не будет выполнено для всех частот. Например одновременно можно запустить 100 модулей, значит такую операцию надо повторить 5 раз. (Следующая операция запускается после выполнения предыдущей)
Главная проблема для меня это коэффициенты. Хранить для каждой частоты свои коэффициенты? Или сделать таблицу синусов/косинусов и из неё брать? Т.е. для каждого модуля своя таблица (Нпример для 100 модулей 100 одинаковых таблиц (будет храниться в rom ПЛИС), чтобы можно было одновременно считывать 100 значений) А может есть нечто более простое? В общем как-то так)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
enzaime
сообщение Feb 16 2016, 06:55
Сообщение #2


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

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Цитата
Еще раз - встроенная память максимум двухпортовая, т.е. Вы сможете из нее считать одновременно только два значения и практическая реализуемость описанного Вами метода, с моей точки зрения, стремится к нулю.

В общем набросал я схемку
Прикрепленное изображение
вот здесь видно что можно сделать несколько блоков rom памяти с таблицей синусов, а дальше чтобы получить нужный коэффициент надо просто выбрать его из таблицы. И для каждого канала хранить такую таблицу (например 100 каналов и 100 одинаковых таблиц, чтобы за 1 такт можно было получать больше 2 значений, а если бы все каналы обращались бы к 1 таблице, то действительно за 1 такт я бы больше 2 значений из памяти не получил бы).

Цитата
Есть жирный чип и хотите считать лоб - тогда для каждого умножителя своя отдельная таблица. Будет просто - регулярно и быстро. Да и управление будет простое - одни счетчики sm.gif
Можно с экономит память если получать sin и cos на лету из одной таблицы и хранить только часть периода но это если таблица симметричная получится.

Это то что мне первое в голову пришло. Дальше да можно уменьшить количество хранимых значений таблицы (используя свойства функций sin, cos) Но может есть ещё какие варианты? Помимо тех что выше описаны? Мне просто интересно какой вариант самый правильный ( я понимаю, что есть много вариантов, вот какой будет реализован такой и будет правильным)

Сообщение отредактировал enzaime - Feb 16 2016, 07:03
Go to the top of the page
 
+Quote Post



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

 


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


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