Теоретически нет никаких ограничений на количество каскадов, соединяемых указанным образом. То есть, используя 8 Т-триггеров, мы получим счетчик по модулю 256 (28). На практике же каждый триггер переключается с некоторой задержкой, что ограничивает максимально возможную частоту счетчика. К примеру, у сдвоенного D-триггера, показанного на Рис. 2.17, максимальная задержка распространения сигнала от фронта тактового импульса до появления выходного значения составляет 25 нc. Максимальная частота переключения одного каскада, например, такого как показан на Рис. 2.23, составляет 25 МГц. Соответственно, максимальная задержка в 8-битном счетчике составит 200 нc. Если такой счетчик со сквозным переносом будет тактироваться сигналом с частотой 5 МГц (равной 1/200 нс), то возникнет ситуация, при которой новое значение будет формироваться до установления предыдущего. Это представляет серьезную проблему, если различные состояния счетчика декодируются и используются для управления другими схемами. Схема декодирования, например, такая как приведена на Рис. 2.25, может отреагировать на это кратковременное переходное состояние непроизвольным образом, что вызовет сбой в работе устройства. В таких случаях лучше использовать более сложный синхронный счетчик, в котором все триггеры переключаются одновременно.
Рис. 2.25.Формирование временных диаграмм
Рассмотренные схемы осуществляли прямой счет. Если в качестве выходов использовать инверсные (Q¯), то счет будет осуществляться в обратном направлении (обратный счет). Того же результата можно достичь, если в качестве элемента памяти использовать триггеры, переключающиеся по нарастающему фронту, такие как сдвоенный триггер 74LS74.
С помощью простой логической схемы можно легко объединить эти две функции и реализовать программируемый реверсивный счетчик. Еще можно добавить логику для параллельной загрузки триггеров любым значением, с последующим счетом от этого значения в заданном направлении. Такие структуры называются счетными регистрами с параллельной загрузкой.
Наряду с наиболее очевидным использованием счетного регистра для накопления числа событий, например, таких как количество консервных банок, прошедших через конвейер, существуют и другие варианты его использования. Одним из таких применений является разнесение во времени некоторых операций. На Рис. 2.25 счетчик по модулю 4 используется для управления одной из секций дешифратора 2 на 4 в микросхеме 74LS139 (Рис. 2.5, а). Этот дешифратор детектирует 4 состояния счетчика и формирует четыре сигнала, сдвинутых во времени друг относительно друга, которые могут использоваться, скажем, для задания последовательности операций, выполняемых управляющей логикой компьютера. Для адресации дешифратора используется инверсный выход триггеров. Это сделано специально, поскольку в противном случае по нарастающему фронту тактового сигнала осуществлялся бы обратный счет. Счетчики с большей разрядностью могут использоваться для формирования более сложных последовательностей управляющих операций.
Термин «регистр», как правило, используется применительно к элементу оперативной памяти, который может хранить одно двоичное слово, обычно разрядностью от 4 до 64 бит. Память большего объема можно реализовать, группируя n таких регистров и выбирая один из них. Подобная структура обычно называется регистровым файлом. Например, микросхема 74LS670[40] представляет собой регистровый файл 4 х 4 с раздельными входом и выходом 4-битных данных, а также отдельными входами 2-битного адреса для операций чтения и записи. Это означает, что любой регистр этого файла может быть считан в любой момент времени независимо от одновременно осуществляемой записи.
Память бóльших объемов называется оперативной памятью произвольного доступа или сокращенно ОЗУ. Словосочетание «произвольный доступ» означает, что для выбора любого слова памяти требуется одно и тоже время, не зависящее от расположения этого слова в матрице[41]. Этим ОЗУ отличается от памяти на магнитной ленте, в которой бобина должна прокрутиться до требуемого сектора. А если этот сектор находится в конце ленты…
Для примера на Рис. 2.26 показана микросхема ОЗУ 6264[42]. Она содержит матрицу из 65 536 (216) бистабильных ячеек, организованных в виде матрицы из 8192 (213) 8-битных слов. Слово n выбирается при подаче на линии адреса А0…А12 двоичного числа n.
В режиме чтения (R/W¯= 1) на выходы I/O7…I/O0 выдается n-е слово данных, определяемое n-й комбинацией битов адреса. Символ «А» в обозначении входов/выходов (как и на Рис. 2.12) указывает на эту взаимосвязь. Для включения выходных буферов с тремя состояниями на входе должен быть НИЗКИЙ уровень.
Адресованное слово записывается в память при R/W¯ = 0. Байт данных, который должен быть записан в n-ю ячейку, подается на входы I/O7…I/O0. Такая двунаправленная передача данных является отличительной особенностью компьютерных шин.