1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yuanbo-peng-Combination-Lock

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Цифровой дизайн — комбинаторный замок

  • Автор: Юаньбо Пэн bobpeng.bham.uk@gmail.com
  • Дата создания: 21.02.2019
  • Название проекта: Комбинаторный замок
  • Целевые устройства: XILINX NEXYS 4 DDR
  • Версии инструментов: Vivado
  • Ключи: 4, 2, 7, 5, 7
  • Редакция: 1.0

Введение

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

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

1. Обзор

В этом проекте будет использована начальная плата Nexys 4 DDR производства компании Digilent. Эта плата использует FPGA модели Artix 7 XC7A100T от компании Xilinx. Ниже приведена диаграмма начальной платы:

2. Простой цифровой комбинаторный замок

В этой части дизайна пользователю предлагается ввести последовательность пятизначного кода. Если последовательность верна, все светодиоды на плате FPGA засветятся. Все последующие эксперименты будут проводиться с использованием последовательности кода 4, 2, 7, 5, 7.

Интерфейс пользователя будет работать следующим образом:

  • Кнопка BTNU указывает, что пользователь может начать ввод своего пароля.

  • Каждое число будет введено в двоичной форме с помощью переключателей.

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

  • Если последовательность кода верна, то светодиоды засветятся.

2.1 Диаграмма конечного автомата

Состояние инициализации — это состояние INI. Когда кнопка BTNU нажата, все состояния переходят в состояние INI. В состоянии INI массив всех пользовательских вводов usr_in обнуляется. Состояния A, B, C, D, E, RES переходят к следующему состоянию при каждом нажатии кнопки BTNL. Если нет входного сигнала, состояния остаются неизменными.Поскольку кнопки в основном являются механическими выключателями, нестабильность сигнала возникает при переходе состояния выключателя. Это можно видеть на вышеуказанной фигуре: хотя кнопка нажата всего один раз, фактически генерируемый сигнал кнопки не происходит только один раз. При использовании высокочастотного тактового сигнала для отбора образцов, такого как 100 МГц, это может привести к ошибочному суждению. Система ошибочно считает, что пользователь сделал несколько нажатий.

Поэтому ключевые шаги этого проекта для решения проблемы следующие:

  • Уменьшение частоты высокочастотного тактового сигнала, увеличение периода выборки для обеспечения максимальной достоверности выборки;

  • На основе тактового сигнала после понижения частоты производится запаздывающее выборочное чтение сигнала кнопки, а когда выборочный сигнал кнопки находится на уровне "высокий" (нажата) через фиксированное время, выводится сигнал кнопки снятия дребезга.

2.3 Последовательность кода

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

3. Улучшение пользовательского интерфейса

Основная цель этой части дизайна — улучшить опыт пользователя; цифры и семисегментный индикатор будут использоваться для отображения пяти цифр и информации о проверке, введенных пользователем.- Когда кнопка BTNL нажата, введенные цифры отображаются в реальном времени на семисегментном индикаторе последовательно.

  • После ввода пяти цифр система будет отображать сообщение об успехе 'OK' и сообщение об ошибке 'Err' на семисегментном индикаторе в зависимости от корректности последовательности кода.

  • Отображение 'OK' и 'Err' будет чередоваться каждую секунду вместе с отображением введенных цифр.

3.1 Многоразрядное отображение

Отображение цифр будет улучшено с помощью счетчика, который быстро переключается между различными цифрами. Отображающий модуль затем последовательно пройдет через каждую цифру (вызывая циклическое перемещение цифры в последовательность 1110111, 1111011, 1111101, 1111110) и выведет требуемые значения для каждого сегмента. Хотя одновременно активируется только одна цифра, устойчивость светодиода и невосприимчивость человеческого глаза к частоте изменения значений означает, что отображение будет казаться как будто все цифры адресуются одновременно.

Это достигается за счет использования счетчика со скоростью 100 МГц, который считает до 58192 (двоичное число 1110001101010000), после чего сбрасывается обратно в ноль и начинается заново.Поскольку в этой системе одновременно могут отображаться максимум пять цифр, они должны быть представлены трёхразрядным двоичным числом, поэтому первые три разряда счетчика должны изменяться от 0 до 1 (от 000 до 111).## 3.2 Альтернативное отображение

Функция дискретного отображения реализуется в этом дизайне с использованием счетчиков count_flk и флага switch_flk. Для повышения повторного использования кода этот счетчик может быть рассчитан на основе медленного тактового сигнала. Кроме того, скорость мигания можно регулировать путем изменения максимального значения счетчика, которое является множителем медленного тактового сигнала. Флаг переключения switch_flk используется как сигнал для переключения состояния. Если состояние равно E, то при значении switch_flk равном 1, состояние автоматически переключается на RES. Если состояние находится в RES, то при значении switch_flk равном 0, состояние автоматически переключается на E для достижения эффекта мигающего цифрового табло.

4. Усовершенствованная комбинированная система защиты

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

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

  • Затем система выберет другое случайное число в диапазоне от 1 до 5 и выведет его на семисегментный индикатор. Пользователь вводит соответствующее число из последовательности кодов.

  • Если два цифровых значения верны, то система покажет сообщение 'OK'. В противном случае она выдаст сообщение 'Err'.

4.1 Диаграмма конечного автомата состояний

Инициализационное состояние — INI_R. Когда нажата кнопка BTNR, все состояния переходят в состояние INI_R. В этом состоянии счетчик случайного числа останавливается, а затем генерируются два различных случайных числа rand_1, rand_2. Кроме того, правильная последовательность кодов и соответствующий ей случайный номер, а также последовательность кодов, введенная пользователем usr, будут обнулены, после чего переход осуществляется в состояние A_R. Одновременно первый случайный номер rand_1 будет показан на цифровом индикаторе и ждет ввода пользователя соответствующего пароля.

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

4.2 Генерация двух различных случайных чисел

Реализация функции случайного выбора может основываться на индексных счетчиках и многомерных массивах. Поскольку диапазон последовательностей кодов составляет 1–5 бит, существует 20 различных комбинаций двухзначных чисел. Эти комбинации могут быть загружены в многомерный массив с индексами от 0 до 19. При нажатии кнопки BTNU счетчик останавливает свою работу и генерирует случайное число от 0 до 19. Это случайное число можно использовать как индекс многомерного массива для косвенной генерации двух различных случайных чисел от 1 до 5.## 4.3 Проверка случайной последовательности кодов

Два контейнера массивов будут инициализированы во время этапа инициализации, anw и usr. При нажатии кнопки BTNR генерируются два разных случайных числа, что означает, что код, соответствующий каждому случайномu числу, также был определён. В этот момент код, соответствующий каждому случайномu числу, загружается в соответствующие позиции массива anw. При нажатии кнопки BTNL для чтения входных данных пользователя каждый клик обновляет входные данные пользователя в массиве usr. Когда вводятся две цифры, массивы usr и anw сравниваются, и отображаются соответствующие данные.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Данный проект предполагает реализацию кодового замка на плате FPGA с использованием языка VHDL и конечного автомата. Предлагаются некоторые возможные решения проблем, включая устранение дребезга контактов, генерацию случайных чисел и проверку комбинации. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yuanbo-peng-Combination-Lock.git
git@api.gitlife.ru:oschina-mirror/yuanbo-peng-Combination-Lock.git
oschina-mirror
yuanbo-peng-Combination-Lock
yuanbo-peng-Combination-Lock
master