Académique Documents
Professionnel Documents
Culture Documents
Product Specification
Introduction
System Overview
Features
Device families supported: Virtex-4, Virtex-5,
Spartan-3A DSP
Scalable solution for femto-cells up to macro-cells
Algorithm Features
- Compact, scalable correlation unit
- Streamed correlation calculations, allowing
minimal hardware use for femto and pico
applications
- Coherent and non-coherent result generation in
parallel with correlation.
- Sorted and filtered PDP results
DSP Processor
- Number of antenna
- Oversample rate
RACH
Configurations
- Quantization
Easy integration to microprocessor/DSP via
OCP-compatible interfaces
- Pipelined read of RACH results for improved
performance
Antenna
Data
RACH
Results
3GPP RACH
Core
xmp002_01_062007
2007 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx, Inc. All other trademarks are the property of their respective
owners. Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature, application, or standard, Xilinx
makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly
disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warranties or representations that this implementation is free from claims
of infringement and any implied warranties of merchantability or fitness for a particular purpose.
www.xilinx.com
Background
RACH Detection
The 3GPP RACH Preamble Detector is used to detect a RACH preamble transmission from user
equipment (UE). The RACH transmission from the UE is one of 16 possible preambles, consisting of
256 repetitions of one of the Hadamard code sequences listed in Table 1.
Preamble
Signature
10
11
12
13
14
15
P0(n)
P1(n)
P2(n)
P3(n)
P4(n)
P5(n)
P6(n)
P7(n)
P8(n)
P9(n)
P10(n)
P11(n)
P12(n)
P13(n)
P14(n)
P15(n)
Each preamble of 4096 chips long is transmitted from the UE after scrambling, using the scrambling
code assigned to the PRACH channel. The base station (BS) receives the antenna data, where it is
descrambled by the RACH preamble detector and correlated against the preamble sequences.
Detection is achieved when a peak is found in the correlation results exceeding a detection threshold.
Figure 2 illustrates a simple radio channel environment. In this environment, the received RACH
preamble is offset by the channel delays associated with each path. The offset is determined by the
round trip time from the BS to the UE. Figure 3 shows the effect of path delays on the transmitted
preamble. When a signal appears at the BS, it is delayed relative to the start of the slot by a delay equal
to twice the path delay to the UE. In the RACH, the amount of this delay becomes the search window.
To correlate for the full RACH preamble, the RACH has to perform a correlation over 4096 samples,
beginning at every sample within the search window, and compare the result against the 16 possible
preamble sequences. The RACH preamble detection is, therefore, performed over a period of the search
window + 4096 chips.
www.xilinx.com
According to the 3GPP W-CDMA specification, section 6 of the 3GPP specification TS25.214 V6.11.0
Physical Layer Procedures (FDD) (Release 6)), the RACH must respond to a detected preamble with an
AICH response. Failure to receive a response causes the UE to increase its transmission power and
resend the RACH preamble.
Figure Top x-ref 2
4
Path
Pat
h
UE
BS
Path 2
th 3
Pa
ds629_02_062107
Recevied
Data at
Sample Rate
Path Delay
Path Delay
Search Window
(4096 + Window) Chips
AICH
Response Time
ds629_03_062707
www.xilinx.com
The received RACH preamble is generally subjected to multipath delays and has multiple correlation
peaks in the received stream (Figure 4), producing a power delay profile (PDP). The RACH has to
identify each of these individual peaks and pass the power and delay information associated with each
to the Searcher, providing the Searcher with an initial estimate of the channel in which it is trying to
track transmitted data.
Figure Top x-ref 4
Power
Path 1
Path 3
Path 2
Path 4
Delay
Window Delay
Search Window
ds629_04_062107
System Operation
Overview
The RACH consists of two parts: a RACH core, available through CORE Generator software, and a
reference design incorporating the RACH core into a post-processing algorithm for the correlation
results produced by the core. The RACH reference design is delivered as VHDL source code along with
the RACH core.
The RACH 's overall structure is illustrated in Figure 5, showing the VHDL source files comprising the
reference design, and the RACH core generated by the CORE Generator software.
The RACH core performs the correlations operation on the received antenna data. The core is designed
to process these correlations in the most efficient manner possible.
The RACH reference designs role is to reduce the load on the DSP by filtering and sorting the results
from the core. The reference design is also responsible for calculating the non-coherent and coherent
power in the RACH correlation results. Furthermore, the reference design produces an AICH recommendation for the processor to use in determining the next AICH signal to send.
The further role of the RACH reference design is to act as a bridge between the RACH core and the DSP.
Therefore, the reference design uses OCP-compatible interfaces for connecting with the system bus.
The user can edit the reference design source code to change the system bus the RACH uses to connect
to the DSP. It is also possible to change the AICH decision algorithm and allow the possibility of implementing a proprietary selection algorithm.
www.xilinx.com
RACH
Config
Interface
rach_3gpp_config
_regs.vhd
RACH Preamble
Detector Core
Antenna
Interface
rach_3gpp_non_coh_add.vhd
Bypass if
c_min_coh_win_len = 256
rach_3gpp_non_coh_ram.vhd
rach_3gpp_sorter.vhd
rach_3gpp
_aich.vhd
AICH
recommendation
rach_3gpp_ocp
_result_rd.vhd
rach_3gpp_preamble_sort.vhd
RACH
Result
Interface
ds629_05_072607
www.xilinx.com
The VHDL blocks provided for the reference design are listed in Table 2 and shown in Figure 5.
Table 2: Reference Design Blocks
Block
Description
rach_3gpp_ref_v1_0_main.vhd
rach_3gpp_sorter.vhd
Implements the sorting of all of the results from the RACH core.
rach_3gpp_preamble_sort.vhd
Performs RACH result sorting for each preamble. One instance is used
per preamble. This block is instantiated from within
rach_3gpp_sorter.vhd.
rach_3gpp_non_coh_add.vhd:
rach_3gpp_non_coh_ram.vhd
rach_3gpp_power_calc.vhd
rach_3gpp_aich.vhd
rach_3gpp_ocp_result_rd.vhd
rach_3gpp_config_regs.vhd
The interface to the RACH reference design is shown in Figure 6. Connection to the reference design is
achieved using OCP-compatible interfaces. The reference VHDL can be edited to implement alternative bus architectures.
When the RACH reference design is generated via CORE Generator software, the parameters which
apply to the reference design are created as a package of constants and are included in the reference
design. Adjusting the parameters requires the core to be regenerated.
Port Descriptions
The 3GPP RACH Preamble Detector is designed to be used as co-processor to a general purpose
processor or DSP. OCP-compatible interfaces are used to provide a consistent interface adaptable to
many system bus types (refer to Register and Memory Maps for details on data transferred across the
OCP data and address signals).
www.xilinx.com
Port Diagrams
Figure 6 shows the top-level interface to the reference design (fields within the OCP port are shown in
brackets).
Figure Top x-ref 6
CLK
CE
RC_MCMD
3GPP
RACH
Preamble
Detector
Reference
Design
RC_MADDR
RC_MDATA
RC_SCMDACCEPT
RC_SINTERRUPT
RR_MCMD
RR_MADDR
RR_SDATA
RR_SDATAINFO
RR_SRESP
Host Result
OCP Interface
Host Configuration
OCP Interface
MRESET
Antenna Interface
RR_SCMDACCEPT
A_MCMD
RR_SINTERRUPT
A_MDATA
A_MDATAINFO
A_SCMDACCEPT
A_SINTERRUPT
ds629_06_072407
Table 3 lists the clock and reset for the 3GPP RACH Preamble Detector core.
Table 3: Clock and Reset(1)
Port Name
I/O
Width
Description
CLK
CE
RESET
Notes:
1. Clock and Reset is common to all blocks.
2. CE is not defined in OCP specification. Asserting CE during OCP accesses could lead to the block not
complying with OCP specification.
3. OCP reset is specified as being active Low. Active High reset is adopted to be compatible with other LogiCORE
modules. Place an inverter before reset if using OCP reset signal.
www.xilinx.com
I/O
Width
Description
OCP Master Command. Only supports the following
commands:
0xb000: Idle
0xb001: Write
RC_ADDR
RC_MDATA
32
RC_SCMDACCEPT
RC_SINTERRUPT
Notes:
1. OCP Interface for writing RACH configuration registers.
2. See "Antenna Interface Register Map" on page 15.
Antenna Data Interface
Table 5 defines the antenna data OCP interface ports for the core.
I/O
Width
Description
OCP Master Command. Only supports the following
commands:
0xb000: Idle
0xb001: Write
A_MDATA
16
A_MDATAINFO
A_SCMDACCEPT
A_SINTERRUPT
Notes:
1. Antenna data is time-interleaved on the interface.
2. See "Antenna Interface Register Map" on page 15.
www.xilinx.com
I/O
Width
Description
OCP Master Command. Valid commands are:
0b000: Idle
0b010: Read
RR_MADDR
23
RR_SDATA
18
OCP Data.(1)
RR_SDATAINFO
RR_SRESP
RR_SCMDACCEPT
RR_SINTERRUPT
Note:
1. See "RACH Results Memory Map" on page 15.
RACH Core
Internal to the RACH Preamble Detector is the RACH core. The RACH is a CORE Generator core
implementing the scrambling-code generation, correlation, and preamble detection. This core is configurable using a subset of the parameters listed in Generation and Customization. Variation of the
parameters controls the size of the search window that the core is designed to process and the number
of sub-windows which the correlation can be broken down into, allowing for non-coherent accumulation across the window (see Coherent and Non-Coherent Processing for details on non-coherent
processing). Changes to this core can only be achieved by adjusting the parameters in the CORE
Generator GUI.
The architecture of this core is based on a fully streamed correlation of the incoming antenna data. This
architecture is ideally suited to femto- and pico-cell RACH implementations, as it minimizes the
amount of hardware resources required to perform the RACH detection.
Preamble detection is achieved using a fully streamed fast-Hadamard transform (FHT). The FHT is the
optimal method of decoding the RACH correlation into the original RACH preambles. To enable
non-coherent accumulation, the FHT can access the correlation results throughout the correlation
window. Thus, a set of preamble results can be produced for a sub-window. These correlation results
can be accumulated externally to the core to produce a non-coherent accumulation. This non-coherent
accumulation takes place within the reference design.
The RACH core is based on an implementation for a single antenna with an oversample rate of two
samples per chip. This combination provides the optimal use of hardware within the core. To achieve
higher oversample rates and additional antennas, multiple instances of the RACH core are instantiated
www.xilinx.com
inside the RACH reference design. Using separate instances per antenna enables the user to alter the
algorithm used to combine the antenna results to form a RACH detection decision.
Coherent and Non-Coherent Processing
There are two modes of correlation:
Coherent. For coherent processing, all of the repetitions of the preamble are added across the full
4096 bits prior to decoding with the FHT and calculating the magnitude. Coherent processing is the
simplest method to implement since the partial result just accumulates until all the bits are seen.
Non-coherent: For non-coherent processing, the 4096-bit preamble is split into equally sized
windows (size selected by the DSP). Each of these windows is coherently summed, and the
magnitude of the results taken. These magnitudes are then summed to produce the final power
density spectrum. This method uses the same hardware as coherent detection. However, after each
coherence window is completed, the partial result stored is reset, and the FHT is applied to the
correlation results in that window. The magnitudes of each preamble produced at the end of the
window is stored and accumulated in RAM following the FHT. After all the windows are
correlated, the threshold is compared against the non-coherent results stored in the RAM.
Port Descriptions
The RACH core produced by CORE Generator software has the interface shown in Figure 7.
Knowledge of the interface is only required if the user is intending to edit the outer reference design. If
the standard RACH detection algorithm is used, the interface to this core is made via that reference
wrapper.
Core Port Diagram
CLK
MRESET
CE
scramble_code_init
coherence_win_len
Configuration Interface
Config values driven by
registers in the
reference design
3GPP
RACH Preamble
Detector
Core
fht_data_out_q
fht_data_out_i
fht_data_out_valid
fht_data_out_sync
Result Interface
Returns the
correlation results
from the RACH
last_fht_running
sample_write
Antenna Interface
I/Q Data Supplied
from the Antenna
antenna_data_Q
antenna_data_I
slot_sync
sample_accept
ds629_14_072407
10
www.xilinx.com
Port Name
I/O
Width
Description
CLK
CE
Clock Enable (optional). Clock Enable halts all internal clocks when
asserted.(2)
Sclr
Scramble_code_init
25
Coherence_win_len
Sample_write
Antenna_data_q
4-8
Antenna_data_i
4-8
Slot_sync
Sample_accept
Fht_data_out_valid
FHT Data Valid: Indicates that the RACH core is outputting a valid
PDP. The RACH core produces an unfiltered PDP.
Fht_data_out_sync
FHT Data Sync: Indicates that the RACH core is outputting the first
preamble result of a PDP.
Fht_data_out_q
16-20
Fht_data_out_i
16-20
Last_fht_running
Last PDP Output: Indicates that the PDP being output is the final
one for the current search window. Used by the reference design
during non-coherent processing to complete non-coherent
processing.
www.xilinx.com
11
XCO Parameters
Table 8: XCO Parameters
XCO Parameter
Clock_Enable
true, false
Description
true = component has CE pin
false = component does not have CE pin
Oversample_Rate
1, 2, 4
Antennae
1 ...16
Quantization
48
Maximum_Search_Window
_Size
1-512
Clock_Rate
Minimum_Coherent_Window
_Size
Number_of_Results_Per
_Preamble
Power_Shift
12
Values
32 128
1-32
0-18
www.xilinx.com
Description
0x00
RACH Search Window Length Register. Defines the dynamic length of the search
window used in the RACH.
0x04
RACH Coherence Window Length Register. Defines the Length the coherent window
uses in non-coherent operation.
0x08
RACH Scrambling Code Register. Configures scrambling code used in the RACH
receiver.
0x0C
RACH Preamble Mask Register. Register to mask out certain Preamble results from
the AICH recommendation.
0x10
AICH Threshold Register. Configures Threshold which must be passed to qualify for
recommendation for an AICH.
0x14
Range
Field
31:10
RSVD
9:0
SEARCH_WIN
Description
Reserved. Set to 0.
Search Window Length. This field dynamically controls the
number of chips the RACH search is performed over and is
restricted to between 1 and the
Maximum_Search_Window_Size XCO parameter.
Range
Field
31:13
RSVD
12:0
COH_WIN
Description
Reserved. Set to 0.
Coherence Window Length. This field dynamically controls the
number of chips combined in the coherent portion of a
non-coherent search. Valid values are 32, 64, 128, 256, 512,
1024, 2048, 4096. This value must be greater than the minimum
defined in the Minimum_Coherent_Window_Size XCO
parameter. 4096 indicates a fully coherent operation.
www.xilinx.com
13
Range
Field
31:25
RSVD
24:0
SCRAM_CODE
Description
Reserved. Set to 0.
Scrambling Code. Defines the 25-bit scrambling code
initialization value used to generate the de-scrambling code
internally.
range
field
31:16
RSVD
15:0
PRMBL_MSK
Description
Reserved. Set to 0.
Preamble Mask. 15-bit register defining valid preambles in the
sector. Only enabled preambles are considered for AICH
recommendation.
Range
Field
31:16
RSVD
15:0
AICH_THRSH
Description
Reserved. Set to 0.
AICH Threshold. Defines the power which a RACH PDP must
contain in order to be considered for an AICH recommendation.
The total power is the sum of all the fingers in the PDP. If the PDP
is larger than this threshold, the preamble is marked as detected.
range
Field
31:16
RSVD
15:0
14
FNGR_THRSH
Description
Reserved. Set to 0.
FNGR Threshold. Defines the power which a finger must have
to be included in the RACH PDP. Only fingers exceeding this
threshold are included in the total power calculation to determine
AICH.
www.xilinx.com
Range
Field
Description
15
QDATA
IDATA
Note:
1. I and Q antenna data is written in parallel to the RACH.
Range
10
Field
Width
Description
PREAMBLE
DLY
10
WORD
ALLIGNMENT
Note:
1. Address space is configured for the maximum number of fingers per preamble. Unused bits for smaller designs
should be set to 0.
Range
Field
Width
Description
25
10
POWER
16
DLY
10
Notes:
1. Returns power and delay for each finger in a given PDP.
www.xilinx.com
15
Timing Diagrams
The 3GPP RACH Preamble Detector uses OCP-v2.0-compatible interfaces for each of the main interfaces, allowing the interfaces to be easily adapted to a variety of bus protocols.
CLK
RC_MCMD
WR
WR
WR
WR
0X00
0X04
0X08
0X0C
IDLE
RC_MADDR
IDLE
IDLE
WR
WR
WR
WR
IDLE
0X00
0X04
0X08
0X0C
RC_MDATA
RC_SCMDACCEPT
ds629_07_062607
CLK
A_MCMD
A_MDATA
A_SCMDACCEPT
IDLE
WR
WR WR WR
A0
A1
A2
IDLE
A3
WR WR WR WR IDLE
A0
A1
A2
A3
Sample Period
ds629_08_062607
16
www.xilinx.com
The signal A_SCMDACCEPT forces master data transfers to synchronize to the internal processing rate of
the RACH (Figure 10). If the master writes data to the core early, then A_SCMDACCEPT is not asserted
until the cycle count reaches the correct value, thus throttling the master data transfer rate.
Figure Top x-ref 10
CLK
A_MCMD
IDLE
A_MDATA
WR
WR
WR
WR
A0
A1
A2
A3
IDLE
A_SCMDACCEPT
ds629_09_062607
Figure 10 illustrates the case of the master throttling the core processing rate. In this case, the master
does not supply data on the expected clock cycle and the core is stalled. Because processing in the core
is stalled, additional clock cycles are required to meet the real-time processing requirement of the core.
Figure 11 shows the synchronization of the core to the 3GPP framing references. The signal
A_MDATAINFO is asserted when writing the first sample of antenna 0 when the frame sync occurs. The
signal A_SINTERRUPT indicates that the core is expecting the frame synchronization on A_MDATAINFO
and occurs at the same time the core is synchronized.
Figure Top x-ref 12
CLK
A_MCMD
A_MDATA
IDLE
WR
WR
WR
WR
A0
A1
A2
A3
IDLE
WR
WR
WR
WR
A0
A1
A2
A3
IDLE
A_SCMDACCEPT
A_MDATAINFO
A_SINTERRUPT
ds629_10_062607
www.xilinx.com
17
CLK
RR_SINTERRUPT
RR_MCMD
IDLE
RR_MADDR
RD
RD
RD
RD
A0
A1
A2
A3
IDLE
RR_SCMDACCEPT
3 Clock Latency
RR_SRESP
RR_SDATA
NULL
D0
D1
D2
NULL
D3
ds629_11_062607
18
www.xilinx.com
CLK
Sample Period
SAMPLE_WRITE
ANTENNA_DATA_Q
ANTENNA_DATA_I
SLOT_SYNC
SAMPLE_ACCEPT
ds629_12_062607
CLK
FHT_DATA_OUT
P0
P1
P15
P0
P1
P15
P0
P1
P15
FHT_DATA_OUT_VALID
FHT_DATA_OUT_SYNC
FINAL_FHT_OUT
ds629_13_062607
www.xilinx.com
19
Performance Characteristics
Table 19 through Table 21 show the performance of the 3GPP RACH Preamble Detector core in terms of
resource usage and maximum achieved operating frequency for different device families. The resource
count and speed of the core can change depending on the surrounding circuitry of the user design.
Therefore, these figures should be taken only as a guide.
The tool settings to achieve these results were as follows and were obtained with ISE v9.2i tools:
map -c 1 -ol high
par -ol high
Note: Tool settings can have a significant effect on area use and speed. The Xilinx Xplorer script can be
used to find the optimal settings.
Table 19: Spartan3A-DSP Engine Resource Utilization
XCO Parameter
Clock_Enable
False
False
Minimum_Coherent_Window_Size
4096
512
Maximum_Search_Window_Size
16
128
Quantization
XC3SD3400A
XC3SD3400A
Slices(1)
663
1193
LUTs
881
1376
FFs
772
1742
DSP blocks
155
145
Utilization
Xilinx device
Maximum clock
frequency(2)
Notes:
1. Area and maximum clock frequencies are provided as a guide and can vary with new releases of the Xilinx
implementation tools.
2. Maximum clock frequencies are shown in MHz for -4 parts. Clock frequency does not take jitter into account
and should be de-rated by an amount appropriate to the clock source jitter specification.
20
www.xilinx.com
XCO Parameter
Clock_Enable
False
False
Minimum_Coherent_Window_Size
4096
512
Maximum_Search_Window_Size
32
128
Quantization
XC4VLX15
XC4VLX15
Utilization
Xilinx device
Slices(1)
417
588
LUTs
507
740
FFs
608
873
283/310
266/310
Notes:
1. Area and maximum clock frequencies are provided as a guide and can vary with new releases of the Xilinx
implementation tools.
2. Maximum clock frequencies are shown in MHz for -10/-12 parts. Clock frequency does not take jitter into
account and should be de-rated by an amount appropriate to the clock source jitter specification.
XCO Parameter
Clock_Enable
False
False
Minimum_Coherent_Window_Size
4096
512
Maximum_Search_Window_Size
32
128
Quantization
XC5VLX30
XC5VLX30
796
1128
532
726
610
871
Utilization
Xilinx device
LUT/FF
Pairs(1)
LUTs
FFs
Total Block
RAMs(3)
DSP blocks
297/310
251/320
Maximum clock
frequency(1,2)
Notes:
1. Area and maximum clock frequencies are provided as a guide. They may vary with new releases of the Xilinx
implementation tools.
2. Maximum clock frequencies are shown in MHz for -1/-3 parts. Clock frequency does not take jitter into account
and should be derated by an amount appropriate to the clock-source jitter specification.
3. Represents the total number of 36k block RAMs used when map is run. In reality, two 18k block RAM primitives
can usually be packed together, giving an absolute minimum total block RAM usage of block RAMs (36k) +
(block RAMs (18k) /2) (rounded up).
www.xilinx.com
21
Support
Xilinx provides technical support for this LogiCORE product when used as described in the product
documentation. Xilinx cannot guarantee timing, functionality, or support of product if implemented in
devices that are not defined in the documentation, if customized beyond that allowed in the product
documentation, or if changes are made to any section of the design labeled DO NOT MODIFY.
Ordering Information
The 3GPP RACH Preamble Detector core is provided under the SignOnce IP Site License and can be
generated using the Xilinx CORE Generator software v9.2i or higher. The CORE Generator software is
shipped with Xilinx ISE Foundation Series Development software.
After purchase, the core may be downloaded from the Xilinx IP Center for use with the Xilinx CORE
Generator software v9.2i and higher. The Xilinx CORE Generator software is bundled with the ISE
Foundation software at no additional charge.
Contact your local Xilinx sales representative for pricing and availability of additional Xilinx
LogiCORE modules and software. Information about additional Xilinx LogiCORE modules is
available on the Xilinx IP Center.
Revision History
22
Date
Version
08/08/07
1.1
Revision
Initial Xilinx release
www.xilinx.com