LFO
Low-frequency counter (LFO) или Frame Counter - это специальный таймер внутри APU, который по определению работает на сравнительно низкой частоте, приближенной к кадровой частоте PPU.
Назначение этого устройства заключается в снабжении программиста инструментом для добавления периодичных действий в игровую программу, повторяющихся примерно каждый кадр.
Возможности LFO:
- Режимы работы PAL/NTSC
- Генерирование прерывания
- Также используется для тактирования остальных тональных генераторов APU
- Формирование внутреннего тактового сигнала ACLK (APU CLK), на базе тактовой частоты 6502 CPU
Сейчас мы разберём схему (не помню какой по счёту раз )
Программная модель
Управляется LFO регистром 4017 (write-only):
- 4017.6 : маскирует прерывание от LFO (1-LFO interrupt disable, 0-enable)
- 4017.7 : Запись в этот бит выбирает режим NTSC/PAL (0/1).
Разряд регистра 4015.6 содержит статус прерывания. Как очищается статус прерывания пока хз.
Аппаратный интерфейс
- PHI: на самом деле представлен двумя линиями PHI1/PHI2, те самые, которые выходят наружу из ядра 6502. PHI1 - это низкий уровень CLK, а PHI2 - высокий.
- ACLK: также на самом деле 2 линии, соответствующие двум полутактам: /ACLK - соответствует PHI1, ACLK - соответствует PHI2.
- /R4015 и W4017 : приходят из селектора регистров при чтении 4015 и записи в 4017 регистры соответственно
- D6 и D7 : 6й и 7й биты внутренней шины данных
- /LFO1 и /LFO2 : выходные низкочастотные сигналы
- LFOINT : прерывание от LFO
- RES : внутренний сигнал сброса (получается из контакта /RES)
Схема генерации ACLK
Изначально схема предполагалась такой:
То есть во время сброса (/RES=0) все внутренние схемы APU (кроме ядра 6502) бездействуют (ACLK не тактируется). Но по какой-то причине от этого решения отказались и добавили небольшую заплаточку (скорее всего потому что внутренний сигнал RES идёт в прямой логике, а для задуманной схемы нужна инверсная, такая же, как на контакте /RES):
Которая всегда игнорирует факт сброса и схема работает в обычном режиме:
/ACLK = PHI1 ACLK = PHI2
Два D-latch которые присутствуют в схеме возможно предполагалось использовать как дополнительный делитель для тактового сигнала ACLK, от которого также отказались. Таким образом все тональные генераторы и прочие устройства APU работают на тактовой частоте ядра 6502 (PHI).