Software-defined Radio
using Xilinx
System Tools (Xilinx)
The entire QPSK communication system is
created in the Simulink environment of MathWorks©. Simulink is a
module based method for simulating and implementing an engineering
system. The module libraries provide a broad range of modules for
different tasks such as mathematical operations, signal processing
algorithms, error calculations, filter design etc. Compounding
various blocks from the communication and signal processing block
sets into a pseudo-flowchart creates a fully functional system,
without the traditional method of line by line coding.
The Xilinx system generator is a tool box running in Simluink
environment for FPGA hardware design.
It provides integrated design flow using hardware description
language synthesis, core libraries, and FPGA implementation tools.
Due to the discrete nature of FPGA architecture, data values are
represented in a fixed-point binary format as opposed to a
floating-point representation. The Xilinx block set includes a large
number of functions which require fixed point arithmetic. Therefore,
memory management and proper data representation require special
attention, unlike floating-point signal processing.
The Xilinx system generator blockset is accessible in the
Simulink library browser, and elements can be freely combined with
other Simulink elements.
It allows choosing the target FPGA device, system clock
period, and other implementation options.
It provides an efficient way to simulate and verify the
design from system specification level to hardware realization
level.
Fixed-point representation is essentially a method of representing a
value with a designated number of bits and precision.
For example, a data type, UFix_14_12, stands for a
14-bit unsigned fixed-point number with 2 bits of integer data and
12 bits of decimal precision.
In digital systems, selecting a proper fixed-point
representation is crucial for functionality and progress. Improper
representation can lead to loss of precision, overflows, sign
errors, and other discontinuities throughout the rest of the system.
In the QPSK communication system, the transmitted data has the
representation of Fix_32_31, describing a 32 bit signed
number, with the most significant bit being the sign bit, and the
remaining 31 bits defining the decimal precision. The range of the
signed value is from -1 to 1.
The overall system diagram of the QPSK system is shown
here. It includes the
following function blocks: data generator, interpolator, upconverter,
channel, downconverter, decimator, carrier recovery, and decoding.
For more information regarding the methods used in the construction
of the Simulink block diagram follow the links for
data generation,
raised-cosine filter,
phase-locked loop, and
differential coding.