http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki 2019-02-11T17:37:21+00:00 Joomla! - Open Source Content Management КЦУ и ПЦУ. Что такое и в чем разница 2013-12-03T00:55:53+00:00 2013-12-03T00:55:53+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/184-ktsu-i-ptsu-chto-takoe-i-v-chem-raznitsa EngineerDeveloper® [email protected] <div class="feed-description"><p><img src="images/statyi/FPGA/OCT/KCU_i_PCU/SH1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;"><em>Рис.1 Разделение цифровых устройств</em></span></p> <p><span style="font-size: medium;">          Устройство называют <strong>комбинационным,</strong> если его выходные сигналы в некоторый момент определяются входными сигналами в этот же момент времени.</span></p> <p><span style="font-size: medium;">          КЦУ не содержат элементов памяти.</span></p> <p><span style="font-size: medium;">          К комбинационным цифровым устройствам можно отнести такие элементы как:</span></p> <ul> <li><span style="font-size: medium;"> Логические элементы AND, OR, XOR;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Шифраторы и дешифраторы;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Преобразователи кодов;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Мультиплексоры и Демультиплексоры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Сумматоры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Компараторы.</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">          <strong>Последовательностные</strong> цифровые устройства  характеризуются тем, что выходные сигналы зависят не только от текущих значений входных сигналов, но и от последовательности значений входных сигналов, поступивших на входы в предшествующие моменты времени.</span></p> <p><span style="font-size: medium;">          ПЦУ содержат элементы памяти.</span></p> <p><span style="font-size: medium;">          К последовательностным цифровым устройствам можно отнести такие элементы как:</span></p> <ul> <li><span style="font-size: medium;"> Триггеры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Регистры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Счетчики;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Запоминающие устройства.PROM, ROM, RAM.</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">            В заключении отмечу, что разница между ПЦУ и КЦУ на «лицо», КЦУ не умеет запоминать, в то время как ПЦУ имеет запоминающее устройство. Выделитель фронта сигнала можно отнести к примитивным ПЦУ.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/KCU_i_PCU/SH2.jpg" border="0" alt="" width="635" height="219" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;"><em>Рис.2 Выделитель фронта сигнала</em></span></p> <p><span style="font-size: medium;">  На рис. 2 изображен выделитель фронта сигнала. Он состоит из двух триггеров и одного логического элемента. Первый триггер после входа служит для привязки к системной тактовой частоте, а второй работает в сочетании с логикой. Результат – импульс равный периоду следования тактовых импульсов.</span></p> <p><span style="font-size: medium;"> Так как триггер является элементарной ячейкой памяти. То есть после записи  по положительному тактовому фронту  FD находится в установленном состоянии до прихода нового фронта тактового сигнала (запоминает). При этом элемент «AND2B1» является примитивным КЦУ и входит в состав ПЦУ.</span></p></div> <div class="feed-description"><p><img src="images/statyi/FPGA/OCT/KCU_i_PCU/SH1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;"><em>Рис.1 Разделение цифровых устройств</em></span></p> <p><span style="font-size: medium;">          Устройство называют <strong>комбинационным,</strong> если его выходные сигналы в некоторый момент определяются входными сигналами в этот же момент времени.</span></p> <p><span style="font-size: medium;">          КЦУ не содержат элементов памяти.</span></p> <p><span style="font-size: medium;">          К комбинационным цифровым устройствам можно отнести такие элементы как:</span></p> <ul> <li><span style="font-size: medium;"> Логические элементы AND, OR, XOR;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Шифраторы и дешифраторы;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Преобразователи кодов;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Мультиплексоры и Демультиплексоры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Сумматоры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Компараторы.</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">          <strong>Последовательностные</strong> цифровые устройства  характеризуются тем, что выходные сигналы зависят не только от текущих значений входных сигналов, но и от последовательности значений входных сигналов, поступивших на входы в предшествующие моменты времени.</span></p> <p><span style="font-size: medium;">          ПЦУ содержат элементы памяти.</span></p> <p><span style="font-size: medium;">          К последовательностным цифровым устройствам можно отнести такие элементы как:</span></p> <ul> <li><span style="font-size: medium;"> Триггеры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Регистры;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Счетчики;</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <ul> <li><span style="font-size: medium;"> Запоминающие устройства.PROM, ROM, RAM.</span></li> </ul> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">            В заключении отмечу, что разница между ПЦУ и КЦУ на «лицо», КЦУ не умеет запоминать, в то время как ПЦУ имеет запоминающее устройство. Выделитель фронта сигнала можно отнести к примитивным ПЦУ.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/KCU_i_PCU/SH2.jpg" border="0" alt="" width="635" height="219" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;"><em>Рис.2 Выделитель фронта сигнала</em></span></p> <p><span style="font-size: medium;">  На рис. 2 изображен выделитель фронта сигнала. Он состоит из двух триггеров и одного логического элемента. Первый триггер после входа служит для привязки к системной тактовой частоте, а второй работает в сочетании с логикой. Результат – импульс равный периоду следования тактовых импульсов.</span></p> <p><span style="font-size: medium;"> Так как триггер является элементарной ячейкой памяти. То есть после записи  по положительному тактовому фронту  FD находится в установленном состоянии до прихода нового фронта тактового сигнала (запоминает). При этом элемент «AND2B1» является примитивным КЦУ и входит в состав ПЦУ.</span></p></div> Определение триггера. RS-триггер 2013-11-25T01:50:22+00:00 2013-11-25T01:50:22+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/176-opredelenie-triggera-rs-trigger EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">           </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Классическое определение термина «триггер» звучит следующим образом:</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><strong>            Триггер</strong>— класс электронных устройств, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Термин триггер происходит от английского слова trigger — защёлка, спусковой крючок. Для обозначения этого устройства в английском языке чаще употребляется термин flip-flop, что в переводе означает "хлопанье".</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Поясню. Триггер – это устройство, относящееся к классу электронных цифровых устройств обладающие способностью находиться либо в «0», либо в «1» и чередовать их под воздействием тактов и сигналов разрешения тактов, а также сигнала сброса.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Исторически триггеры разрабатывались на лампах, транзисторах. Но я бы не хотел углубляться в принцип работы триггера до уровня транзисторов и направлений протекания токов. Поэтому абстрагируемся от физики его работы и акцентируем внимание на особенности и принципе его работы с точки зрения цифровых процессов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис. 1 приведен самый элементарный триггер, реализованный на двух инверторах.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/RSFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Простейший RS-триггер на инверторах.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            RS – триггер изображенный на рис.1 способен хранить 1 бит информации. Но он не позволяет записать этот бит информации, стереть бит информации. Чего нельзя сказать про RS – триггер реализованный на двух элементах 2И-НЕ (см.рис.2)</span></p> <p><span style="font-size: medium;"> <img src="images/statyi/FPGA/OCT/RSFF_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Простейший RS-триггер (асинхронный) на элементах 2И-НЕ.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Из рисунка видно, что появились два входа: «S» - set (установка) и «R» - reset (сброс). С помощью входа «S» мы можем установить триггер в одно из двух устойчивых состояний, а вход «R» служит для сброса триггера.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Чтобы разобраться с принципом работы RS-триггера обратимся к таблице истинности приведенной в табл.1</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <p align="center"><span style="font-size: medium;"><strong>R</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>S</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t+1)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Пояснения</strong></span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим хранения информации R=S=0</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим установки единицы S=1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим записи нуля R=1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">*</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">R=S=1 запрещенная комбинация</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">*</span></p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности RS-триггера (асинхронного).</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Из таблицы видно, если подать единицы на вход S выходное состояние становится равным логической единице. А при подаче единицы на вход R выходное состояние становится равным логическому нулю.  Если одновременно установить на оба входы две логической единицы, тогда триггер может оказаться в любом не устойчивом состоянии. Подобная комбинация (R=1, S=1) является запрещенная. В более сложных триггерных схемах при запрещенной комбинации на входе, триггер переходит в третье состояние. Одновременное снятие обоих единиц практически невозможно, поэтому состояние после снятия запрещенной комбинации будет определяться оставшейся единицей. Таким образом, RS-триггер может находиться в трех состояниях, два из которых устойчивых и одно не устойчивое.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          На рис.3 приведена схема синхронного RS-триггера. По сравнению с асинхронным триггером добавились два логических элемента «И-НЕ». Тем самым добавлен вход синхронизации «С». При этом принцип работы остался прежний за исключением того, что все процессы синхронны (см. табл. 2).</span></p> <p><span style="font-size: medium;"> <img src="images/statyi/FPGA/OCT/RSFF_sh3.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.3. Простейший RS-триггер (синхронный) на элементах 2И-НЕ.</span></p> <p><span style="font-size: medium;">            В таблице 2 приведена таблица истинности для синхронного RS-триггера.</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <p align="center"><span style="font-size: medium;"><strong>С</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>R</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>S</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t+1)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Пояснения</strong></span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим хранения информации</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим хранения информации</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим установки единицы S=1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим записи нуля R=1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">*</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">R=S=1 запрещенная комбинация</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">*</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;"><span style="font-size: medium;">Таблица 2. Таблица истинности RS-триггера (синхронного).<br /></span></p> <p style="text-align: center;"><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;"> </span></p></div> <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">           </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Классическое определение термина «триггер» звучит следующим образом:</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><strong>            Триггер</strong>— класс электронных устройств, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Термин триггер происходит от английского слова trigger — защёлка, спусковой крючок. Для обозначения этого устройства в английском языке чаще употребляется термин flip-flop, что в переводе означает "хлопанье".</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Поясню. Триггер – это устройство, относящееся к классу электронных цифровых устройств обладающие способностью находиться либо в «0», либо в «1» и чередовать их под воздействием тактов и сигналов разрешения тактов, а также сигнала сброса.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Исторически триггеры разрабатывались на лампах, транзисторах. Но я бы не хотел углубляться в принцип работы триггера до уровня транзисторов и направлений протекания токов. Поэтому абстрагируемся от физики его работы и акцентируем внимание на особенности и принципе его работы с точки зрения цифровых процессов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис. 1 приведен самый элементарный триггер, реализованный на двух инверторах.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/RSFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Простейший RS-триггер на инверторах.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            RS – триггер изображенный на рис.1 способен хранить 1 бит информации. Но он не позволяет записать этот бит информации, стереть бит информации. Чего нельзя сказать про RS – триггер реализованный на двух элементах 2И-НЕ (см.рис.2)</span></p> <p><span style="font-size: medium;"> <img src="images/statyi/FPGA/OCT/RSFF_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Простейший RS-триггер (асинхронный) на элементах 2И-НЕ.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Из рисунка видно, что появились два входа: «S» - set (установка) и «R» - reset (сброс). С помощью входа «S» мы можем установить триггер в одно из двух устойчивых состояний, а вход «R» служит для сброса триггера.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Чтобы разобраться с принципом работы RS-триггера обратимся к таблице истинности приведенной в табл.1</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <p align="center"><span style="font-size: medium;"><strong>R</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>S</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t+1)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Пояснения</strong></span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим хранения информации R=S=0</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим установки единицы S=1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">Режим записи нуля R=1</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td> <p align="center"><span style="font-size: medium;">*</span></p> </td> <td rowspan="2"> <p align="center"><span style="font-size: medium;">R=S=1 запрещенная комбинация</span></p> </td> </tr> <tr> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td> <p align="center"><span style="font-size: medium;">*</span></p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности RS-триггера (асинхронного).</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          Из таблицы видно, если подать единицы на вход S выходное состояние становится равным логической единице. А при подаче единицы на вход R выходное состояние становится равным логическому нулю.  Если одновременно установить на оба входы две логической единицы, тогда триггер может оказаться в любом не устойчивом состоянии. Подобная комбинация (R=1, S=1) является запрещенная. В более сложных триггерных схемах при запрещенной комбинации на входе, триггер переходит в третье состояние. Одновременное снятие обоих единиц практически невозможно, поэтому состояние после снятия запрещенной комбинации будет определяться оставшейся единицей. Таким образом, RS-триггер может находиться в трех состояниях, два из которых устойчивых и одно не устойчивое.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">          На рис.3 приведена схема синхронного RS-триггера. По сравнению с асинхронным триггером добавились два логических элемента «И-НЕ». Тем самым добавлен вход синхронизации «С». При этом принцип работы остался прежний за исключением того, что все процессы синхронны (см. табл. 2).</span></p> <p><span style="font-size: medium;"> <img src="images/statyi/FPGA/OCT/RSFF_sh3.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.3. Простейший RS-триггер (синхронный) на элементах 2И-НЕ.</span></p> <p><span style="font-size: medium;">            В таблице 2 приведена таблица истинности для синхронного RS-триггера.</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <p align="center"><span style="font-size: medium;"><strong>С</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>R</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>S</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Q(t+1)</strong></span></p> </td> <td> <p align="center"><span style="font-size: medium;"><strong>Пояснения</strong></span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим хранения информации</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">x</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим хранения информации</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим установки единицы S=1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">Режим записи нуля R=1</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">0</span></p> </td> <td> <p><span style="font-size: medium;">*</span></p> </td> <td rowspan="2"> <p><span style="font-size: medium;">R=S=1 запрещенная комбинация</span></p> </td> </tr> <tr> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">1</span></p> </td> <td> <p><span style="font-size: medium;">*</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;"><span style="font-size: medium;">Таблица 2. Таблица истинности RS-триггера (синхронного).<br /></span></p> <p style="text-align: center;"><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;"> </span></p></div> JK-триггер 2013-11-26T01:45:23+00:00 2013-11-26T01:45:23+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/177-jk-trigger EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">   JK – триггер по своей структуре и принципу работы очень сильно напоминают RS-триггер за исключением того, что в JK – триггере постарались и убрали запрещенную комбинацию. Таки образом, JK – триггер состоит из двух синхронных RS-триггеров с дополнительной логикой, которая и исключает запрещенную комбинацию см. рис. 1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/JKFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Структура JK – триггера</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            В таблице 2 приводится таблица истинности для JK-триггера. Она идентична той, что приводилась для RS-триггера. Вход «J» (от <a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a> Jump — прыжок) соответствует назначению входа «S» для RS-триггера, а «К» (от <a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a> Kill — убить) - это «R» у RS-триггера.</span></p> <p> </p> <div align="center"> <table style="width: 400px;" border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="30"> <p align="center"><strong>С</strong></p> </td> <td width="30"> <p align="center"><strong>K</strong></p> </td> <td width="30"> <p align="center"><strong>J</strong></p> </td> <td width="30"> <p align="center"><strong>Q(t)</strong></p> </td> <td width="50"> <p align="center"><strong>Q(t+1)</strong></p> </td> <td> <p align="center"><strong>Пояснения</strong></p> </td> </tr> <tr> <td> <p>0</p> </td> <td> <p>x</p> </td> <td> <p>x</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим хранения информации</p> </td> </tr> <tr> <td> <p>0</p> </td> <td> <p>x</p> </td> <td> <p>x</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим хранения информации</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td rowspan="2"> <p>Режим установки единицы J=1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим записи нуля K=1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td rowspan="2"> <p>K=J=1 счетный режим триггера</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;" align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности для JK – триггера</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На базе JK-триггера возможно построить D-триггер или Т-триггер. Как видно из таблицы истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы J и K логической единицы. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединив входы J и К.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Алгоритм функционирования JK-триггера можно представить формулой:</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/JKFF_form1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p></div> <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">   JK – триггер по своей структуре и принципу работы очень сильно напоминают RS-триггер за исключением того, что в JK – триггере постарались и убрали запрещенную комбинацию. Таки образом, JK – триггер состоит из двух синхронных RS-триггеров с дополнительной логикой, которая и исключает запрещенную комбинацию см. рис. 1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/JKFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Структура JK – триггера</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            В таблице 2 приводится таблица истинности для JK-триггера. Она идентична той, что приводилась для RS-триггера. Вход «J» (от <a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a> Jump — прыжок) соответствует назначению входа «S» для RS-триггера, а «К» (от <a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a> Kill — убить) - это «R» у RS-триггера.</span></p> <p> </p> <div align="center"> <table style="width: 400px;" border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="30"> <p align="center"><strong>С</strong></p> </td> <td width="30"> <p align="center"><strong>K</strong></p> </td> <td width="30"> <p align="center"><strong>J</strong></p> </td> <td width="30"> <p align="center"><strong>Q(t)</strong></p> </td> <td width="50"> <p align="center"><strong>Q(t+1)</strong></p> </td> <td> <p align="center"><strong>Пояснения</strong></p> </td> </tr> <tr> <td> <p>0</p> </td> <td> <p>x</p> </td> <td> <p>x</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим хранения информации</p> </td> </tr> <tr> <td> <p>0</p> </td> <td> <p>x</p> </td> <td> <p>x</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим хранения информации</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td rowspan="2"> <p>Режим установки единицы J=1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td rowspan="2"> <p>Режим записи нуля K=1</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td rowspan="2"> <p>K=J=1 счетный режим триггера</p> </td> </tr> <tr> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;" align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности для JK – триггера</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На базе JK-триггера возможно построить D-триггер или Т-триггер. Как видно из таблицы истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы J и K логической единицы. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединив входы J и К.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Алгоритм функционирования JK-триггера можно представить формулой:</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/JKFF_form1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p></div> D-триггер 2013-11-27T01:33:03+00:00 2013-11-27T01:33:03+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/178-d-trigger EngineerDeveloper® [email protected] <div class="feed-description"><p> </p> <p style="text-align: justify;"><span style="font-size: medium;">              Такие типы триггеров как JK и RS с их функциональным описание я привел скорее больше для справки, нежели с целью навязать необходимость их применения в современных проектах. Хотя и они тоже имеют место быть. Чаще всего, если не сказать всегда используют D-триггеры, T-триггеры.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">             О них сейчас и пойдет речь.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            D-триггер (D от англ. delay — задержка, либо от data - данные) – это цифровое устройство имеющее два устойчивых состояния. D-триггер «щелкает» только в синхронном режиме, а сбрасывается как в синхронном так и асинхронном режимах.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Чаще всего D-триггер используют как элементарную ячейку памяти. Т.е. для хранения битовой информации. При необходимости записать больше чем 1 бит данных, объединяют D-триггеры и получают жизненно важные регистры.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис.1 изображено УГО «D – триггера» от ф. Xilinx.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/DFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. УГО «D – триггера» от ф. Xilinx</span></p> <p style="text-align: justify;"><span style="font-size: medium;">Триггер имеет 4 входа:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «D» - (data) данные предназначенные для записи;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «CE» - (clock enable)  разрешение/запрет тактирования;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «С» - (clock) тактовый вход;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «R» - (reset) вход сброса.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">И один выход:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «Q» - выход состояния триггера.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Триггер записывает по положительному/отрицательному (в зависимости от типа триггера) фронту тактового сигнала. Т.е. если рассматривать триггер, приведенный на рис.1, то ему соответствует следующая таблица истинности (см. табл. 1)</span></p> <div align="center"> <table style="margin-left: auto; margin-right: auto; width: 261px; height: 109px;" border="1" cellpadding="0"> <thead> <tr> <td colspan="4" valign="top"> <p style="text-align: center;" align="center"><span style="font-size: small;"><strong>Inputs</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>Outputs</strong></span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>R</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>CE</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>D</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>C</strong></span></p> </td> <td valign="top"> <p style="text-align: center;" align="center"><span style="font-size: small;"><strong>Q</strong></span></p> </td> </tr> </thead> <tbody> <tr> <td valign="top"> <p><span style="font-size: small;">1</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">↑</span></p> </td> <td valign="top"> <p><span style="font-size: small;">0 (процесс сброса)</span></p> </td> </tr> <tr> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">No Change (блокировка)</span></p> </td> </tr> <tr> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">1</span></p> </td> <td valign="top"> <p><span style="font-size: small;">D</span></p> </td> <td valign="top"> <p><span style="font-size: small;">↑</span></p> </td> <td valign="top"> <p><span style="font-size: small;">D (процесс записи)</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: justify;" align="center"><span style="font-size: medium;">Табл.1. Таблица истинности для «D – триггера» стробирующего положительным фронтом тактов, а также имеющего синхронный сброс.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из таблицы видно, если на входе «R» установлена лог. 1, тогда с приходом ближайшего положительного тактового фронта триггер перейдет в нулевое состояние (сбросится). В том случае, когда «R» и «CE» = лог. «0», тогда триггер просто не работает, его содержимое остается прежним. Если на входе сброса оставить лог. нуль «R» = 0, а на входе «CE» = 1 установить лог.1., тогда триггер запишет на выход «Q» состояние входа «D» на момент прихода положительного тактового импульса.</span></p></div> <div class="feed-description"><p> </p> <p style="text-align: justify;"><span style="font-size: medium;">              Такие типы триггеров как JK и RS с их функциональным описание я привел скорее больше для справки, нежели с целью навязать необходимость их применения в современных проектах. Хотя и они тоже имеют место быть. Чаще всего, если не сказать всегда используют D-триггеры, T-триггеры.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">             О них сейчас и пойдет речь.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            D-триггер (D от англ. delay — задержка, либо от data - данные) – это цифровое устройство имеющее два устойчивых состояния. D-триггер «щелкает» только в синхронном режиме, а сбрасывается как в синхронном так и асинхронном режимах.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Чаще всего D-триггер используют как элементарную ячейку памяти. Т.е. для хранения битовой информации. При необходимости записать больше чем 1 бит данных, объединяют D-триггеры и получают жизненно важные регистры.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис.1 изображено УГО «D – триггера» от ф. Xilinx.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/DFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. УГО «D – триггера» от ф. Xilinx</span></p> <p style="text-align: justify;"><span style="font-size: medium;">Триггер имеет 4 входа:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «D» - (data) данные предназначенные для записи;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «CE» - (clock enable)  разрешение/запрет тактирования;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «С» - (clock) тактовый вход;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «R» - (reset) вход сброса.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">И один выход:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            - «Q» - выход состояния триггера.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Триггер записывает по положительному/отрицательному (в зависимости от типа триггера) фронту тактового сигнала. Т.е. если рассматривать триггер, приведенный на рис.1, то ему соответствует следующая таблица истинности (см. табл. 1)</span></p> <div align="center"> <table style="margin-left: auto; margin-right: auto; width: 261px; height: 109px;" border="1" cellpadding="0"> <thead> <tr> <td colspan="4" valign="top"> <p style="text-align: center;" align="center"><span style="font-size: small;"><strong>Inputs</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>Outputs</strong></span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>R</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>CE</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>D</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: small;"><strong>C</strong></span></p> </td> <td valign="top"> <p style="text-align: center;" align="center"><span style="font-size: small;"><strong>Q</strong></span></p> </td> </tr> </thead> <tbody> <tr> <td valign="top"> <p><span style="font-size: small;">1</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">↑</span></p> </td> <td valign="top"> <p><span style="font-size: small;">0 (процесс сброса)</span></p> </td> </tr> <tr> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">X</span></p> </td> <td valign="top"> <p><span style="font-size: small;">No Change (блокировка)</span></p> </td> </tr> <tr> <td valign="top"> <p><span style="font-size: small;">0</span></p> </td> <td valign="top"> <p><span style="font-size: small;">1</span></p> </td> <td valign="top"> <p><span style="font-size: small;">D</span></p> </td> <td valign="top"> <p><span style="font-size: small;">↑</span></p> </td> <td valign="top"> <p><span style="font-size: small;">D (процесс записи)</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: justify;" align="center"><span style="font-size: medium;">Табл.1. Таблица истинности для «D – триггера» стробирующего положительным фронтом тактов, а также имеющего синхронный сброс.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из таблицы видно, если на входе «R» установлена лог. 1, тогда с приходом ближайшего положительного тактового фронта триггер перейдет в нулевое состояние (сбросится). В том случае, когда «R» и «CE» = лог. «0», тогда триггер просто не работает, его содержимое остается прежним. Если на входе сброса оставить лог. нуль «R» = 0, а на входе «CE» = 1 установить лог.1., тогда триггер запишет на выход «Q» состояние входа «D» на момент прихода положительного тактового импульса.</span></p></div> Т-триггер 2013-11-27T01:39:12+00:00 2013-11-27T01:39:12+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/179-t-trigger EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;">          <span style="font-size: medium;">   Т-триггер – это счётный триггер. Можно рассматривать его на основе JK-триггеров, но мы этого делать не будем. Мы упростим себе задачу и возьмем за основу  «D-триггер», принцип работы которого нам известен из ранних статей.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Напомню, что «D-триггер» записывает состояние входа «D» по нарастающему фронту. Если взять инверсный выход «Q» и подключить его к входу «D», то останется только один вход для тактов «С» и сигнал разрешения тактов «СЕ». При тактировании такого устройства на выходе «Q» будет считаться количество импульсов на входе «С». Но в силу того что считаем мы одним битом, то и счет будет от 0 до 1. Т.е. 0-1-0-1-0-1 …..и т.д.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис. 1 приведу пример схемы включения «D-триггера» для организации счетного «Т-триггера».</span></p> <p><img src="images/statyi/FPGA/OCT/TFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис. 1. Счетный триггер типа «Т»</span></p> <p><span style="font-size: medium;">   На временной диаграмме (см.рис.2) приведены сигналы «С» и «Q» для «Т-триггера».</span></p> <p><img src="images/statyi/FPGA/OCT/TFF_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис.2. Временные диаграммы работы счетного «Т-триггера»</span></p></div> <div class="feed-description"><p style="text-align: justify;">          <span style="font-size: medium;">   Т-триггер – это счётный триггер. Можно рассматривать его на основе JK-триггеров, но мы этого делать не будем. Мы упростим себе задачу и возьмем за основу  «D-триггер», принцип работы которого нам известен из ранних статей.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Напомню, что «D-триггер» записывает состояние входа «D» по нарастающему фронту. Если взять инверсный выход «Q» и подключить его к входу «D», то останется только один вход для тактов «С» и сигнал разрешения тактов «СЕ». При тактировании такого устройства на выходе «Q» будет считаться количество импульсов на входе «С». Но в силу того что считаем мы одним битом, то и счет будет от 0 до 1. Т.е. 0-1-0-1-0-1 …..и т.д.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис. 1 приведу пример схемы включения «D-триггера» для организации счетного «Т-триггера».</span></p> <p><img src="images/statyi/FPGA/OCT/TFF_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис. 1. Счетный триггер типа «Т»</span></p> <p><span style="font-size: medium;">   На временной диаграмме (см.рис.2) приведены сигналы «С» и «Q» для «Т-триггера».</span></p> <p><img src="images/statyi/FPGA/OCT/TFF_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис.2. Временные диаграммы работы счетного «Т-триггера»</span></p></div> Шифраторы и дешифраторы 2013-11-29T01:43:14+00:00 2013-11-29T01:43:14+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/181-shifratory-i-deshifratory EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;">    <span style="font-size: medium;">        <em><span style="text-decoration: underline;">Шифратор</span></em> – это комбинационное цифровое логическое устройство преобразующее номер входного сигнала в выходной двоичный код. Т.е. выполняет функцию обратную дешифратору.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Полный двоичный шифратор имеет n выходов и 2<sup>n</sup>входов, где n – разрядность двоичного входа (см. рис.1).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/CD_DC/CDDC_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. УГО шифратора 4х2</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Микросхемы шифраторов  обозначаются на схемах буквами «CD» (от англ. Coder – кодирующее устройство). Рассмотрим таблицу истинности классического шифратора (см. табл. 1).</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p><strong>Вход х(3</strong><strong>:0</strong><strong>)</strong></p> </td> <td valign="top"> <p><strong>Выход</strong><strong> y(1:0)</strong></p> </td> </tr> <tr> <td valign="top"> <p align="center">0001</p> </td> <td valign="top"> <p align="center">00</p> </td> </tr> <tr> <td valign="top"> <p align="center">0010</p> </td> <td valign="top"> <p align="center">01</p> </td> </tr> <tr> <td valign="top"> <p align="center">0100</p> </td> <td valign="top"> <p align="center">10</p> </td> </tr> <tr> <td valign="top"> <p align="center">1000</p> </td> <td valign="top"> <p align="center">11</p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;" align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности шифратора 4х2</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из таблицы истинности видно, что на выходе «y(1:0)» отображается номер входа, на котором установлена логическая единица.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            <em><span style="text-decoration: underline;">Дешифратор</span></em> преобразует входной двоичный код в управляющий сигнал только на одном из своих выходов. В общем случае, дешифратор имеет n однофазных выходов и 2<sup>n</sup> выходов, где n – разрядность дешифрируемого кода. </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Блок дешифратора на схеме обозначаются буквами «DC» (от англ. Decoder – декодирующее устройство) (см.рис.2).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/CD_DC/CDDC_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.2. УГО дешифратора 2х4</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Активным всегда является только один выход дешифратора, при этом номер этого выхода и соответствующий номер этого сигнала однозначно определяется входным кодом. Т.е. при сигнале на входе дешифратора 00 мы получаем 1 на нулевом выходе. При  сигнале на входе 01 получаем 1 на первом выходе. При сигнале на входе 10, получаем 1 на втором выходе, и т.д. (см. табл. истинности табл.2).</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p><strong>Вход </strong><strong>X</strong><strong>(1</strong><strong>:0</strong><strong>)</strong></p> </td> <td valign="top"> <p><strong>Выход</strong><strong> F(3:0)</strong></p> </td> </tr> <tr> <td valign="top"> <p align="center">00</p> </td> <td valign="top"> <p align="center">0001</p> </td> </tr> <tr> <td valign="top"> <p align="center">01</p> </td> <td valign="top"> <p align="center">0010</p> </td> </tr> <tr> <td valign="top"> <p align="center">10</p> </td> <td valign="top"> <p align="center">0100</p> </td> </tr> <tr> <td valign="top"> <p align="center">11</p> </td> <td valign="top"> <p align="center">1000</p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Таблица 2. Таблица истинности дешифратора 2х4</span></p> <p> </p></div> <div class="feed-description"><p style="text-align: justify;">    <span style="font-size: medium;">        <em><span style="text-decoration: underline;">Шифратор</span></em> – это комбинационное цифровое логическое устройство преобразующее номер входного сигнала в выходной двоичный код. Т.е. выполняет функцию обратную дешифратору.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Полный двоичный шифратор имеет n выходов и 2<sup>n</sup>входов, где n – разрядность двоичного входа (см. рис.1).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/CD_DC/CDDC_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. УГО шифратора 4х2</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Микросхемы шифраторов  обозначаются на схемах буквами «CD» (от англ. Coder – кодирующее устройство). Рассмотрим таблицу истинности классического шифратора (см. табл. 1).</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p><strong>Вход х(3</strong><strong>:0</strong><strong>)</strong></p> </td> <td valign="top"> <p><strong>Выход</strong><strong> y(1:0)</strong></p> </td> </tr> <tr> <td valign="top"> <p align="center">0001</p> </td> <td valign="top"> <p align="center">00</p> </td> </tr> <tr> <td valign="top"> <p align="center">0010</p> </td> <td valign="top"> <p align="center">01</p> </td> </tr> <tr> <td valign="top"> <p align="center">0100</p> </td> <td valign="top"> <p align="center">10</p> </td> </tr> <tr> <td valign="top"> <p align="center">1000</p> </td> <td valign="top"> <p align="center">11</p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;" align="center"><span style="font-size: medium;">Таблица 1. Таблица истинности шифратора 4х2</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из таблицы истинности видно, что на выходе «y(1:0)» отображается номер входа, на котором установлена логическая единица.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            <em><span style="text-decoration: underline;">Дешифратор</span></em> преобразует входной двоичный код в управляющий сигнал только на одном из своих выходов. В общем случае, дешифратор имеет n однофазных выходов и 2<sup>n</sup> выходов, где n – разрядность дешифрируемого кода. </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Блок дешифратора на схеме обозначаются буквами «DC» (от англ. Decoder – декодирующее устройство) (см.рис.2).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/CD_DC/CDDC_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.2. УГО дешифратора 2х4</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Активным всегда является только один выход дешифратора, при этом номер этого выхода и соответствующий номер этого сигнала однозначно определяется входным кодом. Т.е. при сигнале на входе дешифратора 00 мы получаем 1 на нулевом выходе. При  сигнале на входе 01 получаем 1 на первом выходе. При сигнале на входе 10, получаем 1 на втором выходе, и т.д. (см. табл. истинности табл.2).</span></p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p><strong>Вход </strong><strong>X</strong><strong>(1</strong><strong>:0</strong><strong>)</strong></p> </td> <td valign="top"> <p><strong>Выход</strong><strong> F(3:0)</strong></p> </td> </tr> <tr> <td valign="top"> <p align="center">00</p> </td> <td valign="top"> <p align="center">0001</p> </td> </tr> <tr> <td valign="top"> <p align="center">01</p> </td> <td valign="top"> <p align="center">0010</p> </td> </tr> <tr> <td valign="top"> <p align="center">10</p> </td> <td valign="top"> <p align="center">0100</p> </td> </tr> <tr> <td valign="top"> <p align="center">11</p> </td> <td valign="top"> <p align="center">1000</p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Таблица 2. Таблица истинности дешифратора 2х4</span></p> <p> </p></div> Двоичный счетчик 2013-11-28T01:23:29+00:00 2013-11-28T01:23:29+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/180-dvoichnyj-schetchik EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">         Двоичный счетчик (binary counter) представляет собой совокупность регистра и сумматора. Двоичный счетчик выполняет функцию подсчета входных импульсов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Разновидностей двоичного счетчика достаточно много:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- инкрементирующий двоичный счетчик;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- декрементирующий двоичный счетчик;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с асинхронным сбросом;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с синхронным сбросом;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с загрузкой;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">-двоичный счетчик с управлением направления счета и т.д.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            А так же существует множество счетчиков, которые сочетают в себе вышеуказанные свойства.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Рассмотрим принцип работы на примере 4-х разрядного двоичного инкрементирующего счетчика. УГО приведено на рис.1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/Count/count_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. Двоичный инкрементирующий счетчик</span></p> <p align="center"><span style="font-size: medium;"> </span></p> <p align="center"><img src="images/statyi/FPGA/OCT/Count/count_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис.2. Структура двоичного 4-х разрядного счетчика</span></p> <p align="center"><span style="font-size: medium;"> </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из рис.2. видно, что счетчик в самом простом его представлении состоит регистра (FD4RE) с синхронным сбросом и Сумматором (ADD4). Таким образом, каждый новый такт в регистр (FD4RE) записывается собственное содержимое, увеличенное на единицу. Вот и весь принцип работы двоичного счетчика. В случае декрементного счетчика все аналогично, только вместо сумматора используют вычитающее устройство.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Таблица истинности двоичного счетчика приведена в Табл.1. А временные диаграммы см. рис.3.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/Count/count_sh3.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.3. Временные диаграммы работы счетчика</span></p> <p align="center"> </p> <p> </p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="164"> <p align="center"><strong>номер входного импульса</strong></p> </td> <td width="22"> <p><strong>Q3</strong></p> </td> <td width="22"> <p><strong>Q2</strong></p> </td> <td width="22"> <p><strong>Q1</strong></p> </td> <td width="22"> <p><strong>Q0</strong></p> </td> </tr> <tr> <td width="164"> <p align="center">0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">2</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">3</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">4</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">5</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">6</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">7</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">8</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">9</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">10</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">11</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">12</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">13</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">14</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">15</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Табл.1. Таблица истинности двоичного счетчика</span></p> <p> </p> <p> </p> <p style="text-align: justify;"> </p></div> <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">         Двоичный счетчик (binary counter) представляет собой совокупность регистра и сумматора. Двоичный счетчик выполняет функцию подсчета входных импульсов.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Разновидностей двоичного счетчика достаточно много:</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- инкрементирующий двоичный счетчик;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- декрементирующий двоичный счетчик;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с асинхронным сбросом;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с синхронным сбросом;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">- двоичный счетчик с загрузкой;</span></p> <p style="text-align: justify;"><span style="font-size: medium;">-двоичный счетчик с управлением направления счета и т.д.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            А так же существует множество счетчиков, которые сочетают в себе вышеуказанные свойства.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Рассмотрим принцип работы на примере 4-х разрядного двоичного инкрементирующего счетчика. УГО приведено на рис.1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/Count/count_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. Двоичный инкрементирующий счетчик</span></p> <p align="center"><span style="font-size: medium;"> </span></p> <p align="center"><img src="images/statyi/FPGA/OCT/Count/count_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p align="center"><span style="font-size: medium;">Рис.2. Структура двоичного 4-х разрядного счетчика</span></p> <p align="center"><span style="font-size: medium;"> </span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из рис.2. видно, что счетчик в самом простом его представлении состоит регистра (FD4RE) с синхронным сбросом и Сумматором (ADD4). Таким образом, каждый новый такт в регистр (FD4RE) записывается собственное содержимое, увеличенное на единицу. Вот и весь принцип работы двоичного счетчика. В случае декрементного счетчика все аналогично, только вместо сумматора используют вычитающее устройство.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Таблица истинности двоичного счетчика приведена в Табл.1. А временные диаграммы см. рис.3.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/Count/count_sh3.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.3. Временные диаграммы работы счетчика</span></p> <p align="center"> </p> <p> </p> <div align="center"> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="164"> <p align="center"><strong>номер входного импульса</strong></p> </td> <td width="22"> <p><strong>Q3</strong></p> </td> <td width="22"> <p><strong>Q2</strong></p> </td> <td width="22"> <p><strong>Q1</strong></p> </td> <td width="22"> <p><strong>Q0</strong></p> </td> </tr> <tr> <td width="164"> <p align="center">0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">2</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">3</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">4</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">5</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">6</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">7</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">8</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">9</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">10</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">11</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">12</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">13</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> <td> <p>1</p> </td> </tr> <tr> <td width="164"> <p align="center">14</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>0</p> </td> </tr> <tr> <td width="164"> <p align="center">15</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> <td> <p>1</p> </td> </tr> </tbody> </table> </div> <p align="center"><span style="font-size: medium;">Табл.1. Таблица истинности двоичного счетчика</span></p> <p> </p> <p> </p> <p style="text-align: justify;"> </p></div> Мультиплексор 2013-12-02T03:43:09+00:00 2013-12-02T03:43:09+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/182-multipleksor EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><strong>       <span style="font-size: medium;">     Мультиплексоры</span></strong><span style="font-size: medium;"> (multiplexer – коммутатор, multi – много, plex – сеть) – устройства, передающие сигнал с одного из входов, указанного в адресе, на общий выход.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис 1 изображен простейший битовый мультиплексор.</span></p> <p><img src="images/statyi/FPGA/OCT/MUX/mux_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Битовый мультиплексор</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Принцип работы заключается в том, что при установки на вход «S0» уровня лог. «1» сигнал на входе «O» равен сигналу «D1». Если «S0» = лог.0, тогда «O» = «D0».</span></p> <p style="text-align: justify;"><span style="font-size: medium;">В таблице 1 приводится таблица истинности битового мультиплексора.</span></p> <div align="center"> <table style="margin-left: auto; margin-right: auto;" border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>S0</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>D0</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>D1</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>О</strong></span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">Z</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">Z</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;"><span style="font-size: medium;">Табл.1 Таблица истинности битового мультиплексора</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Мультиплексоры также бывают на 4, 8, 16, 32 бита. Т.е. возникает необходимость мультиплексировать любое количество входных бит на единственный выход. Так же возможна коммутация байтовых входов на единый байтовый выход мультиплексора, принцип функционирования подобного устройства аналогичен. Т.е. при установки на адресную шину «S» определенной комбинации код преобразуется  и разрешает на выход «О» любой из входных байт данных (см. рис. 2).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/MUX/mux_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Байтовый мультиплексор</span></p></div> <div class="feed-description"><p style="text-align: justify;"><strong>       <span style="font-size: medium;">     Мультиплексоры</span></strong><span style="font-size: medium;"> (multiplexer – коммутатор, multi – много, plex – сеть) – устройства, передающие сигнал с одного из входов, указанного в адресе, на общий выход.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            На рис 1 изображен простейший битовый мультиплексор.</span></p> <p><img src="images/statyi/FPGA/OCT/MUX/mux_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p style="text-align: center;" align="center"><span style="font-size: medium;">Рис.1. Битовый мультиплексор</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Принцип работы заключается в том, что при установки на вход «S0» уровня лог. «1» сигнал на входе «O» равен сигналу «D1». Если «S0» = лог.0, тогда «O» = «D0».</span></p> <p style="text-align: justify;"><span style="font-size: medium;">В таблице 1 приводится таблица истинности битового мультиплексора.</span></p> <div align="center"> <table style="margin-left: auto; margin-right: auto;" border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>S0</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>D0</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>D1</strong></span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;"><strong>О</strong></span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">0</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> </tr> <tr> <td valign="top"> <p align="center"><span style="font-size: medium;">Z</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">1</span></p> </td> <td valign="top"> <p align="center"><span style="font-size: medium;">Z</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: center;"><span style="font-size: medium;">Табл.1 Таблица истинности битового мультиплексора</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Мультиплексоры также бывают на 4, 8, 16, 32 бита. Т.е. возникает необходимость мультиплексировать любое количество входных бит на единственный выход. Так же возможна коммутация байтовых входов на единый байтовый выход мультиплексора, принцип функционирования подобного устройства аналогичен. Т.е. при установки на адресную шину «S» определенной комбинации код преобразуется  и разрешает на выход «О» любой из входных байт данных (см. рис. 2).</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/MUX/mux_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Байтовый мультиплексор</span></p></div> Принцип функционирования RAM 2013-12-04T01:34:05+00:00 2013-12-04T01:34:05+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/185-printsip-funktsionirovaniya-ram EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;"> <span style="font-size: medium;">         </span></span>Оперативная память в отечественной терминологии – это оперативное запоминающее устройство, а в западной RAM, то есть «Random Acsess Memory» или память с произвольным доступом.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">         ОЗУ представляет собой область временного хранения данных при помощи которых обеспечивается функционирование программного обеспечения. Память состоит из ячеек, каждая из которых предназначена для хранения определенного объема данных.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">     </span>Конкретная ячейка ОЗУ выбирается при помощи двоичного кода – адреса ячейки. Объем памяти ОЗУ зависит от количества ячеек содержащихся в ней или от количества адресной шины.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">         </span>Объем ОЗУ (глубину RAM) можно определить, возведя 2<sup>n</sup>, где n – количество разрядов в адресной шине.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">     </span>ОЗУ состоит из адресного дешифратора и регистровых ячеек памяти. Адрес дешифрируется и разрешает доступ к содержимому выбранного регистра памяти. Считывание и запись производится под управлением сигналов «WR» (от англ. Write -запись) <strong> </strong>и «RD» (от англ. Read - чтение). Так же память может быть синхронной и асинхронной, т.е. работать от тактов, либо асинхронно управляться сигналами записи и чтения. Так же можно на УГО увидеть такой сигнал как «CS» (от англ. слова «CS» - chip select), который позволяет использовать единое адресное пространство. УГО RAM приводится на рис. 1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/RAM/ram_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. УГО RAM(ОЗУ)</span></p> <p> </p></div> <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;"> <span style="font-size: medium;">         </span></span>Оперативная память в отечественной терминологии – это оперативное запоминающее устройство, а в западной RAM, то есть «Random Acsess Memory» или память с произвольным доступом.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">         ОЗУ представляет собой область временного хранения данных при помощи которых обеспечивается функционирование программного обеспечения. Память состоит из ячеек, каждая из которых предназначена для хранения определенного объема данных.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">     </span>Конкретная ячейка ОЗУ выбирается при помощи двоичного кода – адреса ячейки. Объем памяти ОЗУ зависит от количества ячеек содержащихся в ней или от количества адресной шины.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">         </span>Объем ОЗУ (глубину RAM) можно определить, возведя 2<sup>n</sup>, где n – количество разрядов в адресной шине.</span></p> <p style="text-align: justify;"><span style="font-size: medium;"><span style="font-size: medium;">     </span>ОЗУ состоит из адресного дешифратора и регистровых ячеек памяти. Адрес дешифрируется и разрешает доступ к содержимому выбранного регистра памяти. Считывание и запись производится под управлением сигналов «WR» (от англ. Write -запись) <strong> </strong>и «RD» (от англ. Read - чтение). Так же память может быть синхронной и асинхронной, т.е. работать от тактов, либо асинхронно управляться сигналами записи и чтения. Так же можно на УГО увидеть такой сигнал как «CS» (от англ. слова «CS» - chip select), который позволяет использовать единое адресное пространство. УГО RAM приводится на рис. 1.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/RAM/ram_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. УГО RAM(ОЗУ)</span></p> <p> </p></div> Принцип работы ROM 2013-12-05T01:56:24+00:00 2013-12-05T01:56:24+00:00 http://portal-ed.ru/index.php/osnovy-tsifrovoj-tekhniki/186-printsip-raboty-rom EngineerDeveloper® [email protected] <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">              ROM (read only memory — память доступная только для чтения). Функции этого устройства понятны из названия. Т.е. это энергонезависимая память, с которой можно только считывать в процессе работы какого-либо устройства.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            В силу того, что ряд моих статей предназначен преимущественно для разъяснения принципов функционирования кодовых конструкций, поэтому я абстрагируюсь от ROM микросхем и истории их возникновения.</span></p> <p><span style="font-size: medium;">И так, ROM память:</span></p> <ol> <li><span style="font-size: medium;">Закладывается на стадии разработки устройства;</span></li> <li><span style="font-size: medium;">С неё можно только считывать в процессе работы устройства;</span></li> <li><span style="font-size: medium;">Она энергонезависимая.</span></li> </ol> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">На рисунке 1 приведено УГО ROM памяти.</span></p> <p style="text-align: center;"><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/ROM/ROM_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. УГО ROM памяти</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из рисунка видно, что ROM память имеет вход выбора микросхемы «CS», адресные входы «A(4:0)» и выходную шину данных «D(7:0)».</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            При установки на адресную шину значения от 0 до 32 и установить сигнал выбора микросхемы в нуль (как правило, логика инверсная на сигналах типа WR, RD, CS) на выходной шине данных появится содержимое той ячейки памяти, на которую указал адрес. Для нарядности привожу упрощённые временные диаграммы на рис.2.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/ROM/ROM_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Временные диаграммы работы ROM памяти</span></p> <p style="text-align: justify;"><span style="font-size: medium;"> </span></p></div> <div class="feed-description"><p style="text-align: justify;"><span style="font-size: medium;">              ROM (read only memory — память доступная только для чтения). Функции этого устройства понятны из названия. Т.е. это энергонезависимая память, с которой можно только считывать в процессе работы какого-либо устройства.</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            В силу того, что ряд моих статей предназначен преимущественно для разъяснения принципов функционирования кодовых конструкций, поэтому я абстрагируюсь от ROM микросхем и истории их возникновения.</span></p> <p><span style="font-size: medium;">И так, ROM память:</span></p> <ol> <li><span style="font-size: medium;">Закладывается на стадии разработки устройства;</span></li> <li><span style="font-size: medium;">С неё можно только считывать в процессе работы устройства;</span></li> <li><span style="font-size: medium;">Она энергонезависимая.</span></li> </ol> <p><span style="font-size: medium;"> </span></p> <p><span style="font-size: medium;">На рисунке 1 приведено УГО ROM памяти.</span></p> <p style="text-align: center;"><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/ROM/ROM_sh1.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.1. УГО ROM памяти</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            Из рисунка видно, что ROM память имеет вход выбора микросхемы «CS», адресные входы «A(4:0)» и выходную шину данных «D(7:0)».</span></p> <p style="text-align: justify;"><span style="font-size: medium;">            При установки на адресную шину значения от 0 до 32 и установить сигнал выбора микросхемы в нуль (как правило, логика инверсная на сигналах типа WR, RD, CS) на выходной шине данных появится содержимое той ячейки памяти, на которую указал адрес. Для нарядности привожу упрощённые временные диаграммы на рис.2.</span></p> <p><span style="font-size: medium;"><img src="images/statyi/FPGA/OCT/ROM/ROM_sh2.jpg" border="0" alt="" style="display: block; margin-left: auto; margin-right: auto;" /></span></p> <p align="center"><span style="font-size: medium;">Рис.2. Временные диаграммы работы ROM памяти</span></p> <p style="text-align: justify;"><span style="font-size: medium;"> </span></p></div>