12.12.2012 Views

Xcell Journal: The authoritative journal for programmable ... - Xilinx

Xcell Journal: The authoritative journal for programmable ... - Xilinx

Xcell Journal: The authoritative journal for programmable ... - Xilinx

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>The</strong> tool provides high-level abstractions that are automatically<br />

compiled into an FPGA at the push of a button.<br />

Deciding on a single tool and a language<br />

that meets the requirements of the<br />

whole design team can be difficult, especially<br />

when budgets are low and turnaround<br />

times are short. What could be<br />

better than an environment understood by<br />

the entire team, using a single source code?<br />

Sine Wave<br />

dbl fpt<br />

din<br />

In1<br />

Transmitter: FEC and<br />

QAM Symbol Mapping<br />

dbl fpt<br />

dbl fpt<br />

q_in<br />

System Generator<br />

<strong>Xilinx</strong> ® System Generator is a system-level<br />

modeling tool that facilitates FPGA hardware<br />

design. It extends <strong>The</strong> MathWorks<br />

Simulink in many ways to provide a<br />

modeling environment well suited to hardware<br />

design.<br />

<strong>The</strong> tool provides high-level abstractions<br />

that are automatically compiled into<br />

an FPGA at the push of a button. <strong>The</strong> tool<br />

also provides access to underlying FPGA<br />

resources through lower-level abstractions,<br />

allowing the construction of highly efficient<br />

FPGA designs. It is delivered along<br />

with a predefined <strong>Xilinx</strong> blockset library,<br />

but also allows access to other languages<br />

with which most FPGA designers are<br />

familiar. Finally, it offers the ability to<br />

design at a system level, and allows simulation,<br />

implementation, and verification<br />

within the same environment, usually<br />

fpt dbl<br />

i_out<br />

fpt dbl<br />

q_out<br />

Phase<br />

Offset<br />

without writing a single line of HDL code<br />

or even looking at the <strong>Xilinx</strong> ISE tools.<br />

To highlight the System Generator<br />

design flow, we will use a Quadrature<br />

Amplitude Modulator (QAM) system<br />

design example (Figure 1), implemented<br />

according to the specifications provided by<br />

A QAM System with Packet Framing and FEC <strong>for</strong> Telemetry Channels<br />

[i_in]<br />

From<br />

[q_in]<br />

From1<br />

Out1<br />

Out2<br />

i_in<br />

1 0.214<br />

In1<br />

In2<br />

In1<br />

In2<br />

In3<br />

Out1<br />

Out2<br />

Channel Model<br />

Out1<br />

Out2<br />

Out3<br />

Out4<br />

Out5<br />

Out5<br />

QAM Receiver<br />

Original Subsystem<br />

Figure 1 – QAM system (System Generator model)<br />

fpt dbl<br />

cdeblk_indx1<br />

fpt dbl<br />

rs_output<br />

fpt dbl<br />

dout_vld<br />

fpt dbl<br />

quad_sel<br />

fpt dbl<br />

start<br />

fpt dbl<br />

rs_input<br />

System<br />

Generator<br />

the Consultative Committee <strong>for</strong> Space<br />

Data Systems <strong>for</strong> telemetry channel coding<br />

specification (CCSDS 101.0 B-5).<br />

Introduction to the QAM<br />

System Design Example<br />

In our example, the overall QAM system<br />

starts with the transmitter. This subsystem<br />

accepts data from an input source, where<br />

<strong>for</strong>ward error correction (FEC) is applied<br />

and an attached synchronization marker<br />

(ASM) is inserted into the data be<strong>for</strong>e modulation.<br />

<strong>The</strong> modulated data is then driven<br />

to the channel model, where inter-symbol<br />

interference, Doppler content, and additive<br />

white Gaussian noise are introduced into the<br />

signal. Finally, the receiver employs a 16-<br />

QAM demodulator that per<strong>for</strong>ms adaptive<br />

channel equalization and carrier recovery.<br />

<strong>The</strong> ASM is stripped from the demodulated<br />

data be<strong>for</strong>e applying error correction.<br />

A PicoBlaze microcontroller controls<br />

the Reed-Solomon decoder, maintains frame<br />

alignment of the received packets, and<br />

per<strong>for</strong>ms periodic adjustments of the demapping<br />

QAM-16 quadrant reference. Both<br />

the transmitter and the receiver are targeted to<br />

the FPGA, whereas the channel is a Simulink<br />

model used <strong>for</strong> simulation and verification.<br />

Although not all System Generator features<br />

are used in this design, it is a good<br />

example showing a combination of powerful<br />

features, using <strong>Xilinx</strong> blockset elements,<br />

legacy HDL code, a PicoBlaze processor,<br />

and hardware verification, resulting in a<br />

very elegant, efficient, and quick way to<br />

implement a complex design and qualify it<br />

in a single environment.<br />

Design Implementation<br />

with System Generator<br />

A System Generator design always starts<br />

and finishes with gateways to convert the<br />

Simulink double-precision data into a<br />

<strong>Xilinx</strong> fixed-point <strong>for</strong>mat. <strong>The</strong>se gateways<br />

define the boundaries of your design; you<br />

can convert them into I/O ports <strong>for</strong> toplevel<br />

designs or an I/O interface to import<br />

into a higher-level system. Between these<br />

gateways, you must use blocks from the<br />

<strong>Xilinx</strong> library blockset or import your own<br />

code through the black box interface.<br />

<strong>The</strong> <strong>Xilinx</strong> blockset library comprises<br />

basic elements, math functions, DSP functions,<br />

communications blocks, control logic,<br />

and other useful elements. Each block is fully<br />

parameterizable, and a tight integration with<br />

the MATLAB workspace allows you to enter<br />

parameters based on complex equations or<br />

variables defined in the workspace.<br />

Equations such as this one:<br />

acc_nbits = ceil(log2(sum(abs(coef*2^coef_<br />

width_bp)))) + data_width + 1<br />

define the precision required <strong>for</strong> a filter as a<br />

function of the filter taps (coefficients), the<br />

number of taps, and the coefficient width.<br />

Because these are fixed at design time, it’s<br />

possible to tailor the hardware resources to<br />

Winter 2004 <strong>Xcell</strong> <strong>Journal</strong> 57<br />

[i_in]<br />

[q_in]<br />

0<br />

DIGITAL SIGNAL PROCESSING

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!