Tengo problemas para moverme por Verilog. Estoy tratando de crear un FSM que muestre números en una de las pantallas y en el siguiente estado para mostrar una cadena. Hice que la cadena se mostrara por separado y el número por separado en 2 proyectos, pero recibo errores cuando intento combinarlo. Lo que hice fue configurar un ciclo always@ y colocar allí una bandera en la instrucción if else con dos casos de cambio, pero recibí un error que decía que era preferible deshacerse del ciclo de lógica combinatoria. ¿Hay alguna manera de combinar ambas funcionalidades?
Ok, publicaré un código, pero la imagen principal es que tengo una máquina de estado maestra y luego obtuve otra máquina de estado. Uso la otra máquina de estado como entrada a la pantalla de 7 segmentos para un solo número. Pero en un estado diferente de la máquina de estado maestra, tengo que mostrar un mensaje en las pantallas de 4 7 segmentos. Lo que obtuve ahora es: aquí usé CLK para hacer el mensaje
always@(BIN_IN or CLK) begin
if(FAIL==1) begin
case(state)
left:
begin
HEX_OUT [6:0] <= F;
SEG_SELECT_OUT <= 4'b0111;
state <= midleft;
end
midleft:
begin
HEX_OUT [6:0] <= A;
SEG_SELECT_OUT <= 4'b1011;
state <= midright;
end
//same for the rest
end
else begin
case (BIN_IN)
4'h0 : begin
HEX_OUT [6:0] <= 7'b1000000;
SEG_SELECT_OUT <= 4'b0111;
end
//same logic for the other cases
Gracias
Creo que entiendo su problema, tuve un problema similar cuando comencé a hacer circuitos en HDL (verilog o VHDL) y procedí de la programación C++, python u otros lenguajes.
Lo que debe comprender es que en verilog, sus variables representan cables (bits) o grupos de cables (vectores) ... por lo que no puede asignar la misma variable como salida de 2 partes de su circuito ... esto sería tan extraño como tener una lampara con 2 enchufes...
Solo "de alguna manera" ponga ambas máquinas en el mismo proceso y funcionará.
greg
always@(BIN_IN or CLK)
, y el comportamiento RTL no coincidirá con las puertas sintetizadas. Como mínimo, debe cambiarlo aalways@(posedge CLK)
para que sea sincrónico.Paebbels
Mella
Mella