acerca de un programa de lucha contra el

H

higildedzest

Guest
Recientemente escribió un programa de venta libre, puedo compilar y successful.But cuando empecé a correr la simulación de funciones, los resultados fueron wrong.i no entienden, por favor, todos los que saben darme algunos consejos sobre it.thank mucho.
Aquí está el código:
Módulo contador (clk, reset, horas, minutos, segundos);
CLK entrada, reajuste;
de salida [7:0] horas, minutos, segundos;
de cable [7:0] horas, minutos, segundos;
siempre @ (clk posedge o restablecer posedge)
empezar
reg [7:0] hour1, min1, Sec1;
if (reset == 1)
empezar
hour1 [3:0] <= 0;
hour1 [7:4] <= 0;
min1 [3:0] <= 0;
min1 [7:4] <= 0;
Sec1 [3:0] <= 0;
Sec1 [7:4] <= 0;
final
else if (Sec1 [3:0] <4'b1001)
empezar
Sec1 [3:0] <= Sec1 [3:0] 1;
final
algo más
empezar
Sec1 [3:0] <= 0;
if (Sec1 [7:4] <4'b0101)
empezar
Sec1 [7:4] <= Sec1 [7:4] 1;
final
algo más
empezar
Sec1 [7:4] <= 0;
if (min-1 [3:0] <4'b1001)
empezar
min-1 [3:0] <= min-1 [3:0] 1;
final
algo más
empezar
min1 [3:0] <= 0;
if (min-1 [7:4] <4'b0101)
empezar
min-1 [7:4] <= min-1 [7:4] 1;
final
algo más
empezar
min1 [7:4] <= 0;
if (hour1 [7:4] <4'b0010)
empezar
if (hour1 [3:0] <4'b1001)
empezar
hour1 [3:0] <= hour1 [3:0] 1;
final
algo más
empezar
hour1 [3:0] <= 0;
hour1 [7:4] <= hour1 [7:4] 1;
final
final
algo más
empezar
if (hour1 [3:0] <4'b0011)
empezar
hour1 [3:0] <= hour1 [3:0] 1;
final
algo más
empezar
hour1 [7:4] <= 0;
hour1 [3:0] <= 0;
final
final
final
final
final
final
final
asignar hora = hour1,
min = min-1,
sec = Sec1;
endmodule

 
¿Está utilizando SystemVerilog?Ese módulo no se compilará en Verilog porque esta declaración no puede ir dentro del bloque una 'siempre':

reg [7:0] hour1, min1, Sec1;

La movía a unas pocas líneas, y ahora compila bien (estoy usando en modo ModelSim Verilog).

Al parecer, para simular muy bien también.Es un 24-hora BCD reloj.¿Qué mal funcionamiento de lo que ves?Simulador que está usando?

Usted no necesita dos tipos de hora, minuto, las señales de seg.Se podría definir como los registros de salida, y eliminar el asignar declaraciones.Lo hice, y también a formatear el sangrado a mi estilo favorito (para que pueda leerlo!):
Código:

Módulo contador (clk, reset, horas, minutos, segundos);

CLK entrada, reajuste;

salida reg [7:0] horas, minutos, segundos;siempre @ (clk posedge o restablecer posedge) comienzan

if (reset == 1) comenzar

hora [3:0] <= 0;

hora [7:4] <= 0;

min [3:0] <= 0;

min [7:4] <= 0;

s [3:0] <= 0;

sec [7:4] <= 0;

end else if (s [3:0] <4'b1001) comienzan

s [3:0] <= s [3:0] 1;

end else begin

s [3:0] <= 0;

if (s [7:4] <4'b0101) comienzan

sec [7:4] <= sec [7:4] 1;

end else begin

sec [7:4] <= 0;

if (min [3:0] <4'b1001) comienzan

min [3:0] <= min [3:0] 1;

end else begin

min [3:0] <= 0;

if (min [7:4] <4'b0101) comienzan

min [7:4] <= min [7:4] 1;

end else begin

min [7:4] <= 0;

if (hora [7:4] <4'b0010) comienzan

if (horas [3:0] <4'b1001) comienzan

hora [3:0] <= hora [3:0] 1;

end else begin

hora [3:0] <= 0;

hora [7:4] <= hora [7:4] 1;

final

end else begin

if (horas [3:0] <4'b0011) comienzan

hora [3:0] <= hora [3:0] 1;

end else begin

hora [7:4] <= 0;

hora [3:0] <= 0;

final

final

final

final

final

final

final

endmodule
 
hola me parece un error lógico en el código
en este bloque:

if (hora [7:4] <4'b0010) comienzan
if (horas [3:0] <4'b1001) comienzan
hora [3:0] <= hora [3:0] 1;
end else begin
hora [3:0] <= 0;
hora [7:4] <= hora [7:4] 1;
final
end else begin
if (horas [3:0] <4'b0011) comienzan
hora [3:0] <= hora [3:0] 1;
end else begin
hora [7:4] <= 0;
hora [3:0] <= 0;

Si usted observa de cerca se está comprobando la hora condición [7:4] = 2 y la hora [3:0] = 9 por lo que es 29, pero exactamente lo que desea comprobar es de 24 lo que yo siento que se pretende hacer es comprobar de 23:59, pero probablemente perdido.

Pleasse me corrija si estoy equivocado.

gracias

 
El código se utiliza menos que las pruebas, no las pruebas de igualdad.

Uso ModelSim, lo veo contando las horas correctamente de 00 a 23, luego de vuelta a 00.

 
gracias a ustedes mucho, yo lo haré again.i gracias por todos sus adivce.

 

Welcome to EDABoard.com

Sponsor

Back
Top