Mam następujący problem, chcę napisac sobie licznik, który będzie liczył od FF do 0. Mam następujące kody ale niestety liczy mi tylko od 3 do 0 i tyle. (jest jeszcze opcja liczenia w górę ale ona jest nieistotna). Bardzo proszę o pomoc:
module laboreczki (
output [6:0] DIGIT_OUT,
output [1:0] BIN_OUT,
input MCK,
input SW_UP,
input SW_DOWN,
output SLOW_CLK
);
prescaler u1 (
.inclk(MCK),
.outclk(SLOW_CLK),
);
digit_decoder u2 (
.bin_data(BIN_OUT),
.digit(DIGIT_OUT),
);
up_down_cntr_u3 (
.clk(SLOW_CLK),
.sw_up(SW_UP),
.sw_down(SW_DOWN),
.odata(BIN_OUT)
);
endmodule
module prescaler (
input inclk,
output reg outclk
);
reg [31:0] cntr;
parameter MAX_COUNT = 25175000; // stała
always@ (posedge inclk) // zbocze narastajace
begin
if (cntr < (MAX_COUNT/2)) // przez 2 bo jeszcze sa zbocza malejace!
cntr <= cntr + 1;
else
begin
cntr <= 0;
outclk <= ~outclk;
end
end
endmodule
module up_down_cntr (
input clk,
input sw_up,
input sw_down,
output reg [1:0] odata
);
always@(posedge clk)
begin
if(sw_up==0)
begin
odata <=odata + 1;
end
else if(sw_down==1)
begin
odata <= odata - 1;
end
end
endmodule
Dzięki!module digit_decoder (
input [3:0] bin_data,
output reg [6:0] digit
);
always@(bin_data)
case(bin_data)
4'h0: digit <= 7'b0000001;
// tu jeszcze duzo innych takich linii
default: digit <= 7'b1111111;
endcase
endmodule