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


Фиксация входных сигналов



2020-02-04 239 Обсуждений (0)
Фиксация входных сигналов 0.00 из 5.00 0 оценок




Другая проблема – возможность появления временных перекосов в блоках комбинационной логики автомата. Это может происходить вследствие асинхронности входных сигналов относительно тактовой частоты автомата. Когда изменение входного сигнала приводит к тому, что    выходы   логики следующего состояния изменяют свои значения в моменты близкие к фронту тактового сигнала, то появляется вероятность перехода автомата в неправильное состояние. В этой ситуации и в логике формирования выходных сигналов могут возникать ложные импульсы. И то, и другое чаще всего приводит к катастрофическим последствиям для системы управляемой автоматом. Модификация схемы автомата (рис. 5.6), снижающая вероятность появления сбоев подобного типа, приведена на рис. 5.7. , где XC – синхронные входные сигналы, а XA – асинхронные.

 

Рис. 5.7. Автомат с предварительной фиксацией входных данных

 

Смешанные системы

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

Например, легко представить автомат  с двумя выходами, для которого

       y’(N)=V1(s(N));     y”(N)= V2(s(N-1), y”(N-1)).          (4)

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

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

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

В качестве примера описания рассмотрим автомат, диаграмма состояний которого приведена на рис. 5.8. Описание автомата создавалось с помощью САПР фирмы  Mentor Graphics под названием HDL Designer Series. Эта система создает программу на языке   VHDL, соответствующую графическому описанию. Текст программы,  сгенерированный САПР (за исключением удаленных несущественных деталей), приводится ниже (листинг 5.1). САПР легко создаёт автоматы комбинированной структуры (Мура, Мили  и Мили с синхронными выходами в одной реализации).

В автомате под именем состояния или сигнала при переходе перечисляются имена сигналов, активизируемых (устанавливаемых в единицу) в этом (или этим) состоянием.

 

 

Рис. 5.8 Граф переходов автомата

 

 Например, сигналы En и Ld устанавливаются в состоянии Write. Если из состояния возможен переход в несколько других состояний, то на дугах переходов указываются логические выражения, составленные из имен входных сигналов, определяющих условия переходов. Если из текущего состояния переходы являются условными, то обычно предполагается, что альтернативой является возврат в текущее состояние. В примере это сигналы Ack, Rd и Wr. В кружочках на дугах (или рядом) указывается приоритет переходов при одновременности выполнения условий для нескольких переходов. Кроме выражения, определяющего переход, на дуге может содержаться информация о сигналах, возникновение которых обусловлено выполнением условия этого выражения. Такие сигналы в примере –   Busy и En.

Система HDL Designer Series поддерживает три типа выходных сигналов комбинационные, тактируемые и регистровые:

1. Комбинационные сигналы – это выходные сигналы автомата, значения которых непосредственно передаются в выходной порт.
2. Тактируемые сигналы  –  сигналы  конечных автоматов, значения которых присваиваются   внутренним сигналам с рабочей частотой автомата (т. е. запоминаются в триггерах). Выходные сигналы триггеров постоянно связаны с выходным портом. Необходимо указать значения по умолчанию. Обычно этот тип сигналов используется для внутренних счетчиков, значение которых требуются на выходе автомата.
3. Регистрируемые сигналы –   сигналы конечного автомата (типа Мили с сихронизированными выходами). Внутренний сигнал, защелкиваемый на частоте  автомата в триггере, который непосредственно соединяется с выходным портом автомата. Необходимо указать значения по умолчанию, чтобы избежать создания защелки в процессе синтеза.

        

Листинг 5.1

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_arith.ALL;

 

ENTITY example IS

  PORT(

         Ack,   Addr7,   Clk,   Rd, Reset,   WR                                   : IN       std_logic;

          Busy,   BusyR,   BusyT                                            : OUT     std_logic;

ClrAddr, En, EnInc, Ld                                             : OUT     std_logic;

         Str,     StrS                                                                    : OUT     std_logic:

           StrS2                                                                                         : OUT     std_logic       -- вставка 1        

  );

-- Declarations

END example ;

-- hds interface_end

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_arith.ALL;

 

ARCHITECTURE fsm OF example IS

  -- Architecture Declarations

  TYPE STATE_TYPE IS (Unit, Idle, Write, Read, Inc);

  -- State vector declaration

  ATTRIBUTE state_vector : string;

  ATTRIBUTE state_vector OF fsm : ARCHITECTURE IS "current_state" ;

  -- Declare current and next state signals

  SIGNAL current_state, next_state : STATE_TYPE ;

Declare any pre-registered internal signals

  SIGNAL BusyR_int : std_logic ;  

 SIGNAL BusyT_cld : std_logic  ;

  SIGNAL StrS2_int : std_logic  ;                        -- вставка 2

BEGIN

  ------------------------------------------------------------------

  clocked : PROCESS(Clk,  Reset)

  ------------------------------------------------------------------

  BEGIN

       IF (Reset = '1') THEN

         current_state <= Unit;

Default Reset Values

BusyR <= '0';

         BusyR_cld <= '0';

         StrS2   <= '0';                                 -- вставка 3

       ELSIF (Clk'EVENT AND Clk = '1') THEN

         current_state <= next_state;

         -- Registered output assignments

BusyR <= BusyR_int;

         StrR <= StrR_int;

StrS2 <= StrS2_int;                                     -- вставка 4

         -- Default Assignment To Internals

         BusyT_cld <= '0';

         -- Combined Actions for internal signals only

           CASE current_state IS

           WHEN Write =>

                         IF (Emp = '1') THEN BusyT_cld <= '1' ;  END IF;

             WHEN OTHERS =>

                         NULL;

           END CASE;

       END IF;

  END PROCESS clocked;

  ------------------------------------------------------------------

  nextstate : PROCESS (Ack, Addr7, Emp, Rd, WR, current_state)

  ------------------------------------------------------------------

  BEGIN

       CASE current_state IS

       WHEN Unit =>

         next_state <= Idle;

       WHEN Idle =>

         IF (WR = '1') THEN next_state <= Write;

         ELSIF (Rd = '1') THEN next_state <= Read;

         ELSE next_state <= Idle;

         END IF;

       WHEN Write =>

         IF (Emp = '1') THEN next_state <= Write;

         ELSIF (Ack = '1') THEN   next_state <= Inc;

         ELSE next_state <= Write;

         END IF;

       WHEN Read =>

         IF (Emp = '1') THEN next_state <= Read;

         ELSIF (Ack = '1') THEN next_state <= Inc;

         ELSE next_state <= Read;

         END IF;

       WHEN Inc =>

         IF (Addr7 /= '1') THEN   next_state <= Idle;

         ELSIF (Addr7 = '1') THEN next_state <= Unit;

         ELSE   next_state <= Inc;

         END IF;

       WHEN OTHERS =>

         next_state <= Unit;

       END CASE;

  END PROCESS nextstate;

  ------------------------------------------------------------------

  output : PROCESS (Ack,   Emp, Rd,   WR,   current_state)

  ------------------------------------------------------------------

  BEGIN

       -- Default Assignment

         Busy                 <= '0';              BusyR_int      <= '0';

         ClrAddr          <= '0';              En                     <= '0';

         EnInc               <= '0';              Ld                     <= '0';

Str                     <= '0';              StrR_int           <= '0';

       -- Default Assignment To Internals

         StrS2_int         <= '0';                               -- вставка 5

       -- Combined Actions

       CASE current_state IS

       WHEN Unit =>

         ClrAddr <= '1' ;

       WHEN Idle =>

         IF ((Rd = '1') AND (WR = '0')) THEN StrS2_int <= '1' ; -- вставка 6

         END IF;

       WHEN Write =>

         En <= '1' ;                       Ld <= '1' ;

           IF (Emp = '1') THEN

Busy <= '1' ;        

         END IF;

       WHEN Read =>

         Str <= '1' ;        StrR_int <= '1' ;

IF (Emp = '1') THEN

Busy <= '1' ;    BusyR_int <= '1' ;

         END IF;

         IF (Ack='0') OR (Ack=’1’ AND Emp=’1’)THEN           StrS2_int <= '1' ; -- вставка 7

          END IF;

       WHEN Inc =>

         EnInc <= '1' ;

       WHEN OTHERS => NULL;

       END CASE;

  END PROCESS output;

  -- Concurrent Statements

  -- Clocked output assignments

  BusyT <= BusyT_cld;

END fsm;

 

Приведем основные выводы при рассмотрении этой программы-образца.

Программа написана в форме трех процессов и одного параллельного оператора назначения значения сигнала. Регистру памяти состояния автомата соответствует процесс по имени  clocked, комбинационной схеме, определяющей следующее состояние автомата, – процесс   nextstate, комбинационной схеме, определяющей значения выходных сигналов, – output. Для представления состояний автомата, входов и выходов использованы сигналы перечислимых типов. Декларации типов размешаются в разделе деклараций архитектурного тела, но могут объявляться и в пакете.

Регистр состояний представлен сигналом current_state. Так как регистр состояний  является датчиком информации о текущем состоянии и одновременно приемником нового значения, во избежание гонок  использован регистр с динамическим управлением. Выход комбинационной логики представлен сигналом next_state. Важно иметь в виду необходимость принудительного задания  начального состояния автомата (оператор “IF reset = ’1’ THEN…) . Хотя в процессе моделирования по умолчанию при запуске устанавливается крайнее левое значение из списка значений, в синтезированной схеме установка по умолчанию игнорируется. Начальное значение не определено, а это может привести к любым непредсказуемым последствиям. После вычисления нового состояния и выходных сигналов в системах моделирования процесс переходит в состояние ожидания нового запускающего события (обратите внимание на то, что сигналы вычисляются на основе состояний, которые были перед фронтом тактирующего сигнала, а не вычисленных в текущем такте).

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

В автомате Мили с асинхронными выходами и автомате Мура выход формируется комбинационной логической схемой. В программе это должно интерпретироваться параллельным оператором присваивания, а если алгоритм формирования выхода слишком сложный, то оператором PROCESS, список чувствительности которого включает все аргументы функции выходов (состояние, а для автомата Мили с асинхронными выходами также и вход).

Из девяти выходных сигналов примером основных видов сигналов  служат   три сигнала Busy, BusyT и BusyR. Первый из них соответствует комбинационному типу, второй ­  – тактируемому а третий – регистрируемому. Комбинационный сигнал повторяет на выходе автомата во времени возникновение и исчезновение условия с задержкой соответствующей задержке комбинационной схемы. Тактируемые и регистрируемые сигналы выставляются и снимаются на выходе по условию их формирования в моменты тактирования. Если длительность комбинационных сигналов совпадает с длительностью соответствующих им входным сигналам, то для   тактируемых и регистрируемых сигналов длительность оказывается зависящей от условия их формирования и кратной периоду тактирования.

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

Сигналы ClrAddr и Str (в соответствии с их именами) по-видимому,        являются комбинационными сигналами импульсного типа. И если, например, сигнал ClrAddr планировался для использования в качестве асинхронного сигнала начальной установки счетчика, то паразитные импульсы могут сбрасывать счетчик в моменты времени не предусмотренные разработчиком. Моделирование синтезированного описания в САПР MAX+Plus II фирмы Altera показало, что ложные пики появляется у большинства комбинационных сигналов. Для сигнала Str были проведены дополнительные исследования. В проект был включен регистровый сигнал StrS (фрагмент автомата Мили с синхронными выходами), у которого ложные выбросы отсутствуют, но ценой за это является задержка на один такт автомата относительно сигнала Str. Поэтому изменение выхода происходит в следующем такте после соответствующего   изменения состояния. Для соблюдения взаимного расположения сигналов временного кластера  с сигналом StrS необходимо и остальные комбинационные сигналы кластера перевести в разряд регистрируемых.

Рассмотренное выше запаздывание на такт можно устранить только добавлением в текст программы, создаваемый САПР HDL Designer Series (и ей подобным), дополнительных конструкций. В них присваивания комбинационным частям выходных триггеров должны размещаться в операторах аналогичным операторам присваивания состояния, как и принято в программе 5.1. Набор этих конструкций для сигнала StrS2  приведен в листинге 5.1 с комментарием «вставка №Х».

На рис. 5.9 приведена временная диаграмма работы автомата (листинг 5.1),

 

 

 

Рис. 5.9 Временная диаграмма работы автомата

 

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

Для практического освоения темы предполагается выполнить описание, моделирование и имплементацию автомата. При этом подготовительные этапы проектирования выполняются с использованием графических возможностей САПР фирмы Mentor Graphics – HDL Designer Series.

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

Задания на работу требуют от обучаемых разработки автомата,  выполняющих   ту или иную обработку входной информации. Разрабатываемый автомат (avtomat) является ядром системы, приведенной на рис. 5.10. В дальнейшем система будет имплементирована в ПЛИС отладочной платы. В состав системы входят: один или два регистра сдвига входной информации (Reg_Shift) и  счетчик анализируемых тактов (Count).  Для отображения выходной информации в привычном десятичном виде в состав системы включен модуль (Convert) для преобразования двоичного кода в код 7-ми сегментного индикатора (Hex Indicator). Входная информация с переключателей (Switchs) поступает на входной сдвигающий регистр (Reg_Shift). Для контроля вводимой информации к выходам регистра подключены светодиодные индикаторы (Input Leds).

 

Рис. 5.10 Схема системы для отладки конечного автомата

 

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

1. Для схемы со сдвигающим регистром (8 бит) разработать управляющий автомат, позволяющий определить номер первого разряда (со стороны младших), содержащего единицу.

2. Для схемы со сдвигающим регистром (8 бит) разработать управляющий автомат, позволяющий определить номер первого разряда (со стороны старших), содержащего ноль.

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

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

 

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

1. Разработать алгоритм управления автоматом заданной схемы (рис. 5.9.) и создать требуемый граф переходов;

2. Создать в системе HDL Designer Series новый проект и войти в графический редактор, задав имя машины состояний (автомата).

3. Перейти в редактор интерфейса, занести имена требуемых входных и выходных сигналов  и их свойства, сохранить файл с именем автомата.

4. Вернувшись в редактор автомата, и используя его графические средства, рисовать граф схему переходов автомата.

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

6. Задать состояние для сброса и возврата при запрещенных состояниях, определить условия тактирования автомата.

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

8. Проверить правильность переходов автомата средствами пакета HDL Designer.

9. Перейти в САПР Quartus II для последующей имплементации разрабатываемой системы в состав учебного стенда.

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

11. Разработать VHDL  файл, описывающий  схему верхнего уровня иерархии. При написании программы использовать имена, приведенные на рис. 5.9.

12. Выполнить компиляцию файлов в порядке их вхождения в иерархию проекта.

13. Моделировать поведение автомата средствами САПР Quartus II.

14. Выполнить «распиновку» кристалла (подключив требуемые переключатели, кнопки и индикаторы), компилировать проект и загрузить конфигурационный файл в ИС учебного стенда.

15. Проверить правильность функционирования. проекта.

 

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

    - Таблицу функции переходов (при необходимости и выходов) и диаграмму состояний автомата.

    - Иерархическую структуру  проекта.

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

    - Трассировку исполнения всех переходов с учетом возможных приоритетов и с учетом необходимости предварительной установки требуемых для тестирования состояний автоматов (с  комментариями).

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

    

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

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

2. Почему считают нецелесообразным явное кодирование состояний?

3. Как изменится текст описания спроектированного Вами автомата, если потребуются выходы с иными временными характеристиками. Например, замена синхронизированного выхода на асинхронный или   добавление для автоматов  Мили выходов, связанных только с состоянием?



2020-02-04 239 Обсуждений (0)
Фиксация входных сигналов 0.00 из 5.00 0 оценок









Обсуждение в статье: Фиксация входных сигналов

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

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

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



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

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

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

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

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

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



(0.009 сек.)