Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 17.02.2020 23:53:27
- // Design Name:
- // Module Name: security_1
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module security_1(
- input clk,
- input reset,
- input [3:0] keypad,
- input front_door,
- input rear_door,
- input window,
- output reg alarm_siren,
- output reg is_armed,
- output reg is_wait_delay
- );
- //Define States
- localparam disarmed = 4'b0001;
- localparam armed = 4'b0010;
- localparam wait_delay = 4'b0100;
- localparam alarm = 4'b1000;
- //State Registers
- reg [3:0] curr_state, next_state;
- //Internal Signals
- wire [2:0] sensors;
- wire start_count;
- wire count_done;
- reg [7:0] delay_counter;
- assign sensors = {front_door, rear_door, window};
- //State Flip Flops
- always @ (posedge clk) begin
- if(reset)
- curr_state <= disarmed;
- else
- curr_state <= next_state;
- end
- always @ (curr_state, sensors, keypad, count_done) begin
- case (curr_state)
- disarmed: begin
- if(keypad == 4'b0011) begin
- //Set Outputs
- is_armed <= 1'b1;
- alarm_siren <= 1'b0;
- is_wait_delay <= 1'b0;
- //Set Next State
- next_state <= armed;
- end
- else begin
- //Set Outputs
- is_armed <= 1'b0;
- alarm_siren <= 1'b0;
- is_wait_delay <= 1'b0;
- //Set Next State
- next_state <= disarmed;
- end
- end
- armed: begin
- if(keypad == 4'b1100) begin
- //Set Outputs
- is_armed <= 1'b0;
- alarm_siren <= 1'b0;
- is_wait_delay <= 1'b0;
- //Set Next State
- next_state <= disarmed;
- end
- else if(sensors != 3'b000) begin
- //Set Outputs
- is_armed <= 1'b0;
- alarm_siren <= 1'b0;
- is_wait_delay <= 1'b1;
- //Set Next State
- next_state <= wait_delay;
- end
- else begin
- //Set Outputs
- is_armed <= 1'b1;
- alarm_siren <= 1'b0;
- is_wait_delay <= 1'b0;
- //Set Next State
- next_state <= armed;
- end
- end
- wait_delay: begin
- end
- alarm: begin
- end
- default: begin
- end
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement