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

|
Вот ОЗУ.
Прикрепленные файлы
RAM.rar ( 123.58 килобайт )
Кол-во скачиваний: 64
|
|
|
|
|
Nov 12 2009, 08:12
|
Местный
  
Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537

|
Цитата(ZED @ Nov 12 2009, 07:18)  Вот ОЗУ. Халтурите... однако  То, что в прицепе вашего сообщения - лишь кирпич (даже пол кирпича) из которого нужно построить наше ОЗУ для БПФ. Нам ведь нужно за 1 раз прочитать/записать 4 комплексных точки. А Ваше ОЗУ может хранить только половину одной единственной комплексной точки.
|
|
|
|
|
Nov 14 2009, 14:40
|
Местный
  
Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537

|
Цитата(ZED @ Nov 14 2009, 12:06)  А я думал, что у нас будет отдельное ОЗУ для реальной части и отдельное для мнимой. 4 ОЗУ - типа банки. Итого просто 8 ОЗУ. Я не даром начал проект с разработки блок схемы устройства и схемы алгоритма - это очень важная часть разработки. Прежде чем кодировать надо понять что именно мы хотим сделать и как именно мы это будем делать. Откройте блок-схему нашего устройства. там есть деление на модули. Именно этого деления на модули мы и придерживаемся при кодировании. Кстати, мы вот с вами не позаботились о том, чтобы разработать интерфейсы между модулями и в схеме управления Вы, к примеру, забыли про WRITE_EN_A и WRITE_EN_B, без которых памяти не обойтись - ведь на каждом этапе писать нужно только в один из двух модулей памяти. Про схему управления я еще напишу. Я решил, что лучше будет дать Вам пример реализации и на этом примере объяснить, какие в вашем коде есть ошибки и недостатки реализации. Но т.к. времени у меня сейчас мало, то происходит это все не быстро. Вернемся к памяти. На блок схеме нарисовано 2 одинаковых модуля памяти. Согласно нашему алгоритму и схеме управления на модуль памяти приходит 4 адреса чтения, 1 адрес записи, разрешения записи, 4 комплексные точки и выходит 4 комплексные точки. Вот именно так и должен выглядеть наш модуль памяти. Внутри этот модуль может состоять из чего угодно - можете поставит 8 блоков памяти (по два на банк) и хранить мнимую и вещественную части отдельно. Можете поставить 4 блока памяти (по одному на банк) и хранить комплексное число в одной ячейке. Так что придерживайтесь блок-схемы - мы ее не даром рисовали.
|
|
|
|
|
Nov 27 2009, 14:06
|
Местный
  
Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537

|
Цитата(ZED @ Nov 17 2009, 20:51)  Вот тут два варианта: один простой, а второй с применением package. Замечательно! Только на вариант без package не нужно было тратить время. Вы, я смотрю, попросили Квартус положить каждый блок памяти в M-RAM, но это слишком жирно для таких скромных (по меркам M-RAM) объемов данных. К тому же блоков M-RAM в стратиксе очень мало - на все блоки памяти БПФ не хватит. У меня, к сожалению, до 6 декабря не будет времени на БПФ. Поэтому Вы пока соберите все наши отдельные блоки в модуль БПФ. Придерживайтесь блок-схемы и не забудьте про package. Еще поставьте ModelSim (даже если Вы с ним не умеете работать - вот заодно и научитесь) т.к. в Квартусе моделировать и отлаживать крайне не удобно. Если будут вопросы, то пишите - краткие ответы я дам и до 6 декабря.
|
|
|
|
|
Dec 7 2009, 23:21
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 27-12-08
Из: Петербург
Пользователь №: 42 787

|
Ребят, а вы делаете БПФ по Кули-Тьюки? Просто для действительных чисел есть более простые алгоритмы. К примеру, можно посчитать БПХ, а потом за один такт перевести его в БПФ (по-моему формула О'Нила) : никаких комплексных умножителей, в худшем случае для бабочки БПХ нужно два умножения действительных чисел + 4 операции сложения.
|
|
|
|
|
Dec 8 2009, 18:46
|
Местный
  
Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102

|
Вот, прикрепляю собранный проект, только я не подсоединил ROM память коэффициентов, т.к. она не написана. Кстати и вопрос как мы ее будем реализовывать when case? Цитата Ребят, а вы делаете БПФ по Кули-Тьюки? Да именно по нему. Цитата Просто для действительных чисел есть более простые алгоритмы. К примеру, можно посчитать БПХ, а потом за один такт перевести его в БПФ (по-моему формула О'Нила) : никаких комплексных умножителей, в худшем случае для бабочки БПХ нужно два умножения действительных чисел + 4 операции сложения. БПХ это по-моему быстрое преобразование Хартли. Если ссылочку на литературу, где написано по подробнее об этом преобразовании, желательно понятным языком и о его связи с БПФ? С удовольствием бы почитал. Еще бы с удовольствием прочитал бы про быстрое Вейвлет преобразование, как оно аппаратно реализуется. FFT_2048
|
|
|
|
|
Dec 8 2009, 19:43
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 27-12-08
Из: Петербург
Пользователь №: 42 787

|
Цитата(ZED @ Dec 8 2009, 21:46)  БПХ это по-моему быстрое преобразование Хартли. Если ссылочку на литературу, где написано по подробнее об этом преобразовании, желательно понятным языком и о его связи с БПФ? С удовольствием бы почитал. Еще бы с удовольствием прочитал бы про быстрое Вейвлет преобразование, как оно аппаратно реализуется. Нашел: http://www.embedded.com/2000/0009/0009feat3.htmТам есть и описание реализации и связь с БПФ, правда формулы в плохом качестве, но я все понял. Цитата не кажется что коррекция полета неуместна. Где-то в начале Мастер писал что это учебный проект. Так что постигаем. Все остальные алгоритмы - пусть подождут. Ну я и не предлагаю, тем более столько уже сделано. Просто хотел заметить, что на практике используются другие алгоритмы.
|
|
|
|
|
Dec 9 2009, 10:31
|
Местный
  
Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537

|
Цитата(ZED @ Dec 8 2009, 21:46)  Вот, прикрепляю собранный проект, только я не подсоединил ROM память коэффициентов, т.к. она не написана. Кстати и вопрос как мы ее будем реализовыватьwhen case? Реализовать ее стоит на обычных RAM блоках (работающих в режиме ROM). На форуме есть достаточное количество примеров такого описания на HDL. Я бы, правда, сгенерировал бы ее Квартусовским визардом. Какая у Вас версия ModelSim и умеете ли Вы с ним работать?
|
|
|
|
|
Dec 13 2009, 20:15
|
Местный
  
Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537

|
Цитата(ZED @ Dec 8 2009, 21:46)  Вот, прикрепляю собранный проект... Увы, серьезный просчет прямо на верхнем уровне  . Согласно нашей схеме во время вычисления БПФ на каждый банк памяти подается одни и тот же адрес и достаточно одного на всех WE. Но при загрузке данных в память БПФ перед вычислением все совсем не так. Во-первых в общем случае Вы никогда заранее не знаете порядок прихода данных и, поэтому, для применимости модуля в разных проектах необходимо предоставить внешнему модулю полное управление памятью. Во-вторых, Вы собирались обрабатывать данные с АЦП - таким образом на вход БПФ данные пойдут по порядку. Согласно схеме БПФ точки 1 ... 511 "укладываются" в 0-ой банк, 512 ... 1023 в 1-вый и т.д. Но у Вас так не получится сделать т.к. сейчас Вы не можете в один банк записать, а в другой нет. А Вам нужно сначала заполнить 0-вой банк не трогая остальные и только потом переходить к 1-ому. Исправляйте... Как дела с ROM для коэффициентов?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|