Понял, перекрытие по частоте ШИМом - не подойдет, шаг перестройки будет мал.
[DOUBLEPOST=1446404548,1444302697][/DOUBLEPOST]Подружил ПЛИС и микросхему звукового генератора Yamaha YM2149f (аналог AY-3-8910 производства General Instruments), которые ставятся на 8-битный компьютер ZX Spectrum.
Внутреннее устройство звукового генератора очень простое. Он состоит из:
- трех генераторов меандра, частота которых задается регистрами R0-R5, по паре регистров для каналов А, В, С.
- одного генератора шума, частота которого задается регистром R6
- микшера-коммутатора (R7), с помощью которого в каждый канал может быть подан либо меандр, либо сигнал шума, либо оба сразу. Есть еще четвертый вариант, о котором будет ниже
- генератора огибающей (RB, RC, RD)
- регистров настройки DCA.
Как видим, у нас имеется три канала генерации сигналов, в каждый из которых мы можем пустить тон, тон+шум или шум. Генератор шума один на всех.
Генератор огибающей тоже один на всех. Уровень сигнала каждого канала может быть задан либо своим фиксированным значением, либо уровень сигнала будет зависеть от значения огибающей.
Есть еще один режим работы канала, когда в канале выключен и ТОН и ШУМ, то на выход идет единичная амплитуда. При этом выходной DCA работает, как ЦАП (вернее это и есть ЦАП). Особенность ЦАПа в том, что он имеет логарифмическую зависимость. Наличие ЦАП позволяет с определенной точностью генерировать формы волны, отличные от меандра, и даже выводить семплы.
Блок-схему генератора я изобразил на рисунке
Соединил ПЛИС и YM. Еще пришлось собрать генератор на 1.75 МГц.
Сейчас занимаюсь только "программированием" ПЛИС.
Сначала сделал чистые тона, без регулировки амплитуды
Сегодня добавил ADSR