Figure 2: The final controller chip layout in Silicon Ensemble.
Before verifying we had a EEPROM with suitable firmware for our controller CPU. This was the same firmware that had previously been tested in the testbench for the design.
9.2 First impressions
When we connected the circuit to the testbench and sent a RESET signal the processor started running and wrote the correct welcome message to the LCD. From this we concluded that both CPU and MMU was working as intended. The processor continued by reading key presses, and we could advance back and forth among the songs in the EEPROM using the “backward” and “forward” buttons.
When we started playing a piece of music using the “play” button the LCD correctly stated that we had entered playmode, and the TOD-clock started ticking up seconds and print them to the display. However the clock continued ticking and no music came out of the DAC. We could still press “backward” and “forward” buttons to change song, but the machinery remained silent and the clock would never stop for a single song, it would run on forever, way past the actual length of the song.
9.3 Fixing the problems
All issues turned out to be firmware-related or caused by other chips and could be fixed, so the controller was essentially 100% working.
We suspected that the set-up sequence for the DAC was incorrect, and that this was the reason to why no sound came out of the circuit. By consulting data sheets and altering the sequence in the firmware, this problem could be fixed: we had neclected the fact that the DAC had to be set up to accept a 12 MHz clock and that the digital interface had to be specified to I S. It also turned out that the RESET register of the DAC was dangerous to write, presumably because we wrote it last and the reset would restore the default configuration. For this reason we avoided using DAC RESET altogether.
After this sound came out of the attached speaker, but only noises. By analyzing the memory with a logic analyzer, we could see that the DMA-part of the MMU begun reading MP3 data from the memory correctly and sent it to the decoder chip, so logically speaking everything was working until the MP3 decoder chip suddenly stopped requesting bytes.