Xcell Journal: The authoritative journal for programmable ... - Xilinx
Xcell Journal: The authoritative journal for programmable ... - Xilinx
Xcell Journal: The authoritative journal for programmable ... - Xilinx
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