Оглавление:

L I G H T S: 5 шагов
L I G H T S: 5 шагов

Видео: L I G H T S: 5 шагов

Видео: L I G H T S: 5 шагов
Видео: Система «5 шагов». Зарабатываем на использовании секретной лазейки известного сервиса 2024, Ноябрь
Anonim
Л И Ж З Т С
Л И Ж З Т С

Целью этого финального проекта было создание чего-то, что сфокусировалось бы на устойчивости и реализации концепций цифрового дизайна, и для этого я решил спроектировать масштабируемую систему энергосбережения с использованием vhdl и сделать ее для платы Basys 3 (серия Artix-7 35T). Масштабируемость, потому что любое количество датчиков можно разместить в комнате, и любое количество этих систем можно разместить вокруг здания или дома. Эта система теоретически сэкономит тысячи долларов на коммерческом строительстве и снизит большой процент потребления энергии в небольших жилых районах за счет реализации подключенной системы активного и пассивного управления освещением, детекторами движения, таймерами, отображаемыми на семи сегментных дисплеях, и переключатели управления. В этом примере рассматривается одиночная система с тремя датчиками движения, главным переключателем, переключателем ручного / обычного режима, четырьмя семисегментными дисплеями и одним источником света, которым управляет система.

Например, в выбранной комнате несколько детекторов движения будут размещены вокруг (в этом примере дизайна их три), и каждый будет отправлять сигнал (1), если он обнаруживает движение, и (0), если нет. Если хотя бы один из детекторов движения обнаруживает движение, свет включается, если он еще не включен, и остается включенным, если он уже включен. В любой момент все датчики движения ничего не обнаруживают, таймер начинает обратный отсчет в течение установленного периода времени (настраивается в коде), и свет остается включенным, пока таймер отсчитывает обратный отсчет. Когда таймер заканчивает обратный отсчет, таймер останавливается, и свет выключается. Если хотя бы один детектор движения обнаруживает движение во время обратного отсчета таймера, таймер останавливается и сбрасывается. И если хотя бы один датчик движения обнаруживает движение при выключенном свете, он сразу включается.

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

Итак, в этой системе есть два конечных автомата, один из которых является главным конечным автоматом, а другой - для таймера обратного отсчета. Главный конечный автомат имеет пять состояний, определенных как таковые: 1. «свет включен, движение обнаружено» (id = 000), 2. «свет включен, движение не обнаружено» (id = 001), 3. «свет выключен, движение отсутствует. обнаружен »(id = 010), 4.« вручную включен »(id = 011) и 5.« вручную выключен »(id = 100). Этот главный конечный автомат имеет четыре входа: главный переключатель (мс), ручной / нормальный переключатель (нс), сигнал высокого уровня, когда хотя бы один переключатель обнаруживает движение, и низкий уровень в противном случае (orx), и сигнал, который высокий, когда таймер закончился, и низкий в противном случае (td). Главный конечный автомат имеет два выхода: индикаторы (индикаторы) и сигнал, указывающий, когда включать таймер обратного отсчета (таймер) или (t) (оба используются взаимозаменяемо).

Второй конечный автомат, таймер обратного отсчета, имеет 12 состояний: 10 из них имеют идентификаторы, связанные с числом, отображаемым седьмым сегментом - «сегмент 10» (идентификатор = 1010), «сегмент 9» (идентификатор = 1001), […], «Сегмент 2» (id = 0010), «сегмент 1» (id = 0001), а в двух других состояниях отображается ноль, что означает, что таймер выключен - поэтому есть первый пробел «пустой 1» (id = 1111) и второй пробел «бланк 2» (id = 0000). Таймер обратного отсчета имеет один вход: таймер (t) и три выхода: число, отображаемое в двоичном формате с четырьмя битами (bin), и сигнал, указывающий, что таймер завершен (td).

Шаг 1: Схема черного ящика

Схема черного ящика
Схема черного ящика

Это обзор того, как вся система должна работать, и он описан схемой черного ящика.

  • Часы используются для тактирования главного конечного автомата и семисегментного декодера; более медленные часы необходимы для обратного счетчика, поэтому есть модуль делителя тактовых импульсов, который принимает тактовый вход и выдает более медленные часы для обратного счетчика.
  • Промежуточная переменная (orx) в оболочке привязана к датчикам движения и будет высокой, если хотя бы один из датчиков что-то обнаруживает, и низкой в противном случае; логическое уравнение для этого просто orx = s (2), s (1) или s (0).
  • Главный fsm контролирует, в каком общем состоянии находится система, в зависимости от входов (orx, ms, ns, td) и выводит текущее состояние, в котором она находится (sm), показанное упрощенно с двумя сигналами, для которых она используется (таймер и свет).

    • (таймер) - это сигнал оболочки, который отправляется на счетчик обратного отсчета fsm в качестве его входа и управляется текущим состоянием основного fsm. Указывает, когда включать таймер.
    • (lights) - это сигнал оболочки, который используется для управления светодиодом и управляется текущим состоянием основного fsm.
  • Обратный счетчик fsm контролирует то, что отображает семь сегментов в зависимости от входа (таймера), и выводит текущее состояние, в котором он находится (sd), показанный упрощенно с двумя сигналами, которые он использует для (td и bin).

    • (td) - это сигнал обертки, который отправляется на главный fsm в качестве входа и контролируется текущим состоянием fsm обратного счетчика. Он функционирует как сигнал обратной связи, который указывает, когда таймер закончил работу.
    • (bin) - это четырехбитовый сигнал оболочки, который объединяется с четырьмя битами нуля («0000» и bin), и объединенные восемь битов отправляются в (q), восьмибитный сигнал оболочки, который, в свою очередь, отправляется семи декодер сегмента под (ALU_VAL).
  • Семисегментный модуль такой же, как и на Polylearn; его основные входы принимают 8-битное число от (bin) до (ALU_VAL) для отображения на четырех различных семи сегментных дисплеях, используя выходы (SEGMENTS) для сигнала оболочки (seg) и (DISP_EN) для оболочки (disp_en).

    • Поскольку два или более семисегментных дисплея не могут отображать разные цифры одновременно, необходимы часы, чтобы циклически проходить через четыре сегмента sseg, отображая соответствующую цифру за раз для каждого отдельного сегмента sseg, включенного индивидуально, и достаточно быстрое переключение заставляет ssegs кажутся включенными сразу.
    • (знак и действительный) постоянны на протяжении всей программы, поэтому (знак) постоянно устанавливается на низкий уровень, а (действительный) постоянно устанавливается на высокий уровень.
    • (ALU_VAL) принимает сигнал оболочки (q) в качестве входных данных, который представляет число, которое будет отображаться на семисегментном дисплее в двоичном формате.
    • Выходные данные (SEGMENTS) отправляются в восьмибитовый сигнал оболочки (seg) и (DISP_EN) в четырехбитовый сигнал оболочки (disp_en).
  • Существует также модуль D-триггера, который явно не показан на диаграмме, но необходим для двух конечных автоматов в качестве подмодулей и помогает синхронно переходить между состояниями.

    • (3) из них необходимы для основного fsm, поскольку 2 ^ (3) = 8> 5 состояний для кодирования
    • (4) из них необходимы для обратного счетчика fsm, поскольку 2 ^ 4 = 16> 12 состояний для кодирования

Шаг 2: конечные автоматы

Государственные машины
Государственные машины

Чтобы правильно спроектировать два конечных автомата, необходимо четко определить отдельные состояния с их выходами и состоянием, в которое он переходит, на основе различных возможных входов.

Основные состояния fsm:

«Свет горит, движение обнаружено» (id = 000)

Свет включен, по крайней мере, один из детекторов движения обнаруживает движение, поэтому orx должен быть высоким, а ms включен.

  • Выходы: свет = 1 и таймер = 0
  • Остается в этом состоянии, когда ms = 1 и orx = 1.
  • Переходит в состояние «свет включен, движение не обнаружено», если ms = 1 и orx = 0.
  • Переходит в состояние «включено вручную», если ms = 0 и ns = 1.
  • Переходит в состояние «выключено вручную», если ms = 0 и ns = 0.

«Свет горит, движение не обнаружено» (id = 001)

Свет горит, движение не обнаружено ни одним детектором движения, поэтому orx должен быть низким, а ms включен. Также в начале этого состояния таймер, установленный на высокий уровень, сообщает fsm обратного отсчета, чтобы начать обратный отсчет, продолжает обратный отсчет и прекращает обратный отсчет, как только fsm обратного отсчета сообщает этому fsm, что счет завершен.

  • Выходы: свет = 1 и таймер = 1.
  • Остается в этом состоянии, когда ms = 1, orx = 0 и td (таймер завершен) = 0.
  • Переходит в состояние «свет включен, движение обнаружено», если ms = 1 и orx = 1.
  • Переходит в состояние «свет выключен, движение не обнаружено», если ms = 1, orx = 0 и td = 1.
  • Переходит в состояние «включено вручную», если ms = 0 и ns = 1.
  • Переходит в состояние «выключено вручную», если ms = 0 и ns = 0.

«Свет выключен, движение не обнаружено» (id = 010)

Свет выключен, движение не обнаружено ни одним датчиком движения, и таймер закончил обратный отсчет, поэтому orx должен быть низким, ms включен, а td выключен.

  • Выходы: свет = 0 и таймер = 0.
  • Остается в этом состоянии, когда ms = 1 и orx = 0.
  • Переходит в состояние «свет включен, движение обнаружено», если ms = 1 и orx = 1.
  • Переходит в состояние «включено вручную», если ms = 0 и ns = 1.
  • Переходит в состояние «выключено вручную», если ms = 0 и ns = 0.

«Включено вручную» (id = 011)

Свет горит, датчики движения неактуальны, поэтому ms выключен, а ns включен.

  • Выходы: свет = 1 и таймер = 0.
  • Остается в этом состоянии, когда ms = 0 и ns = 1.
  • Переходит в состояние «выключено вручную», если ms = 0 и ns = 0.
  • Переходит в состояние «свет выключен, движение не обнаружено, если ms = 1.

«Выключено вручную» (id = 100)

Свет выключен, датчики движения не имеют значения, поэтому ms выключен, а ns выключен.

  • Выходы: свет = 0 и таймер = 0.
  • Остается в этом состоянии, когда ms = 0 и ns = 0.
  • Переходит в состояние «включено вручную», если ms = 0 и ns = 1.
  • Переходит в состояние «свет выключен, движение не обнаружено, если ms = 1.

На нижнем счетчике указано:

«Сегмент 10» (id = 1010)

Семисегментный дисплей показывает 10.

  • Выходы: bin = «1010» и td = 0.
  • Переходит в состояние «сегмент 9», если таймер = 1.
  • Переходит в состояние «пусто 2», если таймер = 0.

«Сегмент 9» (id = 1001)

Семисегментный дисплей показывает 9.

  • Выходы: bin = «1001» и td = 0.
  • Переходит в состояние «сегмент 8», если таймер = 1.
  • Переходит в состояние «пусто 2», если таймер = 0.

(Состояния от «сегментов 8» до «сегментов 2» опускаются, потому что они следуют той же схеме, что и «сегменты 10» и «сегменты 9», и не являются необходимыми для объяснения)

«Сегмент 1» (id = 0001)

Семисегментный дисплей показывает 1.

  • Выходы: bin = «0001» и td = 0.
  • При следующем нарастающем фронте тактового сигнала переходит в состояние «пробел 2» (ввод не требуется).

«Пробел 2» (id = 1111)

Семисегментный дисплей показывает 0. Целью второго пустого состояния является создание отдельного состояния для случая, когда td = 1 для безопасности.

  • Выходы: bin = «1111» и td = 1.
  • Переходит в состояние «пробел 1» при следующем нарастающем фронте тактового сигнала (ввод не требуется).

«Пустой 1» (id = 0000)

Семисегментный дисплей показывает 0. Это состояние, в котором система остается, когда главный конечный автомат находится в состоянии «свет выключен, движение не обнаружено».

  • Выходы: bin = «0000» и td = 0.
  • Переходит в состояние «сегмент 10», если таймер = 1.

Шаг 3. Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения

Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения
Таблицы истинности конечного автомата, уравнения возбуждения и выходные уравнения

Следующим шагом является создание таблиц истинности для двух конечных автоматов, уравнений возбуждения и выходных уравнений для каждой fsm. Для каждого уравнения возбуждения fsm должны быть уравнения для каждого следующего бита кодирования состояния в терминах текущего состояния и его входных сигналов. Для каждого выходного уравнения fsm должны быть уравнения для каждого выходного сигнала в терминах текущего состояния. Все четыре набора уравнений могут быть составлены из изображенных таблиц истинности. (qn - следующий кодированный бит состояния для каждого конечного автомата, а q - текущее состояние)

(000) эквивалентно q (2) 'q (1)' q (0) ', и (0000) эквивалентно q (3)' q (2) 'q (1)' q (0) '

(например, (0101) равно q (3) 'q (2) q (1)' q (0) и (110) равно q (2) q (1) q (0) ')

Уравнения возбуждения для основной ПСМ:

  • qn (2) = (мс) '(нс)
  • qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
  • qn (0) = (мс) '(нс)' + (мс) (orx) '[(000) + (td)' (001)]

Выходные уравнения для основного ПСМ:

  • огни = (000) + (001) + (100)
  • таймер = (001)

Уравнения возбуждения обратного счетчика fsm:

  • qn (3) = t [(0000) + (1010) + (1001) + (0001)]
  • qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

Выходные уравнения для обратного счетчика fsm:

  • td = (1111)
  • bin (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • bin (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • bin (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Шаг 4: оболочка, подмодули и ограничение

Как уже объяснялось в шаге 1, эти модули необходимы для этого проекта и связаны вместе с модулем оболочки под названием «final_proj.vhd». Файл ограничений под названием «Basys3_Master.xdc» используется для связывания всех входов и выходов оболочки с коммутаторами, семью сегментами и портами ввода / вывода на плате Basys 3. Главный переключатель должен быть переключателем на плате, ближайшим к стороне, к которой подключены провода, переключатель нормального / ручного режима - вторым, а три переключателя, представляющие три датчика движения, - это три переключателя, расположенные непосредственно рядом с переключателем нормального / ручного режима.. Весь код (логические уравнения, объявления модулей и т. Д.) Уже записан в файлы, поэтому вам не нужно ничего писать, чтобы это работало.

Шаг 5: Порты ввода-вывода для светодиода

Порты ввода / вывода для светодиодов
Порты ввода / вывода для светодиодов
Порты ввода / вывода для светодиодов
Порты ввода / вывода для светодиодов

Последний шаг в этом проекте - использование светодиода, чтобы показать, действительно ли (свет) включается и выключается. Схема подключения показана на двух рисунках. Убедитесь, что резистор включен последовательно со светодиодом (не менее 330 Ом), чтобы не пережечь светодиод, и убедитесь, что длинный контакт светодиода подключен к тому же гнезду на плате Basys, что и показано красным проводом (вверху крайний правый), а более короткий штырь соединен с землей, тот же гнездовой разъем, что и показанный черный провод (вверху, второй слева).

Рекомендуемые: