Posted by David Nufer
Overview
The Input Counting instruction (icnt) has now been added into the Python Compiler v1 and is available on the SVN. The icnt instruction has 5 subopcodes that define different functions:
- Reset — resets one of the input counters.
- Latch — latches the current value of one of the input counters to its associated register.
- Write — writes the value of one of the input counter registers to the memory address in the address accumulator, and increments the address accumulator.
- Compare — compares an input counter register to its associated compare register and sets the compare flag it the comparison is true.
- Branch — branches if the compare flag is set.
New API Calls
There are five new API calls for the icnt instruction, one for each function:
- reset_input_counter(input_channel) — input_channel : input trigger
- latch_input_counter(input_channel) — input_channel : input trigger
- write_input_counter(input_channel) — input_channel : input trigger
- compare_input_counter(input_channel) — input_channel : input trigger
- branch_input(label) — label : the instruction to jump to
There are 8 input triggers are defined in /software/python/sequencer/constants.py, one for each input channel.
Test Script
There is a small test script called test_input_counter.py that uses all the new API calls. At first glance, it appears that all the new API calls compile properly. The test script is also being used to test that the firmware implementation of the icnt instruction is working properly.
