Altera_Forum
Honored Contributor
9 years agoSignalTap II issue
Hello,
Here is debounce state machine:module debounce_explicit(input clk, reset, sw, output reg db_level, db_tick); //symbolic state declaration
localparam
zero = 2'b00,
wait0 = 2'b10,
one = 2'b11,
wait1 = 2'b01;
// number of counter bits (2'N * 20ns = 40ms)
localparam N = 21;
//localparam N = 15;
// signal declaration
reg state_reg, state_next;
reg q_reg;
wire q_next;
wire q_zero;
reg q_load, q_dec;
// FSMD state & data registers
always @(posedge clk, posedge reset)
if (reset)
begin
state_reg <= zero;
q_reg <= 0;
end
else
begin
state_reg <= state_next;
q_reg <= q_next;
end
// FSMD data path (counter) next—state logic
assign q_next = (q_load) ? {N{1'b1}} : ((q_dec) ? q_reg - 1 : q_reg);
// status signal
assign q_zero = (q_next == 0);
// FSMD control path next—state logic
always @*
begin
state_next = state_reg; // default state: the same
q_load = 1'b0; // default output: 0
q_dec = 1'b0; // default output: 0
db_tick = 1'b0; // default output: 0
case (state_reg)
zero:
begin
db_level = 1'b0;
if (sw)
begin
state_next = wait1;
q_load = 1'b1;
end
end
wait1:
begin
db_level = 1'b0;
if (sw)
begin
q_dec = 1'b1;
if (q_zero)
begin
state_next = one;
db_tick = 1'b1;
end
end
else // sw==0
state_next = zero;
end
one:
begin
db_level = 1'b1;
if (~sw)
begin
state_next = wait0;
q_load = 1'b1;
end
end
wait0:
begin
db_level = 1'b1;
if (~sw)
begin
q_dec = 1'b1;
if (q_zero) state_next = zero;
end
else // sw==l
state_next = one;
end
default: state_next = zero;
endcase
end
endmodule
And here is SignalTap simulation http://www.alteraforum.com/forum/attachment.php?attachmentid=13218&stc=1 After 2st firing of the input sw the "state machine" frozes definitely in "00" state. Moreover, after 1st sw firing, the "state machine" value is displayed in symbolic interpretation in SignalTap II, i.e. zero, wait0, one, wait1. After 2nd sw firing this symbolic interpretation disappears ... leaving place to numeric interpretation, i.e. 0 (as shown on the above image). So I have 2 questions: - why symbolic interpretation disappears
- is it possible to put into SignalTap the signals that present in the source code in order to debug "system machine" misbehavior. Actually only few signals are available for SignalTap.