390
правок
Изменения
→Модуль памяти
===Модуль памяти===
Допустим, что нам нужно реализовать модуль памяти на 8 бит. Обозначим эти биты как <tex>s_0</tex>, <tex>s_1</tex>, <tex>\ldots</tex>, <tex>s_7</tex>. Также допустим, что у нас есть следующие входы: <tex>a_0</tex>, <tex>a_1</tex>, <tex>a_2</tex>, которые задают номер бита, который следует обработать, также есть вход <tex>R/W</tex>, значение на котором равно <tex>0</tex>, если надо прочитать значение <tex>i</tex>-го бита, где <tex>i</tex> - число, которое кодируется входами <tex>a_0A_0</tex>, <tex>a_1A_1</tex>, <tex>a_2A_2</tex> и вывести его на выход <tex>Q</tex>, или <tex>1</tex>, если надо записать в <tex>i</tex>-ый бит значение на входе <tex>dD</tex>. Также есть вход <tex>cC</tex> - провод синхронизации. Давайте для хранения значения в <tex>i</tex>-ом бите будем использовать [[Триггеры#D-триггер|D-триггер]]. Если на входе <tex>c</tex> записано значение <tex>0</tex>, то нам не важно, что находится на выходе <tex>Q</tex>, поэтому эту ситуацию можно свести к ситуации, когда на <tex>C</tex> подано <tex>1</tex>, а на <tex>R/W</tex> - <tex>0</tex>. Теперь осталось реализовать операции чтения и записи. Подадим демультиплексоры на входы значения <tex>A_0</tex>, <tex>A_1</tex>, <tex>A_2</tex> на входы <tex>S_0</tex>, <tex>S_1</tex>, <tex>S_2</tex>, а на вход демультиплексора <tex>Y</tex> подадим на вход значение гейта <tex>AND</tex>, которому на вход подаются входы <tex>R/W</tex> и <tex>C</tex>. Тогда если либо на входе <tex>R/W</tex> <tex>0</tex>, либо на входе <tex>C</tex> подать <tex>0</tex> то на выходе демультиплексора будут все <tex>0</tex>. Если же и на <tex>R/W</tex> и на <tex>C</tex> подать <tex>1</tex>, то на выходе <tex>Z_i</tex> будет<tex>1</tex>, а на остальных - <tex>0</tex>, где <tex>i</tex> - число, которое кодируется входами <tex>A_0</tex>, <tex>A_1</tex>, <tex>A_2</tex>.
==См. также==