Lo que estoy tratando de hacer es usar la Clave 0 como contador ascendente y la clave 1 como contador descendente en el mismo programa. Puedo hacer eso por separado. Por lo tanto, cuando se activa la habilitación, al presionar la tecla 0 aumentará el valor mostrado en una pantalla de siete segmentos y al presionar la tecla 1 disminuirá el valor. El siguiente es mi código.
/*
This program uses SW0 as the enable swithch.
And Key 0 as a upcounter, Key 1 as a downcounter
*/
module seven_seg_single_up_down ( en, in_up, in_down, a, b, c, d, e, f, g );
input en;
input in_up, in_down;
output a, b, c, d, e, f, g;
reg a, b, c, d, e, f, g;
reg [3:0]i;
always @( posedge in_up, posedge in_down, negedge en ) begin
if ( ~en )
begin
{a, b, c, d, e, f, g} = 7'b1111111;
i = 0;
end
//else if (in_up)
// i = i + 1;
//else if (in_down and i > 0 )
// i = i - 1;
//else begin
else begin
if ( in_up )
i = i + 1;
if ( in_down ) begin
i = i - 1;
end
case(i)
1:{a, b, c, d, e, f, g} = 7'b1001111;
2:{a, b, c, d, e, f, g} = 7'b0010010;
3:{a, b, c, d, e, f, g} = 7'b0000110;
4:{a, b, c, d, e, f, g} = 7'b1001100;
5:{a, b, c, d, e, f, g} = 7'b0100100;
6:{a, b, c, d, e, f, g} = 7'b0100000;
7:{a, b, c, d, e, f, g} = 7'b0001111;
8:{a, b, c, d, e, f, g} = 7'b0000000;
9: begin
{a, b, c, d, e, f, g} = 7'b0000100;
i = -1;
end
default: {a, b, c, d, e, f, g} = 7'b0000001;
endcase
end
end
endmodule
No entiendo qué es lo que está mal con el código anterior.