390
правок
Изменения
→Модуль памяти
Также для корректной работы модуля памяти используется провод синхронизации <tex>C</tex>.
На рисунке представлена схема такой памяти. Для хранения значений в битах используются [[Триггеры#D-триггер|<tex>D</tex>-триггеры]]. Рассмотрим схему подробнее. Если на входе <tex>C</tex> записано значение <tex>0</tex>, то нам не важно, что находится на выходе <tex>Q</tex>, поэтому эту ситуацию можно свести к ситуации, когда на <tex>C</tex> подано <tex>1</tex>, а на <tex>R/W</tex> - — <tex>0</tex>. Поймём, как реализованы операции чтения и записи. Существует демультиплексор <tex>3</tex>-to-<tex>8</tex>, которому на вход <tex>Y</tex> подадим подаётся результат конъюнкции входов <tex>R/W</tex> и <tex>C</tex>, а на входы <tex>S_0</tex>, <tex>S_1</tex>, <tex>S_2</tex> подадим — значения на входах <tex>A_0</tex>, <tex>A_1</tex>, <tex>A_2</tex>. Пусть число <tex>i</tex> кодируется входами <tex>A_0</tex>, <tex>A_1</tex>, <tex>A_2</tex>. Тогда на все выходы демультиплексора, кроме выхода <tex>Z_i</tex> будет подаваться <tex>0</tex>, а на выход <tex>Z_i</tex> - — значение на входе <tex>Y</tex>. Очевидно, что операция чтения никак не изменяет значение битов, в то время как запись меняет их значения, поэтому можно считать, что модуль памяти всегда возвращает значение на <tex>i</tex>-ом бите, кроме случаев, когда <tex>C = R/W = 1</tex>. Подадим все выходы демультиплексора на соответствующие им входы <tex>C</tex> <tex>D</tex>-триггеров. Оставшиеся свободными входы триггеров соединим со входом <tex>D</tex> модуля памяти. Тогда все триггеры, возможно, кроме <tex>i</tex>-го триггера будут только возвращать значения, записанные в них, и только <tex>i</tex>-ый триггер поменяет своё значение в случае, если <tex>C = R/W = 1</tex>. Также есть мультиплексор <tex>8</tex>-to-<tex>1</tex>, которому на входы <tex>X_0</tex>, <tex>X_1</tex>, <tex>\ldots</tex>, <tex>X_7</tex> подают значения соответственных триггеров, а на входы <tex>S_0</tex>, <tex>S_1</tex>, <tex>S_2</tex> подают значения на входах <tex>A_0</tex>, <tex>A_1</tex>, <tex>A_2</tex>. Тогда мультиплексор всегда возвращает значение, хранящееся в <tex>i</tex>-ом бите. Очевидно, что на любой запрос чтения значения в <tex>i</tex>-ом бите модуль памяти возвращает то, что нужно, а что схема возвращает на запрос записи неважно. Однако, такая схема редко используется в реальных электронно-вычислительных машинах, поскольку иногда требуется делать очень много ячеек памяти, а сделать много таких модулей бывает проблематично из-за того, что требуется использования большого количества проводов, а также такая схема будет потреблять большое количество энергии, поэтому чаще используют матричную память, поскольку она позволяет с использованием меньшее количества проводов управлять большим количеством ячеек, а также она занимает меньше места.
{|
|[[Файл:8bitmemory.png|thumb|600px|Логическая схема модуля памяти на 8 бит]]