PDA

Просмотр полной версии : AY/YM: Назначение бита CONTINUE в генераторе огибающей



KP580BM80A
05.11.2010, 01:00
Привет всем знатокам AY/YM чипа.
Как известно из datasheet, генератор огибающей этого чипа может генерировать 10 разных видов огибающей в зависимости от содержания регистра Envelope Shape/Cycle Control Register (RD):

b3 b2 b1 b0

00xx \___
01xx /___
1000 \\\\\
1001 \___
1010 \/\/\
1011 \----
1100 //////
1101 /----
1110 /\/\/
1111 /___

b3 - continue
b2 - attack
b1 - alternate
b0 - hold

Исходя из рисунка в даташите, форма огибающей с кодом 00xx идентична 1001, а 01xx -- идентична 1111.

Но нет ли тут подвоха? Зачем инженерам понадобилось вводить дополнительный бит CONTINUE, когда можно было бы обойтись 3-мя?

Если следовать из логики названия, то при записи в регистр RD значения с CONTINUE=0 должен происходить сброс уровня огибающей до значения 0 или 15 (в зависимости от бита ATTACK). А при записи значения с CONTINUE=1 генерация огибающей должна продолжаться от текущего уровня.

Так ли это на самом деле или все таки никакой разницы нету?

Ramiros
05.11.2010, 16:25
Если следовать твоей логике, то для каждого значения бита CONTINUE (при неизменных остальных битах) должна быть одна и таже форма огибающей, но судя по таблице этого нет, так что скорее всего твое предположение неверно... но на 100% тут наверное никто неуверен, нужно проверять на реале.

Если ты заметил только с CONTINUE=1 возможно циклическое повторение формы, мне кажется этот бит отвечает за повторяемость, а биты ALTERNATE и HOLD уже задают режимы этой повторяемости.

KP580BM80A
05.11.2010, 17:10
Как раз за повторяемость отвечает бит b0 HOLD. Когда он равен 0, огибающая циклически повторяется.

Ramiros
05.11.2010, 18:07
Тогда почему она неповторяется с кодами 0..7 ?

KP580BM80A
05.11.2010, 23:57
Ну как бы и бит ALTERNATE в диапазоне кодов 0..7 начисто игнорируется.

Ramiros
06.11.2010, 11:07
Я и говорю о том что бит CONTINUE включает режим "продолжения" волны, а биты ALTERNATE и HOLD уже задают форму этого продолжения.

KP580BM80A
21.11.2010, 22:48
Тему можно закрывать, нашел вменяемое описание битов:

Hold
when set to logic “1”, limits the envelope to one cycle,
holding the last count of the envelope counter (E3--
E0=0000 or 1111, depending on whether the envelope
counter was in a count-down or count-up mode, respec-
tively).

Alternate
when set to logic “1”, the envelope counter reverses
count direction (up-down) after each cycle.
NOTE: When both the Hold bit and the Alternate bit are ones, the
envelope counter is reset to its initial count before holding.

Attack
when set to logic “1": the envelope counter will count up
(attack) from E3 E2 E1 E0=0000 to E3 E2 E1 E0=1111;
when set to logic “0”, the envelope counter will count
down (decay) from 1111 to 0000.

Continue
when set to logic “1”, the cycle pattern will be as defined
by the Hold bit;
when set to logic “0”, the envelope
generator will reset to 0000 after one cycle and hold at
that count.

Версия Ramiros is TRUE.