changeset 0:6d1ff93e3afa pygar svn.1

[svn r1] This is the current draft of out project
author rlm
date Tue, 13 Apr 2010 15:08:30 -0400
parents
children 91a1f76ddd62
files documents/000402.png documents/AudioProcessing.lyx documents/AudioProcessing.pdf
diffstat 3 files changed, 160 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
     1.1 Binary file documents/000402.png has changed
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/documents/AudioProcessing.lyx	Tue Apr 13 15:08:30 2010 -0400
     2.3 @@ -0,0 +1,160 @@
     2.4 +#LyX 1.6.4 created this file. For more info see http://www.lyx.org/
     2.5 +\lyxformat 345
     2.6 +\begin_document
     2.7 +\begin_header
     2.8 +\textclass article
     2.9 +\use_default_options true
    2.10 +\language english
    2.11 +\inputencoding auto
    2.12 +\font_roman default
    2.13 +\font_sans default
    2.14 +\font_typewriter default
    2.15 +\font_default_family default
    2.16 +\font_sc false
    2.17 +\font_osf false
    2.18 +\font_sf_scale 100
    2.19 +\font_tt_scale 100
    2.20 +
    2.21 +\graphics default
    2.22 +\paperfontsize default
    2.23 +\use_hyperref false
    2.24 +\papersize default
    2.25 +\use_geometry false
    2.26 +\use_amsmath 1
    2.27 +\use_esint 1
    2.28 +\cite_engine basic
    2.29 +\use_bibtopic false
    2.30 +\paperorientation portrait
    2.31 +\secnumdepth 3
    2.32 +\tocdepth 3
    2.33 +\paragraph_separation indent
    2.34 +\defskip medskip
    2.35 +\quotes_language english
    2.36 +\papercolumns 1
    2.37 +\papersides 1
    2.38 +\paperpagestyle default
    2.39 +\tracking_changes false
    2.40 +\output_changes false
    2.41 +\author "" 
    2.42 +\end_header
    2.43 +
    2.44 +\begin_body
    2.45 +
    2.46 +\begin_layout Title
    2.47 +Multi-Voice Audio Playback
    2.48 +\end_layout
    2.49 +
    2.50 +\begin_layout Author
    2.51 +Laurel Pardue, Robert McIntyre
    2.52 +\end_layout
    2.53 +
    2.54 +\begin_layout Section*
    2.55 +Micro-Architecture
    2.56 +\end_layout
    2.57 +
    2.58 +\begin_layout Subsection*
    2.59 +A quick summary of our system
    2.60 +\end_layout
    2.61 +
    2.62 +\begin_layout Standard
    2.63 +The audio data (
    2.64 +\begin_inset Quotes eld
    2.65 +\end_inset
    2.66 +
    2.67 +samples
    2.68 +\begin_inset Quotes erd
    2.69 +\end_inset
    2.70 +
    2.71 +) start in the memory, but are soon pulled into action by the DMA (direct
    2.72 + memory access).
    2.73 + The DMA sends the samples to a chain of 0 or more 
    2.74 +\emph on
    2.75 +soft-cores
    2.76 +\emph default
    2.77 +, where they are transformed according to the soft-cores' algorithms.
    2.78 + After running the gauntlet of soft-cores, the samples flow first to a buffering
    2.79 + FIFO, and finally to a 
    2.80 +\emph on
    2.81 +mixer
    2.82 +\emph default
    2.83 +, which sends the samples off to be played by speakers of stored in a file.
    2.84 +\end_layout
    2.85 +
    2.86 +\begin_layout Subsection*
    2.87 +A more detailed look a our system
    2.88 +\end_layout
    2.89 +
    2.90 +\begin_layout Standard
    2.91 +Our audio pipeline starts its life with whatever music we want to play already
    2.92 + in memory.
    2.93 + The music has multiple tracks, or 
    2.94 +\begin_inset Quotes eld
    2.95 +\end_inset
    2.96 +
    2.97 +voices,
    2.98 +\begin_inset Quotes erd
    2.99 +\end_inset
   2.100 +
   2.101 + which we arrange on the memory in contiguous sequences.
   2.102 + Therefore, each voice starts at its own start-address, and continues on
   2.103 + for as long as it needs.
   2.104 + We cap each voice with an end-of-file marker.
   2.105 + We make every voice the same length to simplify timing issues, even though
   2.106 + that might mean that there is a lot of wasted space in the form of dead
   2.107 + areas with no sound.
   2.108 +\end_layout
   2.109 +
   2.110 +\begin_layout Standard
   2.111 +When the processing starts, the DMA reads in each voice and sends the audio
   2.112 + data (
   2.113 +\begin_inset Quotes eld
   2.114 +\end_inset
   2.115 +
   2.116 +samples
   2.117 +\begin_inset Quotes erd
   2.118 +\end_inset
   2.119 +
   2.120 +) off to a chain of soft-cores.
   2.121 + The DMA knows to which chain the samples should be forwarded by looking
   2.122 + up the samples' voice in a hash table read at startup.
   2.123 + Once the samples enter the soft-core chain, the first soft-core in line
   2.124 + takes the samples and performs some sort of audio operation, producing
   2.125 + modified audio samples.
   2.126 + These samples feed into the next soft-core which performs a different algorithm.
   2.127 + As condition for functional correctness, we require the algorithm that
   2.128 + each soft-core contains to be able to produce audio samples at the desired
   2.129 + 44khz rate, but we allow an arbitrary setup time for the soft-core to get
   2.130 + ready.
   2.131 + That way, a pipelined processor can take its time and fill up its pipeline
   2.132 + completely with no worries.
   2.133 + Once the soft-core starts producing samples, it must produce them at a
   2.134 + rate of at least 44khz forever.
   2.135 + If every soft-core in the chain obeys this timing condition, then the whole
   2.136 + chain will as well, so the entire chain of soft-cores can be treated as
   2.137 + a single big soft-core for timing purposes.
   2.138 + Our soft-cores are just Lab 5 processors preloaded with specific audio
   2.139 + processing algorithms.
   2.140 +\end_layout
   2.141 +
   2.142 +\begin_layout Standard
   2.143 +Eventually, the samples make their way to the end of the chain of soft-cores.
   2.144 + Every chain of soft-cores ends in a FIFO.
   2.145 + For this project, we will have 12 separate voices.
   2.146 + Therefore, there will be 12 soft-core chains, each with a FIFO at its end,
   2.147 + one for each voice.
   2.148 + Each of the 12 FIFOs leads to the mixer, which only begins operation once
   2.149 + all 12 FIFOs are full.
   2.150 + Because of the timing constraints we impose on our soft-cores, once every
   2.151 + FIFO has at least one sample, all 12 will forever more be able to supply
   2.152 + samples at 44khz.
   2.153 + The mixer therefore waits until all 12 FIFOs have elements and then reads
   2.154 + samples from all FIFOS at a rate of 44khz.
   2.155 + The mixer combines the samples through simple addition and scaling, creating
   2.156 + a single stream of sample data, which is sent back from the FPGA to the
   2.157 + host computer where we play the stream and/or save it to a file.
   2.158 + The mixer ensures that it outputs samples at a rate of 44khz by running
   2.159 + everything through its own internal buffer FIFO clocked at 44khz.
   2.160 +\end_layout
   2.161 +
   2.162 +\end_body
   2.163 +\end_document
     3.1 Binary file documents/AudioProcessing.pdf has changed