Una forma de superar la máquina de estados no simulando en winsim es cambiar las ecuaciones formadas cuando WinCUPL cumple el código. Para una máquina de estados, WinCUPL cumple en la lógica booleon en forma de d-flip-flops. Estas ecuaciones no son perfectos y en el caso del código anterior se puede mostrar cómo se pueden formar errores. 'OR'ing o "AND'ing el término' res 'a cada ecuación puede satisfacer que el programa se ejecuta y simula correctamente. En el caso del ejemplo anterior el estado S0 inicial es 0.110.000 para a, b, c, d, e, f, g.
Para los términos que son "0" (a, d, e, f, g) que AND (NOT (RES)) con el resto de la ecuación, mientras que para 'b' y 'c' usted 'o' RES con la .! resto de la ecuación
ad = (__________) y res; bd = (__________) # res; cd = (__________) # res; dd = (__________) y res;! ed = (__________) y res;! fd = (__________) y res;! gd = (__________) y res;!
Si utiliza las ecuaciones de este tipo, 'conteo campo ", las definiciones de estado y la máquina de estado no son requerido en el código.
Tenga en cuenta que la parte (__________) en el código anterior se encuentra en un informe de compilación en WinCUPL. Cambio del ajuste para producir ecuaciones compilación hace esto (Estos son muy largas y añadiendo el término adicional puede hacer que sea demasiado largo. Para se requiere este otro pasador que rompe las ecuaciones largas en 2 ecuaciones más pequeños). U otra manera de encontrar las ecuaciones es resolver de forma manual. Un ejemplo de que sea manualmente resolver es mostrado abajo y es mucho más pequeña que las ecuaciones producidas por WinCUPL
ad = & res.
((C & f # e & f & g)!!!!);! Bd = f # A & C & F # res;! cd = g y #res! (b & c & e!); dd = (! d & c y b # e & f & g # b & c!) y res;! ed = (! g # B y C) y res;! fd = (G & ! (! (byc) # (B y C)!!)) y res;!! gd = (b # c) y res;
Ir a la página anterior