Сайт посвящен ПЭВМ АГАТ: Передовица » Hardware » Звуковое оборудование » Ячейка звукового синтеза 5/2

New: 01.08.2020

Форум

Общие сведения

Software

Hardware

Агат ↔ PC

Эмуляторы/утилиты

Люди

Макулатура

Всякая всячина

Ссылки

Контакты ✉

Помощь сайту

Ячейка звукового синтеза 5/2

Ячейка звукового синтеза. Пять тональных и два ударных канала. Программируемый таймер и параллельный порт ввода.

Этот экземпляр - не серийная версия, а переданная в Саратовскую государственную консерваторию ранняя. Серийная выглядела более симпатично, как ЯАВМИ. Разыскивается серийная версия!

Так как работу этого устройства объяснить без примеров неинтересно, мы записали видео о конструкции этой ячейки, где вы увидите: рассказ об архитектуре устройства и пример работы небольшой программки, в которой поотдельности показана работа каналов ячейки.

Пример демки (музыка и видео), разработанной авторами устройства - НКЛ.

* * *

Схема ЯЗС, выполненная в формате P-CAD и GERBERы для производства плат - скачать здесь. Благодарим Mick (http://micklab.ru/) за проделанную работу.

* * *

Устройство очень сложное для срисовывания, но это и одна из самых интересных агатовских железок. Нетипичная схема, построенная на дискретных элементах, более чем половина площади платы занята аналоговыми блоками. При срисовывании сложно делать какие-то самопроверки, характерные для цифровых схем (один выход всегда соединяется только со входами, любой вход должен быть куда-то подключен...). Так что высоко вероятны ошибки.

Конструкция

Состоит из следующих блоков:

  1. Два кр580ви53 - универсальные трехканальные таймер/счётчики. Пять счётчиков являются задающими для тональных каналов, один - для генерации IRQ процессора.
  2. Блок регистров на основе к555тм7 - SRAM, хранящая настройки каналов.
  3. Пять блоков коммутации тональных каналов - обеспечивают плавную атаку и передачу сигналов от таймеров/счётчиков на полосовые фильтры.
  4. Пассивные полосовые RC-фильтры - выделяют части спектра в тональных каналах.
  5. Генератор шума и генераторы ударных (группа из трех КМОП-микросхем) - образуют два ударных канала.
  6. Выходной усилитель-микшер (к157уд2 + кт602б) - суммирует сигналы от пяти тональных и двух ударных каналов и выдаёт результат на задний разъём.
  7. Блок триггеров на основе к555тм2 - управляет флагами прерываний, флагом разрешения работы счётчиков/таймеров и выдачей сигнала IRQ.
  8. Блок параллельного ввода (к555ап3) - позволяет считывать 8 бит с заднего разъёма.

Возможности

Блок параллельного ввода

Позволяет считывать 8 бит с заднего разъёма. К разъему подключалась специализированная музыкальная клавиатура.

Блок таймеров/счётчиков

кр580ви53 тактируется двумя источниками: с частотой 1.021 МГц (для тональных каналов) и 7980 Гц (для счётчика/таймера IRQ). Разрешение счёта для всех счётчиков одновременно может быть выдано или отозвано программно. Выход счётчиков/таймеров тональных каналов поступают на блок коммутации тональных каналов, выход счётчика/таймера IRQ - на блок управления IRQ. Чтение регистров счётчиков невозможно.

Блоки тональных и ударных каналов

Обрабатывают сигналы, поступающий с таймеров/счётчиков и генератора шума и, таким образом, формируют выходной звуковой сигнал. Блоки управляются программно, однако программно можно лишь менять их состояние, считывать состояние нельзя.

Блок прерываний

Позволяет программно запрещать и разрешать прерывания от счётчика/таймера и от внешних устройств (по сигналу, приходящему через задний разъём). Также позволяет программно читать состояние флагов, указывающих на источник прерывания. Сброс флагов IRQ программный ! (обработчик прерываний должен сам очистить флаги до своего завершения).

Блок усилителя-микшера

Формирует три вида выходных звуковых сигналов: "линейный выход" - 0.25 в, выход наушников (предположительно) - 0.10 в (повышенной мощности) и прямой выход (назначение неизвестно) - 0.10 в. Есть вероятность, что "линейный" выход имеет небольшой фазовый сдвиг, различающийся для разных частот. В этом случае, совместно с прямым выходом, они образуют два квази-стерео канала.

Адреса регистров

n - номер слота + 8, по умолчанию первый (многие программы не проверяют номер слота, полагая его первым):

Чтение:

  • Все регистры с битом адреса A2 = 0: внешний параллельный порт. Также эта операция сбрасывает флаг запроса прерываний от внешнего устройства. Такое сочетание косвенно указывает на то, что внешнее IRQ выставлялось тем же устройством, которое передавало данные через параллельный порт.
  • Все регистры с битом адреса A2 = 1: побитно: D7 = 0 - было прерывание от таймера/счётчика, D6 = 0 - было внешнее прерывание, D5 - текущее состояние входа внешнего прерывания. Остальные биты не используются и равны единице.
Важно: флаги прерываний считываются из CD/RS-триггеров. Причем линии сброса триггеров связаны с общесистемым сигналом RESET (т.е. будут сбрасываться при холодном старте машины и при нажатии УПР-СБР). Однако установка триггеров происходит по сочетанию двух сигналов: C-линия берётся от источника прерываний и D - от флага разрешения прерываний. Таким образом, при разрешенных прерываниях источник прерывания будет устанавливать флаг, при запрещенных - сбрасывать его.

Ещё раз: разрешили прерывания, источник (таймер или внешнее устройство) пискнуло - флаг взвёлся. Можно его сбросить программно после обработки события. Если не сбрасывать, а просто запретить прерывания, флаг останется взведённым. Но если источник сработает теперь вновь - флаг сбросится.

Запись:

  • C0n0..C0n3 - регистры первой ви53 (тональные каналы 1-3).
  • C0n4..C0n7 - регистры второй ви53 (тональные каналы 4-5, канал IRQ).
  • C0n0..C0n7 - запись в любой из этих регистров также сбрасывает флаг запроса прерываний от таймера.
  • C0n8..C0nC - управление блоками коммутации тональных каналов.
  • C0nD..C0nE - управление ударными каналами.
  • C0nF - управление блоком прерываний и разрешением счёта ви53.

Управление блоками коммутации тональных каналов (частотные диапазоны приведены приблизительно, по уровню 0.5):

  • D0 - выдача сигнала на ВЧ-канал (гармоники 1..4 КГц (верхняя частота определяется микшером)).
  • D1 - выдача сигнала на СЧ-канал (гармоники 0.200..1.5 КГц).
  • D2 - выдача сигнала на НЧ-канал (гармоники ..1 КГц).
  • D3 - НЧ фильтр (добавляет около 5дб на частотах до 600 Гц).
  • D4 - импульс уровня. При установке этого бита амплитуда резко возрастает, затем плавно спадает (около 0.5 секунды). При сбросе - резко снижается и затем плавно восстанавливается. Установленный бит даёт незначительное постоянное увеличение уровня сигнала.
  • D5 - включение канала. При установке этого бита амплитуда быстро возрастает (около 0.1 секунды) и сохраняется на высоком уровне. При сбросе также быстро уменьшается.
D5 & D4 = 0 или D0 = D1 = D2 = 0 дадут тишину в канале. Соотношение амплитуд при D5 != D4 не измерялось. D0-D3 влияют на звук без задержек.

Генератор ударных, канал 6:

  • D0 - частота 2.
  • D1 - частота 1.
  • D2 - частота 0, модуляция генератора шумом (при D2 = 0).
  • D3 - длительность.
  • D4 - пуск.
D0-D2 выбирают различные частоты задающего генератора (т.е. возможно 8 вариантов). Причём при D2 = 0 задающий генератор будет периодически дёргаться (слово "модуляция" тут как-то не очень уместно, IMHO) от генератора шума (на слух разницы почти нет). Кроме того, в канал, в любом случае, подмешивается шум (помимо задающего генератора).

Длительность (D3) меняет время звучания удара (примерно 0.5 секунды при D3 = 0 и 1.0 секунда при D3 = 1). Переключение бита D4 из 0 в 1 вызывает генерацию звука, атака резкая, спад постепенный. Если во время звучания сбросить бит - звук прекратится. Чтобы сгенерировать звук вновь, нужно сбросить D4 и подождать около секунды (вероятно даже меньше). Однако если предыдущее включение было кратковременным, то и время в нулевом состоянии можно сократить.

Генератор ударных, канал 7:

  • D0 - частота 1.
  • D1 - частота 2.
  • D3 - длительность.
  • D4 - пуск.
Управление практически совпадает с каналом 6, генератор шума подключен постоянно и дёргает основной генератор всегда.

Управление блоком прерываний:

  • D7 = 1 - запрет прерываний от таймера/счётчика, одновременно и запрет работы всех таймеров/счётчиков.
  • D6 = 1 - запрет прерываний от внешнего источника.

Неупомянутые биты во всех регистрах ни на что не влияют.

Распиновка заднего разъёма

А Б В
1 D0 +5в Ground
2 D1 Ground Звук без обработки
3 D2 Ground Ground
4 D3 Ground Линейный выход
5 D4 Ground Ground
6 D5 Ground Наушники
7 D6 Ground Not connect
8 D7 Ground Not connect
9 d7.11 вход IRQ Ground Not connect
10 d24.8 выход запроса данных Ground Not connect

Принципиальные схемы

Шинный интерфейс и блок управления прерываниями

Легенда:

Фиолетовый - контакты шинного интерфейса ПЭВМ (сверху номер ламели, снизу - обозначение сигнала).
Зелёный - внутренняя 8-битная шина данных ячейки.
Жёлтый - комментарии о сигналах и элементах.
Голубой - контакты кр580ви53 (сама микросхема на рисунке отсутствует), а также выходные сигналы дешифратора d17.
Синий - контакты заднего разъёма.

Обратите внимание, что !RD (на рисунке отсутствует) таймеров/счётчиков всегда подключены на 1, таким образом читать их регистры невозможно.

d8 включена довольно странно: сигнал, который нужно выдать на шину, подаётся на вход управления буфером, а на входе данных буфера висит !A2. Таким образом получается, что если какой-то из флагов IRQ взведён, буфер всегда выдаёт на шину значение !A2. При чтении регистра флагов это ещё логично: на входе данных буферов будет 0, при сброшенном флаге буфер включится и 0 попадёт на внутреннюю шину данных, при выключенном - группа резисторов подтянет шину к 1. Но при чтении внешнего параллельного порта получится, что при сброшенных флагах прерываний соответствующие буфера будут включены, на их входе данных будет 1 и эта единица будет конфликтовать с выходными сигналами d28.

Вероятно, это схемотехническая ошибка. Однако она требует, чтобы чтение параллельного порта происходило до сброса флагов прерывания, иначе возможно искажение двух старших бит.

Блок SRAM

Легенда:

Зелёный - внутренняя 8-битная шина данных ячейки.
Голубой - выходные сигналы дешифратора d17.
Красный - входы управления тональными генераторами и генераторами ударных.

Тут всё просто: когда d17 дрыгает одной из лап (во время выполнения процессором операции "запись" по адресам ячейки) одна из групп триггеров запоминает несколько младших бит шины данных. В дальнейшем эти биты заводятся в генераторы. Возникает вопрос: почему не были использованы вв55 или ещё куча разных регистров-защёлок с большей плотностью хранения ? Ну вот хотя бы тм9 ?

Генератор тактовых частот

Легенда:

Фиолетовый - контакты шинного интерфейса ПЭВМ (сверху номер ламели, снизу - обозначение сигнала).
Жёлтый - комментарии о сигналах и элементах.
Голубой - контакты кр580ви53 (сама микросхема на рисунке отсутствует), а также выходные сигналы регистра d30.

Точные значения частот, выдаваемые этими делителями, следующие:

    Кварц на материнке даёт 14.3 МГц, делим на 7, таким образом на вход делителей приходит 2.04 МГц
    Первая секция делит эту частоту на 2, таким образом тактирование счётчиков тональных каналов составляет 1.02 МГц
    Вторая секция делит эту частоту на 8, третья на 2, таким образом генератор шума получает 63.8 КГц
    Делим ещё на 8 и получаем 7.98 КГц на счётчике IRQ.
  

Генератор шума

Легенда:

Фиолетовый - контакты шинного интерфейса ПЭВМ (сверху номер ламели, снизу - обозначение сигнала).
Красный - входы шумового сигнала в генераторах ударных.

Блок коммутации тонального канала

Легенда:

Красный - входы управления (сигналы от блока SRAM), выход от таймера/счетчика и выходы на полосовые фильтры.

На ячейке пять таких блоков. Входы "ви53" соединяются с соответствующими выходами таймеров/счётчиков. Выходы на полосовые фильтры всех пяти ячеек соединены параллельно. Входы управления I.n подключаются к соответствующим выходам блока SRAM Gx.n, где x - номер канала. В качестве коммутаторов используются микросхемы к561кт3 (по одной на канал). В схеме изображены только их ключи с обозначениями номеров выводов (проверены только для одного из каналов).

Один из резисторов в одном из генераторов отличался от других. Возможно, это следствие ремонта ячейки, а может так и задумано. Это отличие слегка влияет на поведение канала при изменении бита D4 в регистре управления.

Полосовой фильтр

Легенда:

Красный - выходы блоков коммутации тональных каналов (сигналы со всех пяти блоков подключаются параллельно), а также вход финального усилителя-микшера.

Как видно, фильтр доволно простой, так что полосы имеют не очень четкие границы. Я пробовал оценить границы полос спектроанализатором по уровню 1/2, но не уверен, что эта оценка достаточно точная. Для фильтра ВЧ верх полосы указан как 4 КГц, однако по схеме видно, что сам по себе фильтр не ограничивает сигнал сверху: эта цифра, вероятно, получается из-за ограничений финального усилителя-микшера. Однако и его АЧХ не резко ограниченная, поэтому сигналы от генераторов шума на выходе ячейки вполне могут простираться до 10 КГц и выше.

Генератор ударных, канал 6

Легенда:

Красный - выход генератора шума, блока SRAM, а также вход финального усилителя-микшера.
Зелёный - номера микросхем-коммутаторов (к561кт3).

Обратите внимание: к561кт3 и некоторые другие аналоговые части схемы питаются от слегка фильтрованного напряжения +5в: именно на этой части схемы изображены резистор и конденсатор соответствующего фильтра.

Также внезапно: инверторы здесь - КМОП (к561лн2). Также и в канале 7.

Можно послушать примеры звучания этого генератора.

Генератор ударных, канал 7

Легенда:

Красный - выход генератора шума, блока SRAM, а также вход финального усилителя-микшера.
Зелёный - номера микросхем-коммутаторов (к561кт3).

Можно послушать примеры звучания этого генератора.

Усилитель-микшер

Легенда:

Красный - выход генераторов ударных и полосового фильтра тональных каналов.
Зелёный - внутренняя 8-битная шина данных ячейки.
Синий - контакты заднего разъёма.

Основан на сдвоенном операционном усилителе к157уд2. На входе получает сигнал от полосового фильтра и генераторов ударных (всё соединяется в одну точку без каких-либо делителей или согласователей), на выходе же имеется три версии сигнала: C4 - 0.1в, C6 - 0.1в (повышенной мощности), C2 - 0.25в.