Verilog if statement always activating

  • Thread starter Thread starter tcosentino
  • Start date Start date
  • Tags Tags
    If statement
AI Thread Summary
The discussion revolves around a Verilog program for a combination lock using a state machine format. The user encounters an issue where an if statement always activates the code within it, specifically setting next_state to Inuse, regardless of the condition. They mention that the only way to prevent this behavior is by using "if(0)." Additionally, a suggestion is made to consider debouncing the input from the mechanical key switch, which could be affecting the logic. The user seeks assistance in resolving this persistent activation issue in their code.
tcosentino
Messages
1
Reaction score
0
So i am writing a Verilog program for a combination lock. I am using a state machine format to write it. I have commented out everything and just isolated one if statement as you can see. No matter what i put in the if statements the code within it (next_state = Inuse;) activates. The only way i can possibly get that code to not run is if i put in if(0).

I have been trying things and staring at it for a few hours but can not figure it out. Thank you for any help.

Here is my code:

module Lock_Logic(
clk,
clear, reset,
kp, v,
sec_3, sec_5,
lt_Reset, lt_Inuse, lt_Disable, lt_Open, prev_kp,
o_count //for output display
);

input clk;
input clear, reset;
input [3:0] kp;
input v;
input sec_3, sec_5; //high when 3sec or 5sec clock goes off respectively

output lt_Reset, lt_Inuse, lt_Disable, lt_Open; //if used in combo logic add reg
output [1:0] o_count;

//----Define state values as constants----------------
parameter Reset = 3'b001;
parameter Inuse = 3'b010;
parameter Disable = 3'b011;
parameter Open = 3'b100;

//----Internal Variables------------------------------
reg [2:0] state; // registered state value
reg [2:0] next_state; // combinational next state value
output reg [3:0] prev_kp;
reg [1:0] cnt;

//----Initial values----------------------------------
initial
begin
next_state = Reset;
prev_kp = 15;
end

//----------------------------------------------------
// Combinational logic to determine next state and outputs
//
always @ (state, clear, v)
begin
if(clear)
begin
// case (state)
// Reset: //reset case
// Inuse: //inuse case
// Disable: //disable case
// Open: //open case
// endcase
end
if(kp != prev_kp)
next_state = Inuse;
// begin
// case (state)
// Reset: //reset case
// begin
// next_state = Inuse;
// end
//// Inuse: //inuse case
//// Disable: //disable case
//// Open: //open case
// endcase
// end
prev_kp <= kp; //to check if the number pressed has changed
end

//----Sequential logic to register the state value----
always @ (posedge clk)
state <= next_state;

//----Output Logic------------------------------------
assign lt_Reset = (state == Reset) ? 1 : 0;
assign lt_Inuse = (state == Inuse) ? 1 : 0;
assign lt_Disable = (state == Disable) ? 1 : 0;
assign lt_Open = (state == Open) ? 1 : 0;
assign o_count = cnt;
endmodule
 
Engineering news on Phys.org
If kp is actually coming from a mechanical key switch, did you de-bounce it somewhere?
 
Thread 'I need a concave mirror with a focal length length of 150 feet'
I need to cut down a 3 year old dead tree from top down so tree causes no damage with small pieces falling. I need a mirror with a focal length of 150 ft. 12" diameter to 36" diameter will work good but I can't think of any easy way to build it. Nothing like this for sale on Ebay. I have a 30" Fresnel lens that I use to burn stumps it works great. Tree service wants $2000.
Hi all, i have some questions about the tesla turbine: is a tesla turbine more efficient than a steam engine or a stirling engine ? about the discs of the tesla turbine warping because of the high speed rotations; does running the engine on a lower speed solve that or will the discs warp anyway after time ? what is the difference in efficiency between the tesla turbine running at high speed and running it at a lower speed ( as fast as possible but low enough to not warp de discs) and: i...

Similar threads

Back
Top