DSP¶
JP150PCB 1.3PCB 1.4generatedJan PřibyslavskýThis page does not apply to the product or PCB revision chosen in the header.
The ADAU1452 DSP: parameter writes, direct and through the indirect parameter access table
(IPAT), the level meter, the status of the last boot and of the core, and the self-boot
setting. The status queries read the DSP's registers live and answer ERROR while the DSP is
held in reset (SLEEP and STANDBY) or while the I2C guard is triggered;
ERROR is an answer, not a timeout.
Commands¶
| Command | Function | Parameter | Answer | Since | Boards |
|---|---|---|---|---|---|
DSP:SETBLOCK |
Write one value to a DSP address | <address>,<value> |
setblock:<address>,<value> |
26.6.2 | 1.3, 1.4 |
DSP:IPAT:SETBLOCK |
Write one value through the DSP's parameter table | <write_address>,<value> |
ipatsetblock:<address>,<value> |
26.7.0 | 1.3, 1.4 |
DSP:LVLMETER:RMS? |
Level-meter RMS reading | – | DSP:LVLMETER:RMS:<raw>,<linear> |
26.7.0 | 1.3, 1.4 |
DSP:CORE:START? |
The program start bit of the DSP | – | DSP:CORE:START:<0|1|ERROR> |
26.6.2 | 1.3, 1.4 |
DSP:CORE:KILL? |
The kill bit of the DSP core | – | DSP:CORE:KILL:<0|1|ERROR> |
26.6.2 | 1.3, 1.4 |
DSP:PLL:LOCK? |
The DSP's PLL is locked | – | DSP:PLL:LOCK:<0|1|ERROR> |
26.6.2 | 1.3, 1.4 |
DSP:PC:ADVANCING? |
The DSP executes a program | – | DSP:PC:ADVANCING:<0|1|ERROR> |
26.6.2 | 1.3, 1.4 |
DSP:CORE:STATUS? |
State of the DSP core | – | DSP:CORE:STATUS:<code>,<name> |
26.10.1 | 1.3, 1.4 |
DSP:PANIC? |
Panic flag and code of the DSP | – | DSP:PANIC:<flag>,0x<code> |
26.10.1 | 1.3, 1.4 |
DSP:BOOT? |
The last DSP boot, state and duration | – | DSP:BOOT:<state>,<ms>,<not_started>,<no_answer> |
26.10.1 | 1.3, 1.4 |
DSP:SELFBOOT? |
DSP self boot setting and the level of the SELFBOOT pin | – | DSP:SELFBOOT:<setting>,<pin> |
26.10.1 | 1.3, 1.4 |
DSP:SELFBOOT |
Set the DSP self boot | 0, 1 |
DSP:SELFBOOT:OK |
26.10.1 | 1.3, 1.4 |
Since is the release the command appeared in; 26.6.2 is the oldest release documented here, so a command marked 26.6.2 may be older.
DSP:SETBLOCK¶
A direct write of one 4-byte value to a parameter address of the DSP program, as SigmaStudio
would do it. A diagnostic primitive: parameters that the DSP program manages through its IPAT
(the input mux among them) must be written with DSP:IPAT:SETBLOCK, so that the program's
own copy stays in step.
DSP:IPAT:SETBLOCK¶
Writes one value through the indirect parameter access table (IPAT) of the DSP program. The first parameter is the table's write address of the parameter, from the program's export. Nothing is read back. DSP: parameters over the control interface explains the table.
DSP:LVLMETER:RMS?¶
The RMS output of the program's level meter, read through the IPAT: raw is the Q8.24 word
(16777216 = full scale), linear is raw / 16777216 with six decimals. The conversion to dB
is left to the host. The meter sits before the volume. A read failure is an SCPI error, never
a stale value. The automatic power-down compares its threshold with this reading.
DSP status bits¶
Commands: DSP:CORE:START?, DSP:CORE:KILL?, DSP:PLL:LOCK?, DSP:PC:ADVANCING?
Four status bits of the ADAU1452, read live. A running program reads start 1, kill 0, PLL
1, advancing 1. DSP:PC:ADVANCING? answers 1 while the core status is running or
sleeping between samples; it no longer samples the program counter, which also moves while no
program runs. ERROR while the DSP is in reset or the I2C guard is triggered.
DSP:CORE:START? -> DSP:CORE:START:1
DSP:PLL:LOCK? -> DSP:PLL:LOCK:1
DSP:PC:ADVANCING? -> DSP:PC:ADVANCING:1
DSP:CORE:STATUS?¶
SLEEP is the normal reading of a running program: the core has finished its instructions
for this sample and waits for the next one. DSP:CORE:STATUS:ERROR while the DSP is in reset
or the I2C guard is triggered.
DSP core states
| Value | Meaning |
|---|---|
0,NOT_RUNNING |
No program runs |
1,RUNNING |
The core executes instructions |
2,PAUSED |
The core is paused |
3,SLEEP |
The core finished this sample and waits for the next one, the normal reading of a running program |
4,STALLED |
The core is stalled |
DSP:PANIC?¶
The ADAU1452's panic manager, read live; both registers stay set until the DSP is reset. After
three failed self-boot attempts the core raises a software panic (bit 15, 0x8000). Bits 5 to
7 (0x0020, 0x0040, 0x0080) are data-memory parity flags that the current DSP programs
raise at every start on both board revisions, so a non-zero code alone is not a fault. ERROR
while the DSP is in reset or the I2C guard is triggered.
DSP:BOOT?¶
The last boot of the DSP as the firmware timed it, after power-up and after every wake that
released the DSP from reset. The firmware polls the program start bit every 50 ms from 50 ms
after the release and then writes the selected input. ms is the time from the release to the
poll that found the program started (about 20 ms short after a wake); not_started counts
polls that found no program yet, no_answer polls the DSP did not answer. After 5 s without a
start the state is FAILED; the bit is then re-read every second, so a program loaded later
by SigmaStudio turns the state to READY. Typical: PCB 1.4 READY,53 from its SPI flash,
PCB 1.3 READY,252 from its I2C EEPROM; an image whose speed word does not match the boot
memory takes about 3 s. A memory read, not subject to the I2C guard.
DSP boot states
| Value | Meaning |
|---|---|
WAITING |
The DSP was released from reset and its program has not started yet |
READY |
The program started and the selected input has been written |
FAILED |
No start within 5 s; still re-checked every second |
DSP:SELFBOOT¶
Commands: DSP:SELFBOOT?, DSP:SELFBOOT
Whether the DSP loads its program from its boot memory when it leaves reset. setting is the
stored value, pin the level of the SELFBOOT net now; on PCB 1.3 a closed DIP switch holds the
pin at 0 whatever the setting. The DSP samples the pin only when it leaves reset, so a change
takes effect at the next DSP reset (SYS:POWER:MODE SLEEP and back to NORMAL, or a power
cycle); the command does not restart the DSP. With self boot off the DSP loads no program and
there is no audio until the setting is 1 again and the DSP is reset: the state SigmaStudio
needs to write the boot memory through the DSP. An invalid value is an SCPI error. A stored
setting (autosave after 0.1 s).
Default: 1.
Changes¶
- 26.10.1: added
DSP:PANIC?,DSP:BOOT?,DSP:CORE:STATUS?,DSP:SELFBOOT?,DSP:SELFBOOT; removedDSP:AUTOLOAD?,DSP:AUTOLOAD. - 26.7.0: added
DSP:IPAT:SETBLOCK,DSP:LVLMETER:RMS?. - 26.6.2 (oldest release documented): 7 commands.