Синтезатор на ПЛИС

  • Автор темы Автор темы UA3MQJ
  • Дата начала Дата начала

UA3MQJ

New Member
4 Окт 2015
9
8
3
42
Rybinsk
vk.com
Общий привет!
В целях изучения ПЛИС и своей любви к синтезу, решил опробовать ПЛИС в качестве платформы для создания аудио-музыкальных устройств.

Предлагаю обсуждение вести в этой теме.
 
Гибрид аля Корг ДВ8000, с разными волнами.
Верно. Для начала решил гибрид. Оптимально по сложности. Дальше можно развиваться в чистую цифру и аналог.

Я делал в 96г по такой схеме управление фильтром, мне не понравилось, на нижнем диапазоне фильтра оно криво работало, да и наводки от клока кмоп ключей вроде были. Я к561кт3 использовал.
Печально. Я пока фильтр не сделал, так что ничего не могу сказать. Буду надеяться, что благодаря ПЛИС можно будет использовать более высокие частоты переключений и наводок удастся избежать.

...из мастерклока генерят частоты нот с помощью программируемого счетчика, а потом вейвшейпером на основе интегратора делают аналоговую пилу.... Это принцип классического ДЦО осц.
Спасибо за подсказку, надо проработать этот момент, а то у меня какой-то застой в разработке.

алиазинг будет на пиле на верхних нотах, нужно "скруглить" зубья пилы с ростом частоты, что бы меньше ВЧ было и как следствие меньший уровень алиасинга, ну это я так грубо.
При какой разрядности и частоте дискретизации? Скруглять надо - согласен. Считаю, что при частоте дискретизации выше ФНЧ антиалиасингово фильтра, ступеньки будут скругляться. Не? Каким образом будем скруглять?

В видео на голой пиле и квадрате нч шум как от алиасинга.
Я не представляю, как звучит алиасинг, помогите разобраться. Среди причин еще может быть тип примененного ЦАП - это ШИМ на частоте 195 КГц, разрядность - 8 бит. Восьмибитность может добавить по полной. Это в принципе, тестовый вариант, есть еще возможность применить сигма-дельта ЦАП.
[DOUBLEPOST=1444245920,1444245812][/DOUBLEPOST]
@UA3MQJ - Я правильно понял смысл Вашего никнэйма?
Все верно - это позывной ;)
 
  • Like
Реакции: Arlekin
UA3MQJ,этот ответ из другой темы
-- Это ответ из другого района :)

Антилиазинговые фильтры - просто обязательны. Разрядность тут в принципе не при чём.
Звуковой сигнал - обрезать как максимум на 20 кГц, и очень круто.
Далее.
Фильтры на ШИМ - не очень легки в практической реализации.
Не забываем, что частота переключения ключей должна быть как минимум вдвое выше
максимальной частоты сигнала. (Найквист, никуда от него не деться! :) )
40 кГц - период 25 мкс. Перекрытие фильтра - 1000 раз. (Звуковой диапазон).
Если управление - ШИМ, то на нижней частоте длина импульса открытия ключей - 25 нс.
Это уже не КТ3, а видеокоммутаторы. Да и ШИМ-генератор с таким перекрытием - тоже не подарок.
Если управление - частота, то опять же перекрытие генератора - от 40 кГц до 40 мГц.
Что тоже явно не подарочек. :)
И плюс к этому - нужны ещё и весьма быстродействующие ОУ, чтобы они сами не "засрались"
от тактового мусора на таких высоких частотах.
В общем, намучаетесь от души! :oops:
 
Антилиазинговые фильтры - просто обязательны. Разрядность тут в принципе не при чём.
Звуковой сигнал - обрезать как максимум на 20 кГц, и очень круто.
Применяется.

Да и ШИМ-генератор с таким перекрытием - тоже не подарок.
На ПЛИСе это не проблема. У рядового циклона, что у меня в наличии, потолок - 240 МГц. Даже видео сигнал сформировать не проблема, не то что ШИМ. Тут скорее как раз ключи не справятся.
Сейчас применяю клок 50 МГц, при 8 битном ШИМ это получается 50000000 / 256 = 195312,5 Гц.

Да и ШИМ-генератор с таким перекрытием - тоже не подарок.
Перекрытие? Частота одна, процент заполнения меняется с шагом, в зависимости от разрядности. Перекрытие чего?

Если управление - частота, то опять же перекрытие генератора - от 40 кГц до 40 мГц.
Что тоже явно не подарочек. :)
Можно применить DDS. Я пробовал, статью написал. Но у меня подходящего осциллографа нет. К тому же, можно, к примеру, диапазоны фильтра переключать, либо что-то еще придумать. Микросхемы DDS от AD.

И плюс к этому - нужны ещё и весьма быстродействующие ОУ, чтобы они сами не "засрались"
от тактового мусора на таких высоких частотах.
Нужны, а почему на них надо экономить? Люди вон провода по 100500 рублей покупают. К тому же самую сложную работу может выполнить пассивный фильтр, а остальное уже дорезать на ОУ.

В общем, намучаетесь от души! :oops:
Очень на это надеюсь. А то скукота, автоВАЗ продал, занять себя теперь нечем.
 
  • Like
Реакции: Greenhouse
Перекрытие чего?
-- Перекрытие по частоте. Ну, или иначе - диапазон перестройки фильтра. Три порядка таки! :(
"Пассивный фильтр" в ключевых регулируемых элементах - фикция. Скоростной ОУ просто обязателен.
 
Понял, перекрытие по частоте ШИМом - не подойдет, шаг перестройки будет мал.
[DOUBLEPOST=1446404548,1444302697][/DOUBLEPOST]Подружил ПЛИС и микросхему звукового генератора Yamaha YM2149f (аналог AY-3-8910 производства General Instruments), которые ставятся на 8-битный компьютер ZX Spectrum.

XNBFMLkpvFo.jpg


Внутреннее устройство звукового генератора очень простое. Он состоит из:
- трех генераторов меандра, частота которых задается регистрами R0-R5, по паре регистров для каналов А, В, С.
- одного генератора шума, частота которого задается регистром R6
- микшера-коммутатора (R7), с помощью которого в каждый канал может быть подан либо меандр, либо сигнал шума, либо оба сразу. Есть еще четвертый вариант, о котором будет ниже
- генератора огибающей (RB, RC, RD)
- регистров настройки DCA.

Как видим, у нас имеется три канала генерации сигналов, в каждый из которых мы можем пустить тон, тон+шум или шум. Генератор шума один на всех.

Генератор огибающей тоже один на всех. Уровень сигнала каждого канала может быть задан либо своим фиксированным значением, либо уровень сигнала будет зависеть от значения огибающей.

Есть еще один режим работы канала, когда в канале выключен и ТОН и ШУМ, то на выход идет единичная амплитуда. При этом выходной DCA работает, как ЦАП (вернее это и есть ЦАП). Особенность ЦАПа в том, что он имеет логарифмическую зависимость. Наличие ЦАП позволяет с определенной точностью генерировать формы волны, отличные от меандра, и даже выводить семплы.

Блок-схему генератора я изобразил на рисунке

6UbnNw_DWAk.jpg


Соединил ПЛИС и YM. Еще пришлось собрать генератор на 1.75 МГц.

6PPZUMb-yGU.jpg


Сейчас занимаюсь только "программированием" ПЛИС.

Сначала сделал чистые тона, без регулировки амплитуды

Сегодня добавил ADSR
 
Зачем там ПЛИС?
Там 8-ми битного микроконтроллера Z80 хватало с головой, который успевал кроме того еще и все остальное делать, включая вывод графики на экран.
 
  • Like
Реакции: Gregory
Мне чего-то тоже идея пока не ясна... :rolleyes:
Видимо, я совсем мимо аудитории форума.

Но все же, хоть и писал выше, поясню. Я решил использовать ПЛИС в качестве универсальной платформы для создания midi инструментов. Ну то есть для случая с YM2149f хватило бы 8 битного контроллера. Для других задач его бы не хватило, пришлось бы брать другой контроллер. Изучать его и писать все заново уже под него.

В моем случае получается набор блоков и подходов к разработке. Блоки я разрабатываю один раз и так, чтобы потом их уже не трогать. Складываю их в "библиотеку" и, при необходимости, беру нужные и из них собираю проект. Вот пример: модуль декодирования сигналов МИДИ, модуль ADSR, модуль приема и сохранения CC команд, и т.д. Когда я делал электроорганчик, я взял модуль миди, модуль для СС, а для вывода модуль ШИМ ЦАП. Разрабатывал только часть генерации 128 меандров и коммутацию их, с учетом регистрового синтеза. В случае с YM2149f, мне пришлось разработать только часть, которая занимается обменом с ней и часть, которая преобразует миди команда в значения регистров YM2149f. Все остальное: прием миди команд, adsr, CC, дальше еще можно будет отработать velocity и LFO, взяв это все из уже готового. Использовать готовые блоки очень удобно. Электроорган получился за два дня. Этот некий чиптюн синт получился тоже за 2 дня. Какой еще толк? Проект написан на Verilog и легко может быть перенесен между разными моделями ПЛИС (перенести код с z80 на AVR так не получится).
 
  • Like
Реакции: кактус
@UA3MQJ, а что еще сопроцессоры YM2149f Ямаха выпускают??? :eek: Где то в гараже еще 3 Спектрума с такой радостью лежат... какое было веселое время!
Плохо что по поводу ПЛИС ничего не соображаю, но одобряю! С такой идеей был человек на сайте Дифакторий. Как понял что то готовое уже есть, очень интересно что будет дальше.:)
 
Вот интересный проект на ПЛИС:

Двухслойный бутерброд, снизу Papilio Pro http://www.gadgetfactory.net/papilio/
А сверху шилд: http://www.gadgetfactory.net/retrocade-megawing/

Недостатки - встроенная рулёжка никакая, плюс совершенно уродский мини-джойстик.
По идее поставить вменяемый clickable encoder и меню сделать для управления без подключения к компу.
[DOUBLEPOST=1452676941,1452676857][/DOUBLEPOST]В этом папильо Xilinx Spartan 6 LX стоит, развернуться есть где.
 
Как то все это через одно место, особенно с ямаховским сопроцом, он же никакой вообще. Почти все цифр синты создаются по принципу- управляющий микроконтроллер + плис для синтеза (сэмплеры, ромплеры, всинт и д.р) или ДСП вместо плис.
Лучше к плисине прикрутить сортех м3 или м4 с дисплеем и крутилками, а на плисине уже синтез делать, не отвлекая ее на миди и кнопки.
 

Сейчас просматривают