module shifty Title '8-bit shift register with decoded load' " Inputs and Outputs CLK, OP3..OP0 pin; Q7..Q0 pin istype 'reg'; " Definitions Q = [Q7..Q0]; OP = [OP3..OP0]; HOLD = (OP == 0); CLEAR = (OP == 1); LEFT = (OP == 2); RIGHT = (OP == 3); NOP = (OP >= 4) & (OP < 8); LOADQ0 = (OP == 8); LOADQ1 = (OP == 9); LOADQ2 = (OP == 10); LOADQ3 = (OP == 11); LOADQ4 = (OP == 12); LOADQ5 = (OP == 13); LOADQ6 = (OP == 14); LOADQ7 = (OP == 15); Equations Q.CLK = CLK; WHEN HOLD THEN Q := Q; ELSE WHEN CLEAR THEN Q := 0; ELSE WHEN LEFT THEN Q := [Q6..Q0, Q7]; ELSE WHEN RIGHT THEN Q := [Q0, Q7..Q1]; ELSE WHEN LOADQ0 THEN Q := 1; ELSE WHEN LOADQ1 THEN Q := 2; ELSE WHEN LOADQ2 THEN Q := 4; ELSE WHEN LOADQ3 THEN Q := 8; ELSE WHEN LOADQ4 THEN Q := 16; ELSE WHEN LOADQ5 THEN Q := 32; ELSE WHEN LOADQ6 THEN Q := 64; ELSE WHEN LOADQ7 THEN Q := 128; ELSE Q := Q; end shifty