__________________________ AIO-16 Card, version 1.0.0 __________________________ Code image CRC: 0xD05A Files: aio-16.hex - Motorola S-record file for downloading to AIO-16 flash via an AZedit connection to the ADAM master controller. aio-16.srec - Motorola S-record file for downloading to AIO-16 RAM using the Altera GERMs monitor. _____________ Compatibility _____________ Hardware: This code image is intended to run on the AIO-16 rev. 5 board, loaded with the APEX FPGA image whose GERMs monitor prompt is #A72A3038 AIO-101404 It should be used in combination with the ADAM single frame master version 9.22.0 (or later), or in a multiframe system with DBX version 1.13.0 (or later) and Peripheral Controller version 10.13.0 (or later). ___________________ DIP Switch Settings ___________________ The DIP switches on the AIO-16 board have the following significance: Switch 1 - open normal operation - closed boot to GERMS monitor and ignore code in flash Normally, When the AIO-16 card is reset, it starts executing the Altera GERMs monitor from the APEX on-chip ROM. If the GERMs monitor detects a valid code image in flash, it starts executing the program in flash. If this switch is closed, the GERMs monitor will ignore any program loaded in flash and wait for interactive GERMs monitor commands via the main UART on J100. This can be used to regain control when the code image in flash is faulty. Switch 8 - open normal operation - closed debug only operation This functions similarly to the debug only switch on ADAM MC cards. If switch 8 is closed, the AIO-16 firmware goes straight to its internal debugger prompt, without running the normal AIO-16 firmware (again using the main UART on J100). If the LED daughtercard is attached, the upper pushbutton can be used to override this: if the button is held while booting, the AIO-16 firmware starts normally, but the debugger will regain control if the card resets (e.g. if the watchdog timer expires). ____________ Installation ____________ Installing the firmware on a new AIO-16 board requires the following steps: 1. Install the APEX FPGA image using the Altera development tools. 2. Connect a PC serial port to the main UART on J100 and open up an Altera SOPC builder shell on the PC, and verify that the command "nios-run -t" communicates with the Altera GERMs monitor on the PC, then exit. Use the command "nios-run aio-16.srec" to load the AIO-16 firmware to the AIO-16 RAM and start it executing. 3. The AIO-16 should now communicate properly with the ADAM master controller or DBX/peripheral controller cards. Using an AZedit connection, download the AIO-16 card with the file "aio-16.hex". Once this has downloaded successfully, the new image will be programmed in the flash, and the AIO-16 card will reset. If the AIO-16 board is already loaded with an earlier version of firmware, then only step 3 is needed. ______________ Change History ______________ New in version 1.0.0 -------------------- * Fix problem that prevented the AIO-16 from correctly responding to a command to force a keypanel to reboot if connected using the backcard for separate data channels for each port (bug case #22). New in version 0.1.2 -------------------- * Fix problem with startup code that caused OK LED to turn on even though it wasn't being used (bug case #12). * Fix problem in ASIC driver initialization that was responsible for unexpected audio in 4 frame DBX system (bug case #13). New in version 0.1.1 -------------------- * Change CODEC attenuation for nominal 0 dB output trim from 14 dB to 11.5 dB (attenuation register setting from 0x1C to 0x17). * Disable use of OK LED (lower of two LEDs at top of card edge). * Fix problem that could prevent AIO-16 from starting to poll keypanels after a reset when in a multiple frame system. New in version 0.1.0 -------------------- * Change the location of the buffer for assert messages: they are now preserved when the AIO-16 card resets. * Fix bug: wrong alpha size message didn't appear properly on ports 9-16 with shared data port backcard. * Panels displaying the wrong alpha size message will now power up without being disconnected if the conflicting panels are removed from the port group. * Add symbol lookup function to internal debugger and removed some obsolete temporary commands used during development. * Extended timeout for response to keypanel download message to allow slower keypanels to respond in time. * Changed the method used to work around the off-by one submix problem in the Nucleus ASIC (old method didn't work under all circumstances). Now, the first submix is never empty: it always includes at least one dummy term with zero gain. * Limit number to submixes according to the number of TDM clock cycles per sample period, rather than size of the Nucleus RAM tables. * Fixed bug: AIO-16 no longer resets because the idle task isn't running if a large number of crosspoints (several hundred) all change at the same time. * Fixed bug: Nucleus ASIC driver was failing after a large number of discrete sources had been used. * Added handler for spurious interrupts 19, 24, and 27. (These seem to be caused by a hardware problem in the Nios processor block). New in version 0.0.7 -------------------- * Changed UART ISR to keep characters even if received with a framing error (otherwise get problems with KP-12). * Charge UART receive errors (framing and overrun) to the appropriate port. * Don't send alpha broadcasts as directed messages to old protocol panels when using individual UART per port (was causing TIF-951 to disconnect). * In multidrop (shared data port mode), clear the alpha size for each group of ports (1-8 and 9-16) when there are no panels connected (in previous versions, it was necessary to reset the AIO-16). New in version 0.0.6 -------------------- * Output trim gain change. The CS4224 CODECs can only attenuate the output, so when the ADAM controller requests 0 dB output trim, the CS4224 CODEC is actually set to attenuate by 14 dB (and +14 dB output trim gives the maximum output level - no attenuation). The gain of the analog output stage will have to be increased by a further +14 dB to compensate. * Fixed some timeout problems in the keypanel polling code (this prevented the KP-32 from powering up when connected to multi-drop backcard, with shared data port for ports 1-8 and 9-16). * Fixed a problem that prevented the AIO-16 from polling keypanels after reset under some conditions. New in version 0.0.5 -------------------- * Fix bug: input trim value was used for both input and output trims. * Scroll lists now working. * Added code to detect TDM clock glitches and reset the CS4224 CODEC chips once the TDM clock reappears. * Crosspoint gain changes. The Nucleus ASIC only supports gain values of unity or less, while the ADAM intercom allows crosspoint gains up to +6dB. Changed the mapping of intercom gain values to Nucleus fader values so that the maximum intercom gain (+6dB) is mapped to the maximum fader value (+0dB). The gain of the analog output stage will have to be increased by +6dB to compensate. New in version 0.0.4 -------------------- * Fix bug: watchdog tripped if started in slot 8 and there was no clock. * Change usage of status LEDs on daughtercard: - Activity of first 24 tasks on red LEDs. - Link status of 16 ports on bottom 16 green LEDs - General status in top 8 green LEDs 23 - ISR Active 22 - Driving clock 21 - Tx to MC 20 - Rx from MC 19 - MC Slot 1 18 - MC Slot 2 17 - unused 16 - unused * Added some additional debug messages (reason for reboot, type of backcard, etc.). * Fix some problems with keypanel polling using multidrop backcard.