Contador de tiradas de rollo simple envolvente alrededor de condicional ternario anidado

1

Tengo que emular una sola tirada, por lo tanto, debe ajustarse de nuevo a uno en 6. 'D1 y 'D6 corresponden a mi codificación de estado de 3 bits de la matriz en el valor 1 y 6, respectivamente. in corresponde a la tirada del interruptor, si el interruptor está encendido, entonces el dado está rodando y el valor aumenta, si no, simplemente es igual al último valor dado. Necesito la misma probabilidad, así que no, simplemente no puedo ignorar ningún valor.

Mi problema es este:
Estoy tratando de usar un condicional ternario dentro de uno.
Espero detener la tirada en 'D6 y simplemente envolver a 'D1 , si no, 'D6 .

assign next  = in ?((count == 'D6) ? 'D1 :(count + 1)) : count;

DFF state_register(clk, next, state);

No creo que mi condicional sea correcto. ¿Alguna ayuda para leerlo correctamente?

    
pregunta Kyle Calica-St

1 respuesta

0

Encontré la respuesta:

es correcto expcet 'D6 necesita ser D6. :) D6 porque lo definí por encima de mi módulo. Acabo de usar un apóstrofe que no es.

Además, ¿cómo funciona todo esto? Bueno, los condicionales ternarios funcionan así: variable = conditional ? true : false;

entonces next = count si mi in es falso.

Ahora lo que tengo aquí es cuando es cierto que hay un condicional ternario anidado:

'' (count == 'D6)? 'D1: (cuenta + 1)' '

entonces, si el recuento es igual a mi D6 (my die has a value of 6) then I need it to wrap around to D1 (dado del valor 1), porque el dado aquí no puede tener el valor 7, 8, 9, etc. Queremos que el conteo se reduzca nuevamente.

Por lo tanto,

cuando in es verdadero y count no es D6 then I count up. when ''in'' is true and ''count'' is D6, entonces hago que next sea igual a 'D1 cuando in es falso, entonces next es igual a contar, lo que significa que permanece actualizado y no se registra ningún "roll".

Espero que todo tenga sentido!

    
respondido por el Kyle Calica-St

Lea otras preguntas en las etiquetas