VLSI VS1001K
[Special Hardware]

Collaboration diagram for VLSI VS1001K:


Detailed Description

MP3 Decoder.


Defines

#define VS_OPCODE_READ
#define VS_OPCODE_WRITE
#define VS_MODE_REG
#define VS_STATUS_REG
#define VS_INT_FCTLH_REG
#define VS_CLOCKF_REG
#define VS_DECODE_TIME_REG
#define VS_AUDATA_REG
#define VS_WRAM_REG
#define VS_WRAMADDR_REG
#define VS_HDAT0_REG
#define VS_HDAT1_REG
#define VS_A1ADDR_REG
#define VS_VOL_REG
#define VS_A1CTRL_REG
#define VS_SM_DIFF
#define VS_SM_FFWD
#define VS_SM_RESET
#define VS_SM_MP12
#define VS_SM_PDOWN
#define VS_SM_DAC
#define VS_SM_DACMONO
#define VS_SM_BASS
#define VS_SM_DACT
#define VS_SM_BYTEORD
#define VS_SM_IBMODE
#define VS_SM_IBCLK
#define VS_CF_DOUBLER
#define VS_FLUSH_BYTES
#define VS_STATUS_STOPPED
#define VS_STATUS_RUNNING
#define VS_STATUS_EOF
#define VS_STATUS_EMPTY
#define VS_SCK_BIT
 VS1001 serial control interface clock input bit.
#define VS_SCK_PORT
#define VS_SCK_DDR
#define VS_SS_BIT
 VS1001 serial data interface clock input bit.
#define VS_SS_PORT
#define VS_SS_DDR
#define VS_SI_BIT
 VS1001 serial control interface data input.
#define VS_SI_PORT
#define VS_SI_DDR
#define VS_SO_BIT
 VS1001 serial control interface data output.
#define VS_SO_PIN
#define VS_SO_DDR
#define VS_XCS_BIT
 VS1001 active low chip select input.
#define VS_XCS_PORT
#define VS_XCS_DDR
#define VS_BSYNC_BIT
 VS1001 serial data interface bit sync.
#define VS_BSYNC_PORT
#define VS_BSYNC_DDR
#define VS_RESET_BIT
 VS1001 hardware reset input.
#define VS_RESET_PORT
#define VS_RESET_DDR
#define VS_SIGNAL
 VS1001 data request interrupt.
#define VS_DREQ_BIT
#define VS_DREQ_PORT
#define VS_DREQ_PIN
#define VS_DREQ_DDR

Functions

int VsPlayerInit (void)
 Initialize the VS1001 hardware interface.
int VsPlayerReset (u_short mode)
 Software reset the decoder.
int VsPlayerSetMode (u_short mode)
 Set mode register of the decoder.
int VsPlayerKick (void)
 Start playback.
int VsPlayerStop (void)
 Stops the playback.
int VsPlayerFlush (void)
 Sets up decoder internal buffer flushing.
u_char VsPlayerInterrupts (u_char enable)
 Enable or disable player interrupts.
u_charVsBufferInit (u_short size)
u_charVsBufferReset (void)
u_charVsBufferRequest (u_short *sizep)
u_charVsBufferAcknowledge (u_short nbytes)
u_short VsBufferAvailable (void)
u_short VsPlayTime (void)
 Returns play time since last reset.
u_char VsGetStatus (void)
 Returns status of the player.
u_short VsMemoryTest (void)
 Initialize decoder memory test and return result.
int VsSetVolume (u_char left, u_char right)
 Set volume.
int VsBeep (u_char fsin, u_char ms)
 Sine wave beep.


Define Documentation

#define VS_BSYNC_BIT
 

VS1001 serial data interface bit sync.

The first DCLK sampling edge, during which BSYNC is high, marks the first bit of a data byte.

#define VS_BSYNC_DDR
 

Data direction register of VS_BSYNC_BIT.

#define VS_BSYNC_PORT
 

Port output register of VS_BSYNC_BIT.

#define VS_DREQ_DDR
 

Data direction register of VS_DREQ_BIT.

#define VS_DREQ_PIN
 

Port input register of VS_DREQ_BIT.

#define VS_DREQ_PORT
 

Port output register of VS_DREQ_BIT.

#define VS_RESET_DDR
 

Data direction register of VS_RESET_BIT.

#define VS_RESET_PORT
 

Port output register of VS_RESET_BIT.

#define VS_SCK_BIT
 

VS1001 serial control interface clock input bit.

The first rising clock edge after XCS has gone low marks the first bit to be written to the decoder.

#define VS_SCK_DDR
 

Data direction register of VS_SCK_BIT.

#define VS_SCK_PORT
 

Port register of VS_SCK_BIT.

#define VS_SI_BIT
 

VS1001 serial control interface data input.

The decoder samples this input on the rising edge of SCK if XCS is low.

#define VS_SI_DDR
 

Data direction register of VS_SI_BIT.

#define VS_SI_PORT
 

Port output register of VS_SI_BIT.

#define VS_SO_BIT
 

VS1001 serial control interface data output.

If data is transfered from the decoder, bits are shifted out on the falling SCK edge. If data is transfered to the decoder, SO is at a high impedance state.

#define VS_SO_DDR
 

Data direction register of VS_SO_BIT.

#define VS_SO_PIN
 

Port input register of VS_SO_BIT.

#define VS_SS_DDR
 

Data direction register of VS_SS_BIT.

#define VS_SS_PORT
 

Port output register of VS_SS_BIT.

#define VS_XCS_BIT
 

VS1001 active low chip select input.

A high level forces the serial interface into standby mode, ending the current operation. A high level also forces serial output (SO) to high impedance state.

#define VS_XCS_DDR
 

Data direction register of VS_XCS_BIT.

#define VS_XCS_PORT
 

Port output register of VS_XCS_BIT.


Function Documentation

int VsBeep u_char  fsin,
u_char  ms
 

Sine wave beep.

Parameters:
fsin Frequency.
ms Duration.
Returns:
0 on success, -1 otherwise.

u_char VsGetStatus void   ) 
 

Returns status of the player.

Returns:
Any of the following value:
  • VS_STATUS_STOPPED Player is ready to be started by VsPlayerKick().
  • VS_STATUS_RUNNING Player is running.
  • VS_STATUS_EOF Player has reached the end of a stream after VsPlayerFlush() has been called.
  • VS_STATUS_EMPTY Player runs out of data. VsPlayerKick() will restart it.
Examples:
playmp3/playmp3.c.

u_short VsMemoryTest void   ) 
 

Initialize decoder memory test and return result.

Returns:
Memory test result.
  • Bit 0: Good X ROM
  • Bit 1: Good Y ROM (high)
  • Bit 2: Good Y ROM (low)
  • Bit 3: Good Y RAM
  • Bit 4: Good X RAM
  • Bit 5: Good Instruction RAM (high)
  • Bit 6: Good Instruction RAM (low)

int VsPlayerFlush void   ) 
 

Sets up decoder internal buffer flushing.

This routine will set up internal VS buffer flushing, unless the buffer is already empty and starts the playback if necessary. The internal VS buffer is flushed in VsPlayerFeed() at the end of the stream.

Decoder interrupts will be enabled.

Returns:
0 on success, -1 otherwise.
Examples:
playmp3/playmp3.c.

int VsPlayerInit void   ) 
 

Initialize the VS1001 hardware interface.

Returns:
0 on success, -1 otherwise.
Examples:
playmp3/playmp3.c.

u_char VsPlayerInterrupts u_char  enable  ) 
 

Enable or disable player interrupts.

This routine is typically used by applications when dealing with unprotected buffers.

Parameters:
enable Disables interrupts when zero. Otherwise interrupts are enabled.
Returns:
Zero if interrupts were disabled before this call.
Examples:
playmp3/playmp3.c.

int VsPlayerKick void   ) 
 

Start playback.

This routine will send the first MP3 data bytes to the decoder, until it is completely filled. The data buffer should have been filled before calling this routine.

Decoder interrupts will be enabled.

Returns:
0 on success, -1 otherwise.
Examples:
playmp3/playmp3.c.

int VsPlayerReset u_short  mode  ) 
 

Software reset the decoder.

This function is typically called after VsPlayerInit() and at the end of each track.

Parameters:
mode Any of the following flags may be or'ed
  • VS_SM_DIFF Left channel inverted.
  • VS_SM_FFWD Fast forward.
  • VS_SM_RESET Force hardware reset.
  • VS_SM_PDOWN Switch to power down mode.
  • VS_SM_BASS Bass/treble enhancer.
Returns:
0 on success, -1 otherwise.
Examples:
playmp3/playmp3.c.

int VsPlayerSetMode u_short  mode  ) 
 

Set mode register of the decoder.

Parameters:
mode Any of the following flags may be or'ed
  • VS_SM_DIFF Left channel inverted.
  • VS_SM_FFWD Fast forward.
  • VS_SM_RESET Software reset.
  • VS_SM_PDOWN Switch to power down mode.
  • VS_SM_BASS Bass/treble enhancer.
Returns:
0 on success, -1 otherwise.

int VsPlayerStop void   ) 
 

Stops the playback.

This routine will stops the MP3 playback, VsPlayerKick() may be used to resume the playback.

Returns:
0 on success, -1 otherwise.

u_short VsPlayTime void   ) 
 

Returns play time since last reset.

Returns:
Play time since reset in seconds

int VsSetVolume u_char  left,
u_char  right
 

Set volume.

Parameters:
left Left channel volume.
right Right channel volume.
Returns:
0 on success, -1 otherwise.
Examples:
playmp3/playmp3.c.


© 2000-2006 by egnite Software GmbH - visit http://www.ethernut.de/