Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 17.02.2020 23:53:27
  7. // Design Name:
  8. // Module Name: security_1
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21.  
  22.  
  23. module security_1(
  24.     input clk,
  25.     input reset,
  26.     input [3:0] keypad,
  27.     input front_door,
  28.     input rear_door,
  29.     input window,
  30.     output reg alarm_siren,
  31.     output reg is_armed,
  32.     output reg is_wait_delay
  33.     );
  34.    
  35.     //Define States
  36.     localparam disarmed = 4'b0001;
  37.     localparam armed = 4'b0010;
  38.     localparam wait_delay = 4'b0100;
  39.     localparam alarm = 4'b1000;
  40.    
  41.     //State Registers
  42.     reg [3:0] curr_state, next_state;
  43.    
  44.     //Internal Signals
  45.     wire [2:0] sensors;
  46.     wire start_count;
  47.     wire count_done;
  48.     reg [7:0] delay_counter;
  49.    
  50.     assign sensors = {front_door, rear_door, window};
  51.    
  52.     //State Flip Flops
  53.     always @ (posedge clk) begin
  54.         if(reset)
  55.             curr_state <= disarmed;
  56.         else
  57.             curr_state <= next_state;
  58.     end
  59.    
  60.     always @ (curr_state, sensors, keypad, count_done) begin
  61.         case (curr_state)
  62.         disarmed: begin
  63.             if(keypad == 4'b0011) begin
  64.                 //Set Outputs
  65.                 is_armed <= 1'b1;
  66.                 alarm_siren <= 1'b0;
  67.                 is_wait_delay <= 1'b0;
  68.                 //Set Next State
  69.                 next_state <= armed;
  70.             end
  71.             else begin
  72.                 //Set Outputs
  73.                 is_armed <= 1'b0;
  74.                 alarm_siren <= 1'b0;
  75.                 is_wait_delay <= 1'b0;
  76.                 //Set Next State
  77.                 next_state <= disarmed;
  78.             end
  79.         end
  80.         armed: begin
  81.             if(keypad == 4'b1100) begin
  82.                 //Set Outputs
  83.                 is_armed <= 1'b0;
  84.                 alarm_siren <= 1'b0;
  85.                 is_wait_delay <= 1'b0;
  86.                 //Set Next State
  87.                 next_state <= disarmed;
  88.             end
  89.             else if(sensors != 3'b000) begin
  90.                 //Set Outputs
  91.                 is_armed <= 1'b0;
  92.                 alarm_siren <= 1'b0;
  93.                 is_wait_delay <= 1'b1;
  94.                 //Set Next State
  95.                 next_state <= wait_delay;
  96.             end
  97.             else begin
  98.                 //Set Outputs
  99.                 is_armed <= 1'b1;
  100.                 alarm_siren <= 1'b0;
  101.                 is_wait_delay <= 1'b0;
  102.                 //Set Next State
  103.                 next_state <= armed;
  104.             end
  105.         end
  106.         wait_delay: begin
  107.            
  108.         end
  109.         alarm: begin
  110.        
  111.         end
  112.         default: begin
  113.        
  114.         end
  115.     end
  116.    
  117. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement