<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="Module.2003-12-08.2324">
	<name>DMT: Implementation</name>
	<metadata>
  <md:version>1.3</md:version>
  <md:created>2003/12/16 21:38:53 US/Central</md:created>
  <md:revised>2003/12/17 13:50:54.876 US/Central</md:revised>
  <md:authorlist>
    <md:author id="goof">
      <md:firstname>Chris</md:firstname>
      
      <md:surname>Sramek</md:surname>
      <md:email>goof@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="goof">
      <md:firstname>Chris</md:firstname>
      
      <md:surname>Sramek</md:surname>
      <md:email>goof@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  

  <md:abstract>Describes our implementation of a DMT system.</md:abstract>
</metadata>
	<content>
		<section id="sec1">
			<name>DMT System</name>
			<para id="simulate1"/>
		</section>
		<para id="simulate2">
       Our DMT system can be represented by the following block diagram:
    </para>
		<figure id="fig1">
			<name>Block Diagram</name>
			<media type="image/bmp" src="blockdiagram.jpg"/>
		</figure>
		<para id="simulate3"/>
		<para id="simulate7"><emphasis>Visit the following links to find out more about the particular subsystems:</emphasis></para>
		<list type="bulleted" id="list1">
			<item><link src="/content/m11722/latest">A/D &amp; D/A</link></item>
			<item><link src="/content/m11723/latest">Serial/Parallel, Parallel/Serial</link></item>
			<item><link src="/content/m11724/latest">Constellation Mapping</link></item>
			<item><link src="/content/m11725/latest">Mirror/IFFT, De-Mirror/FFT</link></item>
			<item><link src="/content/m11762/latest">Cyclic Prefix</link></item>
			<item><link src="/content/m11727/latest">The Channel</link></item>
			<item><link src="/content/m11728/latest">Equalization &amp; Approximation</link></item>
		</list>
		<section id="sec2">
			<name>Operation of the System</name>
			<para id="simulate4">  Before we talk about our implementation, we need to describe how DMT may be used to send and receive an analog signal:</para>
		</section>
		<para id="simulate5"><list type="bulleted" id="list2">
				<item>A sampled analog signal passes through an <link src="/content/m11722/latest">A/D converter</link> (<emphasis>Q</emphasis> bits/sample) where it is represented as a bitstream.</item>
				<item>The bitstream is divided into <emphasis>S</emphasis> length <emphasis>N</emphasis> parallel blocks with a <link src="/content/m11723/latest">serial-to-parallel converter</link>.</item>
				<item>Each block undergoes a <link src="/content/m11724/latest">constellation mapping</link>, where segments of bits (length B) are represented as single complex values in a constellation.</item>
				<item>The mapped blocks are <link src="/content/m11725/latest">mirrored</link> to give them conjugate symmetry (which increases their lengths to <emphasis>2N/B</emphasis>), then the IFFT of each block is taken.</item>
				<item> A <link src="/content/m11762/latest">cyclic prefix</link> (length <emphasis>C</emphasis>) is inserted at the beginning of each block to combat problems introduced by the channel.</item>
				<item>The blocks (now known as <term>symbols</term>) are <link src="/content/m11723/latest">concatenated</link> to form a length <emphasis>S(2N/B+C)</emphasis> time domain signal, which is transmitted into the <link src="/content/m11727/latest">channel</link>.</item>
				<item>On the other side of the <link src="/content/m11727/latest">channel</link>, the received signal  is again <link src="/content/m11723/latest">broken up</link> into <emphasis>S</emphasis> parallel blocks. </item>
				<item>The <link src="/content/m11762/latest">cyclic prefixes</link> are removed, the FFT of each block is taken and each is <link src="/content/m11725/latest">de-mirrored</link> so that the block length is once again <emphasis>N/B</emphasis>.</item>
				<item>Because the channel filtered the time domain signal and added noise, each block is <link src="/content/m11728/latest">equalized </link>through multiplication by the inverse transfer function of the channel (which is known by the receiver).</item>
				<item>The complex numbers in each block, which have been distorted by noise, are <link src="/content/m11728/latest">approximated</link> by values in the original constellation. A de-constellation mapping then occurs, which converts the complex values back to bits and increases the block length back to <emphasis>N</emphasis>.  </item>
				<item>The blocks of bits are <link src="/content/m11723/latest">concatenated</link> back into a single bitstream, which then undergoes a <link src="/content/m11722/latest">D/A conversion</link> back to a sampled analog signal. This is an approximation of the original signal.</item>
			</list><name/></para>
		<section id="sec3">
			<name>Implementation</name>
			<para id="simulate10"/>
		</section>
		<para id="simulate8">We implemented our DMT system through a collection of MATLAB functions.  Some of them, such as the IFFT and FFT, were standard built-in functions while others, such as the constellation mapping and approximation routines, were coded from scratch.  We directed the use of each function with a separate script, <code type="inline">run.m</code>, which allowed us to easily change input parameters.  The MATLAB code for each function can be found below:    </para>
		<para id="simulate11">MATLAB code used:<list type="bulleted" id="list3">
				<item><link src="run.m">run.m</link></item>
				<item><link src="constbuilder.m">constbuilder.m</link></item>
				<item><link src="a2d.m">a2d.m</link></item>
				<item><link src="constmap.m">constmap.m</link></item>
				<item><link src="series2parallel.m">series2parallel.m</link></item>
				<item><link src="mirror.m">mirror.m</link></item>
				<item><link src="cyclicpad.m">cyclicpad.m</link></item>
				<item><link src="matlaberr.m">matlaberr.m</link></item>
				<item><link src="parallel2series.m">parallel2series.m</link></item>
				<item><link src="channel.m">channel.m</link></item>
				<item><link src="decyclicpad.m">decyclicpad.m</link></item>
				<item><link src="filterchannel.m">filterchannel.m</link></item>
				<item><link src="demirror.m">demirror.m</link></item>
				<item><link src="approximate.m">approximate.m</link></item>
				<item><link src="deconstmap.m">deconstmap.m</link></item>
				<item><link src="d2a.m">d2a.m</link></item>
			</list></para>
		<para id="simulate9"><link src="/content/m11710/latest">Home</link>  |   Previous: <link src="/content/m11710/latest">Introduction</link>   |   Next: <link src="/content/m11729/latest">Results &amp; Conclusions</link></para>
	</content>
</document>
