При работе с длинной цепочкой сдвиговых регистров скорость загрузки данных можно немного увеличить, если выделить каждому регистру собственные линии данных, при этом тактовые входы всех регистров будут подключены к выводу SCK. Также можно подключить входы данных всех регистров к одной-единственной линии данных и управлять регистрами с помощью отдельных сигналов разрешения. Последний способ использован в схеме, показанной на Рис. 12.7.
У нашей схемы, использующей сдвиговые регистры, есть один недостаток: значения, появляющиеся на выходах регистров во время их загрузки (в нашем случае в течение 23 тактовых импульсов), некорректны. Разумеется, в данном конкретном случае из-за инерционности зрения мы просто не заметим эти кратковременные изменения в свечении индикаторов. Однако иногда такое поведение схемы оказывается неприемлемым, поэтому к выходам сдвиговых регистров необходимо подключить буферы на D-триггерах или защелках. Загрузка содержимого регистров в эти буферы будет осуществляться после завершения передачи данных, в результате чего изображение на дисплее будет меняться только единожды.
Чтобы не использовать отдельные буферные регистры, в большинстве устройств, рассчитанных на последовательную передачу данных, имеется встроенный регистр с параллельным входом/выходом. В качестве примера можно привести микросхему 74НСТ595, изображенную на Рис. 12.3. Эта микросхема представляет собой стробируемый сдвиговый регистр, на выходе которого имеется встроенный 8-битный PIPO-регистр. По нарастающему фронту сигнала на выводе RCK (Register ClocK) содержимое сдвигового регистра выставляется на параллельные выходы. В микросхеме также выведен выход последнего триггера сдвигового регистра, что позволяет объединять эти регистры в цепочку любой длины. В этом случае на все выводы RCK может подаваться один и тот же стробирующий импульс для одновременного обновления выходов всех микросхем.
Примером ситуации, когда пульсации данных могут быть нежелательными, является преобразование цифровых данных в аналоговый сигнал. В схеме на Рис. 12.3 преобразование осуществляется с помощью микросхемы ЦАП DAC0800 фирмы National Semiconductor. Выходное налоговое напряжение является линейной функцией от 8-битного цифрового входа и изменяется от —9.96 В для входного значения Ь’00000000’ до +9.96 В для значения Ь’11111111’ (см. Рис. 14.17 на стр. 527).
Рис. 12.3.
Благодаря наличию регистра 74НСТ595 состояние входа ЦАП не меняется до тех пор, пока не будет загружен новый байт и микроконтроллер не сформирует на выводе RCK положительный импульс. Таким образом, обеспечивается отсутствие шумов в выходном аналоговом сигнале.
Аналогичным образом можно реализовать прием данных в последовательном режиме, используя сдвиговые регистры с параллельным входом и последовательным выходом (PISO-регистры). Схема, приведенная на Рис. 12.4, представляет собой последовательный вариант системы охранной сигнализации с Рис. 11.12 (стр. 350), использующий только три линии для подключения всех восьми групп датчиков. Это гораздо меньше 16 линий, задействованных нами в исходной схеме.
Каждая группа датчиков подключена к 8-битному сдвиговому PISO-регистру 74НСТ165. При этом последовательный выход каждого регистра подключен к последовательному входу следующего регистра. После загрузки данных в регистр их можно будет побитно передать на вывод RA1 порта A (SDI). В данном конкретном случае многозонной системы охранной сигнализации после каждого восьмого сдвига полученный байт можно проверять на ненулевое значение и осуществлять соответствующие действия.
Рис. 12.4.
Для управления отображением активной зоны в схеме на Рис. 12.4 тоже используется один выход микроконтроллера. Поскольку и входной (SDI), и выходной (SDO) каналы используют один и тот же тактовый сигнал SCK, то одновременно с приемом данных будет осуществляться и их передача. И наоборот, передача данных через выходной порт приведет к побитному приему данных из регистров зон. В данном случае это не страшно, поскольку микросекундные изменения в свечении ламп совершенно незаметны, и после загрузки в регистр индикаторов требуемого значения все нормализуется. Когда же такое взаимное влияние операций приема и передачи нежелательно, то либо во время считывания данных с вывода SDI на выводе SDO должны всегда присутствовать требуемые данные, либо необходимо использовать стробируемый регистр, например 74НСТ595, для одновременного вывода всех битов данных. В качестве альтернативного решения можно также задействовать отдельные линии тактовых сигналов.