Показать сообщение отдельно
Старый 18.04.2012, 06:06   #92
SOVA
Старейшина
 
Аватар для SOVA
 
Регистрация: 21.09.2007
Адрес: Киев
Возраст: 56
Сообщений: 1,446
Вы сказали Спасибо: 128
Поблагодарили 422 раз(а) в 191 сообщениях
Репутация: 628
По умолчанию Re: Индивидуальный процессор временных задержек

Немного про задержки.
Во время работы над блоком я столкнулся с проблемой разных тактовых частот и одинаковой задержки.
Если проще, то вот, например, нам нужна задержка сигнала 1 мс. Причём мы не знаем заранее, с какой частотой идёт передача сигнала. Как сделать так, чтобы задержка была 1 мс при передаче на любой частоте? Ведь при частоте передачи 32кГц это будет одно количество тактов, 44.1 кГц - другое, 48кГц - третье, 96кГц - четвёртое.

Я нашёл следующий выход из положения:
Временные задержки задаются не количеством тактовых сигналов, а прямым заданием временного интервала.

Как это работает.
Нам нужна задержка, скажем 1 мс. Есть независимый генератор с постоянной частотой. К нему подключён счётчик, в который заносится величина времени задержки. На выходе счётчика получаем импульс с длительностью нашей 1 мс. Начало импульса запускает второй счётчик входного тактового сигнала. Конец импульса его останавливает. Получился своеобразный частотомер. Во втором счётчике хранится количество импульсов входного сигнала, нужное для задержки на 1 мс. Причём независимо от того, с какой частотой передаётся входной сигнал. Поэтому величина задержки всегда кратна количеству отсчётов входного сигнала и с точностью до одного такта соответствует желаемой задержке. Независимо от частоты передачи звукового сигнала.
SOVA вне форума   Ответить с цитированием Вверх