РАЗРАБОТКА УСТРОЙСТВА "КОДОВЫЙ ЗАМОК" В ПРОГРАММНОЙ СРЕДЕ QUARTUS
Журнал: Научный журнал «Студенческий форум» выпуск №43(179)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №43(179)
РАЗРАБОТКА УСТРОЙСТВА "КОДОВЫЙ ЗАМОК" В ПРОГРАММНОЙ СРЕДЕ QUARTUS
DEVELOPMENT OF THE "COMBINATION LOCK" DEVICE IN THE QUARTUS SOFTWARE ENVIRONMENT
Danil Vladimirtsev
Student, Department of Communications and Information Security, Omsk State Technical University, Russia, Omsk
Аннотация. В данной статье проведено проектирование устройства поиска среднего арифметического с выводом на семисегментный дисплей.
Abstract. In this article, the design of an arithmetic mean search device with output to a seven-segment display was carried out.
Ключевые слова: Ключевые слова: Счетчик, Код Грея, Quartus, Программируемая логическая матрица, Программируемая логическая интегральная схема, Проектирование, Структурная схема.
Keywords: Keywords: Counter, Gray Code, Quartus, Programmable logic matrix, Programmable logic integrated circuit, Design, Block diagram.
Разработку «Кодового замка» будем реализовывать на языке текстового описания Verilog.
Код будет содержать пять входов и выходов. В проекте задействуем семисегментные индикаторы(для отображения пароля), кнопку(для перезаписи пароля), движковые рычаги(для задания комбинации пароля и проверки правильности введенного пароля).
Алгоритм нашего замка имеет привязку по времени к генератору прямоугольных импульсов с тактовой частотой 50 Гц. Весь процесс будет происходить на каждый положительный фронт импульса генератора. Это поможет избежать разницы выполнения каких-либо команд во времени, что непременно повысит надежность проекта от программных ошибок.
Пароль от нашего «Кодового замка» будет четырехзначным, и задаваться движковыми рычагами. Так как количество рычагов, на используемом ПЛИС,
10 штук, а для задачи десятичной цифры в двоичном коде необходимо 4 рычага, процесс ввода пароля будет разделен на два этапа. Каждый этап будет задавать две цифры восьмью рычагами, а девятый рычаг будет позволять переключаться между ними.
Десятый рычаг будет проводить проверку на правильность ввода и в случае удачи зажигать нулевой светодиод, что будет соответствовать открытию дверцы.
Смену пароля можно будет реализовать следующим способом:
- Выставить нужную комбинацию цифр для первого этапа и зажать нулевую кнопку.
- Повторить аналогичные действия для второго этапа.
Программный код для устройства «Кодовый замок» приведен ниже:
module project(clk, sw, sw8, sw9, ind0, ind1, ind2, ind3, t, led); input clk; input [7:0] sw; input sw8; input sw9; input t;
output led; output [6:0]ind0; output [6:0]ind1; output [6:0]ind2; output [6:0]ind3; reg a; reg [6:0]ee0; reg [6:0]ee1; reg [6:0]ee2; reg [6:0]ee3;
reg [6:0] password; reg [6:0] password1; reg [6:0] password2; reg [6:0] password3; always @ (posedge clk)
begin
if (sw8 == 1'b0) begin case (sw[3:0])
4'b0000: ee0=7'b1000000;
4'b0001: ee0=7'b1111001;
4'b0010: ee0=7'b0100100;
4'b0011: ee0=7'b0110000;
4'b0100: ee0=7'b0011001;
4'b0101: ee0=7'b0010010;
4'b0110: ee0=7'b0000010;
4'b0111: ee0=7'b1111000;
4'b1000: ee0=7'b0000000;
4'b1001: ee0=7'b0010000;
endcase
case (sw[7:4])
4'b0000: ee1=7'b1000000;
4'b0001: ee1=7'b1111001;
4'b0010: ee1=7'b0100100;
4'b0011: ee1=7'b0110000;
4'b0100: ee1=7'b0011001;
4'b0101: ee1=7'b0010010;
4'b0110: ee1=7'b0000010;
4'b0111: ee1=7'b1111000;
4'b1000: ee1=7'b0000000;
4'b1001: ee1=7'b0010000;
endcase end
if (sw8 == 1'b1) begin case (sw[3:0])
4'b0000: ee2=7'b1000000;
4'b0001: ee2=7'b1111001;
4'b0010: ee2=7'b0100100;
4'b0011: ee2=7'b0110000;
4'b0100: ee2=7'b0011001;
4'b0101: ee2=7'b0010010;
4'b0110: ee2=7'b0000010;
4'b0111: ee2=7'b1111000;
4'b1000: ee2=7'b0000000;
4'b1001: ee2=7'b0010000;
endcase
case (sw[7:4])
4'b0000: ee3=7'b1000000;
4'b0001: ee3=7'b1111001;
4'b0010: ee3=7'b0100100;
4'b0011: ee3=7'b0110000;
4'b0100: ee3=7'b0011001;
4'b0101: ee3=7'b0010010;
4'b0110: ee3=7'b0000010;
4'b0111: ee3=7'b1111000;
4'b1000: ee3=7'b0000000;
4'b1001: ee3=7'b0010000;
endcase end
if (t==1'b0)
begin password = ee0; password1 = ee1; password2 = ee2; password3 = ee3; end
if (sw9==1'b1) if ((ee0 == password) & (ee1 == password1) & (ee2 == password2) & (ee3
== password3)) a = 1'b1; else a=1'b0; else a=1'b0; end
assign ind0 = ee0; assign ind1 = ee1; assign ind2 = ee2; assign ind3 = ee3; assign led = a; endmodule
Проведѐм функциональную симуляцию работы устройства:
Рисунок 1. Функциональная симуляция
Описание:
- рычаг t в положении 1 (запоминание не происходит), sw8 = 0 – запись первых двух чисел справа, sw = 00010000 – задали цифры 1 и 0;
- sw8 = 1 – запись последних двух чисел, sw = 0010000 – соответственно цифры 2 и 0;
- t = 0 – произошло запоминание пароля «2010»;
- t = 1(запоминание не происходит), sw8 = 0, задаем первые две цифры, sw = 0001000 – задал цифры 1 и 0;
- sw8 = 1 – задаем последние две цифры, sw = 0010000 – 2 и 0;
- sw9 = 1 – происходит проверка правильности введенного пароля, выход led = 1, следовательно пароль верный;
- задаем случайные цифры для проверки, sw9 = 0, т.к. пока происходит ввод пароля, проверка не нужна;
- sw = 1 – происходит проверка, пароль неверный, соответственно, led =0.
ЗАКЛЮЧЕНИЕ
В данной курсовой работе было разработано устройство «Кодовый замок» в программной среде Quartus с использованием ПЛИС. В ходе выполнения работы изучены методы программирования ПЛИС для разнообразных целей, освоены базовые знания в области программирования интегральных схем.
В данном проекте была изучена работа с семисегментными индикаторами, кнопками и рычагами. Изучен принцип привязки действий к тактовому генератору, для повышения надежности проекта.