A file with the .vliw extension is a pulseblaster .vliw file. This contains commands ready to be read by pb_prog or pb_asm. It is human-readable, but not particularly flexible; it is intended to be generated from a .pbsrc file. The intention is to be as close to the (idealised) hardware as possible. For more details, see pulseblaster-opcodes.txt and the source of pb_prog.c. For a sample file, see example.vliw, or run pb_vliw. Note that a .vliw file is itself valid as a (simple) pbsrc file. For the raw binary format generated by pb_asm, see raw.txt Each line represents one VLIW instruction. Blank lines, and comments are ignored. A comment begins with // The instructions are in exactly 4 columns (and optional comment), delimited by whitespace. The order is: OUTPUT OPCODE ARG LENGTH //comment OUTPUT ------ Output (hex, or dec) is a 3-byte value for the outputs. Eg 0x249249 or 2396745 If OPCODE is STOP, then output is ignored. It must be 0, or -. [This convention makes the ignored value more explicit] OPCODE ------ Opcode (string, case-insensitive) is one of the 9 allowed opcodes. The allowed opcodes are: CONT, LONGDELAY, LOOP, ENDLOOP, GOTO, CALL, RETURN, WAIT, STOP. ARG --- Arg (hex or dec) is the argument to the opcode. In some cases, an opcode ignores ARG. Here, the ARG must be 0. [This is a convention to make the ignored value more explicit] Alternatively, '-' may be used to donate N/A; it will be parsed as a 0 anyway. LENGTH ------ Length (hex or dec) is the 4-byte delay value. Eg 100000000 = 1 second exactly. If OPCODE is STOP, then this length has no meaning. It must be 0, or -. [This convention makes the ignored value more explicit] NOTE: Length should be the delay (in ticks) that the user actually WANTS. [Compensation for PB_INTERNAL_LATENCY and PB_WAIT_LATENCY is done later by pb_make_vliw()]