14 www.xilinx.com XAPP169 (v1.0) November 24, 1999
1-800-255-7778
MP3 NG: A Next Generation Consumer Platform R
The reference code that was developed for the standard is available from the Frau nhofer
Institute at the following URL:
http://www.iis.fhg.de/amm/techinf/layer3/index.html
A commercial decoder is available from Xaudio. Information on the Xa udio product line is
available from:
http://www.xaudio.com
Memory Manager
The Memory Manager handles the tasks required to mask NAND FLASH iss ues from the other
software in the system. Specifically these tasks are block mapping a nd code initialization.
Block Mapping
This involves maintaining a table of valid FLASH blocks and configuring the MMU to map the m
into a linear address space. For the FLASH memory space the TLB entries are set to the same
8 KB size to match the block size of the FLASH itself, and the entries are not locked in the TLB.
A single TLB entry is used to map the SDRAM memory space. This entry is configured to map
a 4 MB memory space and is locked in the TLB.
In the event that an error is detected in a valid block, this code is also responsible fo r copying
the data to an unused block and marking the block in which the error was detec ted as bad.
Code Initialization
This function copies the code image from FLASH to RAM at boot time. This routine mus t also
perform error detection on the image as it is copied. If an error is detected, error correction must
be performed and the block mapping code informed.
Xilinx Spartan- II FPGA
Figure 15 shows the architecture implemented in the Spartan-II device for th is application. It
consists of eight major functional blocks:
IP Bus Controller
CPU Interface
LCD Controller
Memory Datapath
SDRAM Controller
FLASH Controller
CompactFlash Controller
IRDA Controller
DAC Interface
Touch Screen Interface
These blocks are interconnected by a simple non-multiplexed, multi-master, address data bus
that is referred to as the IP bus. While the IP bus may appear to be a bus to the funct ion blocks,
it is not a bus at all but instead uses multiplexers for gating data into the internal datapa ths. This
approach eliminates the need for 3-state drivers within the design. In thi s implementation the
bus has two masters; the CPU Interface and the LCD Controller. Figure 15 shows a top level
block diagram of the FPGA.