|
Реализация БПФ на ПЛИС, Тудности, встречаемые при реализации |
|
|
|
Jan 18 2009, 19:19
|
Местный
  
Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102

|
Доброго времени суток! Нужно реализовать алгоритм БПФ с прореживанием по частоте на ПЛИС, но при реализации возникают трудности, вот некоторые из них: - Поворачивающие множители являются числами по модулю меньше либо равно единицы: |W|<=1. Я так понял, чтобы перейти к целым числам требуется умножать их на (2^N) и то, что после запятой отсекать (N - разрядность). Нужно ли то же самое делать с входными данными (x1 и x2) или не обязательно?
- Нужно реализовать операции умножения и сложения со знаковыми числами, тут у меня такая задумка: преобразовать в integer соответствующего диапазона: от -(2^N)/2 до (2^N)/2 - 1, произвести нужные арифметические операции и преобразовать обратно std_logic_vector, код прилагается:
CODE library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all;
entity butterfly is generic (b_size: natural := 14); port ( x1, x2, w: in std_logic_vector(b_size - 1 downto 0); y1, y2: out std_logic_vector(b_size - 1 downto 0) ); end entity butterfly;
architecture behavioral of butterfly is signal x1_int, x2_int, w_int: integer range -8192 to 8191; signal y1_int: integer range -8192 to 8191; signal y2_int: integer range -134217728 to 134217727; -- Т.к. производится умножение на поворачивающий множитель begin process (CLK) is begin -- Преобразовываю в тип integer: x1_int <= conv_integer(x1); x2_int <= conv_integer(x2); w_int <= conv_integer(w); y1_int <= conv_integer(y1); y2_int <= conv_integer(y2);
-- Вычисляю бабочку и преобразовываю обратно в std_logic_vector (b_size - 1 downto 0): y1 <= conv_std_logic_vector(x1_int + x2_int, b_size); y2 <= conv_std_logic_vector((x1_int - x2_int) * w_int, b_size); end process; end architecture behavioral; Вопрос будет ли так корректно сделать или все делается совершенно по-другому? Буду рад любым вашим замечаниям, предложениям, советам и ссылкам. Заранее спасибо! P.S. На форуме я искал и не нашел ответа на свои вопросы, тем более я уверен далее появятся новые, думаю лучше, чтоб это все было в одной теме...
|
|
|
|
Сообщений в этой теме
ZED Реализация БПФ на ПЛИС Jan 18 2009, 19:19 soldat_shveyk 1. Чтобы поворачивающий множитель W, меньший едини... Jan 18 2009, 20:55 Builder Цитата(ZED @ Jan 18 2009, 23:19) Вопрос б... Jan 18 2009, 20:57 ZED ЦитатаСам не знаю как лучше, но все-же, а если пос... Jan 18 2009, 21:26 soldat_shveyk Я малость ошибся правильно будет так:
round(W*(2^... Jan 19 2009, 10:32 ZED ЦитатаЯ малость ошибся правильно будет так:
round(... Jan 19 2009, 16:28 soldat_shveyk Не силен в Verilog. Помочь не могу.
А не пробовали... Jan 20 2009, 07:41 ZED ЦитатаНе силен в Verilog. Помочь не могу.
А не про... Jan 20 2009, 15:42 soldat_shveyk ALTERA FFT Compiler - все основное там есть. Для м... Jan 20 2009, 19:38 ZED ЦитатаЕсли не подойдут Вам оригинальные варианты, ... Jan 20 2009, 20:28 soldat_shveyk Для ознакомительной работы в режиме OpenCore можно... Jan 21 2009, 10:33 ZED Вопрос по vhdl остается открытым, но похоже кроме ... Jan 21 2009, 18:04 soldat_shveyk Откопал у себя исходники всех альтеровских БПФ-ов,... Jan 22 2009, 08:07 ZED Буду очень признателен: zed1986@yandex.ru
Спасибо... Jan 22 2009, 19:36 ZED Возникла еще одна проблема, реализую БПФ по схеме ... Jan 30 2009, 05:06 BuTeK поделитесь рабочей коркой БПФ на почту cvik@tut.by Jan 30 2009, 05:35 ZED Цитатаподелитесь рабочей коркой БПФ на почту cvik@... Jan 31 2009, 09:16 анатолий Проще всего сначала представить данные в формате I... Feb 2 2009, 14:02 ZED Спасибо, Анатолий, я так и делал, возник вопрос ка... Feb 10 2009, 17:38 ZED В общем нужно масштабировать данные после операций... Feb 12 2009, 20:14 Sefo Как ваши дела с БПФ? Если вопрос еще актуальный и ... Feb 18 2009, 01:27 BuTeK Конечно актуально! Поделитесь информацией... О... Feb 18 2009, 05:45 ZED Вопрос еще актуальный, буду очень признателен. Осо... Feb 18 2009, 09:26 Sefo Сначала давайте определимся что мы хотим и выберем... Feb 18 2009, 15:38 ZED Не совсем понял про разделение бабочки и поворачив... Feb 18 2009, 16:34 Sefo Про разделение бабочки и поворачивающих множителей... Feb 18 2009, 16:56 ZED Хорошо, жду с нетерпением, завтра я буду вечером и... Feb 18 2009, 17:04 Sefo На рисунке показана базовая операция для БПФ с про... Feb 19 2009, 13:29 ZED Честно говоря, конечно лучше бы 4-х Т.Б. Но как с ... Feb 19 2009, 15:21 Sefo Итак, делаем более быстрый вариант с 4-х и 2-х Т.Б... Feb 19 2009, 22:36 ZED Пока никакого интерфейса я не проектировал, считал... Feb 20 2009, 17:38 Sefo Я не спроста предложил Вам пройти путь создания БП... Feb 20 2009, 19:26 ZED Вот пожалуйста, мои инсинуации: http://ifolder.ru/... Feb 20 2009, 20:50 Sefo Первые комментарии такие. Это не блок схема, а схе... Feb 21 2009, 09:07 ZED ЦитатаНепонятно назначение блока на входе памяти д... Feb 21 2009, 10:01 Sefo Но что подается на Q2 когда D подается на Q1? Feb 21 2009, 10:25 ZED На Q2 подается Z, когда D подается на Q1 Feb 21 2009, 10:42 Sefo Это ножки ПЛИС можно физически перевести в третье ... Feb 21 2009, 14:31 ZED ЦитатаЭто ножки ПЛИС можно физически перевести в т... Feb 21 2009, 16:06 Sefo Поскольку мы выбрали схему пин-понг, то двухпортов... Feb 22 2009, 10:05 ZED Не, это не учебный, ну я думаю там отсчеты будут п... Feb 22 2009, 10:44 Sefo Все внешние интерфейсы всегда определяются тем, к ... Feb 22 2009, 12:36 ZED Не, у меня первый вариант, я так понимаю, что блок... Feb 23 2009, 10:40 Sefo Только не ClockEnable, а Write_Enable. Он так же д... Feb 24 2009, 12:52 Sefo Куда же Вы пропали? Feb 27 2009, 05:11 ZED Прошу прощения, у меня просто возникли очень сложн... Feb 28 2009, 15:35 ZED Вот исправленный БПФ-алгоритм и недоделанная схема... Mar 2 2009, 20:14 Sefo Стоп, стоп! С блок-схемой притормозите - к сож... Mar 3 2009, 07:00 Sefo Вот блок-схема БПФ. Вам нужно дорисовать к ней инт... Mar 4 2009, 11:49 ZED А вот, что подразумевалось под блок-схемой=)) Спас... Mar 4 2009, 17:05 Sefo Цитата(ZED @ Mar 4 2009, 20:05) ...строго... Mar 4 2009, 23:41 ZED Исправил.
ЦитатаВас смущает в том, чтобы подавать ... Mar 6 2009, 15:20 Sefo Теперь про блок-схему.
Если бы там нужно было то... Mar 6 2009, 15:42 sazh Цитата(Sefo @ Mar 6 2009, 18:42) Теперь п... Mar 6 2009, 16:04 Sefo RE: Реализация БПФ на ПЛИС Mar 6 2009, 16:55 ZED ЦитатаВ общем, постарайтесь продумать, как его под... Mar 6 2009, 19:12 ZED Там нужно еще библиотеку добавить:
Кодuse IEEE.std... Mar 6 2009, 20:54 Sefo После просмотра и синтеза вашего кода в Квартусе у... Mar 7 2009, 14:10 ZED ЦитатаЗачем Вы поставили регистры на входе?
Да, де... Mar 7 2009, 14:22 Sefo В том то и дело, что Квартус плохо разобрался как ... Mar 7 2009, 14:36 Sefo Попробовали написать код без integer? Mar 7 2009, 15:49 ZED Попробовал, но не могу проверить (Quartus сломался... Mar 8 2009, 10:12 Sefo Кроме того, что код оказался не компилируем, разли... Mar 8 2009, 18:52 ZED Пока на ум пришло только это:
Кодlibrary IEEE;
us... Mar 8 2009, 20:21 Sefo "if" не может быть использован вне проце... Mar 8 2009, 20:50 ZED Цитата"if" не может быть использован вне... Mar 8 2009, 21:50 Sefo Когда у Вас будет возможность просинтезировать код... Mar 8 2009, 23:21 ZED Квартус синтезирует 2 сумматора, на вход одного из... Mar 9 2009, 10:43 Sefo Вот это-то и плохо. У нас обычное суммирование с п... Mar 9 2009, 12:24 ZED Если только самому как-то описывать полный суммато... Mar 9 2009, 13:22 Sefo Извиняюсь за длительную паузу. Прием очень простой... Mar 11 2009, 23:11 ZED Прошу прощения, что долго не отвечал, просто по уч... Mar 16 2009, 04:22 Sefo Ну как, разрулили? Mar 18 2009, 09:08 ZED Да, спасибо, разрулил более менее, надеюсь еще как... Mar 18 2009, 17:18 Sefo 1) Локально, это имеется ввиду внутри бабочки. В с... Mar 18 2009, 18:26 Azatot Господа,так ведь же есть уже готовые БПФ ядра и у ... Mar 18 2009, 19:02 Sefo В данном случае преследуются учебные цели. Понятно... Mar 18 2009, 19:44 ZED Ну я так и имел ввиду:
Кодsignal A : std_logi... Mar 19 2009, 19:09 Sefo Теперь мне не очень понятно, поняли ли Вы меня пра... Mar 19 2009, 20:00 ZED Чего-то не симулируется, квартус лагает, вот проек... Mar 21 2009, 17:03 Sefo Что значит не симулируется? Под проектом я понимаю... Mar 21 2009, 19:13 ZED ЦитатаЧто значит не симулируется?
Временная диагра... Mar 21 2009, 20:12 sazh Цитата(ZED @ Mar 21 2009, 23:12) Временна... Mar 22 2009, 10:20 Sefo Вы просто не тот файл смотрите. Результаты симуляц... Mar 22 2009, 08:35 ZED Вот, что у меня получилось: Mar 22 2009, 10:48 Sefo Цитата(sazh @ Mar 22 2009, 13:20) Если я ... Mar 22 2009, 11:41 ZED Да, но результат суммирования теперь увеличился на... Mar 22 2009, 12:49 Sefo Все-таки, Вы не поняли.
Округление мы уже произв... Mar 22 2009, 13:30 ZED В Москве.
Просто вы писали:
ЦитатаВ случае (A+B+C+... Mar 22 2009, 14:14 Sefo Видимо, словами "круг замкнулся" я Вас з... Mar 22 2009, 15:45 ZED Все вроде понял, т.е. мы сразу после АЦП добавляем... Mar 22 2009, 16:03 Sefo Да.
Ура! Ттеперь можно перейти к умножител... Mar 22 2009, 16:22 ZED 1.0 это 2047
-1.0 это -2047
Чтобы не увеличивать... Mar 22 2009, 16:43 Sefo Давайте пока так начнем. Впроцессе реализации сами... Mar 23 2009, 07:53 ZED Вот комплексный перемножитель, не знаю правильно л... Mar 24 2009, 15:32 Sefo Хорошо. Код внимательно посмотрю завтра - навскидк... Mar 24 2009, 19:37 Sefo Цитата(ZED @ Mar 24 2009, 18:32) вроде ум... Mar 25 2009, 11:56 ZED ЦитатаЧему равна разрядность произведения двух зна... Mar 25 2009, 17:23 Sefo Цитата(ZED @ Mar 25 2009, 20:23) n+k
Не ... Mar 25 2009, 18:12 ZED По-моему что для знаковых, что для беззнаковых пр... Mar 25 2009, 18:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|