Parrot Interface Specification
All communication with Parrot is carried over an 8-bit unidirectional bus, assisted by strobe and acknowledge lines. Conceptually, this 8-bit bus may be considered as a multiplexed data/address bus, carrying a 7-bit address or 7-bit data, depending on the high order bit. A high order "1" designates an address. Alternately, one might think of there being two kinds of commands; those which set an internal address register in Parrot, and those which store data indirect off that register.
For example, to sent coefficient k7 to value v, four transfers are needed: First, the byte x is sent; this sets the address register to the high-order 7 bits of k7. Second, the high 7 bits of v are sent. Third, the byte y is sent; this sets the address register to the low byte of k7. Then the low 7 bits of v are sent. Note that the low-order bits could be sent before the high-order bits, by transmitting the third and fourth bytes before the first and second.
Once an address is sent to Parrot, it is loaded into Parrot’s Address register, where it remains until a subsequent address is sent. It determines the destination of subsequent data bytes.
Parrot may be thought of as having three banks of registers capable of holding coefficients for Synth. Each bank contains twelve 14-bit registers, one for each of the ten LPC coefficients k0 through k9, gain A, and pitch frequency f. The three banks are designated A, B, and C, and their functions are as follows:
The A bank is an input buffer. This is the register which is addressed by the address register, and into which coefficients are stored by the host. Coefficients in the A bank are ignored until a "UseNew command is sent by .
0... data ...store data into position indicated by address register.
10... address ...set address register to address shown.