Hardware Implemntation of OFDM Transimiter and Receeiver Using FPGA

Author
sattarsekhar 
Category
Documents

view
131 
download
6
Embed Size (px)
description
Transcript of Hardware Implemntation of OFDM Transimiter and Receeiver Using FPGA

Hardware Implementation of OFDM Transceiver Using FPGA

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
2
Thebes Academy
For
Communication Engineering

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
3
1. Mohamed Sami Habeb 2. Amera Fouad Galal 3. Moshera Ahmed Mohamed 4. Hend Ahmed Orabi 5. Mohamed Ashour Ghareeb 6. Hanem Nagi Zaki 7. Ahmed Saaed Saad 8. Mohamed Mahmod Emad

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
4
Acknowledgements
We wouldn't firstly be remiss if we fail to express our profound gratitude to Allah who always we asking for his assistance and we owing to him with any success and progress we made in our life.
This book was written during our fourth year time at the Department of Communications Engineering at Thebes Academy and basically describes our work and study in our graduation project.
Certainly, it could not have been written without the support and patience of many people.
In particular, we want to express our gratitude to our supervisor Professor Doctor /Ahmed ElShazly for all the valuable advice, encouragement, and discussions. The opportunity to work with him was a precious experience, he exerts all the effort and time to help us to learn, search, and do our best in this project.
At the end and the beginning, we thank our beloved families for their immeasurable support, encouragement, and patience while working on this project. Without their love and understanding, this book and our project would not have come to fruition.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
5
Table of Contents
ABSTRACT 8
List Of Figures 9
List Of Tables 11
CHAPTER 1: Orthogonal Frequency Division Multiplexing 12
1.1 Introduction 12
1.2 Digital communication system architecture 12
1.3 Orthogonal Frequency Division Multiplexing 13
1.4 Evolution of OFDM 14
1.4.1 HISTORY OF OFDM 14
1.5 Comparing FDM to OFDM 16
1.6 THE OFDM SYSTEM 17
1.7 ADVANTAGES AND DISADVANTAGES OF OFDM 18
1.8 APPLICATIONS OF OFDM 19
1.9 A TYPICAL OFDM SYSTEM 19
1.9.1 SCRAMBLER / DESCRAMBLER 21
1.9.2 REEDSOLOMON ENCODER / DECODER 21
1.9.3 CONVOLUTIONAL ENCODER / DECODER 21
1.9.4 INTERLEAVER / DEINTERLEAVER 22
1.9.5 CONSTELLATION MAPPER / DEMAPPER 22
1.9.6 INVERSE FAST FOURIER TRANSFORM / FAST FOURIER TRANSFORM
22
1.9.7 ADDITION / REMOVAL OF CYCLIC PREFIX 23
1.10 FIELD PROGRAMMABLE GATE ARRAY 23
1.11 VERILOG HARDWARE DESCRIPTION LANGUAGE 24
1.12 SYNTHESIS PROCESS IN VERILOG HDL 25
1.13 PROJECT OBJECTIVE 26
1.14 PROJECT SPECIFICATIONS 26

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
6
1.14.1 TRANSMITTER SPECIFICATIONS 28
1.14.2 RECEIVER SPECIFICATIONS 29
1.15 PROJECT DESIGN FLOW 29
1.16 PROJECT SCOPE 30
CHAPTER TWO : TRANSMITTER DESIGN AND IMPLEMENTATION 31
2.1 INTRODUCTION 31
2.2 OFDM SYSTEM HARDWARE ARCHITECTURE 31
2.3 THE TRANSMITTER 34
2.4 FIFO 35
2.5 SCRAMBLER 36
2.5.1 DESIGN OF SCRAMBLER 36
2.6 REED SOLOMON ENCODER 38
2.6.1 DESCRIPTION OF THE REED SOLOMON CODE 39
2.6.2 GALOIS FIELD ARITHMETIC 40
2.6.3 ENCODER DESIGN 43
2.7 CONVOLUTIONAL ENCODER 47
2.7.1 ENCODER DESIGN 48
2.8 INTERLEAVER 50
2.8.1 INTERLEAVER DESIGN 51
2.9 CONSTELLATION MAPPER 56
2.9.1 DESIGN OF CONSTELLATION MAPPER 57
2.10 INVERSE FAST FOURIER TRANSFORM 58
2.10.1 RADIX22 ALGORITHM 60 2.10.2 IFFT DESIGN 62
2.11 CYCLIC PREFIX ADDER 65
2.11.1 DESIGN OF CYCLIC PREFIX ADDER 66
CHAPTER THREE : RECEIVER DESIGN AND IMPLEMENTATION 67
3.1 INTRODUCTION 67
3.2 THE RECEIVER 67
3.3 CYCLIC PREFIX REMOVER 70

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
7
3.4 FAST FOURIER TRANSFORM 70
3.5 CONSTELLATION DEMAPPER 71
3.5.1 DESIGN OF CONSTELLATION DEMAPPER 71
3.6 DEINTERLEAVER 73
3.7 VITERBI DECODER 75
3.8 REED SOLOMON DECODER 76
3.9 DESCRAMBLER 76
CHAPTER FOUR : SIMULATION, SYNTHESIS AND RESULTS 78
4.1 INTRODUCTION 78
4.2 SIMULATION OF OFDM TRANSMITTER 78
4.2.1 SCRAMBLER 78
4.2.2 REED SOLOMON ENCODER 79
4.2.3 CONVOLUTIONAL ENCODER 79
4.2.4 INTERLEAVER 80
4.2.5 CONSTELLATION MAPPER 80
4.2.6 IFFT 81
4.2.7 CYCLIC PREFIX ADDER 82
4.3 SYNTHESIS OF OFDM TRANSMITTER 83
4.4 SIMULATION OF OFDM RECEIVER 83
4.4.1 CONSTELLATION DEMAPPER 83
4.4.2 DEINTERLEAVER 84
4.4.3 DESCRAMBLER 84
4.5 SYNTHESIS OF OFDM RECEIVER 85
References 86
APPENDIX A : RTL CODE IN VERILOG FOR OFDM TRANSMITTER 89
APPENDIX B : RTL CODE IN VERILOG FOR OFDM RECEIVER 114

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
8
Hardware Implementation of OFDM Transceiver Using FPGA
Abstract Orthogonal Frequency Division Multiplexing (OFDM) is a multi carrier modulation technique. It provides high bandwidth efficiency because the carriers are orthogonal to each other and multiple carriers share the data among themselves. The main advantage of this transmission technique is its robustness to channel fading in wireless communication environment. The main objective of this project is to design and implement a baseband OFDM transmitter and receiver. The implementation has been carried out in hardware using Field Programmable Gate Array (FPGA). Both the transmitter and the receiver are implemented on a single FPGA board with the channel being a wired one. The FPGA board used is Alteras Cyclone III starter board which contains 24,600 logic elements. The designing has been done in Verilog HDL. Modelsim 6.1e has been used to simulate the design. Input to the system is given using computers serial port. NI Labview has been used to do the serial port interfacing. The output of the transmitter has been compared with the output of MATLAB for the same OFDM system modeled in MATLAB. The data obtained at the output of the transmitter is fed to the PC using serial port and is converted to complex numbers because MATLAB gives output in the form of complex numbers. Although error correction schemes have been employed in the transmitter and the receiver but as the channel are a wired one, and hence there is no ISI or other channel impairments, therefore errors dont occur. Therefore, only the proper operation of the OFDM system has been aimed to achieve.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
9
List of Figures
1.1 A typical digital communication system 12
1.2 Spectrum overlap in OFDM 14
1.3 Complete OFDM system 20
1.4 FPGA design flow 24
1.5 Synthesis Process in Verilog Environment 25
1.6 Top level architecture of the proposed OFDM system 27
1.7 OFDM transmitters toplevel architecture 28
1.8 OFDM receivers toplevel architecture 29
1.9 Project design flow 30
2.1 Serial communication format (8 bit data + start bit + stop bit) 31
2.2 Complete Architecture of the proposed OFDM system (transmitter highlighted) 32
2.3 I/O view of the OFDM system 33
2.4 I/O diagram of the transmitter 34
2.5 Scrambler I/O diagram 36
2.6 Scrambler logic diagram 37
2.7 Circuit diagram of Scrambler 38
2.8 RS (n, k) code 40
2.9 Toplevel structure of the Reed Solomon Encoder 44
2.10 Detailed architecture of Reed Solomon Encoder 45
2.11 Galois Field multiplier and adder 46
2.12 Convolutional Encoder I/O Diagram 48
2.13 Convolutional Encoder: Circuit Diagram 49
2.14 Interleaving concept 50
2.15 Interleaver I/O diagram (A toplevel architecture) 51
2.16 Circuit diagram of Interleaver 54
2.17 QPSK constellation diagram 56
2.18 Constellation Mapper 58

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
10
2.19 Radix4 FFT butterfly 61
2.20 Radix2 FFT Butterfly 62
2.21 IFFT I/O diagram 63
2.22 Architecture of 64point24 FFT 64 2.23 bf2i and bf2ii radix 2 butterflies 64
2.24 Top level architecture of cyclic prefix adder 66
3.1 I/O diagram of the OFDM receiver 67
3.2 Complete Architecture of the proposed OFDM system (receiver highlighted) 69
3.3 FFT 70
3.4 QPSK constellation diagram 71
3.5 I/O diagram of constellation demapper 72
3.6 Verilog code showing the logic behind implementation of constellation demapper 73
3.7 Descrambler I/O diagram 76
3.8 Descrambler logic diagram 77
4.1 Scrambler simulation results 78
4.2 Solomon Encoder simulation results 79
4.3 Simulation Waveform of the Convolutional Encoder 80
4.4 Constellation Mapper simulation results 81
4.5 IFFT simulation results 81
4.6 Cyclic Prefix Adder simulation result 82
4.7 constellation DEMAPPER simulation results 84
4.8 Scrambler simulation results 84

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
11
List of Tables
1.1 A Brief History of OFDM 14
2.1 OFDM system signal descriptions 33
2.2 Transmitter signal descriptions 35
2.3 Scrambler signal descriptions 36
2.4 Elements of GF (24) and their binary equivalents 42 2.5 Signal descriptions for Reed Solomon Encoder 44
2.6 Signal descriptions for Convolutional Encoder 48
2.7 Signal descriptions for Interleaver 51
2.8 Contents of Address ROM (in Interleaver) 54
2.9 Mapping of bits to constellation points 57
2.10 Contents of the ROM (in Constellation Mapper) 57
2.11 Signal descriptions for Constellation Mapper 58
2.12 Signal descriptions for IFFT 63
2.13 Signal descriptions for CYCLIC PREFIX 66
3.1 OFDM Receiver signal descriptions 68
3.2 Data points mapped to constellation points 71
3.3 Signal descriptions for Constellation Demapper 72
3.4 Contents of Address ROM (in DeInterleaver) 74
3.5 Descrambler signal descriptions 76
4.1 Important Synthesis results for OFDM Transmitter 83
4.2 Important Synthesis results for OFDM Receiver 85

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
12
Chapter One
1.1 INTRODUCTION Demand for broadband access is increasing at a quick rate, and at the same time, is not limited to areas that already have an existing high quality infrastructure. For instance, developing countries and rural areas may not have the existing telecom infrastructure or the existing connections, typically over copper, to meet the requirements of Digital Subscriber Line (DSL) technology. Furthermore, it is expected that users will require more bandwidth on the move. While current technologies can meet this bandwidth demand, the useful range is limited. This limitation opens up opportunities for technologies such as Orthogonal Frequency Division Multiplexing.
1.2 DIGITAL COMMUNICATION SYSTEM ARCHITECTURE OFDM is a digital modulation technique; therefore an introduction to digital communication systems is being provided. A digital communication system involves the transmission of information in digital form from one point to another point a shown in Figure 1.1.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
13
The three basic elements in a communication system are transmitter, channel and receiver. The source of information is the messages that are to be transmitted to the other end in the receiver. A transmitter can consist of source encoder, channel coder and modulation. Source encoder provides an efficient representation of the information through which the resources are conserved. A channel coder may include error detection and correction code. A modulation process then converts the base band signal into band pass signal before transmission. During transmission, the signal experiences impairment which attenuates the signals amplitude and distort signals phase. Also, the signals transmitting through a channel also impaired by noise, which is assumed to be Gaussian distributed component. At the receiving end, the reversed order of the steps taken in the transmitter is performed. Ideally, the same information must be decoded at the receiving end.
1.3 ORTHOGONAL FREQUENCY DIVISION MULTIPLEXING Orthogonal frequency division multiplexing (OFDM) is a multicarrier digital modulation technique that has been recognized as an excellent method for high speed bidirectional wireless data communication. OFDM effectively squeezes multiple modulated carriers tightly together, reducing the required bandwidth but keeping the modulated signals orthogonal so they do not interfere with each other. OFDM is similar to FDM but much more spectrally efficient by spacing the subchannels much closer together (until they are actually overlapping) [1]. This is done by finding frequencies that are orthogonal, which means that they are perpendicular in a mathematical sense, allowing the spectrum of each subchannel to overlap another without interfering with it. In Figure 1.2 the effect of this is seen, as the required bandwidth is greatly reduced by removing guard bands (which are present in FDM) and allowing signals to overlap.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
14
1.4 EVOLUTION OF OFDM OFDM can be viewed as a collection of transmission techniques. When this technique is applied in wireless environment, it is referred to as OFDM. In the wired environment, such as asymmetric digital subscriber lines (ADSL), it is referred as discrete multi tone (DMT). In OFDM, each carrier is orthogonal to all other carriers. However, this condition is not always maintained in DMT [8]. OFDM is an optimal version of multi carrier transmission schemes.
1.4.1 HISTORY OF OFDM
Although OFDM has become widely used only recently, the concept dates back some 40 years. Following table cites some landmark dates in the history of OFDM.
Table 1.1 a Brief History of OFDM
Year Event

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
15
1966
Chang shows that multicarrier modulation can solve the Multipath problem without reducing data rate [10]. This is generally considered the first official publication on multicarrier modulation. Some earlier work was Holsingers 1964 MIT dissertation [9] and some of Gallagers early work on waterfilling [11].
1971
Weinstein and Ebert show that multicarrier modulation can be accomplished using a DFT [12].
1985
Cimini at Bell Labs identifies many of the key issues in OFDM transmission and does a proofofconcept design [13].
1993
DSL adopts OFDM, also called discret multitone, following successful field trials /competitions at Bellcore versu equalizerbase systems.
1999
The IEEE 802.11 committee on wireless LANs releases the 802.11a standard for OFDM operation in 5GHz UNI band.
2002
The IEEE 802.16 committee releases an OFDMbased standard for wireless broadband access for metropolitan are networks under revision 802.16a.
2003
The IEEE 802.11 committee releases the 802.11g standard for operation in the 2.4GHz band.
2003
The multiband OFDM standard for ultra wideband is developed, showing OFDMs usefulness in lowSNR systems.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
16
1.5 Comparing FDM to OFDM Frequency Division Multiplexing (FDM) is also a form of the multichannel transmission. The use of Frequency Division Multiplexing (FDM) goes back over a long period of time, where more than one low rate signal, such as telegraph, was carrier over a relatively wide bandwidth channel using a separate carrier frequency for each signal [1]. To facilitate separation of the signals at the receiver, the carrier frequencies were spaced sufficiently far apart so that the signal spectra did not overlap. Empty spectral regions between the signals assured that they could be separated with readily realizable filters. The resulting spectral efficiency was therefore quite low.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
17
1.6 THE OFDM SYSTEM
A detailed explanation of the OFDM system was given in the previous chapter; in which different building blocks of an OFDM communication system were discussed Following is a brief review of those concepts. In 1971 Discrete Fourier Transform (DFT) was used in baseband modulation/demodulation in order to achieve orthogonality7. Since DFT has heavy computational requirements, therefore, Fast Fourier Transform (FFT) was utilized. For an N point discrete Fourier Transform the required number of computations is 2, but that for FFT is (N log (N)), which is much lesser than DFT. In this way the problem of bandwidth inefficiency due to the placement of guard bands between subchannels was solved and a new technique Orthogonal Frequency Division Multiplexing came into being. As OFDM is a multicarrier modulation technique, therefore, the input data I split and mapped onto different subcarriers. Each carrier is modulated using one of the single carrier modulation techniques discussed above. The OFDM system successful avoids any interchannel interference (ICI) because the

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
18
carriers are kept orthogonal. In addition, a cyclic prefix (CP) is added before the start of each transmitted symbol to act as a guard period preventing intersymbol interference (ISI), provided that the delay spread in the channel is less than the guard period [17]. This guard period is specified in terms of the fraction of the number of samples that make up a symbol.
1.7 ADVANTAGES AND DISADVANTAGES OF OFDM Another advantage of OFDM is its resilience to Multipath, which is the effect of multiple reflected signals hitting the receiver. This results in interference a frequencyselective fading which OFDM is able to overcome by utilizing its parallel, slow bandwidth nature. This makes OFDM ideal to handle the harsh conditions of the mobile wireless environment. The introduction of cyclic prefix made OFDM system resistant to time dispersion [18]. OFDM symbol rate is low since a data stream is divided into several parallel streams before transmission. This make the fading is slow enough for the channel to be considered as constant during one OFDM symbol interval. Cyclic prefix is a crucial feature of OFDM used to combat the intersymbol interference (ISI) and interchannelinterference (ICI) introduced by the multipath channel through which the signal is propagated [1]. The basic idea is to replicate part of the OFDM time domain waveform from the back to the front to create a guard period. The duration of the guard period should be longer than the worstcase delay spread of the target multipath environment. The use of a cyclic prefix instead of a plain guard interval, simplifies the channel equalization in the demodulator. In wire system, OFDM system can offer an efficient bit loading technique [1]. It enables a system to allocate different number of bits to different sub channels

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
19
based on their individual SNR. Hence, an efficient transmission can be achieved. One of the major disadvantages of OFDM is its requirement for high peakto average power ratio (PAPR) [6]. This put high demand on linearity in amplifiers. Second, the synchronization error can destroy the orthogonality and cause interference. Phase noise error and Doppler shift can cause degradation to OFDM system [1]. A lot of effort is required to design accurate frequency synchronizers for OFDM. OFDMs high spectral efficiency and resistance to Multipath make it an extremely suitable technology to meet the demands of wireless data traffic. This has made it not only ideal for such new technologies like WiMAX and WiFi but also currently one of the prime technologies being considered for use in future fourth generation (4G) networks.
1.8 APPLICATIONS OF OFDM Initially, OFDM applications are scarce because of their implementation complexity. Now, OFDM has been adopted as the new European digital audio broadcasting (DAB) standard and for terrestrial digital video broadcasting (DVB) [19]. In fixedwire applications, OFDM is employed in asynchronous digital subscriber line (ADSL) and high bitrate digital subscriber line (HDSL) systems. It has been proposed for power line communications systems as well due to its resilience to dispersive channel and narrow band interference. It has been employed in WiMAX a well.
1.9 A TYPICAL OFDM SYSTEM Figure 1.3 shows a detailed OFDM communications system. Each block is briefly defined below:

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
20

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
21
1.9.1 SCRAMBLER / DESCRAMBLER Data bits are given to the transmitter as inputs. These bits pass through a scrambler that randomizes the bit sequence. This is done in order to make the input sequence more disperse so that the dependence of input signals power spectrum on the actual transmitted data can be eliminated [2]. At the receiver end descrambling is the last step. Descrambler simply recovers original data bits from the scrambled bits.
1.9.2 REEDSOLOMON ENCODER / DECODER The scrambled bits are then fed to the Reed Solomon Encoder which is a part of Forward Error Correction (FEC). Reed Solomon coding is an errorcorrection coding technique. Input data is oversampled and parity symbols are calculated which are then appended with original data [3]. In this way redundant bits are added to the actual message which provides immunity against severe channel conditions. A Reed Solomon code is represented in the form RS (n, k), where
Here m is the number of bits per symbol, k is the number of input data symbols (to be encoded), n is the total number of symbols (data + parity) in the RS codeword and t is the maximum number of data symbols that can be corrected. At the receiver Reed Solomon coded symbols are decoded by removing parity symbols.
1.9.3 CONVOLUTIONAL ENCODER / DECODER Reed Solomon errorcoded bits are further coded by Convolutional encoder. This coder adds redundant bits as well. In this type of coding technique each m bit symbol is transformed into an n bit symbol; m/n is known as the code rate. This transformation of m bit symbol into n bit symbol depends upon the last k

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
22
data symbols, therefore k is known as the constraint length of the Convolution code [4]. Viterbi algorithm is used to decode convolutionaly encoded bits at the receiver side. Viterbi decoding algorithm is most suitable for Convolutional codes with k10.
1.9.4 INTERLEAVER / DEINTERLEAVER Interleaving is done to protect the data from burst errors during transmission. Conceptually, the incoming bit stream is rearranged so that adjacent bits are no more adjacent to each other. The data is broken into blocks and the bits within a block are rearranged [5]. Talking in terms of OFDM, the bits within an OFDM symbol are rearranged in such a fashion so that adjacent bits are placed on nonadjacent subcarriers. As far as DeInterleaving is concerned, it again rearranges the bits into original form during reception.
1.9.5 CONSTELLATION MAPPER / DEMAPPER The Constellation Mapper basically maps the incoming (interleaved) bits onto different subcarriers. Different modulation techniques can be employed (such as QPSK, BPSK, QAM etc.) for different subcarriers. The DeMapper simply extracts bits from the modulated symbols at the receiver.
1.9.6 INVERSE FAST FOURIER TRANSFORM / FAST FOURIER TRANSFORM
This is the most important block in the OFDM communication system. It is IFFT that basically gives OFDM its orthogonality [1]. The IFFT transform a spectrum (amplitude and phase of each component) into a time domain signal. It converts a number of complex data points into the same number of points in time domain. Similarly, FFT at the receiver side performs the reverse task i.e. conversion from time domain back to frequency domain.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
23
1.9.7 ADDITION / REMOVAL OF CYCLIC PREFIX In order to preserve the subcarrier orthogonality and the independence of subsequent OFDM symbols, a cyclic guard interval is introduced. The guard period is specified in terms of the fraction of the number of samples that make up an OFDM symbol. The cyclic prefix contains a copy of the end of the forthcoming symbol. Addition of cyclic prefix results in circular convolution between the transmitted signal and the channel impulse response. Frequency domain equivalent of circular convolution is simply the multiplication of transmitted signals frequency response and channel frequency response, therefore received signal is only a scaled version of transmitted signal (in frequency domain), hence distortions due to severe channel conditions are eliminated [6]. Removal of cyclic prefix is then done at the receiver end and the cyclic prefixfree signal is passed through the various blocks of the receiver.
1.10 FIELD PROGRAMMABLE GATE ARRAY By modern standards, a logic circuit with 20000 gates is common. In order to implement large circuits, it is convenient to use a type of chip that has a large logic capacity. A field programmable gate arrays (FPGA) is a programmable logic device that support implementation of relatively large logic circuits [6]. FPGA is different from other logic technologies like CPLD and SPLD because FPGA does not contain AND or OR planes. Instead, FPGA consists of logic blocks for implementing required functions. An FPGA contains 3 main types of resources: logic blocks, I/O blocks for connecting to the pins of the package, and interconnection wires and switches. The logic blocks are arranged in a twodimensional array, and the interconnection wires are organized as horizontal and vertical routing channels between rows and columns of logic blocks [7]. The routing channels contain wires and programmable switches that allow the logic blocks to be interconnected in many ways. FPGA can be used to implement logic circuits of more than a few hundred thousand equivalent gates

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
24
in size [7]. Equivalent gates is a way to quantify a circuits size by assuming that the circuit is to be built using only simple logic gate and then estimating how many of these gates are needed.
Figure 1.4 gives a clear picture of the FPGA design flow.
1.11 VERILOG HARDWARE DESCRIPTION LANGUAGE
Verilog HDL is one of the two most common Hardware Description Languages (HDL) used by integrated circuit (IC) designers. The other one is VHDL. HDL allows the design to be simulated earlier in the design cycle in order to correct errors or experiment with different architectures. Designs described in HDL are technologyindependent, easy to design and debug, and are usually more readable than schematics, particularly for large circuits. Verilog can be used to describe designs at four levels of abstraction [20]:
i. Algorithmic level (much like c code with if, case and loop statements).

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
25
ii. Register transfer level (RTL uses registers connected by Boolean equations).
iii. Gate level (interconnected AND, NOR etc.). iv. Switch level (the switches are MOS transistors inside gates).
The language also defines constructs that can be used to control the input and output of simulation. More recently Verilog is used as an input for synthesis programs which will generate a gatelevel description (a netlist) for the circuit. Some Verilog constructs are not synthesizable. Also the way the code is written will greatly affect the size and speed of the synthesized circuit.
1.12 SYNTHESIS PROCESS IN VERILOG HDL
Synthesis is to construct a gatelevel net list from a model of a circuit described in Verilog. The synthesis process is described in diagram below.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
26
A synthesis program may generate an RTL net list, which consists of registertransfer level blocks such as flipflops, arithmeticlogicunits and multiplexers interconnected by wires. All these are performed by RTL module builder. This builder is to build or acquire from a library predefined components, each of the required RTL blocks in the user specified target technology. The above synthesis process may produce an unoptimized gate level net list. A logic optimizer can use the produced net list and the constraint specified to produce an optimized gate level net list. This net list can be programmed directly into a FPGA chip.
1.13 PROJECT OBJECTIVE
The objective of this project is to carry out an efficient implementation of the OFDM system (i.e. transmitter and receiver) using Field Programmable Gate Array (FPGA). FPGA has been chosen as the target platform because OFDM has large arithmetic processing requirements which can become prohibitive if implemented in software on a Digital Signal Processor (DSP) [7]. However, the highly pipelined nature of much of the processing lends itself well to a hardware implementation. In addition, FPGA implementation has the added advantage of allowing late modifications in response to real world performance evaluation.
1.14 PROJECT SPECIFICATIONS
The complete OFDM system, comprising of the transmitter and the receiver, has been implemented on a single FPGA board. The overall specifications are as follows:
FPGA board: Altera Cyclone III starter board (24,600 logic elements) HSMC to Santa Cruz daughter card (from TERASIC) for serial port
communication Data Input and output: PCs serial port

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
27
Software used in the host PC: NI LabView 7.1 Software model of the OFDM system created in MATLAB Verilog used as the hardware description language. ModelSim 6.1 used for simulation of the design. Quartus II used to map the design to targeted device (Altera Cyclone III).
Top level architecture of the proposed OFDM system is shown in Figure 1.6. It is very challenging on how software algorithm may be mapped to hardware logic. A variable may correspond to a wire or a register depending on its application and sometimes an operator can be mapped to hardware like adders, latches, multiplexers etc.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
28
1.14.1 TRANSMITTER SPECIFICATIONS Figure 1.7 shows a toplevel block diagram of the OFDM transmitter. SingleClock operation speaks itself for the synchronous operation of the system. The Reset input must be asserted for at least one clock cycle for the system to reset. Output of the transmitter is fed to the host PC via the serial port and also to the OFDM receiver.
Specifications are listed below: OFDM with 64 subcarriers (all data subcarriers) All the subcarriers are modulated using QPSK IFFT: 64point. Implemented using FFT radix 22 algorithm Channel coding: Reed Solomon code + Convolutional code Reed Solomon Encoder: RS (15, 9) Convolutional Encoder: m=1, n=2, k=7. Code rate = Block Interleaver and 1/8 Cyclic Prefix

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
29
1.14.2 RECEIVER SPECIFICATIONS In figure 1.8 a top level block diagram of the receiver is shown. Its specifications are same as that of the transmitter. Here the recovered (demodulated data would be fed to the serial port.
1.15 PROJECT DESIGN FLOW The design procedure consists of following steps:
Creating a top level design of the complete system Determining the basic operation of each block and creating the
appropriate logic I/O integration of the various logic blocks Description of design functionality using Verilog hardware description
language Modelsim is used to simulate the design functionality and to report errors
I desired behavior of the design

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
30
Synthesis of the defined hardware is done which includes slack optimization power optimizations followed by placement and routing
FPGA bit stream file is fed to the hardware Input is given to the system through the PCs RS232 and hardware is
tested
1.16 PROJECT SCOPE Factors such as data rate, allowable bit rate of the input, code rate of the Forward Error correction stage and noise immunity can well define the scope of this project. These factors have been discussed in detail in the subsequent chapters.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
31
Chapter Two TRANSMITTER DESIGN AND IMPLEMENTATION
2.1 INTRODUCTION The proposed OFDM system consists of an OFDM baseband transmitter and an OFDM baseband receiver. This chapter gives details on the complete architecture of the proposed design and elaborates further on the design and implementation of the transmitter portion of the project. The transmitter gets its input from the serial port of the host PC. An input stream is sent as input to the transmitter that modulates the incoming stream by splitting it and putting it onto separate subcarriers (64 in our case). The modulated data after passing through various blocks is given as input to the receiver and also sent back to the host PC (via serial port) for demonstration purposes.
2.2 OFDM SYSTEM HARDWARE ARCHITECTURE Implementation of the proposed system has been done on Alteras Cyclone III starter board. This board does not have a serial port therefore we used an HSMC to Santa Cruz daughter card (from TERASIC). This daughter card contains an Altera standard HSMC connector and a serial port. The HSMC connector plugs into the HSMC connector present on the Cyclone III board, thereby providing an RS232 physical connection to the FPGA board. An RS232 receiving module takes the serial stream and extracts the 8 bit payload by removing the start and stop bits. Figure 2.1 shows the format of data stream in serial communications (RS232 standard).

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
32
The 1byte data from the RS232 receiver is stored in a FIFO register. Data from the FIFO is given (bit by bit) to the transmitter module. Figure 2.2 depicts the hardware architecture of the project highlighting only the transmitter portion.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
33
We can see that the modulated output from the transmitter is fed into another FIFO, and then taken out into the RS232 transmitter (byte by byte) that prepares the data for serial transmission over the RS232 interface by adding start and stop bits. The baud rate on which the serial port is operating is 115.2 kbps. There is a 50 MHz onboard clock source which in conjunction with the PLL core (provided with the Quartus II software) can be used to produce any clock frequency. The output of the PLL then provides clock(s) to all the modules. Figure 2.3 shows an I/O view of the proposed system and Table 2.1 gives a description of the input and output signals of the OFDM system.
Table 2.1 OFDM system signal descriptions

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
34
2.3 THE TRANSMITTER Figure 2.2 shows the various building blocks of the transmitter. The control unit synchronizes the operation all the blocks in order to avoid any timing mismatches. Each one of these blocks will be discussed in detail in the subsequent sections. As mentioned above, the transmitter gets its input from the FIFO register one bit per clock cycle. This implies that the input to the transmitter is I bit wide. It is only when the FIFO is full that the transmitter starts extracting data from it. Similarly when the FIFO gets empty the transmitter stops taking data from it. Therefore, the transmitter makes use of certain control and status signals provided by the FIFO to determine when to ask the FIFO for data and when to stop taking input data. In a similar fashion, the output of the transmitter is also stored in a FIFO register. In order for this FIFO to determine when to start storing output data from the transmitter, the transmitter provides a status signal that tells this FIFO that data is present on the output lines. Figure 2.4 shows the I/O diagram for the transmitter and Table 2.2 gives the description of the signals in and out of the transmitter.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
35
Table 2.2 Transmitter signal descriptions
2.4 FIFO First In First Out is a popular data structure (also known as queue) that is used for buffering in order to provide flow control. We obtained the FIFO from Alteras Megafunction Wizard (Quartus II). This parameterized Megafunction allows creating FIFOs of any width and depth with various options of control and status signals. Using technology specific modules allows for quick prototyping of the design. Hence all we had to do was to provide appropriate parameters and interface the Megafunction in our design. Now the following sections describe the various building blocks of the OFDM transmitter as shown in Figure 2.2. The functions of these blocks and their role in the OFDM system were briefly discussed in Chapter 1; therefore here the hardware implementation details of these blocks are being discussed.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
36
2.5 SCRAMBLER A scrambler (often referred to as a randomizer) is a device that manipulates a data stream before transmitting. The purpose of scrambling is to eliminate the dependence of a signals power spectrum upon the actual transmitted data and making it more disperse to meet maximum power spectral density requirements, because if the power is concentrated in a narrow frequency band, it can interfere with adjacent channels [14]. It also used to eliminate long sequences consisting of '0' or '1'.
2.5.1 DESIGN OF SCRAMBLER Figure 2.5 shows the input/output parameters of the Scrambler. Input bus is 1 bit wide and arst_n is the asynchronous reset input. A negative edge on the arst_n input resets the Scrambler. A bit is latched in at the positive edge of the clock. See Table 3.3 for a description of the signals.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
37
Scramblers can be implemented using a Linear Feedback Shift Register (LFSR) [9]. An LFSR is a simple register composed of memory elements (flipflops) and modulo2 adders (i.e. XOR gates). Feedback is taken from two or more memory elements, which are XORed and fed back to the first stage (memory element) of the LFSR. In the proposed design, a standard 7 bit scrambler has been used to randomize the incoming bits. An initial seed value is stored in the LFSR when arst_n is asserted; this value may be any random bit string except for all zeroes or all ones. If the initial seed contains all zeroes or all ones then the LFSR is locked in a state where every output value is same i.e. either one or zero.
Figure 2.6 shows the basic construction of the scrambler. A feedback output, which is actually the modulo2 added result of the contents of memory elements 4 and 7, is XORed with the input and the result is designated as output and it is also shifted into the first stage. These memory elements are actually flipflops (Dflip flops are used here); with the output of each flip flop acting as the input for the next flip flop.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
38
Figure 2.7 shows, in detail, the circuit diagram of the scrambler. We can see that the reset (arst_n) is asserted on the negative edge, this is shown by the bubble at the reset pins of the flipflops.
2.6 REED SOLOMON ENCODER
Reed Solomon forward error correcting codes have become commonplace in modern digital communications. Although invented in 1960 by Irving Reed and Gustave Solomon, then working at MIT Lincoln Labs [21], it was many years before technology caught up and was able to provide efficient hardware implementations. Versions of Reed Solomon codes are now used in error correction systems found just about everywhere, including [232:
Storage devices (hard disks, compact disks, DVD, barcodes) Wireless communications (mobile phones, microwave links) Digital television Satellite communications (including deep space
missions like Voyager) Broadband modems (ADSL, xDSL etc)

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
39
2.6.1 DESCRIPTION OF THE REED SOLOMON CODE Reed Solomon codes work by adding extra information (redundancy) to the original data. The encoded data can then be stored or transmitted. When the encoded data is recovered it may have errors introduced, for instance by scratches on the CD, imperfections on a hard disk surface or radio frequency interference with mobile phone reception. The added redundancy allows a decoder (with certain restrictions) to detect which parts of the received data are corrupted, and correct them [22]. The number of errors the code can correct depends on the amount of redundancy added. RS codes are a systematic linear block code. It is a block code because the code is put together by splitting the original message into fixed length blocks. Each block is further sub divided into mbit symbols [22]. Each symbol is a fixed width, usually 3 to 8 bits wide. In the proposed design, each symbol is 4 bits wide. The linear nature of the codes ensures that in practice every possible mbit word is a valid symbol. For instance with an 4bit code all possible 4 bit words are valid for encoding, and you don't have to worry about what data you are transmitting. Systematic means that the encoded data consists of the original data with the extra 'parity' symbols appended to it [22]. An RS code is partially specified as an RS (n, k) with mbit symbols, where
Where m is the number of bits per symbol, k is the number of input data symbols (to be encoded), n is the total number of symbols (data + parity) in the RS codeword and t is the maximum number of data symbols that can be corrected. The difference nk (usually called 2t) is the number of parity symbols that have been appended to make the encoded block.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
40
In the proposed design n=15 and k=9 represented by RS (15, 9). It gives m=4 and t=3. Therefore, each symbol is 4 bits wide and a maximum of 3 symbols can be corrected in the decoder. Figure 2.8 graphically represents an n symbol code showing the parity and data portions.
The power of Reed Solomon codes lies in being able to just as easily correct a corrupted symbol with a single bit error as it can correct a symbol with all its bits in error. This makes RS codes particularly suitable for correcting burst errors. Usually the encoded data is transmitted or stored as a sequence of bits. In the proposed design up to 12 bits could be corrupted affecting at most 3 symbols, and the original message could still be recovered. However it does mean that RS codes are relatively sensitive to evenly spaced errors.
2.6.2 GALOIS FIELD ARITHMETIC Reed Solomon codes are based on finite fields, often called Galois fields. Rather than look at individual numbers and equations, the approach of modern mathematicians is to look at all the numbers that can be obtained from some given initial collection by using operators such as addition, subtraction, multiplication and division. The resulting collection is called a field. Some fields, like the set of integers, are infinite. Galois fields have the useful property that any operation on an element of the field will always result in another element of the field [23]. The field is also finite,

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
41
so it can be fully represented by a fixed length binary word. An arithmetic operation that, in traditional mathematics, results in a value out of the field gets mapped back in to the field  it's a form of modulo arithmetic [23]. Galois arithmetic has very little to do with counting things, 2+2 is not necessarily 4. For ease of handling the Galois field elements are often called by their binary equivalent, but this can be misleading. There are many Galois fields, and part of the RS specification is to define which field is used. Galois arithmetic is ideally suited to hardware implementation [23]. Addition and subtraction consists of simply XORing two symbols together. Multiplication is a little more difficult, (as always) but can be done using purely combinational logic. An RS code with 4 bit symbols will use a Galois field GF (24), consisting of 16 symbols. Thus every possible 4 bit value is in the field. The order in which the symbols appear depends on the primitive polynomial [23]. This polynomial is used in a simple iterative algorithm to generate each element of the field. Different polynomials will generate different fields. The primitive polynomial used in the proposed design for GF (24) is,
The elements of the Galois field GF (24) are generated by using this primitive polynomial. The symbol is used to give the power representation of each element.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
42
These values are calculated by substituting for X in the primitive polynomial such that,
This will give the value of 4, and for the value of 5 we write,
Similarly the rest of the elements are calculated. The final parameter that is used to generate RS codes is the generator polynomial [23]. This polynomial is of order 2t (6 in our case). It is obtained as follows,

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
43
For our case (i.e. RS (15, 9) and 2t=6) the generator polynomial turns out to be,
Given n, k, the symbol width m, the Galois field primitive polynomial P and the generator polynomial G, the ReedSolomon code is fully specified.
2.6.3 ENCODER DESIGN Since the code is systematic, the whole of the block can be read into the encoder, and then output the other side without alteration. Once the kth data symbol has been read in, the parity symbol calculation is finished, and the parity symbols can be output to give the full n symbols. The idea of the parity words is to create a long polynomial (n coefficients long it contains the message and the parity) which can be divided exactly by the RS generator polynomial. That way, at the decoder the received message block can be divided by the RS generator polynomial. If the remainder of the division is zero, then no errors are detected. If there is a remainder, then there are errors. Dividing a polynomial by another is not conceptually easy, but if you follow the mathematics in some of the references it is not too hard to understand. The encoder acts to divide the polynomial represented by the k message symbols D(x) by the RS generator polynomial G(x). Figure 2.9 (on next page) depicts the top level architecture of the proposed Reed Solomon Encoder. This is a bitserial Reed Solomon Encoder which means that its input bus is one bit wide. One bit is latched per positive edge of the clock. Having 4 bits per symbol makes it clear that 4 clock cycles are required to input a symbol. arst_n is the same asynchronous reset signal as in Scrambler.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
44
The encoder contains the following three building blocks (as shown in Figure 3.5):
Shift Registers Galois field addition and multiplication Redundancy interval controller

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
45
This block contains 2t shift registers each m bits wide. Therefore, for our case there would be 6 shift registers each 4 bits wide. One of these six registers has parallel loading capability as well. Figure 2.10 is a detailed architecture of Reed Solomon Encoder. It is seen that the reset and clock signals are not shown. We can see the six shift registers. The output of each register becomes the shift input of the next register stage. An exception is Reg5; its output is XORed with the input data bit and then ANDed with the compliment of redundancy interval bit (red), and then this output of the AND gate becomes the shift input for Reg4. Outputs of these registers act as inputs for the Galois Field block described next.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
46
The Galois Field Adder and Multiplier block performs all the Galois Field arithmetic functions. Figure 2.11 depicts the internal architecture of the GF multiplier and adder. It works as follows: R0 to R5 are basically register outputs that are shifted out into the GF circuit (as shown in figure 3.6). This circuit basically multiplies contents of each register with a constant multiplier which is established by connections to the XOR gates. For instance, R1 is connected to 2nd and 4th XOR gates so R1 is multiplied by 0101 which is 9 and is also a coefficient of the generator polynomial. In this way every register is multiplied by the corresponding coefficient of the generator polynomial. Hence after these multiplications the products are added. This process takes four clock cycles and in the fourth cycle the result is loaded into R5 as shown in figure 2.10.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
47
Figure 2.10 shows how the Redundancy interval controller is connected to the main circuit. For the first 36 clock cycles (9x4) the redundancy signal (given the name red in figure 2.10) is low and data bits go into the circuit and through the multiplexer as well. But after that the red signal goes high allowing the parity bits to pass through the multiplexer. Redundancy is the name given to the interval during which data bits are not allowed to get into the circuit and parity bits are brought out. To achieve this, a 6bit counter is employed. Using this counter a high output is obtained when the counter counts 36 and it is brought back to low when it counts 60 (36+24).
2.7 CONVOLUTIONAL ENCODER Convolutional coding is part of the Forward Error Correction (FEC) done in communication systems. The purpose of forward error correction (FEC) is to improve the capacity of a channel by adding some carefully designed redundant information to the data being transmitted through the channel [4]. The process of adding this redundant information is known as channel coding [4]. Convolutional codes operate on serial data, one or a few bits at a time. There are a variety of useful Convolutional, and a variety of algorithms for decoding the received coded information sequences to recover the original data. Convolutional codes are usually described using two parameters: the code rate and the constraint length. The code rate, m/n, is expressed as a ratio of the number of bits into the Convolutional encoder (m) to the number of channel symbols output by the Convolutional encoder (n) in a given encoder cycle. The constraint length parameter, K, denotes the "length" of the Convolutional encoder, i.e. how many kbit stages are available to feed the combinatorial logic that produces the output symbols. Convolutional codes are often used to improve the performance of digital radio, mobile phones, and satellite links.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
48
In the proposed design a Convolutional encoder with a code rate of has been chosen i.e. m=1 and n=2. A constraint length of 7 is kept because it is standard and it's decoding can be efficiently done using the popular Viterbi Decoding Algorithm.
2.7.1 ENCODER DESIGN Figure 2.12 shows the I/O parameters of the Convolutional Encoder. Input bus is 1 bit wide and arst_n is the asynchronous reset input. A negative edge on the arst_n input resets the encoder. A bit is latched in at the positive edge of the clock. For every input bit there is a two bit wide output designated by even and odd. Table 2.6 gives description of the I/O signals of the Convolutional Encoder.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
49
Convolutional Encoder can be implemented using either a shift register or by using Algorithmic State Machine [16]. However, a shift register gives an easy to implement and area efficient solution. For the configuration of m=1, n=2 and k (constraint length) =7, Figure 3.9 shows how the Convolutional encoder is implemented in the proposed design using a shift register. Initially all zeroes are stored in the register. When the first input bit arrives it is shifted into the register from left and the 2 bit output appears on the lines designated as even and odd.
The even output is generated by adding the contents of 1st, 0, 3rd, 4th and 6th stages of the shift register, whereas the odd output is generated by adding the 5th, 0, 3rd, 4th and 6th stages of the register. This addition is modulo2 addition carried out through XOR gates (modulo2 addition is basically a XOR operation). Just like the Scrambler the memory elements here are Dflipflops as well.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
50
2.8 INTERLEAVER Interleaving is mainly used in digital data transmission technology, to protect the transmission against burst errors. These errors overwrite a lot of bits in a row, but seldom occur. The device that performs interleaving is known as Interleaver. Conceptually, the incoming bit stream is rearranged so that adjacent bits are no more adjacent to each other. Actually the data is broken into blocks and the bits within a block are rearranged. In the proposed design, a block consists of 64 symbols (128 bits). Number of bits in each symbol depends upon the corresponding singlecarrier modulation technique to be applied to produce that symbol. Figure 15 shows how an Interleaver is generally implemented [23]. Two memory elements (usually RAMs) are used. In the first RAM the incoming block of bits is stored in sequential order. This data from the first RAM is read out randomly (using an algorithm) so that the bits are rearranged and stored in the second RAM and then read out.
As mentioned above that the incoming bit stream is broken into blocks, when interleaving in the OFDM system the block size should be equal to the size of an OFDM symbol. Since there are 64 subcarriers and each subcarrier is modulated using QPSK, therefore in one OFDM symbol there would be 128

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
51
bits. Hence, the job of the interleaver would be to rearrange the bits within the OFDM symbol.
2.8.1 INTERLEAVER DESIGN As discussed above, the function that the interleaver has to perform is to read 128 bits, rearrange them and read them out. This can be accomplished by using RAMs for temporarily storing the bits and then the bits can be read out from the RAMs in the desired order. Remember that the block before the interleaver is the Convolutional Encoder that gives an output of two bits. Therefore the input bus of the interleaver should be two bits wide.
Figure 2.15 shows the toplevel architecture of the interleaver.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
52
Note that the input and output buses are two bits wide. The three building blocks of the interleaver are:
Block Memory Controller Address ROM
The block memory contains the memory elements necessary to store the incoming block of data. There are a total of four memory elements; each is a 64x1 RAM. Four RAMs are used in order to achieve pipelined operation. Two of these RAMs are used for writing a block while another block is being read out from the other two RAMs. In this way the RAMs are alternately switched between reading and writing modes. Hence, reading and writing is done simultaneously without any latency. The configuration of each of these RAMs is such that two bits are written at a time in two memory locations and one bit is read at a time. Recall that input to the interleaver is two bit wide, therefore that takes care of it. Two memories each 64x1 is used instead of a single memory 128x1 because two bits are to be read at a time. The block memory contains the memory elements necessary to store the incoming block of data. There are a total of four memory elements; each is a 64x1 RAM. Four RAMs are used in order to achieve pipelined operation. Two of these RAMs are used for writing a block while another block is being read out from the other two RAMs. In this way the RAMs are alternately switched between reading and writing modes. Hence, reading and writing is done simultaneously without any latency. The configuration of each of these RAMs is such that two bits are written at a time in two memory locations and one bit is read at a time. Recall that input to the interleaver is two bit wide, therefore that takes care of it. Two memories each 64x1 is used instead of a single memory 128x1 because two bits are to be read at a time.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
53
The job of the controller is to guide the incoming block of data to the correct memory blocks, to switch the RAMs between reading and writing modes, and to switch between the two RAMs for 16 alternate bits in writing mode. This is done by using counters. The address ROM is basically a 64x6 ROM that stores read addresses for the RAMs. Note that a single ROM is enough for the four RAMs. This is because only two RAMs at a time are in the read mode and the two bits that are read out of the two RAMs are in the same memory locations as per the design. Each location of the ROM is 6 bits wide because a 6bit address is required to read from a RAM having 64 locations. Figure 2.16 shows the circuit diagram of interleaver. Counter1 and Counter2 provide for the write addresses for the four RAMs 1A, 2A, 1B and 2B. Counter C is a 3bit counter that controls switching between either RAM 1A and RAM 2A or RAM 1B and RAM 2B depending upon which RAMs are in write mode. Counter1 and Counter2 are 5bit counters after every 8th count control switches to either Counter1 or Counter2; this is controlled by Counter C. The SYNC signal decides which RAMs must write and which should read. When SYNC is 0 RAM 1A and RAM 2A are in write mode and RAM 1B and RAM 2B in read mode, opposite is the case when SYNC is high. For the first data block SYNC remains 0 and therefore the block is written to RAM 1A and RAM 2A. When the last bit of the block is written SYNC goes high and RAM 1A and RAM 2A go in read mode, whereas RAM 1B and RAM 2B go in write mode and the next block is written to these blocks. At the same time the previous is read out of RAMs 1A and 2A in the desired order. Contents of the Address Rom are shown in Table. Note that the output of ROM is connected to the write address pin of all the four ROMs.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
54
Table 2.8: Contents of Address ROM (in Interleaver)
ROM location (Decimal) Contents (Decimal) 0 0
1 16
2 32
3 48
4 1
5 17
6 33
7 49
8 2
9 18
10 34
11 50
12 3
13 19

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
55
14 35
15 51
16 4
17 20
18 36
19 52
20 5
21 21
22 37
23 53
24 6
25 22
26 38
27 54
28 7
29 23
30 39
31 55
32 8
33 24
34 40
35 56
36 9
37 25
38 41
39 57
40 10
41 26
42 42
43 58
44 11
45 27
46 43
47 59
48 12
49 28
50 44
51 60

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
56
52 13
53 29
54 45
55 61
56 14
57 30
58 46
59 62
60 15
61 31
62 47
63 63
2.9 CONSTELLATION MAPPER
Constellation Mapper maps the incoming bits onto separate subcarriers. In the proposed design there are 64 subcarriers and each of them is modulated using QPSK, therefore the function of Constellation Mapper would be to map every two bits on a single carrier, because in QPSK two bits make up one symbol. Figure 2.17 shows the constellation diagram of QPSK. Mapping of bits on constellation points is done in accordance with gray code so that adjacent constellation points may have just one bit different. Table 2.9 shows the data bits and the corresponding constellation points.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
57
The block before Constellation Mapper is the Interleaver which gives an output of two bits per clock cycle. Therefore, two bits are mapped to a constellation point every clock cycle.
2.9.1 DESIGN OF CONSTELLATION MAPPER A ROM is used to store the constellation points. Each constellation point is represented by 48 bits in binary. In these 48 bits, the most significant 24 bits represent the real part and the least significant 24 bits represent the imaginary part. In both the real and imaginary parts the most significant 8 bits are the integer part and the least significant 16 bits represent the fractional part. 2s complement notation has been used to represent negative numbers. The size of ROM is 4x48. The incoming input bits (2 bits) act as address for the ROM. 2.10 shows the ROM contents at each address location. Each of these values in the ROM is a constellation point corresponding to the data bits which here act as addresses for the ROM.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
58
Figure 2.18 shows the circuit of a constellation Mapper. It contains nothing but a ROM. Note that the input is two bits wide and the output is 48 bits wide. For a description of the I/O signals of the constellation mapper see Table.
2.10 INVERSE FAST FOURIER TRANSFORM In 1971 Discrete Fourier Transform (DFT) was used in baseband modulation/demodulation in order to achieve orthogonality [24]. Since DFT has heavy computational requirements, therefore, Fast Fourier Transform (FFT) was utilized. For an N point discrete Fourier Transform the required number of

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
59
computations is N(N1), but that for FFT/IFFT is Nlog (N), which is much lesser than DFT. The FFT/IFFT operates on finite sequences. Waveforms which are analog in nature must be sampled at discrete points before the FFT/IFFT algorithm can be applied. The Discrete Fourier Transform (DFT) operates on sample time domain signal which is periodic. The equation for DFT is:
X(k) represents the DFT frequency output at the kthe spectral point where k ranges from 0 to N1. The quantity N represents the number of sample points in the DFT data frame. The quantity x(n) represents the nth time sample, where n also ranges from 0 to N1. In general equation, x(n) can be real or complex. The corresponding inverse discrete Fourier transform (IDFT) of the sequenc X(k) gives a sequence x(n) defined only on the interval from 0 to N1 as follows:
The DFT equation can be rewritten into:

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
60
This quantity is called Twiddle Factor. It is the sine and cosine basis function written in polar form [13]. Examination of the first equation reveals that the computation of each point of DFT requires the following: (N1) complex multiplication, (N1) complex addition (first term in sum involves 0 = 1). Thus, to compute N points in DFT require N(N1) complex multiplication and N(N1) complex addition. As N increases, the number of multiplications and additions required is significant because the multiplication function requires a relatively large amount of processing time even using computer. Thus, many methods for reducing the number of multiplications have been investigated over the last 50 years [12].
2.10.1 RADIX ALGORITHM When the number of data points N in the FFT/IFFT is a power of 4 (i.e., N = 4v), we can, of course, always use a radix2 algorithm for the computation. However, for this case, it is more efficient computationally to employ a radixr FFT algorithm. In the decimationinfrequency algorithm, the outputs or the frequency domain points are regrouped or subdivided. Consider the FFT equation:
As an example we consider N=16. We split or decimate the Npoint input sequence into four subsequences, x(4n), x(4n+1), x(4n+2), x(4n+3), n = 0, 1, ... , N/41. Therefore, we get X(k), X(k+N/4), X(k+N/2) and X(k+3N/4). This process is called decimation in frequency. This decimation continues until each DFT becomes a 4 point DFT. Each 4 point DFT is known as a butterfly when we represent it graphically. Figure 2.19 shows a radix4 FFT butterfly.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
61
Since in the proposed design there are 64 subcarriers so the input to FFT would be 64 complex numbers, hence a 64 point FFT would be required. For a 4n point FFT n stages are required and N/4 4 point DFTs per stage. Therefore in our case there would be 3 stages (64 = 43) and 16 4 point DFTs per stage or we can say 16 butterflies pre stage.
In the decimationinfrequency FFT algorithm, the outputs are decimated; therefore, inputs to the FFT are given in the actual order [25]. In this way we get the output in a rearranged order. In the proposed design radix22 DIT FFT algorithm is targeted because its butterfly is simple like that of radix 2 and no. of complex multiplications are less like radix 4. Figure 2.20 shows a radix 2 butterfly, its simplicity speaks for itself.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
62
In the radix22 algorithm, a radix4 butterfly is created using two radix2 butterflies. The benefit of using the radix 2 algorithm is the ease of controlling the butterfly due to its simplicity and the decreased number of stages and complex multipliers.
2.10.2 IFFT DESIGN From here on whenever I mention FFT, it will ll incorporate both IFFT and FFT. Basically there are two ways to implement FFT in hardware, one is using pipelined architecture and the other is using memorybased architecture. The former requires less hardware resources and hence occupies less area, but requires greater number of clock cycles. On the other hand in the memorybased architecture more hardware resources are required but it takes less number of clock cycles. In the proposed design pipelined architecture has been chosen in order to make the FFT design area efficient. Additionally, fixed point FFT implementation has been carried out to avoid any overflows resulting from the complex multiplications. Figure 2.21 shows the I/O diagram of IFFT and description of the I/O parameters is given in Table 2.12.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
63
Complex data is fed in one datapoint per clock cycle. The enable signal is asserted the clock cycle previous to presenting the first datapoint. Figure 3.22 is a block diagram of a 64point radix22 fixedpoint FFT example. The module consists of six radix2 butterflies, shift registers associated with each butterfly, two complex multipliers, two twiddle factor generators, and a controller that provides the control signals. The feedback shift registers vary in length from 1 to 32bits, and are labeled accordingly.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
64

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
65
Each group of two butterflies, consisting of a bf2i and a bf2ii, together emulate a radix4 butterfly. Figure 2.23 shows the internals of each and how they are connected together. These modules operate on a principal known as Singlepath Delay Feedback (SDF) [25]. The FFT Radix2 butterfly must have two inputs in order to produce the next FFT intermediate value, but the data in our scenario is available only in a serial mode. The SDF mechanism provides a solution where the first input is delayed until the second input is presented, after which the calculation can proceed. Both the bf2i and bf2ii modules accomplish this by multiplexing the first input to a shift register of sufficient length so that that datapoint is present at the butterfly input when the second datapoint appears. A counter provides the control signals for these multiplexers, which are internal to the butterfly modules. The counter additionally provides signals to the bf2ii for switching the adder operations, and swapping the real and complex input wires. These mechanisms effect a multiplication of the input by j. In order to avoid overflow, the data set is scaled down as it propagates through the pipeline. The FFT operation consists of a long series of summations, and thus either the dynamic range of the numerical presentation must be large (floatingpoint of block floatingpoint), or the numerical data must be scaled down. Since the module is fixed point, the latter strategy is used.
2.11 CYCLIC PREFIX ADDER
Cyclic prefix is basically a replica of a fractional portion of the end of an OFDM symbol that is placed at the beginning of the symbol. It completely removes intersymbol interference that can occur due to Multipath. Cyclic prefix is effective only if its duration is greater than the delay spread.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
66
2.11.1 DESIGN OF CYCLIC PREFIX ADDER The architecture of cyclic prefix adder simply consists of an address ROM that stores addresses, a RAM to store incoming data in sequential order and a counter that provides read addresses to the RAM. Figure 2.24 shows the toplevel architecture of the cyclic prefix adder. Refer to Table 2.13 for the description of I/O signals.
In the proposed design, the last eight symbols (complex numbers) of the OFDM symbol are replicated at the beginning of the symbol, therefore a total of 72 (64 + 8) symbols are actually transmitted.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
67
CHAPTER THREE RECEIVER DESIGN AND IMPLEMENTATION
3.1 INTRODUCTION
This chapter gives detailed description about the implementation of the receiver part of the project. The receiver has been implemented on the same Cyclone III board. It consumes about 5600 out of the 24,600 logic elements present in the board. The OFDM receiving unit receives its input directly from the transmitter whenever its output is available. The receiver follows an exact reverse procedure of which was followed in the transmitter. It receives the complex (modulated) output points and performs demodulation and recovers the original bits sent to the transmitter.
3.2 THE RECEIVER
I/O diagram of the receiver is shown in Figure 3.1. We can see that there are n control or status signals to or from a FIFO; the reason is that the modulated data, from the transmitter, is directly fed to the receiver as input. Description of the shown signals is given in Table 3.1.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
68
Figure 3.2 shows the hardware architecture of the complete OFDM system highlighting the receiver part this time. The various blocks that constitute the receiver are shown. The receiver, just like the transmitter, operates at a clock frequency of 20 MHz provided by the onboard PLL. Now the rest of the chapter is dedicated to the detailed description and design of the blocks inside the OFDM receiver as shown in Figure 3.2.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
69

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
70
3.3 CYCLIC PREFIX REMOVER The cyclic prefix was added at the transmitting end in order to avoid intersymbol interference, therefore during reception it must be eliminated for any further processing of the received signal. This is done by simply skipping the first eight subcarriers in the received OFDM symbol. In hardware this is implemented in the control unit. The control unit only enables the next block (FFT) when the first eight bits of the received OFDM symbols have been skipped.
3.4 FAST FOURIER TRANSFORM Details on FFT/IFFT algorithm and hardware implementation were given in the previous chapter. The only difference being that if it was given for IFFT (although FFT was mentioned at some places). In order to implement FFT in hardware the algorithm is same, only the difference is that the divider is removed and the real and imaginary parts at the input are swapped i.e. real becomes imaginary and imaginary becomes real. Same goes for the output i.e. real and imaginary parts at the output are swapped as well. Figure 3.3 depicts the scenario.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
71
3.5 CONSTELLATION DEMAPPER The function of the constellation demapper is to map the QPSK symbols (complex numbers) coming from the output of FFT to the data points shown in the constellation diagram shown in Figure 3.4. Basically it is the inverse procedure of what was done in the constellation mapper at the transmitter.
3.5.1 DESIGN OF CONSTELLATION DEMAPPER
The mapping of data points to QPSK symbols (as done in the transmitter) is shown in Table 3.2.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
72
Therefore, basically the incoming constellation points are mapped onto the data points as shown in Table 3.3. Figure 3.5 shows the I/O diagram of the constellation demapper and Table 3.5 shows the description of the signals.
Instead of going into the hardware architecture, the design is shown using the Verilog code. A simple switchcase structure is used to construct the design. The code is shown below:

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
73
3.6 DEINTERLEAVER In the previous chapter interleaving was defined as a process in which bits, within a block of 128 bits, are rearranged in order to avoid burst errors. Deinterleaving performs the inverse task. It rearranges the interleaved bits into their original order. Recall the rowcolumn method of interleaving discussed in the previous chapter. Deinterleaving is done the same way, the difference being that the number of rows and the number of columns for deinterleaving are interchanged. For example if we perform interleaving on a block of 16 bits using a matrix with 8 rows and 2 columns, then the interleaved pattern can be deinterleaved using a matrix with 2 rows and 8 columns. Hence the only difference in the hardware architectures of interleaver and deinterleaver is the contents of the address ROM, which actually provides the read addresses to the RAM that stores the data to be deinterleaved. Table 4.4 shows the new contents of the address ROM for the deinterleaver.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
74
Table 3.4: Contents of Address ROM (in DeInterleaver)
ROM location (Decimal) Contents (Decimal) 0 0
1 8
2 16
3 24
4 32
5 40
6 48
7 56
8 1
9 9
10 17
11 25
12 33
13 41
14 49
15 57
16 2
17 10
18 18
19 26
20 34
21 42
22 50
23 58
24 3
25 11
26 19
27 27
28 35
29 43
30 51
31 59
32 4
33 12
34 20
35 28

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
75
36 36
37 44
38 52
39 60
40 5
41 13
42 21
43 29
44 37
45 45
46 53
47 61
48 6
49 14
50 22
51 30
52 38
53 46
54 54
55 62
56 7
57 15
58 23
59 31
60 39
61 47
62 55
63 63
3.7 VITERBI DECODER The Viterbi Decoder decodes Convolutional codes. We have used the Alteras Viterbi Decoder IP core in our design. Alteras Viterbi IP core is a parameterized IP core that is synthesizable and allows for parallel as well as hybrid implementation of the Viterbi decoder.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
76
3.8 REED SOLOMON DECODER
The Reed Solomon decoder decodes the codes generated by the Reed Solomon Encoder. For the implementation of the Reed Solomon Decoder we have again used Alteras Reed Solomon Decoder IP.
3.9 DESCRAMBLER Figure 3.7 shows the input/output parameters of the Descrambler. A bit is latched in at the positive edge of the clock. See Table 3.5 for a description of the signals.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
77
Figure 3.8 shows the Descrambler. Note that the structure is quite same.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
78
CHAPTER FOUR SIMULATION, SYNTHESIS AND RESULTS
4.1 INTRODUCTION This chapter discusses the simulation results obtained from the ModelSim with random input samples and also the important synthesis results obtained from Quartus II. The accuracy of the output has been compared to the output from MATLAB simulation. The result is divided into 2 different sections, for OFDM Transmitter and OFDM Receiver. The output from each of the modules is shown and followed by the overall output.
4.2 SIMULATION OF OFDM TRANSMITTER 4.2.1 SCRAMBLER
To verify proper functioning of the Scrambler was initially fed with a seed value of 1110101 and the following input bit stream was given to the Scrambler:

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
79
After a dry run of the scrambler using highlevel modeling in Verilog it was verified that the output was correct.
4.2.2 REED SOLOMON ENCODER In order to check the proper functioning of Reed Solomon Encoder a test bench was written in Verilog. The input given to the encoder through the test bench was a string of alternating 36 (9 symbols) bits starting with 0. Such that:
Other input combinations were also given and desired results were achieved that verified proper functioning of the Encoder.
4.2.3 CONVOLUTIONAL ENCODER After simulation of the above shown Verilog code the following waveform was generated. It can be seen that first of all a low pulse was given to the arst_n (reset) input in order to initialize the shift register with all zeroes. Next the following bit stream was given at the input,

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
80
For a 7 bit input a 14 bit output is generated. Figure 4.3 shows the resultant waveforms after the simulation of the Convolutional Encoder. Once again this circuit was taken through a dry run using high level modeling in Verilog and the results were verified.
4.2.4 INTERLEAVER
The waveform for the interleaver goes upto 128 clock cycles. Therefore, it is not shown here. For an input block of data containing alternate 1s and 0s the output was
This clearly shows how bit positions have been changed.
4.2.5 CONSTELLATION MAPPER Following wave form shows that when an input of 10 was given to the Constellation Mapper the output was,

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
81
4.2.6 IFFT The IFFT was tested by giving the following 64 complex data points, h00b504000000, h030000000000, h00b504000000,, h00b504000000 Which is equivalent to 0.707, 3, 0.707,, 0.707
The outputs were, h2f8bc000000, h5db504000000, h0000005db504 and so on. On verification with MATLAB the results turned out to be correct.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
82
4.2.7 CYCLIC PREFIX ADDER The inputs given to the cyclic prefix adder were 47'h000000100101, 47'h000010100001, 47'h001110100101, 47'h110010100101, 47'h000010100101, 47'h010101000101, 47'h011110100101, 47'h000011100101. . . 47'h000011100101 The outputs turned out to be 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000011100101, 47'h000000100101, 47'h000010100001, 47'h001110100101, 47'h110010100101, 47'h000010100101, 47'h010101000101, 47'h011110100101, 47'h000011100101. . . 47'h000011100101 Note that the first eight outputs are actually the last eight inputs and the rest of the output points are same as the inputs. The following waveform shows the same

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
83
4.3 SYNTHESIS OF OFDM TRANSMITTER Table 4.1 shows some important synthesis results for each module of the OFDM transmitter.
4.4 SIMULATION OF OFDM RECEIVER The Cyclic Prefix Remover simply removes the cyclic portion added at the transmitting end, and the simulation of the next block FFT is similar to IFFT so it is not shown. In addition to these blocks the simulations of Viterbi Decoder and Reed Solomon Decoder are also not shown because their ip cores are used in the project. Simulation results for the Constellation DeMapper, DeInterleaver and DeScrambler follow.
4.4.1 CONSTELLATION DEMAPPER As described in previous chapters, the constellation demapper basically maps the incoming QPSK constellation points to actual data according to table 3.4. On the following inputs:
h00b50400b504 (which is 0.707 + j0.707) and
hFF4AFC00B504 (which is 0.707 + j 0.707) The outputs turned out to be,
00 and 01

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
84
As shown in Figure 4.7. The results are in accordance with table 3.2
4.4.2 DEINTERLEAVER Just like the interleaver the simulation waveform of deinterleaver extends to 128 cycles so cant be shown here.
4.4.3 DESCRAMBLER The inverse of scrambling is done by the DeScrambler. For the input,
b111111111000000000 the output was,
b110111111111000010 which is shown in figure 4.8. The output has been verified using MATLAB (using scrambler block in Simulink).

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
85
4.5 SYNTHESIS OF OFDM RECEIVER

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
86
REFRENCES
[1] Ahmed R. S. Bahai and Burton R. Saltzberg, Multi Carrier Digital Communications. Kluwer Academic Publishers, 2002. [2] Scrambler (Randomizer), Wikipedia the free encyclopedia http://en.wikipedia.org/wiki/Scrambler_%28randomizer%29. [3] EncodingDecoding Reed Solomon codes, Adina Matache Department of Electrical Engineering University of Washington http://www.ee.ucla.edu/~matache/rsc/node3.html#SECTION000210000000000 00000. [4] A Tutorial on Convolutional Coding with Viterbi Decoding, Spectrum Applications http://home.netcom.com/~chip.f/viterbi/tutorial.html. [5] Interleaver, Wikipedia the free encyclopedia http://en.wikipedia.org/wiki/Interleaver. [6] Jeffrey G. Andrews, Rias Muhammad, Fundamentals of WIMAX. Prentice Hall Communications Engineering, 2006. [7] Aseem Pandey, Shyam Ratan Agrawalla & Shrikant Manivannan, VLSI Implementation of OFDM, Wipro Technologies, September 2002. [8] Dusan Matiae, OFDM as a possible modulation technique for multimedia applications in the range of mm waves, TUDTVS, 1998.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
87
[9] J. L. Holsinger, Digital communication over fixed timecontinuous channels with memory, with special application to telephone channels, PhD thesis, Massachusetts Institute of Technology, 1964. [10] R. W. Chang, Synthesis of bandlimited orthogonal signals for multichannel data transmission, Bell Systems Technical Journal, 45:17751796, December 1966. [11] R. G. Gallager, Information Theory and Reliable Communications. Wiley, 1968. [12] S. Weinstein and P. Ebert Data transmission by frequencydivision multiplexing using the discrete Fourier transform. IEEE Transactions on Communications, 19(5):628634, October 1971. [13] L. J. Cimini Analysis and simulation of a digital mobile channel using orthogonal frequency division multiplexing. IEEE Transactions on Communications, 33(7):665675, July 1985. [14] Lattice Semiconductor white paper, Implementing WiMAX OFDM Timing and Frequency Offset Estimation in Lattice FPGAs, 2005. [15] Doelz, M.L., Heald E.T. and Martin D.L. "Binary Data Transmission Techniques for Linear Systems." Proc. I.R.E., 45: 656661, May 1957. [16] S. B. Weinstein and P. M. Ebert, Data transmission by frequencydivision multiplexing using the discrete Fourier transform, IEEE Trans. Communications, COM19(5): 628634, Oct. 1971.

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
88
[17] Orthogonal Frequency Division Multiplexing Tutorial, Intuitive guide to Principles of Communication http://www.complextoreal.com [18] Magis Networks White paper, Orthogonal Frequency Division Multiplexing (OFDM) Explained, Inc. 2001 [19] Orthogonal FrequencyDivision Multiplexing (OFDM), the International Union of Radio Science (URSI), Lulea University of Technology, 2002 [20] Michael D. Ciletti, Advanced Digital Design with the Verilog HD Xilinx Design Series. Prentice Hall, 2002. [21] Reed Solomon errorcorrection code, Wikipedia the free Encyclopedia http://en.wikipedia.org/wiki/ReedSolomon_error_correction [22] Bernard Sklar. Digital Communications Fundamentals and Applications. Communication Engineering Services, Tarzana, California, 2003 [23] Interleaver, Wikipedia the free encyclopedia http://en.wikipedia.org/wiki/Interleaver [24] DFT, Wikipedia the free Encyclopedia en.wikipedia.org/wiki/Discrete_Fourier_transform [25] Fast Fourier Transform, Molfram MathWorld mathworld.wolfram.com/FastFourierTransform.html_

Hardware Implementation of OFDM Transmitter and Receiver Using FPGA
89
APPENDIX A RTL CODE IN V