Мегаобучалка Главная | О нас | Обратная связь


Триггеры и регистровые схемы



2020-02-04 280 Обсуждений (0)
Триггеры и регистровые схемы 0.00 из 5.00 0 оценок




 

Понятие последовательностной схемы в общем случае соответствует схеме, содержащей элементы, способные сохранять свое состояние  до появления заранее определенных сигналов (обычно называемых управляющими ) независимо от изменения других сигналов, называемых информационными. В структурном отношении последовательностные схемы состоят из двух составляющих: комбинационной  логической схемы и памяти, через которую реализуется обратная связь. К этому классу относятся простые триггера,  регистры и счетчики различного назначения, модули оперативной памяти (в данном учебном пособии не рассматриваются), цифровые автоматы. В принципе любое последовательностное устройство можно рассматривать как цифровой автомат, но, учитывая ряд особенностей синтеза и широкую распространенность цифровых автоматов общего вида, они, обычно, рассматриваются особо (см. раздел 5). Известно, что практически любая комбинационная схема, имеющая обратные связи, начинает обладать свойством сохранения предшествующего состояния (памятью). Схемы с памятью (триггеры, регистры, счетчики и т. д.) являются важнейшими представителями типовых средств цифровой техники. Подробнее о видах и принципах работы можно прочитать в литературе [6], [7].  

Триггер по определению есть устройство с двумя устойчивыми состояниями (не считая переходных состояний). У триггеров чаще всего можно выделить два типа входных сигналов: управляющие и информационные. Изменение информационных сигналов в этом случае не вызывает каких либо изменений состояния  триггеров. В практике наиболее часто используются следующие способы управления триггерами:

– асинхронное управление;

– статическое управление, или управление уровнем;

–  динамическое управление, или управление фронтом;

– смешанные варианты.

Асинхронное управление характеризуется тем, что события на информационных входах непосредственно вызывают изменение состояния триггера. Асинхронное управление в чистом виде применяется относительно редко, в основном в целях начальной установки последовательностных устройств.

В триггерах со статическим управлением при пассивном уровне сигнала на управляющем входе изменение состояния невозможно, а при активном уровне управления смена состояния входов может изменять выходное состояние при соответствующих изменениях  информационных сигналов. Схемы с потенциальным управлением не допускают замыкание цепью обратной связи, если время задержки в цепи обратной связи меньше длительности разрешающего импульса. Практически это исключает возможность применения таких устройств, если следующее за моментом переключающего сигнала состояние является функцией от предыдущего состояния. Такие триггеры можно использовать для относительно длительного хранения промежуточных данных. Триггеры с динамическим управлением в этом смысле более универсальны  – они способны принимать и сохранять состояния  и тогда, когда новое  состояние зависит от предыдущего.

При динамическом управлении изменение состояния триггера происходит только непосредственно после фронта или спада сигнала на тактирующем входе. Новое состояние определяется сигналами на информационных входах в момент изменения управляющего сигнала.

Если проектируется БИС на микросхеме типа «море вентилей» (в англоязычной литературе их обычно их называют ASIC), то триггеры с потенциальным управлением занимают значительно меньшую площадь и имеют большее быстродействие  по сравнению  с триггерами с динамическим управлением. Поэтому их и следует использовать, если, конечно, в проекте предусмотрено отсутствие ситуаций, когда  следующее за моментом изменения переключающего сигнала состояние является функцией от предыдущего состояния. Иначе обстоит дело при ориентации на реализацию в ПЛИС. Для большинства ПЛИС именно триггер с динамическим управлением является неотъемлемой частью логической ячейки. Даже  интерпретация комбинационной схемы сводится к включению цепи «в обход» обязательно присутствующего триггера. Реализация в этой схемотехнике потенциального управления неэффективна и нецелесообразна. Эти соображения следует учитывать при выборе способа описания последовательностного устройства.

Свойство допустимости  изменения  состояния при изменении  лишь некоторых сигналов можно описывать в VHDL различными  способами (с помощью различных операторов).

Широко рекламируемым  способом описания является описание  с помощью параллельного оператораPROCESS, при этом  управляющие сигналы включаются в список чувствительности или в выражения условий вложенного оператора ожидания WAIT, а информационные входы, которые сами по себе не изменяют состояние – не включаются. Состояние триггера после события на управляющем входе определяется его типом (функцией переходов и способом управления), предыдущим состоянием, сигналами на информационных входах, и задается оператором присвоения значения состоянию триггера, вложенным в этот процесс.

«Процессное» описание (листинг 4.1) может использоваться не только для отображения RS-триггеров, а может совмещаться с объявлением других способов управления при моделировании и реализации комбинированных триггерных структур. При этом необходимо учитывать способ и последовательность описания  управляющих сигналов в теле процесса, так как этим обеспечивается  их совместимость и относительные приоритеты.

 

Листинг 4.1 Описание триггера

ENTITY ff IS -- entity declaration

PORT (                          -- port statement

           R,S                   : IN std_logic;

Clk, Reset       : IN std_logic;

Load, D           : IN std_logic;

Q                       : BUFFER std_logic;_

);

END ff;

 

ARCHITECTURE one OF   ff   IS

Base_ff: PROCESS (Clk, Reset, R, S, D, Load)

         BEGIN

                          IF Reset ='1' THEN    Q <= '0';

ELSIF Clk'event AND Clk = '1' THEN

IF R = '1' THEN          Q <= '0';

                                          ELSIF S = ‘1’ THEN Q <= ‘1’;

                                          ELSIF Load = ‘1’ THEN Q <= D;

END IF;

END IF;

END PROCESS Base_ff;

END one;

 

Поведение триггера можно описать, опираясь не только на последовательные операторы, но и на параллельные. В качестве примера приведем архитектурное тело описания поведения триггера RS-триггера с динамическим управлением, имеющего вход асинхронного сброса (листинг 4.2).

 

Листинг 4.2 ОписаниеRS-триггера с динамическим управлением

ARCHITECTURE two OF  ff  IS

SIGNAL Q_int:  std_logic;

BEGIN

     --  комбинационная часть элемента

Q_int <= '0' WHEN R ='1' ELSE '1' WHEN S ='1' ELSE Q;

--  собственно элемент памяти с динамическим управлением

Q <= '0' WHEN Reset = '1' ELSE Q_int WHEN Clk'event AND

Clk='1' ELSE Q;

END two;

 

Несмотря на синтаксическую правильность фрагмента, чаще используется процессное представление тактирующей части регистровых схем (второй оператор в программе). Выбор процессного представления диктуется его адекватной трактовкой практически любой компилирующей или моделирующей САПР, а также соответствием  описания структуре логических ячеек ПЛИС. При процессном представлении, внутри оператора PROCESSобычно пользуются операторами условия (IF) и выбора (CASE). В качестве примера рассмотрим архитектурное тело при процессном описании поведения RS-триггера (листинг 4.3).

Листинг 4.3

ARCHITECTURE three OF RS_FF IS

-- architecture " three" of entity ff

SIGNAL Q_int : std_logic;

BEGIN

       ff: PROCESS (Clk, Reset, En, Q_int)

     BEGIN

                   IF Reset ='1' THEN Q <= '0';

ELSIF Clk'event AND Clk = '1' THEN

IF En ='1' THEN Q <= Q_int;

END IF;

ELSE Q<= Q;

END IF;

END PROCESS base_ff;

 

Q_int <= '0' WHEN R='1' ELSE '1' WHEN S='1'

D WHEN Load = ‘1’ ELSE Q;

 

END three;

Целесообразность подобного описания связана с тем, что в операторе PROCESS у последовательного оператора условия IF окончание оператора ELSE является опционным и может опускаться, а у параллельного оператора в форме условного присваивания окончание оператора ELSE является обязательным.  Подобное кажущееся несущественным отличие при синтезе комбинационных фрагментов может (в случаях соответствующих описаний фрагментов) порождать появление у них на выходах «неожиданных» триггеров-защелок (LATH). Хотя современные системы синтеза цифровых устройств обычно выдают соответствующие предупреждения (warning)   о введении подобных триггеров, наверное, лучше взять за правило избегать  возможностей появления подобных ситуаций.

Регистр – это набор триггеров, объединенных общими цепями управления. Описание многоразрядных схем с памятью (регистров) практически не отличается от описания одиночных триггеров. Соответственно регистры в программах удобно представлять процессами, список чувствительности которых включает управляющие сигналы, а в теле процесса находятся операторы присваивания, определяющие состояние триггеров регистра после изменений управляющих сигналов. Логика анализа условий выполнения операторов в теле этого процесса не отличается от такой же логики для одиночных триггеров. Состояния триггеров отражаются переменными или сигналами. Можно использовать групповое (скалярное) представление всего кода состояния или индивидуальные имена для отдельных триггеров регистра, однако чаще используется групповое представление. Представление в виде битового вектора (bit_vector или std_logic_vector) обеспечивает сочетание простоты описания групповых действий над содержимым регистра с простотой выделения информации о состоянии отдельных разрядов.   В ряде случаев удобно использовать для представления содержимого регистра ограниченные целые и перечислимые типы данных. Такое представление может обеспечить большую наглядность и улучшить понимаемость программ. Примеры использования перечислимого типа имеются в следующем разделе.

При создании регистровых схем необходимо уделять внимание наличию или отсутствию синхронизации входных сигналов и ее типу (асинхронная схема, статическое или динамическое тактирование), а также    способам задания входных, выходных сигналов и внутренних состояний при описании многоразрядных схем (счетчиков, регистров сдвига и т. д.). Для определения этих переменных или сигналов в многоразрядных схемах можно использовать понятие вектора или ограниченного целого (с диапазоном изменения, связанным с разрядностью схемы). Последовательностная схема образуется, если в операторе присваивания сигналу, представляющему триггера регистра, присутствует выражение, интерпретируемое  при синтезе  как комбинационная схема, выход которой подключен к информационному входу триггера, а входными сигналами являются другие триггера регистра. К этому типу схем относятся счетчики и такие схемы регистров, как регистры сдвига и другие.

Целесообразным вариантом построения регистровых схем следует считать построение описания в форме двух параллельных операторов. Первый оператор – оператор PROCESS, описывающий собственно многоразрядную память. Память имеет информационные входы, связанные с выходами    комбинационной схемы, вход тактирования, , а также при необходимости может содержать цепи асинхронного сброса и предустановки и разрешения изменений состояния. Второй параллельный оператор – параллельный условный оператор назначения сигнала, реализующий требуемое функционирование схемы регистра или счетчика. В качестве примера рассмотрим 4-разрядный регистр сдвига влево, вправо с занесением начального значения, имеющий вход асинхронного сброса  (листинг 4.4).

 

Листинг 4.4

 

ENTITY Reg_Shift IS -- entity declaration

PORT (                 -- port statement

Clk, Reset              : IN std_logic;

Load, Left, Right : IN std_logic;

En                          : IN std_logic;

D_in                      : IN std_logic_vector(3 DOWNTO 0);

Q                           : BUFFER std_logic_vector(3 DOWNTO 0)

);

END Reg_Shift;

 

ARCHITECTURE a OF Reg_Shift IS

-- architecture "а" of entity Reg_Shift

SIGNAL Q_int    : std_logic_vector(3 DOWNTO 0);

BEGIN

base: PROCESS (Clk, Reset, Q_int)

     BEGIN

                   IF Reset ='1' THEN Q<= "0000";

ELSIF Clk'event AND Clk = '1'THEN

IF En = ‘1’ THEN Q <= Q_int;

ELSE   Q<= Q;

END IF;

ELSE   Q<= Q;

END IF;

END PROCESS base;

 

Q_int <= D_in WHEN Load= '1' ELSE '1'& Q(3 DOWNTO 1) WHEN

Right ='1' ELSE Q(2 DOWNTO 0) & '1'  WHEN Left='1' ELSE  Q;

 

END;

При описании триггерных устройств можно рекомендовать опираться на стандартизованные трафареты, предлагаемые разработчиками программ синтеза. Использование конструкций, приведенных на листингах 4.1– 4.4, в подавляющем числе случаев достаточно.

 

Практикум по теме

Задания на работу:

1. Спроектировать регистр сдвига, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Сдвиг циклический влево.

Сдвиг циклический вправо.

 

2. Спроектировать регистр сдвига, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Сдвиг влево с вводом последовательных данных.

Сдвиг вправо с вводом последовательных данных.

 

3. Спроектировать регистр сдвига, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Сдвиг циклический влево на два разряда.

Сдвиг циклический вправо на два разряда.

 

4. Спроектировать счетчик, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Инкрементный счёт.

Декрементный счёт.

 

5. Спроектировать счетчик, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Инкрементный счёт на два разряда.

Декрементный счёт на два разряда.

 

6. Спроектировать счетчик, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Инкрементный счёт.

Декрементный счёт.

Формирование выходного сигнала переноса и заёма.

 

7. Спроектировать регистр, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Инкрементный счёт.

Сдвиг влево.

 

8. Спроектировать регистр, обеспечивающий следующие функции:

Сброс в исходное состояние.

Занесение входной информации.

Декрементный счёт.

Сдвиг циклический вправо.

Рекомендуется придерживаться следующего порядка работы:

 

IV.I. Моделирование

1. Создать директорий для работы.

2. Запустить моделирующую программу  (QuestaSim или ModelSim).

3. Просмотреть в редакторе текст файлаlab4.vhd. Для данного раздела исходный файл   lab1.vhd соответствует  программе  1.1. Source.

4. Выполнить компиляцию проекта.

5. Загрузить скомпилированный проект в систему моделирования,   

6. Открыть окна наблюдения  Process, Signal, Wave.

7. Запустить  процедуру моделирования, вызвав команду системы моделирования simulate.

8. Сформировать тестовую последовательность, используя команду системы моделирования FORCE (в пределах необходимого для полноты проверки числа комбинаций входных данных).

9. Выполнить моделирование в пошаговом режиме.

10. Выполнить моделирование в автоматическом режиме.  Просмотреть временную диаграмму в окне Wave и убедиться в правильности  вычисления логической  функции

 

II. Синтез и имплементация.

1. Открыть пакет Quartus II (версия задается преподавателем).

2. Создать новый проект – File / New Project Vizard, указав созданный директорий и программу lab1.vhd.

3. Компилировать проект (Processing/Start Compilation), опираясь на данные о ПЛИС, соответствующие используемому учебному стенду (Assigments/Device)

4. Оценить затраты на реализацию проекта Processing / Compilation Report.

5. Просмотреть RTL вид проекта и его топологическую реализацию – Tools / RTL View  –  Tools / Technology Map View.

6. Задать номера контактов ИС, соответствующие подключению учебной платы DE0.

7. Выполнить компиляцию проекта с назначенными контактами.

8. Загрузить в ИС полученный загрузочный файл проекта и проверить работоспособность разработки.

 

Отчет по  теме должен содержать:

    - Принципиальную схему устройства в соответствии с индивидуальным  заданием. При этом отобразить в рисунках иерархичность фрагментов проекта и реально использованные в тексте имена фрагментов, узлов, цепей и т.д.

    -  Текст программы с его разбиением на разделы и их наименованием.

    - Последовательность активизации и дезактивизации процессов при пошаговом моделировании.

    - Временные диаграммы результатов моделирования.

 

4.3. Контрольные вопросы:

1. Перечислите наиболее популярные способы синхронизации триггерных устройств и запишите конструкции языка VHDL, интерпретирующие разные способы.                    

2. В каких случаях возможно и целесообразно использование потенциального управления последовательностной схемой?



2020-02-04 280 Обсуждений (0)
Триггеры и регистровые схемы 0.00 из 5.00 0 оценок









Обсуждение в статье: Триггеры и регистровые схемы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (280)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)