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 бит и того больше.

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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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 08:52 am
Powered by Dreamwidth Studios