Оглавление:

Модель универсального выключателя: 10 шагов
Модель универсального выключателя: 10 шагов

Видео: Модель универсального выключателя: 10 шагов

Видео: Модель универсального выключателя: 10 шагов
Видео: СДЕЛАЛ УМНЫЙ ДОМ ***ЗА 10 МИНУТ!*** 2024, Июль
Anonim
Модель универсального выключателя
Модель универсального выключателя

Вы устали перед сном проверять, выключен ли весь свет в вашем доме? Вы хотите, чтобы можно было выключить каждый свет сразу без суеты? Чтобы сэкономить электроэнергию и время, мы решили создать систему, которая теоретически могла бы полностью отключить весь дом.

Мы смоделировали доказательство этой концепции, используя пару светодиодов и печатную плату basys 3, и создали дизайн, который отключит все светодиоды одним нажатием кнопки. Эта модель может быть применена и к реальной системе домашнего освещения, хотя для этого потребуется более сложная проводка и модификации данных файлов VHDL.

Шаг 1. Импортируйте данные файлы VHDL

Чтобы наша модель работала правильно, вам необходимо загрузить программное обеспечение, которое дает инструкции для платы Basys 3.

Сначала вам нужно будет загрузить инструмент синтеза для реализации файлов vhdl на оборудовании. Если вы хотите быть уверены, что весь код будет полностью воспроизводить наш дизайн без каких-либо изменений, мы рекомендуем вам использовать Vivado 2016.2. После того, как вы установили Vivado, вы можете создать проект и загрузить наши исходные файлы. Добавьте их в качестве источников в свой проект, не забудьте также добавить файл ограничений!

Далее мы объясним, что делает каждый из исходных файлов. Пропустите шаги со 2 по 6, если вы просто хотите перейти к физической конструкции устройства.

Шаг 2: Разбор верхнего модуля VHDL

Разборка модуля VHDL Top
Разборка модуля VHDL Top
Разбор верхнего модуля VHDL
Разбор верхнего модуля VHDL

Верхний модуль проекта - это то, что соединяет все отдельные компонентные модули с используемым оборудованием. Как видите, модули killSwitch и buzzerControl определены как компоненты вверху.

В нижнем разделе указано, как эти модули связаны друг с другом. Мы подключили к плате четыре светодиода и связали их с модулями killSwitch с dev0 по dev3. У нас есть четыре модуля killSwitch, потому что нам нужен один для управления состоянием каждого подключенного светодиода. Каждый из этих модулей использует тактовый сигнал и сигнал кнопки, которые мы создали в определении верхнего модуля, а также соответствующие им сигналы входного переключателя и выходного устройства.

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

Шаг 3: поломка модуля аварийного выключателя VHDL

Поломка модуля аварийного выключателя VHDL
Поломка модуля аварийного выключателя VHDL
Поломка модуля аварийного выключателя VHDL
Поломка модуля аварийного выключателя VHDL

Kill Switch - это универсальная кнопка выключения, и модуль в первую очередь связан с подключением ее к другим элементам схемы, чтобы при ее нажатии все индикаторы погасли.

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

В разделе кода, посвященном архитектуре, мы видим, что он зависит от модуля dFlipFlop для хранения памяти. Вы также можете видеть, что мы объявили четыре сигнала, которые будут использоваться для подключения триггера, а также для реализации наших логических операторов. В поведенческом разделе кода мы создали экземпляр модуля dFlipFlop и назначили наши сигналы ввода-вывода портам.

Отсюда основная часть нашей логики заключается в значениях сигналов для invertState и isDevOn. Наша логическая основа для устройства заключается в следующем: «Каждый раз, когда переключатель нажимается, свет меняет его состояние включения / выключения. Каждый раз, когда кнопка нажата, а светодиод в данный момент включен, светодиод меняет свое состояние на выключенное. Из этих двух утверждений мы можем экстраполировать, что состояние светодиода должно быть XOR переключателя и нашего элемента памяти. Таким образом, изменение любого из них инвертирует светодиод. Это можно увидеть в сигнале isDevOn. Состояние включения светодиода для элемента памяти обрабатывается нашим сигналом invertState. Если светодиод горит и кнопка нажата, наш элемент памяти обновит и инвертирует свое состояние. Затем это также инвертирует состояние светодиода.

Шаг 4: Разбор модуля VHDL Flip Flop

Разбор модуля VHDL Flip Flop
Разбор модуля VHDL Flip Flop

Одна из проблем с нашей конструкцией заключалась в том, что после использования выключателя ранее включенные огни, возможно, нужно было дважды перевернуть, чтобы вернуться в положение включения. Со временем это было бы довольно неудобно для людей. Нам удалось обойти это неудобство, включив в нашу конструкцию «Flip Flop» - элемент схемы, способный хранить информацию. Теперь система запоминает, был ли ранее включен выключатель света, поэтому, если его снова щелкнуть, он включится независимо от своего исходного положения.

Код VHDL использует операторы if и else для создания триггера в качестве компонента нашей схемы. Это гарантирует, что когда тактовый сигнал переходит из низкого состояния в высокое, когда лампочка горит, и когда нажимается выключатель, выход триггера перезаписывает его вход. Когда вход перезаписывается, триггер инвертируется.

Шаг 5: поломка модуля пьезозуммера VHDL

Поломка модуля пьезозуммера VHDL
Поломка модуля пьезозуммера VHDL
Поломка модуля пьезозуммера VHDL
Поломка модуля пьезозуммера VHDL

Этот файл немного лишний с точки зрения конструкции оборудования, но он необходим для бесперебойной работы верхнего модуля и файлов ограничений. Если вы решили не использовать пьезо-зуммер, загрузите этот файл, но не прикрепляйте зуммер к плате Basys 3.

Пьезозуммер при нажатии кнопки отключения воспроизводит двух нотный сигнал, который предоставит пользователю слуховой отклик на нажатие кнопки. Мы реализовали это поведенчески в VHDL с помощью серии операторов if в структуре процесса. Мы начали с создания целочисленного значения, чтобы отслеживать, сколько изменений часов произошло. Как только процесс начинается, программа проводит первые полсекунды (от 0 до 50 миллионов тактов), выводя ноту A с частотой 440 Гц. Это достигается путем инвертирования сигнала пьезозуммера через каждые 227272 тактов часов с функцией по модулю. Это число является результатом деления тактового сигнала платы (100 МГц) на желаемую частоту (400 Гц). В течение второй половины секунды (от 50 до 100 миллионов тактов) плата выводит ноту F с частотой 349,2 Гц тем же способом, что и раньше. По прошествии одной секунды программа больше не увеличивает значение тактовой переменной и прекращает вывод каких-либо данных из пьезозуммера. Повторное нажатие универсальной кнопки выключения сбрасывает это число на 0, перезапуская шумовой цикл.

Шаг 6: Разбор файла ограничений VHDL

Файл ограничений сообщает Vivado, какие устройства на плате Basys 3 мы используем. Он также предоставляет Vivado имена, которые мы дали устройствам в нашем коде. Эта информация нужна Vivado, чтобы он знал, как подключить наши логические элементы к физическому оборудованию. Файл ограничений включает большой объем закомментированного (неиспользуемого) кода. Эти строки кода ссылаются на устройства на плате, которые мы не используем.

Используемые нами устройства включают четыре входных переключателя с маркировкой V17, V16, W16 и W1 на плате. Мы также используем универсальную кнопку выключения, обозначенную U18. Выходными контактами для наших четырех подключенных светодиодов являются JB4, JB10, JC4 и JC10. Для нашего пьезозуммера мы используем выходной контакт JA9.

Как мы заявили в разбивке по верхнему модулю, если вы хотите добавить на плату дополнительные светодиоды или другие устройства, вам необходимо увеличить объем сигналов sw и dev, добавить больше модулей killSwitch и соединить их вместе. Затем вам нужно связать эти имена переменных с оборудованием устройства через файл ограничений. Это можно сделать, раскомментировав (повторно включив) строки кода, связанные с выводами, которые вы хотите использовать, а затем добавив имя связанной переменной в верхнем модуле. Правильный синтаксис для этого можно скопировать с используемых нами устройств. Чтобы узнать названия контактов, которые вы хотите использовать на плате, обратитесь к справочному руководству Baasys 3 здесь.

Шаг 7: Построение Basys 3

Строительство Basys 3
Строительство Basys 3
Строительство Basys 3
Строительство Basys 3

Вам нужно будет подключить свои светодиоды к правильным портам ввода / вывода Basys 3. Следуйте предоставленным рисункам, чтобы определить правильные порты, потому что, если вы вставите светодиод в неправильный порт, он не загорится. Если вы решили подключить пьезозуммер, вам также необходимо подключить его к правильным портам ввода-вывода.

Когда плата будет готова, подключите ее к компьютеру через USB-кабель.

Шаг 8: Реализация файлов VHDL в Basys 3

Реализация файлов VHDL в Basys 3
Реализация файлов VHDL в Basys 3
Реализация файлов VHDL в Basys 3
Реализация файлов VHDL в Basys 3

Теперь, когда ваша плата готова и код готов, вы, наконец, можете собрать модель.

После того, как вы настроили свой проект в Vivado, вы должны нажать кнопку «Создать битовый поток», чтобы скомпилировать код, прежде чем он будет загружен на плату. Если вы получаете сообщение об ошибке в это время, вам необходимо дважды проверить, что ваш код в точности совпадает с нашим. Когда я говорю точно, я имею в виду даже точки с запятой или типы скобок, которые используются. После того, как ваш битовый поток был успешно записан, перейдите к диспетчеру оборудования в Vivado и нажмите кнопку «Открыть цель», а затем сразу после этого нажмите «Программировать устройство». Теперь ваша плата Basys 3 должна быть полностью работоспособной.

Шаг 9: Использование платы Basys 3

Использование платы Basys 3
Использование платы Basys 3

Теперь, когда плата Basys 3 работает и запрограммирована для представления нашей модели, вы должны знать, как ее использовать.

Каждый из четырех крайних правых переключателей управляет одним из светодиодов, при их щелчке светодиод включается или выключается. Если светодиод не загорается, убедитесь, что вы подключены к правильному порту ввода-вывода и что ваш светодиод в первую очередь работает.

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

Шаг 10: Похвастайтесь

Модель служит аккуратной маленькой новинкой, которую вы можете продемонстрировать своим друзьям и близким. Теоретически его также можно использовать для включения универсального выключателя в домашнюю электрическую систему, если вы замените светодиоды проводами, ведущими к вашим фарам. Хотя это возможно, нам все равно придется отговаривать от этого. Если вы попытаетесь заменить проводку без помощи электрика, есть вероятность нанести серьезный вред себе или своему дому.

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