네 개의 암호 자물쇠 * 전자 암호 자물쇠의 디자인

  • 코드 및 엔지니어링 패키지:https://download.csdn.net/download/qinglingls/10839179실험 보고서에서 어떻게 사용하고 사용한 후의 설명도
  • 를 설명하였다.
  • 최근에 물어보는 사람이 좀 많아서 세부 사항도 잘 기억이 안 나요.여러분은 아래의 pdf와 프로젝트 파일을 스스로 다운로드하십시오. 당신들에게 도움이 되었으면 합니다. 감사합니다.실험 보고서:https://download.csdn.net/download/qinglingls/10839175
  • ---------------------------------------------------2019.5.27 업데이트 ------------------------------------------------------------------------------------
  • 위의 두 사이트는 모의 파일과 프로젝트(판에 문제가 있는 것 같다)
  • 그래서 이 서류를 보냈어요
  • 다음은 pdf와 프로젝트 파일 패키지, 즉 블로그에서 발표한 코드의 내용과 위의 실험 보고서 pdf의 패키지입니다.
  • https://download.csdn.net/download/qinglingls/11209189
  •  

  •  
     
    주의: 전재는 반드시 원래의 사이트 주소를 동봉하고 작가명을 동봉해야 합니다. 감사합니다.
     
    네 개의 암호 잠금 대실험:
     
    기능:
    제목: 전자 비밀번호 자물쇠의 디자인
    [설계 요구사항]
    (1) 최소 4자리 숫자(또는 그 이상)의 자물쇠를 열 수 있도록 설계한다.
    (2) 자물쇠를 열고 스위치를 돌리는 경우(8자리 이상으로 설정할 수 있으며 그중 4자리만 유효하고 나머지는 허설)의 입력 코드가 설치된 비밀번호와 같을 때 자물쇠 제어 회로를 가동하고 녹색 신호등, 빨간 신호등으로 자물쇠 상태를 표시한다.
    (3) 첫 번째 버튼이 건드린 후 5초 동안 자물쇠를 열지 못하면 회로가 자동으로 복원되고 경보 신호를 보내며 녹색 신호가 꺼지고 빨간 신호등이 켜져 자물쇠 상태를 표시한다. 
    추가 기능:
    (1) 암호를 설정할 수 있습니다. 암호 설정 버튼 SP(S4)를 통해 설정하고 새 암호를 다시 설정할 수 있습니다.암호는 SP 키를 누른 후 언제든지 설정할 수 있습니다.
    (2) 5초 카운트다운은 개발판의 7단 디지털 파이프에 카운트다운으로 표시한다.5초 후에 경보가 울립니다.
    (3) 키가 비밀번호를 입력한 횟수(0-9)를 기록할 수 있다.
    (4) 비밀번호를 바꾸지 않고 입력 횟수를 줄일 수 있다.
     
    여기서 num01~num07단 전자 디지털 파이프를 제어하는 데 쓰인다.
    num1_1에서num17 타이머 timer를 제어하는 데 사용되는 전자 디지털 파이프 디스플레이.
     
    코드:
     
     
     
    module index(input clk,
    	input pw_1, input pw_2, input pw_3, input pw_4, 
    	input pw_5, input pw_6, input pw_7, input pw_8,
    	input sti_0, input sti_1, input sti_2,
    	output x, output y,
    	output reg red, output reg green, output reg alarm,
        output reg num0_1, output reg num0_2, output reg num0_3, output reg num0_4,
        output reg num0_5, output reg num0_6, output reg num0_7, output reg num0_8, 
        output reg num1_1, output reg num1_2, output reg num1_3, output reg num1_4,
        output reg num1_5, output reg num1_6, output reg num1_7, output reg num1_8
    	);
    	/*
    	 * clk : clock
    	 * pw  : password
    	 * sti : stimulation
    	 * red/green : output LED
    	 * num: nixie
    	 *
    	 */
        reg ctrl;
        reg cc;
    	assign x = 1;
    	assign y = 1;
        initial begin
            cc <= 1'b0;
            alarm <= 1'b0;
            ctrl <= 1'b0;
            red <= 1'b1;
            green <= 1'b0;
            num0_1 <= 1'b1;
            num0_2 <= 1'b1;
            num0_3 <= 1'b1;
            num0_4 <= 1'b1;
            num0_5 <= 1'b1;
            num0_6 <= 1'b1;
            num0_8 <= 1'b1;
            num1_1 <= 1'b1;
            num1_2 <= 1'b0;
            num1_3 <= 1'b1;
            num1_4 <= 1'b1;
            num1_5 <= 1'b0;
            num1_6 <= 1'b1;
            num1_7 <= 1'b1;
        end
        // CLK   
    	reg CLK;
    	parameter N = 20000000;
    	reg [31:0]ip;
    	reg [31:0]ipr;
    
    	always @(posedge clk) begin
            if(ip < N/2) begin
                ip <= ip + 1;
            end
            else begin
                CLK <= ~CLK;
                ip <= 36'b0;
            end
        end
        
        //     
    	reg str_0, str_1, str_2, str_3;
        reg in_0, in_1, in_2, in_3;
        reg in__; reg vtrl;
        integer count = 0;
    
        //    
        integer timer = 5;
        always @(posedge CLK) begin
            if(sti_2 == 1'b1) begin
                ctrl <= 1'b1;
            end
            in__ <= sti_1;
            case(count)
                0: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b1;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b0;
                end
                1: begin
                    num0_1 <= 1'b0;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b0;;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b0;
                    num0_7 <= 1'b0;
                end
                2: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b0;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b1;
                    num0_6 <= 1'b0;
                    num0_7 <= 1'b1;
                end
                3: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b0;
                    num0_7 <= 1'b1;
                end
                4: begin
                    num0_1 <= 1'b0;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b0;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b1;
                end
                5: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b0;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b1;
                end
                6: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b0;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b1;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b1;
                end
                7: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b0;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b0;
                    num0_7 <= 1'b0;
                end
                8: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b1;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b1;
                end
                9: begin
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b0;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b1;
                end
                endcase
            if(sti_2 == 1'b1) begin
                    in_0 <= pw_5;
                    in_1 <= pw_6;
                    in_2 <= pw_7;
                    in_3 <= pw_8;
                    if(pw_1 == 1'b1 && in_0 == str_0 && in_1 == str_1 && in_2 == str_2 && in_3 == str_3) begin
                    if(cc == 1'b0) begin
                        count <= count;
                        cc <= 1'b1;
                    end    
                    else begin
                        count <= count + 1;
                    end
                        green <= 1'b1;
                        red <= 1'b0;
                        alarm <= 1'b0;
                    end else if(pw_1 == 1'b1 && (in_0 != str_0 || in_1 != str_1 || in_2 != str_2 || in_3 != str_3)) begin
                        if(cc == 1'b0) begin
                            count <= count;
                            cc <= 1'b1;
                        end else begin
                            count <= count +1 ;
                        end
                    end else if(pw_1 == 1'b0) begin
                        if(in_0 == str_0 && in_1 == str_1 && in_2 == str_2 && in_3 == str_3) begin
                        if(cc == 1'b0) begin
                            count <= count;
                            cc <= 1'b1;
                        end else begin 
                            count <= count +1;
                        end
                            green <= 1'b1;
                            red <= 1'b0;
                            alarm <= 1'b0;
                        end
                        count <= count;
                    end
                    if(count == 9) begin
                        alarm <= 1'b1;
                        red <= 1'b1;
                        green <= 1'b0;
                    end
            end
            if(pw_1 == 1'b1) begin
                case(timer)
                0: begin
                   num1_1 <= 1'b1;
                   num1_2 <= 1'b1;
                   num1_3 <= 1'b1;
                   num1_4 <= 1'b1;
                   num1_5 <= 1'b1;
                   num1_6 <= 1'b1;
                   num1_7 <= 1'b0;
                end
                1: begin
                   num1_1 <= 1'b0;
                   num1_2 <= 1'b1;
                   num1_3 <= 1'b1;
                   num1_4 <= 1'b0;
                   num1_5 <= 1'b0;
                   num1_6 <= 1'b0;
                   num1_7 <= 1'b0;
                end
                2: begin
                   num1_1 <= 1'b1;
                   num1_2 <= 1'b1;
                   num1_3 <= 1'b0;
                   num1_4 <= 1'b1;
                   num1_5 <= 1'b1;
                   num1_6 <= 1'b0;
                   num1_7 <= 1'b1;
                end
                3: begin
                   num1_1 <= 1'b1;
                   num1_2 <= 1'b1;
                   num1_3 <= 1'b1;
                   num1_4 <= 1'b1;
                   num1_5 <= 1'b0;
                   num1_6 <= 1'b0;
                   num1_7 <= 1'b1;
                end
                4: begin
                   num1_1 <= 1'b0;
                   num1_2 <= 1'b1;
                   num1_3 <= 1'b1;
                   num1_4 <= 1'b0;
                   num1_5 <= 1'b0;
                   num1_6 <= 1'b1;
                   num1_7 <= 1'b1;
                end
                5: begin
                   num1_1 <= 1'b1;
                   num1_2 <= 1'b0;
                   num1_3 <= 1'b1;
                   num1_4 <= 1'b1;
                   num1_5 <= 1'b0;
                   num1_6 <= 1'b1;
                   num1_7 <= 1'b1;
                end
                endcase
                if(in_0 == str_0 && in_1 == str_1 && in_2 == str_2 && in_3 == str_3) begin
                    timer <= timer;
                    red <= 1'b0;
                    green <= 1'b1;
                end else if(ipr < 5) begin
                    timer <= timer;
                    red <= 1'b1;
                    green <= 1'b0;
                    ipr <= ipr + 1;
                end else if(ipr == 5 && ctrl == 1'b1) begin
                    timer <= timer - 1;
                    red <= 1'b1;
                    green <= 1'b0;
                    ipr <= 0;
                end
                if(timer == 0) begin
                    red <= 1'b1;
                    green <= 1'b0;
                    alarm <= 1'b1;
                end
            end
            else begin
                timer <= 5;
            end
            if(in__ == 1'b1) begin
                    timer <= 5;
                    in_0 <= 0;
                    in_1 <= 0;
                    in_2 <= 0;
                    in_3 <= 0;
                    count <= 4'b0000;
                    ctrl = 1'b0;
                    green <= 1'b0;
                    cc <= 1'b0;
                    alarm <= 1'b0;
                    red <= 1'b1;
                    num0_1 <= 1'b1;
                    num0_2 <= 1'b1;
                    num0_3 <= 1'b1;
                    num0_4 <= 1'b1;
                    num0_5 <= 1'b1;
                    num0_6 <= 1'b1;
                    num0_7 <= 1'b0;
                    num1_1 <= 1'b1;
                    num1_2 <= 1'b0;
                    num1_3 <= 1'b1;
                    num1_4 <= 1'b1;
                    num1_5 <= 1'b0;
                    num1_6 <= 1'b1;
                    num1_7 <= 1'b1;
            end
            if(sti_0 == 1'b1) begin
                str_0 <= pw_5;
                    str_1 <= pw_6;
                    str_2 <= pw_7;
                    str_3 <= pw_8;
            end
        end
    endmodule
    
    

     
     
     
    풋 바인딩:
     
    set_property IOSTANDARD LVCMOS33 [get_ports alarm] set_property IOSTANDARD LVCMOS33 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports green] set_property IOSTANDARD LVCMOS33 [get_ports num0_1] set_property IOSTANDARD LVCMOS33 [get_ports num0_2] set_property IOSTANDARD LVCMOS33 [get_ports num0_3] set_property IOSTANDARD LVCMOS33 [get_ports num0_4] set_property IOSTANDARD LVCMOS33 [get_ports num0_5] set_property IOSTANDARD LVCMOS33 [get_ports num0_6] set_property IOSTANDARD LVCMOS33 [get_ports num0_7] set_property IOSTANDARD LVCMOS33 [get_ports num0_8] set_property IOSTANDARD LVCMOS33 [get_ports num1_1] set_property IOSTANDARD LVCMOS33 [get_ports num1_3] set_property IOSTANDARD LVCMOS33 [get_ports num1_2] set_property IOSTANDARD LVCMOS33 [get_ports num1_4] set_property IOSTANDARD LVCMOS33 [get_ports num1_5] set_property IOSTANDARD LVCMOS33 [get_ports pw_1] set_property IOSTANDARD LVCMOS33 [get_ports num1_7] set_property IOSTANDARD LVCMOS33 [get_ports num1_6] set_property IOSTANDARD LVCMOS33 [get_ports num1_8] set_property IOSTANDARD LVCMOS33 [get_ports pw_2] set_property IOSTANDARD LVCMOS33 [get_ports pw_3] set_property IOSTANDARD LVCMOS33 [get_ports pw_4] set_property IOSTANDARD LVCMOS33 [get_ports sti_2] set_property IOSTANDARD LVCMOS33 [get_ports sti_1] set_property IOSTANDARD LVCMOS33 [get_ports red] set_property IOSTANDARD LVCMOS33 [get_ports pw_8] set_property IOSTANDARD LVCMOS33 [get_ports sti_0] set_property IOSTANDARD LVCMOS33 [get_ports pw_6] set_property IOSTANDARD LVCMOS33 [get_ports pw_7] set_property IOSTANDARD LVCMOS33 [get_ports pw_5] set_property PACKAGE_PIN K1 [get_ports alarm] set_property PACKAGE_PIN H6 [get_ports green] set_property PACKAGE_PIN H5 [get_ports red] set_property PACKAGE_PIN B4 [get_ports num0_1] set_property PACKAGE_PIN A4 [get_ports num0_2] set_property PACKAGE_PIN A3 [get_ports num0_3] set_property PACKAGE_PIN B1 [get_ports num0_4] set_property PACKAGE_PIN A1 [get_ports num0_5] set_property PACKAGE_PIN B3 [get_ports num0_6] set_property PACKAGE_PIN B2 [get_ports num0_7] set_property PACKAGE_PIN D5 [get_ports num0_8] set_property PACKAGE_PIN D4 [get_ports num1_1] set_property PACKAGE_PIN E3 [get_ports num1_2] set_property PACKAGE_PIN D3 [get_ports num1_3] set_property PACKAGE_PIN F4 [get_ports num1_4] set_property PACKAGE_PIN F3 [get_ports num1_5] set_property PACKAGE_PIN E2 [get_ports num1_6] set_property PACKAGE_PIN D2 [get_ports num1_7] set_property PACKAGE_PIN H2 [get_ports num1_8] set_property PACKAGE_PIN P5 [get_ports pw_1] set_property PACKAGE_PIN P4 [get_ports pw_2] set_property PACKAGE_PIN P3 [get_ports pw_3] set_property PACKAGE_PIN P2 [get_ports pw_4] set_property PACKAGE_PIN R2 [get_ports pw_5] set_property PACKAGE_PIN M4 [get_ports pw_6] set_property PACKAGE_PIN N4 [get_ports pw_7] set_property PACKAGE_PIN R1 [get_ports pw_8] set_property PACKAGE_PIN U4 [get_ports sti_0] set_property PACKAGE_PIN R17 [get_ports sti_1] set_property PACKAGE_PIN R15 [get_ports sti_2]
    set_property PACKAGE_PIN P17 [get_ports clk]
    set_property IOSTANDARD LVCMOS33 [get_ports x] set_property IOSTANDARD LVCMOS33 [get_ports y] set_property PACKAGE_PIN G2 [get_ports x] set_property PACKAGE_PIN G6 [get_ports y]

    좋은 웹페이지 즐겨찾기