Необходимые материалы для лекции Logisim-03.zip и Verilog-03.zip.
Последовательностное устройство - это цифровое устройство с памятью. Память в данных устройствах обеспечивается за счёт создания положительной обратной связи между элементами. Соответственно выходной сигнал устройства определяется не только текущим состоянии входа, но и рядом предыдущих состояний.
На рисунке 3.1 приведена схема, в которой вводится положительная обратная связь.
На данной схеме вводится два входа. Первый вход будет устанавливать схему в хранение лог. "1". Вход поименован как "Set". Второй вход будет переводить схему в лог. "0" и поименован как "Reset".
Вход "Set" подключен к двухвходовому дизъюнктору D1. Выход с элемента D1 подключен к двухвходовому конъюнктору D3. Сигнал с Reset через инвертор D2 поступает на второй вход элемента D3. Для переключения схемы сигнал "Reset" через инвертор обеспечивает присутствие лог. "1" на втором входе D3.
C выхода D3 снимается сигнал и возвращается на элемент D1, обеспечивая положительную обратную связь.
(рис 3.1)
При установке на входе "Reset" лог. "0" и подаче лог. "1" на вход "Set" на выходе "Quit" возникает сигнал лог. "1" (рисунок 3.2а ). Если на входе "Set" установить лог. "0", то схема не изменит своего состояния (рисунок 3.2б ). При смене сигнала на входе "Reset", на выходе "Quit" установится уровень лог. "0" (рисунок 3.2в )
(рис 3.2)
В качестве базовой единицы хранения 1 бита данных применяются триггеры. Триггером называются логическая схема, имеющая два устойчивых состояния, которые называют единичным и нулевым состоянием. Триггер является основным блоком для реализации других более сложных последовательностных устройств.
Базовым триггером является RS (или SR) триггер. Называется он по именам управляющих сигналов, где S - set, R - reset.
Триггеры имеют следующую классификацию:
Триггеры строятся на инверсной логике.
На рисунке 3.3 приведена схема RS-триггера на элементах ИЛИ-НЕ по стандарту ЕСКД (рисунок 3.3а ) и на логических элементах в среде Logisim Evolution (рисунок 3.3б ).
Триггер имеет два входа R и S, а также два выхода Quit (Q) прямой и инверсный Quit (nQ).
Инверсные элементы 2ИЛИ-НЕ соединены кольцом, то есть с выхода одного элемента, сигнал поступает на вход другого. Пока на обоих управляющих входах R и S уровни сигнала неактивные, в данном случае лог. "0", триггер находится в каком-либо одном из двух устойчивых состояний. Если значение сигнала на выходе Q равно лог. "1", то как видно из схемы, этот сигнал, поступая по цепи обратной связи на вход элемента, обозначенного цифрой 2, вызывает появление на выходе инверсного Q (nQ) сигнала с уровнем лог. "0". В свою очередь лог. "0" с выхода инверсного Q (nQ), поступая на вход элемента 1, поддерживает состояние лог "1" на выходе Q. Иначе говоря, при входных сигналах R и S равных нулю, триггер примет одно устойчивое состояние, и будет находится в нем сколь угодно долго. Когда на прямом выходе Q сигнал равен лог "1", то считается что триггер находится в состоянии 1 или установлен.
В силу симметрии схемы она будет столь устойчивой в своём противоположном нулевом состоянии. Когда уровень на выходе Q равен нулю, а уровень на Q инверсном (nQ) соответствует лог. "1", в этом случае считается, что триггер сброшен или погашен. Когда оба управляющих сигнала R и S не активны, то такой режим называют режимом хранения.
(рис 3.3)
На рисунке 3.4 приведены режимы работы RS триггера. В таблице 3.1 приведена таблица истинности для данного триггера, где Qt - начальное состояние триггера, Q(t+1) - изменяемое состояние.
(рис 3.4)
| R | S | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Режим хранения |
| 0 | 0 | 1 | 1 | |
| 0 | 1 | 1 | 1 | Режим установки |
| 0 | 1 | 1 | 1 | |
| 1 | 0 | 0 | 0 | Режим сброса |
| 1 | 0 | 1 | 0 | |
| 1 | 1 | 0 | X | Запрещенное состояние |
| 1 | 1 | 1 | X |
Из таблицы 3.1 видно, что существует запрещенное состояние. Данное состояние необходимо прояснить.
Если на входы RS триггера подать одновременно входной сигнал лог. "1", то на обоих выходах Q и инверсном Q устанавливается лог. "0". Если одновременно снять единицы со входов RS, то элементы триггера начнут переключаться в единичное состояние, каждый стремясь при этом оставить своего партнера в нуле. Какой элемент сработает зависит от коэффициента усиления, скоростей переходных процессов и ряда других неизвестных заранее факторов. Для разработчика схемы результирующее состояние триггера оказывается неопределённым, поэтому комбинация R=S=1 считается запрещённой и в обычных условиях её необходимо блокировать. На рисунке 3.5 показан режим запрещенного состояния (для имитации возврата из запрещённого состояния оставлен один вход).
(рис 3.5)
По отношению к рассмотренному RS триггеру имеется обратный вариант реализации на элементах 2И-НЕ. Такие триггеры управляются сигналами лог. "0". На рисунке 3.6 приведены режимы работы триггера на элементах 2И-НЕ. В таблице 3.2 приведена таблица истинности для данного триггера.
(рис 3.6)
| R | S | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | 0 | 0 | X | Запрещенное состояние |
| 0 | 0 | 1 | X | |
| 0 | 1 | 1 | 0 | Режим сброса |
| 0 | 1 | 1 | 0 | |
| 1 | 0 | 0 | 1 | Режим установки |
| 1 | 0 | 1 | 1 | |
| 1 | 1 | 0 | 0 | Режим хранения |
| 1 | 1 | 1 | 1 |
Для защиты триггера от возникновения запрещенных состояний, например при помехах, в схему вводится буферный элемент, включаемый также по схеме триггера. При вводе буферной схемы меняется уровень срабатывания входных сигналов. В схеме, приведенной на рисунке 3.7, уровнем срабатывания будет являться лог. "1". Элементы D3-D4 являются непосредственно триггером, а на элементах D1, D2 работает механизм, ограничивающий реакции на одном из входов, сигнал на котором появляется позже. Данный механизм обеспечивается за счет того, что обратная связь обеспечивает наличие устойчивого состояния.
(рис 3.7)
Для повышения надёжности триггеров применяется дополнительный вход управления, называемый синхросигналом С (clock). В принципе цифровые устройства с памятью, микропроцессорные системы подразумевают наличие синхронизации. Цифровые узлы и периферийные устройства, интерфейсы связи по большей части работают синхронно. Синхронизация обеспечивает качество и надежность обмена данными. В дополнительной литературе [1,2] можно подробно ознакомиться с описанием генераторов синхросигналов и построение систем синхронизации.
На рисунке 3.8 приведена функциональная схема синхронного SR-триггера. Для его создания применяются элементы 3И-НЕ (D1, D2). Третий вход данных элементов будет объединен и подключен к элементу вход. Его метка присвоено значение "С". На рисунке 3.9 приведено условно-графическое обозначение синхронного SR-триггера в ANSI (рисунок 3.9а ) и ЕСКД (рисунок 3.9б ).
(рис 3.8)
(рис 3.9)
Следующим видом триггеров, является D-триггер, он же триггер, управляемый уровнем синхросигнала. Также встречается в литературе определение "защёлка" или "latch". Ещё один вариант названия - DC-триггер и расшифровывается как С - clock, D - delay (в некоторых источниках можно встретить как data, что в принципе тоже верно по отношению к его функционалу). На рисунке 3.10 показан универсальный способ построения синхронного D-триггера на базе SR триггера.
На элементах D4, D5 реализована ячейка SR-триггера. На элементах D2, D3 реализована схема управления записью в SR-триггер. Элемент D1 обеспечивает инверсию на входе D3, тем самым обеспечивая установку триггера в сброшенное состояние.
(рис 3.10)
В таблице 3.3 приведена таблица истинности для рассматриваемого триггера
| C | D | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | X | 0 | 0 | Режим хранения |
| 0 | X | 1 | 1 | |
| 1 | 0 | X | 0 | Режим записи (0) |
| 1 | 1 | X | 1 | Режим записи (1) |
На рисунке 3.11а приведено условно-графическое обозначение синхронного D-триггера в ANSI, а на рисунке 3.11б для ЕСКД.
(рис 3.11)
Для проверки работы схемы в меню "Моделировать" необходимо выбрать "Такты включены". В открывшемся диалоговом окне (рисунок 3.12), выбрать вход С.
(рис 3.12)
Частота синхросигналов задается в меню "Моделировать" - "Тактовая частота".
На примере данного триггера можно рассмотреть еще один вид неверного работа цифровых цепей - "гонка сигналов" (race condition).
Гонка (состязание) сигналов несоответствие сигналов на выходе, вызванное переходными процессами в цепях устройств.
Для наблюдения данной ошибки добавим в схему виртуальный осциллограф. Данный инструмент находится во вкладке "Input/Output Extra" и называется "Цифровой осциллятор". На рисунке 3.13 приведен данный инструмент, где цифрами обозначены: 1 - тактовый вход, подключается к тактовому входу; 2 - вход для измеряемых сигналов.
Основные свойства:
(рис 3.13)
На рисунке 3.14 приведена работа триггера с отслеживанием изменения сигналов в контрольных точках 1 и 3. На осциллографе красным выделен переходный процесс, который возникает из-за задержки прохождения сигнала в цепи D1-D3 относительно элемента D3.
(рис 3.14)
Для устранения ошибок гонки сигналов триггеры делают двухступенчатыми. Двухступенчатый триггер состоит из двух триггеров: M-master (ведущий), S - slave (ведомый). Такой триггер именуется MS в условно-графическом обозначении в поле функции пишется ТТ.
Особенность организации двухступенчатых триггеров заключается в применении схем инверсии сигнала синхронизации либо схем запрещающих связей. Изменение сигналов на входе при фронте (спаде) сигнала синхронизации не вызывает изменение сигналов на выходе триггера. Такое поведение триггера называется свойством непрозрачности.
Метастабильность триггеров - это состояние, в котором триггер может находиться в промежуточном, непостоянном состоянии, не находясь при этом в устойчивом нулевом или единичном состоянии. Это явление характерно для систем, в которых триггер может реагировать на входные сигналы, но обладает определённым временем задержки.
Метастабильность возникает, когда триггер сталкивается с изменениями на входе, которые происходят слишком быстро относительно его времени отклика. В таких случаях он может оказаться в промежуточном состоянии, что может привести к непредсказуемому поведению.
Примером является D-триггер, который может стать метастабильным, если на его вход подается сигнал, когда триггер находится в состоянии изменения. Это происходит, например, при использовании триггеров в цифровых схемах, где синхронизация осуществляется на низкой частоте, относительно входных сингалов. В литературе [1,4,5] приводятся подробные выкладки с диаграммами, поясняющими природу данной ошибки.
Явление метастабильности невозможно полностью исключить, но возможно снизить риск ее возникновения. Для этого применяются следующие подходы:
Синхронизация с тактовыми сигналами. Использование синхронизирующих триггеров для согласовывания асинхронных сигналов с тактовыми позволяет уменьшить вероятность метастабильности. Это достигается путём передачи входного сигнала через несколько последовательных триггеров, что даёт время для стабилизации (рисунок 3.15). Возникновение метастабильности на первом триггере не приведет к искажению сигнала на выходе третьего.
(рис 3.15)
В приложении А приводится механизм преодоления метастабильности с применением языка описания аппаратуры Verilog HDL.
Важно! Необходимо прояснить по поводу видов синхросигналов в цепях последовательностных устройств. По "фронту синхросигнала" либо по "переднему фронту" значит, что схема записывает данные при переходе синхросигнала из низкого уровня в состояние лог. "1". По "заднему фронту" или "спадающем фронту" синхросигнала значит, что схема будет срабатывать и осуществлять запись данных в цепях при переходе синхросигнала из высокого уровня в состоянии низкого уровня. В период этого перехода происходит обработка данных. На рисунке 3.16 показано обозначение этих самых динамических входов по "фронту" и по "спаду" для ANSI и ЕСКД (а), Logisim Evoluion(б).
(рис 3.16)
В лабораторной работе 2 необходимо выполнить проектирование двухступенчатого D-триггера.
Свойство непрозрачности МS-триггера использовано для построения интересного и широко применяемого JК-триггера, схема которого показана на рисунке 3.17. JK-триггер является наиболее используемым из всех конструкций триггеров и считается универсальной схемой триггера.
Схема JK-триггера похожа на SR, а его последовательная работа точно такая же. Разница в том, что JK-триггер не имеет недействительных или запрещенных входных состояний как SR, даже когда на оба входа подается управляющий сигнал.
JК-триггер - это непрозрачный триггер, выходы которого петлями инвертирующих обратных связей (накрест) заведены на элементы 1 и 2 (2И-НЕ). Из-за данных связей система моделирования Logisim Evolution не может смоделировать JK-триггер на дискретных комбинационных элементах.
При J=К=0 С-сигнал не может открыть входные элементы 1 и 2, и триггер находится в режиме хранения. При J=1, К=0 синхросигналом может быть открыт лишь элемент 1 и только при условии, что перед поступлением С-сигнала на выходе триггера был 0 (Q=0, $$\bar Q=1$$). Тогда по спаду синхросигнала триггер переключится в 1. Если же триггер до синхросигнала был в 1, то он так и останется в этом состоянии. Таким образом, J-вход выполняет функции синхронизированного S-входа. В силу симметрии схемы легко показать, что К-вход выполняет функции синхронизированного R-входа, переводя триггер в сброшенное состояние. Таким образом, при разноименных уровнях на J и К-входах JК-триггер ведет себя как синхронный непрозрачный RS-триггер. При сигнале на J=K=1 поведение JК-триггера сильно отличается от SR. При любом состоянии триггера обратные связи при поступлении С-сигнала откроют тот элемент И-НЕ, который переведет триггер в противоположное состояние. Таким образом при J=K=1 триггер переключается в противоположное состояние. Данный режим называется счетным или T (toggle - кувыркаться), а работающий в таком режиме триггер называется Т-триггером.
(рис 3.17)
В таблице 3.4 приведена таблица истинности (работы) JK- триггера.
| C | J | K | Q(T) | Q(t+1) | Пояснения |
|---|---|---|---|---|---|
| 0 | X | X | 0 | 0 | Режим хранения |
| 0 | X | X | 1 | 1 | |
| 1 | 0 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 1 | 1 | |
| 1 | 0 | 1 | 0 | 1 | Режим сброса |
| 1 | 0 | 1 | 1 | 1 | |
| 1 | 1 | 0 | 0 | 0 | Режим установки |
| 1 | 1 | 0 | 1 | 0 | |
| 1 | 1 | 1 | 0 | 1 | J=K=1, счетный режим |
| 1 | 1 | 1 | 1 | 0 |
На рисунке 3.18а приведено условно-графическое обозначение синхронного JK-триггера в ANSI, а на рисунке 3.18б в ЕСКД.
(рис 3.18)
Т-триггер представляет собой триггер, у которого отсутствуют сигналы J и К, а тактирование осуществляется по счётному входу Т. Синхронный Т триггер объединяет для счетного входа J и K. Вход C остается включенным так, как показано на рисунке 3.17. Т-триггер в силу особенностей обратных связей в среде невозможно смоделировать на дискретных элементах Logisim Evolution.
В таблице 3.5 приведена таблица истинности для синхронного Т триггера.
| C | T | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | X | 0 | 0 | Режим хранения |
| 0 | X | 1 | 1 | |
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 1 | |
| 1 | 1 | 0 | 1 | Режим установки |
| 1 | 1 | 1 | 0 | Режим сброса |
На рисунке 3.19а приведено условно-графическое обозначение синхронного T-триггера в ANSI, а на рисунке 3.19б в ЕСКД.
(рис 3.19)
Триггеры могут быть взаимозаменяемыми при изменении схемы включения и добавления элементов комбинационной логики. Решение задачи взаимозаменяемости триггеров осуществляется в практической работе 3.
В среде Logisim Evolution в разделе "Память" находятся синхронные триггеры. Разработчики обеспечили защиту виртуальных элементов от неверного срабатывания, например, "гонки сигналов".
В таблице 3.6 приведено условно-графическое обозначение данных триггеров, а также назначение сигналов. Для всех синхронных триггеров в их основным свойством является срабатывание, определяющее вид синхросигнала, переключающего триггер в заданное состояние:
| Вид триггера | Условно-графическое обозначение | Назначение сигналов |
|---|---|---|
| Синхронный D-триггер | ![]() |
1 - синхронный D вход; 2 - вход синхронизации (С); 3 - асинхронный вход S; 4 - асинхронный вход R; 5 - прямой выход Q; 6 - инверсный выход Q. |
| Синхронный T-триггер | ![]() |
1 - синхронный T вход; 2 - вход синхронизации (С); 3 - асинхронный вход S; 4 - асинхронный вход R; 5 - прямой выход Q; 6 - инверсный выход Q. |
| Синхронный JK-триггер | ![]() |
1 - синхронный J вход; 1 - синхронный K вход; 3 - вход синхронизации (С); 4 - асинхронный вход S; 5 - асинхронный вход R; 6 - прямой выход Q; 7 - инверсный выход Q. |
| Синхронный SR-триггер | ![]() |
1 - синхронный J вход; 2 - синхронный K вход; 3 - вход синхронизации (С); 4 - асинхронный вход S; 5 - асинхронный вход R; 6 - прямой выход Q; 7 - инверсный выход Q. |
Целю лабораторной работы является:
В среде Logisim Evolution создать новый файл и сохранить его под именем DV. Построить схему, приведенную на рисунке 3.20. На элементах D3, D4 реализован ведущий RS триггер. Элементы D1, D2 образуют комбинационную схему, реализующую функцию синхронизации и работы линии D. На элементах D5-D8 реализован синхронный SR-триггер. Его синхронизация осуществляется в противофазе входному сигналу С за счет включения в линию инвертора D9.
(рис 3.20)
Попеременно подавая сигналы на входы D и С, необходимо убедится в работоспособности собранной схемы.
Для работы с инструментом "Хронограмма7quot; подключить элемент "выход" к линиям S и R и выходу инвертора D9 (рисунок 3.21).
(рис 3.21)
Далее вызвать перейти в меню "Моделировать" - "Запись в журнал". Во вкладке "Options" в секции "Logging Mode" выбрать "Clocked mode". В открывшемся диалоговом окне, аналогичному приведенному на рисунке 3.12 выбрать в качестве синхронизируемого входа - С. В выпадающем списке "Time scale" задать "1.0 s". В списке "Clock Discipline" выбрать "capture on both edges". В меню "Моделировать" тактовая частота задать 2 Гц и выбрать такты включены. Перейти во вкладку "Хронограмма" (рисунок 3.22). В меню быстрого доступа нажать на кнопку "Запускайте симулятор непрерывно" (выделена на рисунке областью красного цвета).
(рис 3.22)
На рисунке 3.23 приведена диаграмма работы триггера. На ней можно видеть режимы сброса триггера при включении, переходы в период смены сигнала на входе.
(рис 3.23)
Для обеспечения стабильной работы триггера защелки на высоких частотах разработчики могут вводить дополнительный вход управления записью - стробирование, именуемый V. Видоизменим схему, добавив еще один вход элементам D1 и D3. Вход V объединяется у элементов D1 и D2 (рисунок 3.24).
(рис 3.24)
Самостоятельно
(рис 3.25)
В среде Quartus на языке Verilog HDL требуется создать два вида двухтактных триггеров и разработать тесты. В листинге 3.1 приведен код для двухтактной защелки, которая управляется уровнем сигнала на входе clk.
module latch_MS (input clk,D, output reg Q); reg c; \\ регистровая переменная с always @(*) if (clk) \\если на входе лог. 1 c=D; \\присвоить переменной значение с D always @(*) \\анализируем уход лог 1 с входа d if (~clk) Q=c; \\выходу Q присвоить содержимое с Endmodule
На рисунке 3.26 представлен вид RTL для данного листинга.
(рис 3.26)
В листинге 3.2 приведен код двухтактного триггера, анализирующего перепад за счет ввода ключевых слов, анализирующих сигнал posedge - по фронту сигнала, negedge - по спаду. Также присваивание = заменено на <=, что будет более правильным вариантом записи, исключающим "гонку сигналов".
module latch_MS1 (input clk, D, output reg Q);
reg master; // переменная ведущего триггера
reg slave; // переменная подчиненного триггера
// проверяем возникновение фронта сигнала clk
always @(posedge clk) begin
master <= D; // Capture data on the rising edge of the clock
end
// проверяем изменение синхронизации на спад
always @(negedge clk) begin
slave <= master; // передача данных между регистровыми переменными
end
// анализируем изменения сигналов
always @(*) begin
Q = slave; // выходу присваивается содержимое ведомого триггера
end
endmodule
На рисунке 3.27 представлен вид RTL для листинга 3.2.
(рис 3.27)
В листинге 3.3 приведено содержимое файла testbench.v для двухтактного синхронного триггера.
module testbench;
reg D; // вход D
reg clk; // синхровход clk
wire Q; // Выход Q
// привязка линий триггера
latch_MS1 uut (
.D(D),
.clk(clk),
.Q(Q)
);
// генерация сигнала
initial begin
clk = 0;
forever #5 clk = ~clk; // цикл синхросигналов
end
initial begin
// Начальное состояние на линии D
D = 0;
// задержка
#10;
// тестирование такта 1
D = 1;
#10; // период ожидание
$display("D=%b, Q=%b", D, Q); // Check outputs
// тестирование такта 2
D = 0;
#10;
$display("D=%b, Q=%b", D, Q);
// тестирование такта 3
D = 1;
#10;
$display("D=%b, Q=%b", D, Q);
// тестирование такта 4 состояния итог
D = 0;
#10;
$display("D=%b, Q=%b", D, Q);
// окончание симуляции
$stop;
end
endmodule
На рисунке 3.28 приведена диаграмма тестирования синхронного триггера.
(рис 3.28)
Самостоятельно
На рисунке 3.29 приведен вариант реализации синхронного SR-триггера на D-триггере.
(рис 3.29)
Ниже на рисунке 3.30 показана временная диаграмма работы триггера, с использованием инструмента "Хронограмма". Диаграмма реализована на частоте 1Гц. (во вкладке "Options" качестве "Clock Source" задан вход С). По данной диаграмме проводится сверка с диаграммой работы для синхронного SR-триггера Logisim Evolution. Далее проверятся условие перехода триггера из индивидуального задания в запрещенное состояние.
(рис 3.30)
Задание выполняется по варианту из таблицы 3.7
| № варианта | Создаваемые синхронные триггеры | Базовый триггер | Срабатывание базового триггера |
|---|---|---|---|
| 1,7,13,19 | JK, T | D | Передний фронт |
| 2,8,14,20 | JK, T | D | Задний фронт |
| 3,9,15,21 | D, T | SR | Передний фронт |
| 4,10,16,22 | D, TC | SR | Задний фронт |
| 5,11,17,23 | SR, T | JK | Передний фронт |
| 6,12,18,24 | SR, T | JK | Задний фронт |
В таблице 3.8 приведено структурное описание на языке Verilog HDL SR-триггера, также приведен его тест.
Необходимо реализовать структурное описание JK-триггера на языке Verilog HDL и разработать тестовое окружение.
| Описание триггера | Тестовое окружение триггера |
|---|---|
module sr_latch (
input wire S, //установка (Set)
input wire R, //сброс (Reset)
output wire Q, //выход Q
output wire Qn //выход Qn (инверсный)
);
wire n1, n2; //внутренние соединения
// первый NAND элемент
nand (n1, S, Qn);
// второй NAND элемент
nand (n2, R, Q);
assign Q = n1; //выход Q
assign Qn = n2; //выход Qn
endmodule
|
module testbench;
reg S; //установка
reg R; //сброс
wire Q; //выход Q
wire Qn; //выход Qn
// связывание SR-триггера
sr_latch uut (
.S(S),
.R(R),
.Q(Q),
.Qn(Qn)
);
initial begin
// Инициализация
S = 0;
R = 0;
// тестовые сигналы
#10 S = 1; R = 0; // установить триггер //в 1
#10 S = 0; R = 1; // сбросить триггер в //0
#10 S = 0; R = 0; // хранение
#10 S = 1; R = 0; //установить Q в 1 снова
#10 S = 0; R = 1; //сбросить Q в 0
$finish; //завершить симуляцию
end
// вывод состояний
initial begin
$monitor("Time: %0t | S = %b, R = %b | Q = %b, Qn = %b", $time, S, R, Q, Qn);
end
endmodule
|
Результат симуляции представлен на рисунке 3.31.
(рис 3.31)
Дать ответы на следующие вопросы:
Для преодоления метастабильности можно увеличить времени на установку (setup time), путем задания задержки входного сигнала.
Для реализации необходимо создать описание D-триггера (листинг 3.4).
module D_dff (
input wire D,
input wire clk,
input wire reset,
output reg Q
);
reg D_reg;
always @(posedge clk or posedge reset) begin
if (reset) begin
D_reg <= 0;
end else begin
D_reg <= D;
end
end
always @(posedge clk or posedge reset) begin
if (reset) begin
Q <= 0;
end else begin
Q <= D_reg;
end
end
endmodule
Далее создается файл, выполняющий задержку распространения сигнала (листинг 3.5).
module D_meta(
input wire clk,
input wire D,
output wire Q
);
reg D_stable;
// Задержка входного сигнала D
always @(posedge clk) begin
// Обновление только если clk высокий достаточно долго
D_stable <= D;
end
// подключение D-триггера
D_dff (
.D(D_stable),
.clk(clk),
.reset(1'b0),
.Q(Q)
);
Endmodule
На рисунке 3.32 приведено RTL представление полученного триггера.
(рис 3.32)
Для создания схемы преодоления метастабильности с применением нескольких триггеров создадим базовый D-триггер (листинг 3.4) и файл верхнего уровня, приведенный в листинге 3.6
module D_meta (
input wire D,
input wire clk,
output wire Q
);
wire D_intermediate;
// Первый триггер
D_dff first_ff(
.D(D),
.clk(clk),
.reset(1'b0),
.Q(D_intermediate)
);
// Второй триггер
D_dff second_ff (
.D(D_intermediate),
.clk(clk),
.reset(1'b0),
.Q(Q)
);
Endmodule
На рисунке 3.33 приведено RTL представление полученного триггера.
(рис 3.33)
Необходимые материалы для лекции Logisim-03.zip и Verilog-03.zip.
Последовательностное устройство - это цифровое устройство с памятью. Память в данных устройствах обеспечивается за счёт создания положительной обратной связи между элементами. Соответственно выходной сигнал устройства определяется не только текущим состоянии входа, но и рядом предыдущих состояний.
На рисунке 3.1 приведена схема, в которой вводится положительная обратная связь.
На данной схеме вводится два входа. Первый вход будет устанавливать схему в хранение лог. "1". Вход поименован как "Set". Второй вход будет переводить схему в лог. "0" и поименован как "Reset".
Вход "Set" подключен к двухвходовому дизъюнктору D1. Выход с элемента D1 подключен к двухвходовому конъюнктору D3. Сигнал с Reset через инвертор D2 поступает на второй вход элемента D3. Для переключения схемы сигнал "Reset" через инвертор обеспечивает присутствие лог. "1" на втором входе D3.
C выхода D3 снимается сигнал и возвращается на элемент D1, обеспечивая положительную обратную связь.
(рис 3.1)
При установке на входе "Reset" лог. "0" и подаче лог. "1" на вход "Set" на выходе "Quit" возникает сигнал лог. "1" (рисунок 3.2а ). Если на входе "Set" установить лог. "0", то схема не изменит своего состояния (рисунок 3.2б ). При смене сигнала на входе "Reset", на выходе "Quit" установится уровень лог. "0" (рисунок 3.2в )
(рис 3.2)
В качестве базовой единицы хранения 1 бита данных применяются триггеры. Триггером называются логическая схема, имеющая два устойчивых состояния, которые называют единичным и нулевым состоянием. Триггер является основным блоком для реализации других более сложных последовательностных устройств.
Базовым триггером является RS (или SR) триггер. Называется он по именам управляющих сигналов, где S - set, R - reset.
Триггеры имеют следующую классификацию:
Триггеры строятся на инверсной логике.
На рисунке 3.3 приведена схема RS-триггера на элементах ИЛИ-НЕ по стандарту ЕСКД (рисунок 3.3а ) и на логических элементах в среде Logisim Evolution (рисунок 3.3б ).
Триггер имеет два входа R и S, а также два выхода Quit (Q) прямой и инверсный Quit (nQ).
Инверсные элементы 2ИЛИ-НЕ соединены кольцом, то есть с выхода одного элемента, сигнал поступает на вход другого. Пока на обоих управляющих входах R и S уровни сигнала неактивные, в данном случае лог. "0", триггер находится в каком-либо одном из двух устойчивых состояний. Если значение сигнала на выходе Q равно лог. "1", то как видно из схемы, этот сигнал, поступая по цепи обратной связи на вход элемента, обозначенного цифрой 2, вызывает появление на выходе инверсного Q (nQ) сигнала с уровнем лог. "0". В свою очередь лог. "0" с выхода инверсного Q (nQ), поступая на вход элемента 1, поддерживает состояние лог "1" на выходе Q. Иначе говоря, при входных сигналах R и S равных нулю, триггер примет одно устойчивое состояние, и будет находится в нем сколь угодно долго. Когда на прямом выходе Q сигнал равен лог "1", то считается что триггер находится в состоянии 1 или установлен.
В силу симметрии схемы она будет столь устойчивой в своём противоположном нулевом состоянии. Когда уровень на выходе Q равен нулю, а уровень на Q инверсном (nQ) соответствует лог. "1", в этом случае считается, что триггер сброшен или погашен. Когда оба управляющих сигнала R и S не активны, то такой режим называют режимом хранения.
(рис 3.3)
На рисунке 3.4 приведены режимы работы RS триггера. В таблице 3.1 приведена таблица истинности для данного триггера, где Qt - начальное состояние триггера, Q(t+1) - изменяемое состояние.
(рис 3.4)
| R | S | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Режим хранения |
| 0 | 0 | 1 | 1 | |
| 0 | 1 | 1 | 1 | Режим установки |
| 0 | 1 | 1 | 1 | |
| 1 | 0 | 0 | 0 | Режим сброса |
| 1 | 0 | 1 | 0 | |
| 1 | 1 | 0 | X | Запрещенное состояние |
| 1 | 1 | 1 | X |
Из таблицы 3.1 видно, что существует запрещенное состояние. Данное состояние необходимо прояснить.
Если на входы RS триггера подать одновременно входной сигнал лог. "1", то на обоих выходах Q и инверсном Q устанавливается лог. "0". Если одновременно снять единицы со входов RS, то элементы триггера начнут переключаться в единичное состояние, каждый стремясь при этом оставить своего партнера в нуле. Какой элемент сработает зависит от коэффициента усиления, скоростей переходных процессов и ряда других неизвестных заранее факторов. Для разработчика схемы результирующее состояние триггера оказывается неопределённым, поэтому комбинация R=S=1 считается запрещённой и в обычных условиях её необходимо блокировать. На рисунке 3.5 показан режим запрещенного состояния (для имитации возврата из запрещённого состояния оставлен один вход).
(рис 3.5)
По отношению к рассмотренному RS триггеру имеется обратный вариант реализации на элементах 2И-НЕ. Такие триггеры управляются сигналами лог. "0". На рисунке 3.6 приведены режимы работы триггера на элементах 2И-НЕ. В таблице 3.2 приведена таблица истинности для данного триггера.
(рис 3.6)
| R | S | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | 0 | 0 | X | Запрещенное состояние |
| 0 | 0 | 1 | X | |
| 0 | 1 | 1 | 0 | Режим сброса |
| 0 | 1 | 1 | 0 | |
| 1 | 0 | 0 | 1 | Режим установки |
| 1 | 0 | 1 | 1 | |
| 1 | 1 | 0 | 0 | Режим хранения |
| 1 | 1 | 1 | 1 |
Для защиты триггера от возникновения запрещенных состояний, например при помехах, в схему вводится буферный элемент, включаемый также по схеме триггера. При вводе буферной схемы меняется уровень срабатывания входных сигналов. В схеме, приведенной на рисунке 3.7, уровнем срабатывания будет являться лог. "1". Элементы D3-D4 являются непосредственно триггером, а на элементах D1, D2 работает механизм, ограничивающий реакции на одном из входов, сигнал на котором появляется позже. Данный механизм обеспечивается за счет того, что обратная связь обеспечивает наличие устойчивого состояния.
(рис 3.7)
Для повышения надёжности триггеров применяется дополнительный вход управления, называемый синхросигналом С (clock). В принципе цифровые устройства с памятью, микропроцессорные системы подразумевают наличие синхронизации. Цифровые узлы и периферийные устройства, интерфейсы связи по большей части работают синхронно. Синхронизация обеспечивает качество и надежность обмена данными. В дополнительной литературе [1,2] можно подробно ознакомиться с описанием генераторов синхросигналов и построение систем синхронизации.
На рисунке 3.8 приведена функциональная схема синхронного SR-триггера. Для его создания применяются элементы 3И-НЕ (D1, D2). Третий вход данных элементов будет объединен и подключен к элементу вход. Его метка присвоено значение "С". На рисунке 3.9 приведено условно-графическое обозначение синхронного SR-триггера в ANSI (рисунок 3.9а ) и ЕСКД (рисунок 3.9б ).
(рис 3.8)
(рис 3.9)
Следующим видом триггеров, является D-триггер, он же триггер, управляемый уровнем синхросигнала. Также встречается в литературе определение "защёлка" или "latch". Ещё один вариант названия - DC-триггер и расшифровывается как С - clock, D - delay (в некоторых источниках можно встретить как data, что в принципе тоже верно по отношению к его функционалу). На рисунке 3.10 показан универсальный способ построения синхронного D-триггера на базе SR триггера.
На элементах D4, D5 реализована ячейка SR-триггера. На элементах D2, D3 реализована схема управления записью в SR-триггер. Элемент D1 обеспечивает инверсию на входе D3, тем самым обеспечивая установку триггера в сброшенное состояние.
(рис 3.10)
В таблице 3.3 приведена таблица истинности для рассматриваемого триггера
| C | D | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | X | 0 | 0 | Режим хранения |
| 0 | X | 1 | 1 | |
| 1 | 0 | X | 0 | Режим записи (0) |
| 1 | 1 | X | 1 | Режим записи (1) |
На рисунке 3.11а приведено условно-графическое обозначение синхронного D-триггера в ANSI, а на рисунке 3.11б для ЕСКД.
(рис 3.11)
Для проверки работы схемы в меню "Моделировать" необходимо выбрать "Такты включены". В открывшемся диалоговом окне (рисунок 3.12), выбрать вход С.
(рис 3.12)
Частота синхросигналов задается в меню "Моделировать" - "Тактовая частота".
На примере данного триггера можно рассмотреть еще один вид неверного работа цифровых цепей - "гонка сигналов" (race condition).
Гонка (состязание) сигналов несоответствие сигналов на выходе, вызванное переходными процессами в цепях устройств.
Для наблюдения данной ошибки добавим в схему виртуальный осциллограф. Данный инструмент находится во вкладке "Input/Output Extra" и называется "Цифровой осциллятор". На рисунке 3.13 приведен данный инструмент, где цифрами обозначены: 1 - тактовый вход, подключается к тактовому входу; 2 - вход для измеряемых сигналов.
Основные свойства:
(рис 3.13)
На рисунке 3.14 приведена работа триггера с отслеживанием изменения сигналов в контрольных точках 1 и 3. На осциллографе красным выделен переходный процесс, который возникает из-за задержки прохождения сигнала в цепи D1-D3 относительно элемента D3.
(рис 3.14)
Для устранения ошибок гонки сигналов триггеры делают двухступенчатыми. Двухступенчатый триггер состоит из двух триггеров: M-master (ведущий), S - slave (ведомый). Такой триггер именуется MS в условно-графическом обозначении в поле функции пишется ТТ.
Особенность организации двухступенчатых триггеров заключается в применении схем инверсии сигнала синхронизации либо схем запрещающих связей. Изменение сигналов на входе при фронте (спаде) сигнала синхронизации не вызывает изменение сигналов на выходе триггера. Такое поведение триггера называется свойством непрозрачности.
Метастабильность триггеров - это состояние, в котором триггер может находиться в промежуточном, непостоянном состоянии, не находясь при этом в устойчивом нулевом или единичном состоянии. Это явление характерно для систем, в которых триггер может реагировать на входные сигналы, но обладает определённым временем задержки.
Метастабильность возникает, когда триггер сталкивается с изменениями на входе, которые происходят слишком быстро относительно его времени отклика. В таких случаях он может оказаться в промежуточном состоянии, что может привести к непредсказуемому поведению.
Примером является D-триггер, который может стать метастабильным, если на его вход подается сигнал, когда триггер находится в состоянии изменения. Это происходит, например, при использовании триггеров в цифровых схемах, где синхронизация осуществляется на низкой частоте, относительно входных сингалов. В литературе [1,4,5] приводятся подробные выкладки с диаграммами, поясняющими природу данной ошибки.
Явление метастабильности невозможно полностью исключить, но возможно снизить риск ее возникновения. Для этого применяются следующие подходы:
Синхронизация с тактовыми сигналами. Использование синхронизирующих триггеров для согласовывания асинхронных сигналов с тактовыми позволяет уменьшить вероятность метастабильности. Это достигается путём передачи входного сигнала через несколько последовательных триггеров, что даёт время для стабилизации (рисунок 3.15). Возникновение метастабильности на первом триггере не приведет к искажению сигнала на выходе третьего.
(рис 3.15)
В приложении А приводится механизм преодоления метастабильности с применением языка описания аппаратуры Verilog HDL.
Важно! Необходимо прояснить по поводу видов синхросигналов в цепях последовательностных устройств. По "фронту синхросигнала" либо по "переднему фронту" значит, что схема записывает данные при переходе синхросигнала из низкого уровня в состояние лог. "1". По "заднему фронту" или "спадающем фронту" синхросигнала значит, что схема будет срабатывать и осуществлять запись данных в цепях при переходе синхросигнала из высокого уровня в состоянии низкого уровня. В период этого перехода происходит обработка данных. На рисунке 3.16 показано обозначение этих самых динамических входов по "фронту" и по "спаду" для ANSI и ЕСКД (а), Logisim Evoluion(б).
(рис 3.16)
В лабораторной работе 2 необходимо выполнить проектирование двухступенчатого D-триггера.
Свойство непрозрачности МS-триггера использовано для построения интересного и широко применяемого JК-триггера, схема которого показана на рисунке 3.17. JK-триггер является наиболее используемым из всех конструкций триггеров и считается универсальной схемой триггера.
Схема JK-триггера похожа на SR, а его последовательная работа точно такая же. Разница в том, что JK-триггер не имеет недействительных или запрещенных входных состояний как SR, даже когда на оба входа подается управляющий сигнал.
JК-триггер - это непрозрачный триггер, выходы которого петлями инвертирующих обратных связей (накрест) заведены на элементы 1 и 2 (2И-НЕ). Из-за данных связей система моделирования Logisim Evolution не может смоделировать JK-триггер на дискретных комбинационных элементах.
При J=К=0 С-сигнал не может открыть входные элементы 1 и 2, и триггер находится в режиме хранения. При J=1, К=0 синхросигналом может быть открыт лишь элемент 1 и только при условии, что перед поступлением С-сигнала на выходе триггера был 0 (Q=0, $$\bar Q=1$$). Тогда по спаду синхросигнала триггер переключится в 1. Если же триггер до синхросигнала был в 1, то он так и останется в этом состоянии. Таким образом, J-вход выполняет функции синхронизированного S-входа. В силу симметрии схемы легко показать, что К-вход выполняет функции синхронизированного R-входа, переводя триггер в сброшенное состояние. Таким образом, при разноименных уровнях на J и К-входах JК-триггер ведет себя как синхронный непрозрачный RS-триггер. При сигнале на J=K=1 поведение JК-триггера сильно отличается от SR. При любом состоянии триггера обратные связи при поступлении С-сигнала откроют тот элемент И-НЕ, который переведет триггер в противоположное состояние. Таким образом при J=K=1 триггер переключается в противоположное состояние. Данный режим называется счетным или T (toggle - кувыркаться), а работающий в таком режиме триггер называется Т-триггером.
(рис 3.17)
В таблице 3.4 приведена таблица истинности (работы) JK- триггера.
| C | J | K | Q(T) | Q(t+1) | Пояснения |
|---|---|---|---|---|---|
| 0 | X | X | 0 | 0 | Режим хранения |
| 0 | X | X | 1 | 1 | |
| 1 | 0 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 1 | 1 | |
| 1 | 0 | 1 | 0 | 1 | Режим сброса |
| 1 | 0 | 1 | 1 | 1 | |
| 1 | 1 | 0 | 0 | 0 | Режим установки |
| 1 | 1 | 0 | 1 | 0 | |
| 1 | 1 | 1 | 0 | 1 | J=K=1, счетный режим |
| 1 | 1 | 1 | 1 | 0 |
На рисунке 3.18а приведено условно-графическое обозначение синхронного JK-триггера в ANSI, а на рисунке 3.18б в ЕСКД.
(рис 3.18)
Т-триггер представляет собой триггер, у которого отсутствуют сигналы J и К, а тактирование осуществляется по счётному входу Т. Синхронный Т триггер объединяет для счетного входа J и K. Вход C остается включенным так, как показано на рисунке 3.17. Т-триггер в силу особенностей обратных связей в среде невозможно смоделировать на дискретных элементах Logisim Evolution.
В таблице 3.5 приведена таблица истинности для синхронного Т триггера.
| C | T | Q(t) | Q(t+1) | Пояснения |
|---|---|---|---|---|
| 0 | X | 0 | 0 | Режим хранения |
| 0 | X | 1 | 1 | |
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 1 | |
| 1 | 1 | 0 | 1 | Режим установки |
| 1 | 1 | 1 | 0 | Режим сброса |
На рисунке 3.19а приведено условно-графическое обозначение синхронного T-триггера в ANSI, а на рисунке 3.19б в ЕСКД.
(рис 3.19)
Триггеры могут быть взаимозаменяемыми при изменении схемы включения и добавления элементов комбинационной логики. Решение задачи взаимозаменяемости триггеров осуществляется в практической работе 3.
В среде Logisim Evolution в разделе "Память" находятся синхронные триггеры. Разработчики обеспечили защиту виртуальных элементов от неверного срабатывания, например, "гонки сигналов".
В таблице 3.6 приведено условно-графическое обозначение данных триггеров, а также назначение сигналов. Для всех синхронных триггеров в их основным свойством является срабатывание, определяющее вид синхросигнала, переключающего триггер в заданное состояние:
| Вид триггера | Условно-графическое обозначение | Назначение сигналов |
|---|---|---|
| Синхронный D-триггер | ![]() |
1 - синхронный D вход; 2 - вход синхронизации (С); 3 - асинхронный вход S; 4 - асинхронный вход R; 5 - прямой выход Q; 6 - инверсный выход Q. |
| Синхронный T-триггер | ![]() |
1 - синхронный T вход; 2 - вход синхронизации (С); 3 - асинхронный вход S; 4 - асинхронный вход R; 5 - прямой выход Q; 6 - инверсный выход Q. |
| Синхронный JK-триггер | ![]() |
1 - синхронный J вход; 1 - синхронный K вход; 3 - вход синхронизации (С); 4 - асинхронный вход S; 5 - асинхронный вход R; 6 - прямой выход Q; 7 - инверсный выход Q. |
| Синхронный SR-триггер | ![]() |
1 - синхронный J вход; 2 - синхронный K вход; 3 - вход синхронизации (С); 4 - асинхронный вход S; 5 - асинхронный вход R; 6 - прямой выход Q; 7 - инверсный выход Q. |
Целю лабораторной работы является:
В среде Logisim Evolution создать новый файл и сохранить его под именем DV. Построить схему, приведенную на рисунке 3.20. На элементах D3, D4 реализован ведущий RS триггер. Элементы D1, D2 образуют комбинационную схему, реализующую функцию синхронизации и работы линии D. На элементах D5-D8 реализован синхронный SR-триггер. Его синхронизация осуществляется в противофазе входному сигналу С за счет включения в линию инвертора D9.
(рис 3.20)
Попеременно подавая сигналы на входы D и С, необходимо убедится в работоспособности собранной схемы.
Для работы с инструментом "Хронограмма7quot; подключить элемент "выход" к линиям S и R и выходу инвертора D9 (рисунок 3.21).
(рис 3.21)
Далее вызвать перейти в меню "Моделировать" - "Запись в журнал". Во вкладке "Options" в секции "Logging Mode" выбрать "Clocked mode". В открывшемся диалоговом окне, аналогичному приведенному на рисунке 3.12 выбрать в качестве синхронизируемого входа - С. В выпадающем списке "Time scale" задать "1.0 s". В списке "Clock Discipline" выбрать "capture on both edges". В меню "Моделировать" тактовая частота задать 2 Гц и выбрать такты включены. Перейти во вкладку "Хронограмма" (рисунок 3.22). В меню быстрого доступа нажать на кнопку "Запускайте симулятор непрерывно" (выделена на рисунке областью красного цвета).
(рис 3.22)
На рисунке 3.23 приведена диаграмма работы триггера. На ней можно видеть режимы сброса триггера при включении, переходы в период смены сигнала на входе.
(рис 3.23)
Для обеспечения стабильной работы триггера защелки на высоких частотах разработчики могут вводить дополнительный вход управления записью - стробирование, именуемый V. Видоизменим схему, добавив еще один вход элементам D1 и D3. Вход V объединяется у элементов D1 и D2 (рисунок 3.24).
(рис 3.24)
Самостоятельно
(рис 3.25)
В среде Quartus на языке Verilog HDL требуется создать два вида двухтактных триггеров и разработать тесты. В листинге 3.1 приведен код для двухтактной защелки, которая управляется уровнем сигнала на входе clk.
module latch_MS (input clk,D, output reg Q); reg c; \\ регистровая переменная с always @(*) if (clk) \\если на входе лог. 1 c=D; \\присвоить переменной значение с D always @(*) \\анализируем уход лог 1 с входа d if (~clk) Q=c; \\выходу Q присвоить содержимое с Endmodule
На рисунке 3.26 представлен вид RTL для данного листинга.
(рис 3.26)
В листинге 3.2 приведен код двухтактного триггера, анализирующего перепад за счет ввода ключевых слов, анализирующих сигнал posedge - по фронту сигнала, negedge - по спаду. Также присваивание = заменено на <=, что будет более правильным вариантом записи, исключающим "гонку сигналов".
module latch_MS1 (input clk, D, output reg Q);
reg master; // переменная ведущего триггера
reg slave; // переменная подчиненного триггера
// проверяем возникновение фронта сигнала clk
always @(posedge clk) begin
master <= D; // Capture data on the rising edge of the clock
end
// проверяем изменение синхронизации на спад
always @(negedge clk) begin
slave <= master; // передача данных между регистровыми переменными
end
// анализируем изменения сигналов
always @(*) begin
Q = slave; // выходу присваивается содержимое ведомого триггера
end
endmodule
На рисунке 3.27 представлен вид RTL для листинга 3.2.
(рис 3.27)
В листинге 3.3 приведено содержимое файла testbench.v для двухтактного синхронного триггера.
module testbench;
reg D; // вход D
reg clk; // синхровход clk
wire Q; // Выход Q
// привязка линий триггера
latch_MS1 uut (
.D(D),
.clk(clk),
.Q(Q)
);
// генерация сигнала
initial begin
clk = 0;
forever #5 clk = ~clk; // цикл синхросигналов
end
initial begin
// Начальное состояние на линии D
D = 0;
// задержка
#10;
// тестирование такта 1
D = 1;
#10; // период ожидание
$display("D=%b, Q=%b", D, Q); // Check outputs
// тестирование такта 2
D = 0;
#10;
$display("D=%b, Q=%b", D, Q);
// тестирование такта 3
D = 1;
#10;
$display("D=%b, Q=%b", D, Q);
// тестирование такта 4 состояния итог
D = 0;
#10;
$display("D=%b, Q=%b", D, Q);
// окончание симуляции
$stop;
end
endmodule
На рисунке 3.28 приведена диаграмма тестирования синхронного триггера.
(рис 3.28)
Самостоятельно
На рисунке 3.29 приведен вариант реализации синхронного SR-триггера на D-триггере.
(рис 3.29)
Ниже на рисунке 3.30 показана временная диаграмма работы триггера, с использованием инструмента "Хронограмма". Диаграмма реализована на частоте 1Гц. (во вкладке "Options" качестве "Clock Source" задан вход С). По данной диаграмме проводится сверка с диаграммой работы для синхронного SR-триггера Logisim Evolution. Далее проверятся условие перехода триггера из индивидуального задания в запрещенное состояние.
(рис 3.30)
Задание выполняется по варианту из таблицы 3.7
| № варианта | Создаваемые синхронные триггеры | Базовый триггер | Срабатывание базового триггера |
|---|---|---|---|
| 1,7,13,19 | JK, T | D | Передний фронт |
| 2,8,14,20 | JK, T | D | Задний фронт |
| 3,9,15,21 | D, T | SR | Передний фронт |
| 4,10,16,22 | D, TC | SR | Задний фронт |
| 5,11,17,23 | SR, T | JK | Передний фронт |
| 6,12,18,24 | SR, T | JK | Задний фронт |
В таблице 3.8 приведено структурное описание на языке Verilog HDL SR-триггера, также приведен его тест.
Необходимо реализовать структурное описание JK-триггера на языке Verilog HDL и разработать тестовое окружение.
| Описание триггера | Тестовое окружение триггера |
|---|---|
module sr_latch (
input wire S, //установка (Set)
input wire R, //сброс (Reset)
output wire Q, //выход Q
output wire Qn //выход Qn (инверсный)
);
wire n1, n2; //внутренние соединения
// первый NAND элемент
nand (n1, S, Qn);
// второй NAND элемент
nand (n2, R, Q);
assign Q = n1; //выход Q
assign Qn = n2; //выход Qn
endmodule
|
module testbench;
reg S; //установка
reg R; //сброс
wire Q; //выход Q
wire Qn; //выход Qn
// связывание SR-триггера
sr_latch uut (
.S(S),
.R(R),
.Q(Q),
.Qn(Qn)
);
initial begin
// Инициализация
S = 0;
R = 0;
// тестовые сигналы
#10 S = 1; R = 0; // установить триггер //в 1
#10 S = 0; R = 1; // сбросить триггер в //0
#10 S = 0; R = 0; // хранение
#10 S = 1; R = 0; //установить Q в 1 снова
#10 S = 0; R = 1; //сбросить Q в 0
$finish; //завершить симуляцию
end
// вывод состояний
initial begin
$monitor("Time: %0t | S = %b, R = %b | Q = %b, Qn = %b", $time, S, R, Q, Qn);
end
endmodule
|
Результат симуляции представлен на рисунке 3.31.
(рис 3.31)
Дать ответы на следующие вопросы:
Для преодоления метастабильности можно увеличить времени на установку (setup time), путем задания задержки входного сигнала.
Для реализации необходимо создать описание D-триггера (листинг 3.4).
module D_dff (
input wire D,
input wire clk,
input wire reset,
output reg Q
);
reg D_reg;
always @(posedge clk or posedge reset) begin
if (reset) begin
D_reg <= 0;
end else begin
D_reg <= D;
end
end
always @(posedge clk or posedge reset) begin
if (reset) begin
Q <= 0;
end else begin
Q <= D_reg;
end
end
endmodule
Далее создается файл, выполняющий задержку распространения сигнала (листинг 3.5).
module D_meta(
input wire clk,
input wire D,
output wire Q
);
reg D_stable;
// Задержка входного сигнала D
always @(posedge clk) begin
// Обновление только если clk высокий достаточно долго
D_stable <= D;
end
// подключение D-триггера
D_dff (
.D(D_stable),
.clk(clk),
.reset(1'b0),
.Q(Q)
);
Endmodule
На рисунке 3.32 приведено RTL представление полученного триггера.
(рис 3.32)
Для создания схемы преодоления метастабильности с применением нескольких триггеров создадим базовый D-триггер (листинг 3.4) и файл верхнего уровня, приведенный в листинге 3.6
module D_meta (
input wire D,
input wire clk,
output wire Q
);
wire D_intermediate;
// Первый триггер
D_dff first_ff(
.D(D),
.clk(clk),
.reset(1'b0),
.Q(D_intermediate)
);
// Второй триггер
D_dff second_ff (
.D(D_intermediate),
.clk(clk),
.reset(1'b0),
.Q(Q)
);
Endmodule
На рисунке 3.33 приведено RTL представление полученного триггера.
(рис 3.33)
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.