febb: (Default)
[personal profile] febb
Как говорится, вшивый всё про баню. Тут текст в общем-то для себя...
Философский момент, который меня поражает больше всего:
у всякой проблемы можно найти решение...

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

Передача по одному проводу с RC цепочками немного напоминает
искусство из 60-х прошлого века с "линиями задержки" и даже памяти на них.
Цифровая память в виде сигнала бегающего по кругу.
Тоже гениальное изобретение доцифровой эпохи.

Основное преимущество цифровых технологий в том, что все смертно, кроме
цифр и математики. Вечность существует, даже если наша Вселенная не вечна...
Что с ней происходит на голографической поверхности "черных дыр"?..

Так вот как сигнал на одном проводе формирует сигнал на трех ножках
shift register 74HC595: clock, data и output latch.

Основной сигнал clock сидит на основном канале. Но поскольку
никаких требований к его временным характеристикам нет, то сигналы
на остальные каналы формируются динамически с помощью RC цепочек, которые
тоже напоминают технологии 60-х - динамическая аналоговая память.

На канале Data единица кодируется с помощью задержки и накоплению заряда в первой
RC-цепочке, а ноль соответственно задержкой и разрядом.

Но интересный момент возникает - как еще эффективно закодировать сигнал
для третьего канала - Output latch?

Data кодируется только в моменты, когда на основном канале 1
или в момент перехода 1 -> 0.
Потому, что в этот момент можно менять Data. Так собственно устроен
data/clock протокол.

Так вот третий канал формируется второй RC цепочкой, когда
сигнал 1 продолжительное время ее заряжает до срабатывания.
Но проблема в том, что в то время пока ты суетишься передавая
clock-data - 8 битов, заряд на этой цепочке тоже растет.
Поэтому приходится ее замедлять, а значит и скорость
всего процесса. Получается, что полезная информация передается всего 10%
времени. Что как-то обидно.

Причем если использовать много регистров и передавать не 8, а 16, 24
и больше битов данных ситуация только ухудшается.
Оказывается есть интересный выход из этого тупика -
добавить один диод для автоматической разрядки конденсатора
последней цепочки и поддержания его на низком уровне пока идет передача данных.
А когда она закончилась, заряд можно подтянуть за время всего в 2-3
раза большее, чем время формирования одного бита для data.

Получается даже для 8 битов эффективность подскакивает
с 10% до 70%, т.е. в 7 раз, а для 16 бит и того больше.

Ради чего я с этим повозился - чтобы опять удивиться,
что для каждой проблемы есть решение!..

Profile

febb: (Default)
febb

March 2022

S M T W T F S
  1 2 345
6 7 89 101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 10th, 2026 02:30 pm
Powered by Dreamwidth Studios