Icedevil777228 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Передо мной стоит задача реализовать БПФ на ПЛИС на VHDL, многие скажут, что в гугле миллион разных вариантов, я за два дня поисков не нашел подходящий вариант, т.к. основная честь "самописных ядер" очень сложна для понимания, другая часть заточена под Xsilinx, где все время идет речь о встроенных блоков умножения и памяти. Еще много простых кодов, но совсем без описания. Или варианты описаны очень абстрактно, а у меня есть конкретная задача имеется АЦП 12 бит и Cyclone 3. Я формирую синусоиду с выхода ЦАП она идет на АЦП затем необходимо преобразовать ее в СПЕКТР. Нужно сделать максимально маленький и простой проект, но главное с ПЛИС вывести спектр на 2й ЦАП и на осциллограф. Может кто подскажет хорошую книгу, или есть готовые решения, но с хорошим описанием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Icedevil777228 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба В книге Тарасова Потехина: Разработка систем цифровых сигналов на база ПЛИС на 73 странице описывается самый простой алгоритм, что я нашел, но без объяснения многих вещей. С сумматорами (DD8,DD9), умножителями(DD6 DD7) и сo cчетчиком(DD1) все понятно в книги даже приведены их VHDl коды. Помогите разобраться с DD2 DD3 на них нету кодов, их описывают как ПЗУ в которых хранятся таблици косинусов(DD2) и синусов(DD3) . Еще в книге даны эти графики в качестве подсказки, но почему то для sin отдельного графика нет. И теперь вопросы: 1 Как можно умножая на значения Сos и Sin получить спектр сигнала? 2 Я рассматривал много примеров, везде говорилось об операции "бабчока" это она и есть или как? 3 В источниках пишут БПФ по 8 / 16 / 64 /1024 точкам а у нас то что? 4 Подскажите как все - таки написать блоки DD2 DD3 5 Допустим я сделаю блоки DD2 DD3 мне нужно выход реальный выход сумматора подать на ЦАП и я сразу получу спектр синусоиды которая идет с АЦП ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Почему не хотите взять IP Core от альтеры, которая с квартусом идет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Icedevil777228 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Just now, Burenkov said: Почему не хотите взять IP Core от альтеры, которая с квартусом идет? Она платная. У меня все проекты в версии 13.1. Знаете как взломать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Работайте на Xilinx = корка БПФ БЕСПЛАТНАЯ :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Цитата Еще в книге даны эти графики в качестве подсказки, но почему то для sin отдельного графика нет. Потому что синус этот тот же косинус только сдвинутый. Цитата 1 Как можно умножая на значения Сos и Sin получить спектр сигнала? Вообще то спектр это и есть разложение сигнала на синусы и косинусы. Цитата 2 Я рассматривал много примеров, везде говорилось об операции "бабчока" это она и есть или как? Гугл выдаёт первой же ссылкой: https://ru.wikipedia.org/wiki/Бабочка_(БПФ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба у Капитанова есть несколько открытых реализаций, но под Xilinx https://github.com/capitanov?tab=repositories Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба 17 hours ago, Icedevil777228 said: 1 Как можно умножая на значения Сos и Sin получить спектр сигнала? Вы бы сначала разобрались, что такое БПФ, как оно работает и для чего надо. Реализовали бы его в лоб на Matlab, потом реализовали бы Бабочку на Matlab. А там глядишь и таких вопросов не осталось бы. А то очень странно видеть вопросы по базовому курсу РТЦ в разделе ПЛИС работаем с ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Tpeck Вы бы сначала разобрались, что такое БПФ, как оно работает и для чего надо. Реализовали бы его в лоб на Matlab, потом реализовали бы Бабочку на Matlab. Более того там в симулинке и FFT корка синтезируемая есть. Свою нарисовать можно, просимулировать в подходящем для ЦОС окружении, автоматом в VHDL перевести. Разбираться с FFT на HDL и в HDL симуляторах - более непригодного варианта не найти наверное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Icedevil777228 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 (изменено) · Жалоба On 11/23/2018 at 11:45 AM, MegaVolt said: Всем спасибо, за наводки я разобрался и сделал свой блок БПФ, теперь мне предстоит сделать блок БПФ, работающий в режиме реального времени например на 32768 точек. Я осознаю, что такой блок мне не написать руками, поэтому собираюсь использовать готовые ядра в Квартусе! Чем отличается ядро FFT в старых версиях, который находится в мега функциях от того что в Qsys? Есть версии Квартуса, где можно ркально реализовать блок FFT без лицензии в Web Edition? Вообще кто в каких версиях делал блок FFT и какие семейства ПЛИС использовал? У меня версия 13.1 но ядро не компелируется, процесс компиляции зависает, даже во взломанной версии (отдельное спасибо Burenkov за таблетку), так же зависает Fir Compiler. У меня два предположения почему зависает на моменте Generating Megacor function top-level это использование 32 битной WIN7 или я выбираю кристалл ПЛИС в котором невозможно генерировать ядро. В Квартусе 9.1 компелируется, но в железо не зашивается требует лицензию. Главный вопрос что бы бесплатно реализовать FFT в какой либо версии Квартуса его обязательно нужно взломать или нет? Есть смысл использовать Qsys ? Ну и кто нибудь сталкивался с процессом зависания ? Изменено 3 декабря, 2018 пользователем Icedevil777228 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 4 декабря, 2018 Опубликовано 4 декабря, 2018 · Жалоба 16 hours ago, Icedevil777228 said: процесс компиляции зависает Можно написать конструкцию, которая формально синтезируема (т.е. при проверке синтаксиса ошибок не находится), но во время компиляции (т.е. синтеза реальной схемы) зацикливается - получаем зависон. У Вас когда это происходит - на этапе синтеза? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Icedevil777228 0 4 декабря, 2018 Опубликовано 4 декабря, 2018 · Жалоба 2 hours ago, Yuri124 said: У Вас когда это происходит - на этапе синтеза? Зависает на моменте Generating Megacor function top-level. Еще в интернете советуют в диспетчере задач удалить процесс quartus map , тогда программа отвисает, ядро "типа" компелируется, но сам блок ядра в схемотехническом редакторе не появляется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sallador 0 4 декабря, 2018 Опубликовано 4 декабря, 2018 · Жалоба О! Тут уже давали на мой гитхаб ссылку. В общем, если коротко - у меня почти платформонезависимая корка БПФ на любую длину. Radix-2 и 2-х параллелизм. Можно заменить узлы, где делается умножение и сложение на DSP48 узлах Xilinx на то, что есть в альтере - и оно заработает (главное задержки такие же соблюсти). Или тупо переписать код влоб, типа: X_RE = A_RE * W_RE - A_IM * W_IM; X_IM = A_RE * W_IM + A_IM * W_RE; Разумеется, эти операции лучше разбить на несколько стадий. И дать синтезатору указание разводить это не на логике, а на встроенных узлах DSP. Если АЦП не очень скоростная, то двухкратный параллелизм - избыточен. В таком случае нужно делать БПФ по схеме single path delay feedback - оно проще и легче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Icedevil777228 0 5 декабря, 2018 Опубликовано 5 декабря, 2018 · Жалоба Вообщем последний вопрос можно закрыть! Я выкинул свой старый комп с 32 win 7 , взял поновее поставил современную версию Quartus 17.0, взломал ее. Зашел в Qsys сгенерировал блок FFT. Прошу прощение за мою назойливость, но мне нужно как можно быстрее развиться в данном вопросе! Напишите в Лс, кто авторитарен в вопросах работы с ядром FFT. Вообщем у этого ядра много входов и выходов которые мне ненужны. Я видел проекты где блоки FFT имеют свои блоки управления, которые им разрешают работать в определенные моменты времени, а так же на выходе процессоры, которые обрабатывают информацию, н омне для начала нужно сделать элементарный проект. Как мне сделать простой проект, где будет генератор синусоиды, который выдает например двоичный 12 битный прямой код за 32 отсчета. Вот, например, 5 точек из 32 в десятичной системе [2047 - 4095 - 2047 - 0 - 2047]. Я правильно понимаю код с синусоиды нужно подавать sink_real ? Что с остальными входными и выходными портами делать, какие из них нужно на 0, какие на 1 или может вообще не трогать? ? На выходе ожидаю получить нечто подобное: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 5 декабря, 2018 Опубликовано 5 декабря, 2018 · Жалоба Вы каким симулятором пользуетесь? ..симулятор обязателен иначе никогда не разберётесь. В приложении генератор синуса из ActiveHDl , правда 8-мибитный , вам придётся сдвинуть вверх на 4-ре бита . Ну или оставить как есть. Подавать можно как на real так и на imag , так и на оба вместе. На входы вашей БПФ корки надо что-то подать чтобы симуляция была адекватная на сигналы типа valid и ready - 1'b1 на error - 2'b00 . gen_cos_tb.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться