I'm writing some Verilog
code to be programmed on an Altera Cyclone II FPGA board, and I have an always
block which should be activated on the press of a key switch:
reg START;
...
...
always @ (negedge key[3]) begin
if (START != 1) START = 1;
end
I'm writing a program for a finite state machine and this key press is supposed to indicate that the user would like to begin using the program and it should move from its initial state to the next state. Since the initialization of registers is not synthesizable, I can't assume that START
begins at 0.
The problem is that once I program the board and turn it on, this always
block has already run once before I press the key assigned to key[3]
. I've done checks for the value of START
at program execution and it is already at 1
. I can't figure out why this would be happening, as the key is at its negative edge only upon key press. I've used always blocks with the same condition in previous situations and it worked fine, so I assume this has something to do with the initialization of START
?