3.1 - VCA

ПЛИС управляемый модуль VCA. Управляющий сигнал с ПЛИС - ШИМ сигнал. Работа модуля основывается на базе ДАУ, состоит из аналогового ключа и ФНЧ.

Схема - отправная точка:

http://sound.westhost.com/articles/vca-techniques.html

Figure 11 - Conceptual PWM VCA

While it's easy to simulate the circuit, realisation in practice is less easy. If the opamp used for the low-pass filter doesn't have adequate gain at the switching frequency the filtering will be poor and distortion higher than expected, so it requires extremely fast opamps or passive inductor/ capacitor filters. In addition, the PWM signal requires a fast comparator to get the required variable duty-cycle switching waveform. Even small amounts of amplitude drift in the comparator or oscillator circuits will cause comparatively large level changes. This isn't a problem with a compressor/ limiter, because it will self-correct, but if used as a volume control (for example) any drift will cause the level to change.

Needless to say, a fully digital pulse generator will solve this problem neatly, but requires either a fast microcontroller (at least 10MHz for 0.5% duty cycle resolution at 50kHz output) or a fairly large number of discrete logic ICs. It is unlikely that any digital pulse generator will be fast enough for a peak limiter, especially if an attack time of less than a few milliseconds is desired.

PWM has only been used by a small number of manufacturers, and I've been unable to find out why it's not more popular. While there are some very obvious reasons (circuit complexity compared to a plug-and-play VCA chip for example), it is a technique that has some appeal because of the almost complete freedom from distortion - other than that created by the CMOS switch. From looking over datasheets, some of the better dedicated VCA ICs are likely to have lower distortion than a CMOS switch, and are both cheaper and a great deal less complex overall. I think I just answered my own question

Схема на комплиментарных транзисторах

схема в мультисиме

https://vk.com/doc-93602802_437185102?hash=5193299665c01f5c62&dl=dc1970144330ce5dc0

Схема на компараторе + триггер шмитта + 1Ключ в качестве VCA

Все просто: компаратор lm339 запитывается от двухполярного напряжения -5..+5 и на него подается сигнал 0..3.5 от ПЛИС. Получаем двухполярный почти меандр. Чтобы это исправить, подаем его на триггер шмитта 4093. После этого, меандр подается на ключ, запитанный тоже двухполярно. Вместо пары компаратор+триггер шмитта, можно применить CD4054 (561УМ1), если ее суметь где-то найти. Основная борьба велась с появлением кликов, которые появлялись на границе между двумя нотами.

При программном VCA в цифвровом виде, такой картины не наблюдается. Было перерыто много информации, выяснилось очень много интересного, например по поводу заземления входа в CD4066 и не заземлении в HEF4066 и прочие байки (например на английском, чью беседу я понял так, что якобы входной сигнал влияет на переключение ключа http://www.electronicspoint.com/threads/simple-pwm-volume-controller-could-it-work.163080/). Однако, ограничительные резисторы не помешали, однако я решил попробовать использовать всего один ключ, вместо двух (при этом решились возможные проблемы наложения/соотношения фаз переключения ключей).

Схема практически такая, только подавать сигнал на ключи нужно не прямо, а через 4093 (в симуляции почему-то не работает). У КТ3 и 4066 нога 1 - это вход, 2 - выход.

https://github.com/UA3MQJ/fpga-synth/raw/master/schemes/VCA/VCA_3.ms13

А проблему с кликами решил программно (в старых windows при регулировке уровня в микшере раньше были слышны щелчки). Дело в том, что мгновенно ничего не происходит, а при закрытии ключа между нотами, он резко закорачивал выход и получался клик. Чтобы этого не происходило, модуль ШИМ, который управляет ключами был скорректирован таким образом, что изменение выходного значения, с которым сравнивается счетчик происходит только в нолевом значении (то есть, не быстрее частоты дискретизации ШИМ). И во вторых, за каждый такт дискретизации, значение вывода ШИМ по одному шагу приближалось к установленному значению (а не мгновенно). Для вывода звука такой алгоритм не подойдет, а для управления огибающей скорость будет достаточной (195000 Гц / 256 = 762 Гц).

ФНЧ

После VCA нужен ФНЧ - см 4.05.2 - Симм. сигнала ОУ

VCA для сигнала, симметричного 1/2 питания

Схема на компараторе (дает тоже не идеальный меандр).

При проверке схемы на транзисторах (см ниже), выяснилось, что форма сигналов меня не устраивает (верхняя часть меандра не получилась квадратной). В общем было решено использовать ОУ. Было предложение применять MAX232, но жирно, как мне кажется. К тому же 1 корпус - 2 канала, обратка не будет использоваться. Плюс надо делать инвертор. А вот на ОУ вопрос инвертора решается проще. Вообще размышления об ОУ перешли к тому, что надо использовать переусиление, но у меня не rail2rail ОУ, поэтому при питании +-5 до упора их загнать не удастся. К тому же насыщение и неизвестно, будет ли оно работать на 200 КГц. Потом я прочитал статейку про вред от применения ОУ, как компаратора, потому что ОУ по природе линейный и работать должен с обратными связями. В противовес к ним, компараторы как раз для этого и предназначены. К тому же, поменяв входы компаратора местами, мы получаем инверсию сигнала (не потребуется элемент НЕ). Поискав, нашелся ширпотреб LM339, который у меня даже остался от разборки ИБП. В общем, результат похож на дело. Надо пробовать работать с ключами.

схема Multisim

https://github.com/UA3MQJ/fpga-synth/blob/master/schemes/VCA/VCA_2.ms13

Схема на транзисторах. В железе не понравилась форма сигнала.

Симулируем

Сырки под Multisim

https://github.com/UA3MQJ/fpga-synth/raw/master/schemes/VCA/VCA.ms13