module main;
input clk, reset, reverse;
output[3: 0]Q;
// Flip-Flops JK
var JKFF1 = FlipFlopJK();
var JKFF2 = FlipFlopJK();
var JKFF3 = FlipFlopJK();
var JKFF4 = FlipFlopJK();
// Conexiones
Q = [JKFF1.Q, JKFF2.Q, JKFF3.Q, JKFF4.Q];
// Transiciones de Estado
JKFF1.J = (!Q[3] & !reverse) | (Q[0] & reverse);
JKFF1.K = (Q[3] & !reverse) | (!Q[0] & reverse);
JKFF2.J = (!Q[0] & !reverse) | (Q[1] & reverse);
JKFF2.K = (Q[0] & !reverse) | (!Q[1] & reverse);
JKFF3.J = (!Q[1] & !reverse) | (Q[2] & reverse);