Slave device selection for mono audio and ARM microcontroller

Designing hardware that uses VLSI Solution's devices as slave codecs such as an external MP3 decoder chip for a host microcontroller.
Post Reply
dfarina
User
Posts: 5
Joined: Mon 2019-11-04 17:22

Slave device selection for mono audio and ARM microcontroller

Post by dfarina » Mon 2019-11-04 17:32

Hello,

I would appreciate some help in selecting the most appropriate VLSI chip to use in a new product I’m designing. The product has the following basic requirements:
  • Coin-cell battery (CR2032) powered.
  • Mono audio output through a Class D amplifier and a 4- or 8- Ohm speaker.
  • Pre-loaded OGG encoded mono audio files on a memory device (preferably SPI accessible for about 30 or so total files occupying a total of about 4 MBytes of memory maximum).
  • Audio chip needs to be a slave to a master ARM microcontroller in the product.
  • Ideally, the ARM microcontroller would programmatically instruct the audio chip to play a specific file from memory with minimal to no lag time. The files need to be played at very particular times and in a certain order determined at runtime.
  • Communications between the ARM MCU and the audio chip can occur over UART, SPI, I2C, or GPIO.
  • Audio chip only needs to decode and play mono audio OGG files – nothing else (i.e. no encoding at all and no other formats)!
  • Low power consumption, low cost, high reliability, high quality audio, simple integration, and small PCB footprints are key to the product’s design.
I’ve done some experimenting with the VS1000 chip using the eval boards available from Adafruit in the USA and have been very impressed with the audio output quality of the chip and the simple hardware design. However, I’m not quite sure how to best handle the interfacing to the ARM MCU given how many files I need to play etc. (e.g. I think the GPIO option would not work given how many files I need to play programmatically). Your suggestions would be greatly appreciated.

User avatar
Panu
VLSI Staff. Currently on holiday.
Posts: 2711
Joined: Tue 2010-06-22 13:43

Re: Slave device selection for mono audio and ARM microcontroller

Post by Panu » Tue 2019-11-05 9:36

Hi, and welcome to the forum!

I think you will need a Li-Ion battery for your product. Draining 10mA from a CR2032 will give you only 2.5 volts, which is not feasible..

For example, playing 128kbps Ogg Vorbis on a VS1063, which is a slave IC, consumes 11mA for the core plus another 11mA for driving 30 ohm headphones. It would probably play a few hours from two CR2032 coin cells from a low power data source (SPI flash).

Please consider this and let's continue to discuss and iterate based on what the realistic power consumption goal for your product is.

-Panu
Info: Line In and Line Out, VS1000 User interface, Overlay howto, Latest VSIDE, MCU Howto, Youtube
Panu-Kristian Poiksalo, VLSI Solution Oy

User avatar
pasi
VLSI Staff
Posts: 1612
Joined: Thu 2010-07-15 16:04

Re: Slave device selection for mono audio and ARM microcontroller

Post by pasi » Tue 2019-11-05 14:28

The VS1000 Audio Module has also a UART-controlled option ( http://www.vlsi.fi/en/products/vsmd001.html ).

There's a 16MByte variant VSMD021V072, which would hold all of your content. If you build your own, you can adapt the size of the SPI FLASH.
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook

dfarina
User
Posts: 5
Joined: Mon 2019-11-04 17:22

Re: Slave device selection for mono audio and ARM microcontroller

Post by dfarina » Wed 2019-11-06 4:26

Hi Panu and Pasi,

Thank you very much for your prompt responses to my questions.

Panu: I have had no issues (so far) running the Adafruit 2217 demo board (this version has an embedded VS1000 and a Class-D amp that I've hooked up to a mobile phone sized 8-Ohm speaker - NOT like the huge ones Adafruit shows with the demo board) from a single CR2032 battery in my application - a personal voice guided training device. But, I haven't yet run a real power budget analysis (a co-worker is starting that analysis now). I'll let you know what we come up with on the power budget - hopefully we can do it as we're envisioning with a single CR2032!

The UART option looks very promising and seemingly simple. Quick question, do you have a SPI-controlled version of that firmware? Though I might be able to use a UART, SPI would be the best since I have a number of other sensors communicating with the MCU via SPI, and nothing with UART. Do you think the VS1000 device is a good fit for my application, or do you have any other suggestions I should at?

I'm happy to have a call with you both to discuss my application more directly if you'd like. Just let me know.

User avatar
pasi
VLSI Staff
Posts: 1612
Joined: Thu 2010-07-15 16:04

Re: Slave device selection for mono audio and ARM microcontroller

Post by pasi » Wed 2019-11-06 12:06

The SPI of VS1000 is used for the SPI FLASH access - for both the firmware and the audio content. It's impossible to use the same SPI as a master and a slave at the same time (reliably).

You can download VSIDE and the VS1000 Audio Module solution, compile the UART-controlled version, and then program it your demo board.

While not playing, to conserve more power you can add some code to put VS1000 into low-power state. (Lower voltages, lower clock, then wait for a change in GPIO to wake up and be ready to receive UART bytes again.)

If you don't need USB, you can also use a lower VHIGH.

For reference only, a very old design (not available anymore): http://www.vlsi.fi/en/support/evaluatio ... layer.html
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook

dfarina
User
Posts: 5
Joined: Mon 2019-11-04 17:22

Re: Slave device selection for mono audio and ARM microcontroller

Post by dfarina » Wed 2019-11-06 15:17

Thanks Pasi! I used that old schematic as inspiration for the concept for my business team (they love the sound quality) and it does indeed work well with the Adafruit demo board. I'll take your advice and program the UART version of the code into the device and go from there. Can you confirm that you believe the VS1000 is the best recommendation for my application?

User avatar
pasi
VLSI Staff
Posts: 1612
Joined: Thu 2010-07-15 16:04

Re: Slave device selection for mono audio and ARM microcontroller

Post by pasi » Wed 2019-11-06 16:18

I think vs1000 is the best for this application.

- vs1005 is not quite as low-power, because it has much more peripherals and memory than you need in your application. Ditto for vs1010 in a smaller extent.
- vs10xx slave decoders don't have very good low-power states and require external regulators. It would probably be the best to use as a slave decoders as intended, needing the ARM to handle the audio data.

What are the sensors and how complex is the communication with them? Are there other uses for the ARM? Would it be possible to get rid of the ARM completely?

If you don't need WAV decoding, just Ogg Vorbis, you would have quite a bit of instruction memory to work with. Especially when you don't need the UART protocol then either. This could be your cost-reduction step even if you go with ARM+vs1000 in the first version.
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook

dfarina
User
Posts: 5
Joined: Mon 2019-11-04 17:22

Re: Slave device selection for mono audio and ARM microcontroller

Post by dfarina » Wed 2019-11-06 19:42

Hi Pasi,

Thanks for your inputs. The ARM is doing all sorts of other tasks and is definitely needed for the product to work as intended. I only need mono Ogg Vorbis for the audio - no WAV or anything else. I do need a simple way of commanding the device to play audio at very specific times, so it sounds like the UART will be my best/only option for that function with the VS1000. What advantages, cost or otherwise, do I gain by having more instruction memory to work with when all I need is mono Ogg Vorbis and UART? Is there some cost/power advantage to eliminating the WAV decoding function from the instruction set?

Thanks.

User avatar
pasi
VLSI Staff
Posts: 1612
Joined: Thu 2010-07-15 16:04

Re: Slave device selection for mono audio and ARM microcontroller

Post by pasi » Thu 2019-11-07 12:01

I meant that without WAV you could move the sensor monitoring functions from the ARM to VS1000. But if you need the ARM anyway, then it doesn't really matter.
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook

dfarina
User
Posts: 5
Joined: Mon 2019-11-04 17:22

Re: Slave device selection for mono audio and ARM microcontroller

Post by dfarina » Thu 2019-11-07 20:22

OK Pasi, that makes sense. I'll let you know how things go and thanks for your help!

Post Reply