Discuss the characteristics and application analysis of Turbo codes in detail

Turbo code. It cleverly concatenates two simple component codes through a pseudo-random interleaver in parallel to construct a long code with pseudo-random characteristics, and implements multiple iterations between two soft-in / soft-out (SISO) decoders Pseudo-random decoding. His performance far surpasses other coding methods, has received extensive attention and development, and has a profound impact on today's coding theory and research methods, channel coding has also entered a new stage.

Features An important feature of Turbo codes is that their decoding is more complicated, which is much more complicated than conventional convolutional codes. This complexity is not only due to its decoding.


The Turbo code uses an iterative process, and the algorithm itself is also relatively complex. The key of these algorithms is not only to be able to decode each bit, but also to give reliability information translated by each bit along with the decoding. With this information, the iteration can continue. The specific algorithms used for Turbo code decoding are: MAP (Maximum A Posterori)

Max-Log-MAP, Log-MAP and SOVA (Soft Output Viterbi Algorithm) algorithms. The MAP algorithm was used in the decoding of convolutional codes in 1974, but the decoding of the Turbo code still needs to be modified; Max-Log-MAP and Log-MAP are based on the MAP algorithm to make significant improvements in the amount of calculation Although the performance is somewhat reduced, the decoding complexity of the Turbo code is greatly reduced, and it is more suitable for the application of the actual system; the Viterbi algorithm is not suitable for the decoding of the Turbo code, because there is no reliability information translated per bit The output, the modified SOVA algorithm with soft information output, is just suitable for the decoding of Turbo codes. These algorithms have certain differences in complexity and performance. A systematic understanding of the principles of these algorithms is the basis for the study of Turbo codes. At the same time, a comparative study of the complexity and performance of these algorithms will also help Turbo's application research. .

Turbo code simulation generally refers to Wu Yufei's classic program.

In addition, in order to successfully use Turbo codes in mobile wireless systems, we must first consider the limitation of the maximum delay in voice transmission. The simulation results in the short frame case show that the short interleaved Turbo code still has error correction capability close to the channel capacity under the AWGN channel and Rayleigh fading, thus showing that the Turbo code has a very broad application prospect in mobile wireless communication systems.

Turbo Code

Turbo Code (Turbo Code) is a type of high-performance error correction code used in outer space satellite communications and other wireless communication applications where designers seek to complete the maximum information transmission through a limited bandwidth communication link in front of data-damaging noise. There are two types of turbo codes out there, block turbo codes and convolutional turbo codes (CTCs). They are quite different because they use different building codes, different concatenation schemes and different SISO algorithms.

Research status

The research on Turbo codes was initially focused on the research of its decoding algorithms, performance circles, and unique coding structures. After more than ten years of development, it has achieved great results and is also in use in all aspects. The Turbo code obtains the decoding performance close to Shannon's theoretical limit due to the good application of the random coding and decoding conditions in Shannon's channel coding theorem. It not only has excellent performance in high noise environment with low signal noise, but also has strong anti-fading and anti-interference ability. At present, the research of Turbo codes mainly focuses on the following aspects:

Code technology

The coding aspect mainly includes the analysis of parallel concatenated coding and serial concatenated coding, as well as the study of mixed concatenated methods; the decoding aspect mainly includes iterative decoding and decoding algorithms (maximum posterior probability algorithm MAP, modified MAP Algorithm Max-Log-MAP, soft output Viterbi algorithm SOVA, etc.).

Design and analysis of Turbo codes

It mainly includes the design of the interleaver, the concatenation mode of the code, the decoding algorithm, the performance analysis of the Turbo code, etc. In the performance analysis, the code weight distribution and distance spectrum are mainly analyzed, but because there is no corresponding theoretical support, this analysis can only be approximate, and is limited to the case of short code length and small code weight.

Research and Application of Turbo Code in Direct Spread (CDMA) System

Turbo code not only has excellent performance in high noise environment with low channel signal-to-noise ratio, but also has strong anti-fading and anti-interference ability, so it has great application potential in mobile communication systems with poor channel conditions. In the third generation mobile communication system (IMT-2000), Turbo code has been adopted as the channel coding standard for transmitting high-speed data. The third-generation mobile communication system (IMT-2000) is characterized by multimedia and intelligence. To provide multiple transmission rates, high performance, and high-quality services, in order to support multimedia services with large amounts of data, bandwidth channels must be limited. transfer data. Due to the instability of wireless channel transmission media and the uncertainty of noise, it is difficult for general error correction codes to achieve the higher required decoding performance (generally requires a bit error rate of less than 10-6e), and Turbo codes cause more than The ordinary excellent decoding performance can correct the bit errors that occur during high-rate data transmission. In addition, because the use of Turbo code technology in the direct-spreading (CDMA) system can further increase the capacity of the system, the application of the Turbo code in the direct-spreading (CDMA) system has also attracted the attention of scholars from various countries.

Turbo codes for packet

It is mainly for the construction, decoding and analysis of the turbo code of the packet.

Combination of Turbo code and other communication technologies

Including the combination of Turbo code and modulation technology (such as trellis code modulation TCM), the combination of Turbo code and equalization technology (Turbo code equalization), the combination of Turbo code encoding and source coding, the combination of Turbo code decoding and reception detection, etc. Wait. The combination of Turbo code, OFDM modulation and differential detection technology has a high frequency utilization rate, which can effectively suppress the adverse effects of multipath delay, frequency selective fading, human interference and noise in shortwave channels. Domestic research in the field of Turbo codes has also made some achievements and progress. The State Key Laboratory of the Comprehensive Service Network of Xidian University has achieved many research results in the theory and application of Turbo codes. In addition, universities such as Tsinghua University, Beijing University of Posts and Telecommunications and Shanghai Jiaotong University have made some progress in researching other key technologies related to Turbo codes. Shenzhen Huawei has played an active role in promoting the application of Turbo codes in mobile communication systems.

Coding principle

Turbo codes were first proposed by C. Beηou et al. It is actually a kind of parallel concatenated convolutional code (Parallel Concatenated ConvoluTIonal Codes). The turbo code encoder is formed by two feedback system convolutional encoders connected in parallel by an interleaver, and the encoded check bits undergo a deletion matrix to generate codewords with different code rates. As shown in the figure: the information sequence u = {u1, u2, ......, uN} passes through the interleaver to form a new sequence u '= {u1', u2 ', ......, uN'} (the length and content do not change, but Bits are rearranged), u and u 'are sent to two component encoders (RSC1 and RSC2), under normal circumstances, these two component encoders have the same structure, generate sequences X and X, in order to increase the code rate, the sequence X and X need to go through a puncturing device, using puncturing (puncturing) technology to periodically delete some check digits from the two check sequences to form check sequences X, X, and uncoded sequence X 'are multiplexed and modulated After that, the Turbo code sequence X was generated.

1. Selection of component codes

An important feature of the Turbo code is that its component code uses a recursive system convolutional code (RSC, Recursive SystemaTIc ConvoluTIonal code), which is also an important reason for its superior performance. The main reason for choosing the RSC encoder as the subcode of the Turbo code is as follows:

First, RSC codes have the advantages of systematic codes. This feature allows users to directly decode received codewords without changing codewords during decoding, so recursive systematic convolutional codes (RSC) are simple and fast for non-systematic convolutional codes (NSC). .

Secondly, from the relevant literature on error control coding, the BER performance of non-systematic convolutional codes (NSC) is better at high signal-to-noise ratios than non-recursive systematic codes of the same constraint length, but at low signal-to-noise ratios. in contrast. The recursive system convolutional code combines the characteristics of the NSC code and the non-recursive system convolutional code, and it has the same trellis structure and free distance as the NSC code, but in the case of a high code rate (R≥2 / 3), For any signal-to-noise ratio, its performance is better than the equivalent NSC code. Since the system recursive convolutional codes have the above characteristics and can improve the code-free rate, RSC codes are usually selected as the sub-encoders of Turbo codes.

The recursive system roll weight code (RSC) is different from the general convolutional coder in that its structure not only has a forward structure, but also a backward feedback structure, which can be seen in the figure below.

Turbo code RSC encoders generally have 2-5 stages of shift registers, expressed as generator polynomials as:

In the formula, 1 represents the systematic bit, gl and g2 respectively represent the feedforward polynomial and feedback polynomial of the encoder.

The turbo code uses RSC codes to form the turbo code. The code rate R of the component code is:

In the formula: R1 and R2 are the code rates of the component codes constituting the Turbo code. After puncturing, the code rates of the components RSC1 and RSC2 may be different.

The maximum likelihood decoding performance of Turbo codes is analyzed. The performance of Turbo codes under high signal-to-noise ratio is mainly determined by its free distance. Because the free distance of the Turbo code is mainly determined by the minimum distance between the code words generated by the input information sequence with a weight of 2, the minimum weight of the code word generated by the component encoder using the original polynomial as the feedback connection polynomial is the largest, Therefore, when the size of the turbo code interleaver is given, if the feedback connection polynomial of the component code uses the original polynomial, the free distance of the turbo code will increase, so that the turbo code in the case of Gaussian signal-to-noise ratio "error level ) "Will decrease. The error leveling effect refers to that the bit error curve becomes flat in the case of medium to high signal-to-noise ratio. In other words, even if the signal-to-noise ratio is increased again, the bit-free rate cannot be reduced (general systems, such as BPSK's bit error curve, the bit-error rate decreases monotonically as the signal-to-noise ratio increases) .

2. Interleaver design

The interleaver is a key factor that affects the performance of the Turbo code. It can refine the distance spectrum of the Turbo code, that is, the code weight distribution is more concentrated. Its quality is directly related to the performance of Turbo codes.

The use of interleaver in the encoder is the key to realize the approximate random encoding of Turbo codes. The interleaver is actually a one-to-one mapping function. Its function is to reset the bit position in the input information sequence to reduce the correlation of the output check sequence of the component encoder and increase the code weight. Generally, when the input information sequence is long, an approximately random mapping method can be used. The corresponding interleaver is called a pseudo-random interleaver. Because the interleaver must have a fixed structure when using Turbo codes in a specific communication system, and it is based on the information sequence, so under certain conditions, the Turbo code can be regarded as a special type of block code to simplify the analysis. Interleaving is a process of rearranging information sequences. If you define a set A, A = {1,2, ..., N}. Then the interleaver can be defined as a one-to-one mapping function π (A-> A): J = π (i), (i, j belongs to A) where i and j are the uninterleaved sequence C and the interleaved sequence, respectively Element label in C '. The mapping function can be expressed as πN = (π (1), π (2), π (3), ..., π (N)). The principle is shown in the figure

In the design of the interleaver, the Turbo code basically follows the following principles:

1) Disturb the original data arrangement sequence to the greatest extent to avoid that the data that is closer to each other before replacement is still closer to each other after replacement, especially to avoid adjacent data from being adjacent after replacement.

Turbo code 2) Try to increase the weight of the minimum code weight code word and reduce the number of low code weight code words.

3) As far as possible, avoid the parity bit in two component encoders directly related to the same information bit to be deleted;

4) For encoders that do not return to zero, the interleaver is designed to avoid rabbits with "tail effect" patterns.

When designing the interleaver, the data size of the specific application system should be considered, so that the interleaving depth is consistent with the data size or an integer multiple of the data frame length under the premise of meeting the delay requirements.

The combination of the interleaver and the component code can ensure that the turbo code encoding output codeword has a high Hamming weight. The role of the interleaver in the Turbo encoder is to reset the bit order in the information sequence. When the weight of the codeword output by the information sequence after passing through the first component encoder is low, the interleaver can make the interleaved information sequence output by the second component encoder with a high probability to have a higher codeword, thus Increase the Hamming weight of codewords: At the same time, a good interleaver can also effectively reduce the correlation between check sequences. Therefore, the quality of the interleaver design greatly affects the performance of the turbo code.

The types of interleavers can be divided into two categories, one is regular interleavers, also known as deterministic interleavers, and the mapping function of the interleavers can be given by a certain analytic function. The second is a random interleaver whose mapping function cannot be given by a certain analytic expression.

Common interleavers for Turbo codes include the following: packet interleavers, random interleavers, s-random interleavers, and so on.

3. Deletion technology

For the increasingly tight bandwidth resources in the digital communication field, increasing the bit rate means saving bandwidth and reducing communication costs. Puncturing is currently the main method to increase the turbo code rate.

In Turbo codes, the puncturing device is usually relatively simple, because in general applications, the code rate is 1/2 or 1/3, so even if there is a puncturing device, it generally only periodically encodes from two components Select the parity bit output in the device. The specific method is: periodically delete some check digits from the check sequences generated by the two RSC codes, and then multiplex with the uncoded information sequence to reconstruct the final coded output sequence, and enter the channel transmission after modulation. If the information sequence is d1 = (C11) and the length is N, then the outputs of the two RSC component encoders are:

The turbo code shown in Figure 3. 6 shows the coding structure using puncturing technology. If the odd bits output from RSC1 and the even bits of RSC2 are taken, that is, the puncturing matrix P = [10,01] is used, then the length of the coding output is 2N, the sequence whose code rate is increased to 1/2 is Cp.

The sequence obtained by puncturing the outputs of the two component code encoders of the Turbo code is called a parity sequence and is a check sequence. A good deletion algorithm should meet the following requirements:

1) The information bit cannot be deleted. Deleting the information bit will cause a large loss of information, thus causing a large loss of bit error rate;

2) Pruning should be performed evenly in the time domain. Pruning all bits at the same time will cause a large loss of information at this time and affect the bit error rate;

3) Puncturing should be performed uniformly for each component code, so that the loss of information is evenly distributed on each component code, to avoid the degradation of component code decoding performance due to uneven information loss.

Decoding principle

Shannon Information Theory tells us that the optimal decoding algorithm is the probabilistic decoding algorithm, which is the maximum posterior probability algorithm (MAP). But before the emergence of Turbo codes, the probability decoding algorithm used in channel coding was the maximum likelihood algorithm (ML). The ML algorithm is a simplification of the MAP algorithm, that is, it is assumed that the source symbols appear with equal probability, so it is a sub-optimal decoding algorithm. The decoding algorithm of the Turbo code uses the MAP algorithm, and the structure of the decoding has been improved. The concept of feedback is introduced again, and a compromise between performance and complexity is achieved. At the same time, the decoding of the Turbo code uses French decoding, which is completely different from the classical algebraic decoding.

The decoding algorithm of the Turbo code was first improved on the basis of the BCJR algorithm. We call it the MAP algorithm, and later formed the Log-MAP algorithm, Max-Log-MAP, and soft input soft output (SOVA) algorithm.

Turbo code decoding structure diagram

1. The decoding structure of the Turbo code is shown in the figure. The Turbo decoder has the following characteristics:

1) Serial cascade

2) Iterative decoding

3) What is exchanged during the iterative decoding process

2. Probability decoding principle and structure

When decoding, the received information is first processed, and the transfer of external information between the two member decoders forms a cyclic iteration structure. Due to the effect of external information, the bit error rate under a certain signal-to-noise ratio will decrease as the number of cycles increases. But at the same time, the correlation between the external information and the received sequence also gradually increases with the increase in the number of decoding, and the error correction capability provided by the external information also weakens. After a certain number of cycles, the decoding performance will no longer improve .

Decoding algorithm

As mentioned earlier, turbo codes require a soft input soft output decoding algorithm. The output of the soft output decoder should contain not only the hard decision value, but also the degree of confidence in making such a decision.

The Turbo code decoding algorithm should consider three issues and the introduction of external information; how to make full use of various types of information in iterative decoding to prevent the formation of simple positive feedback and ensure the convergence of the algorithm; make full use of the relevant information of the original code. There are several common algorithms:

1. Standard MAP algorithm

It is an algorithm that eliminates positive feedback by dividing by the prior distribution after making certain corrections to the bahl soft output algorithm. For a convolutional code with a constraint length of M 1, the amount of calculation is 6x3 ^ M multiplications and 5x2 ^ M additions per bit. Due to the large amount of multiplication operations, the scale and speed of decoding are limited.

2. Log-MAP algorithm

In fact, all the likelihoods in the standard MAP algorithm are expressed in log-likelihood, so that the multiplication operation becomes an addition operation. The total amount of calculation becomes 6x2 ^ M times of addition, 5x2 ^ M times for maximum operation and 5x2 ^ M times for table lookup.

3. Max-Log-MAP algorithm

In the above logarithm domain algorithm, the logarithmic component in the likelihood value addition expression is ignored, and the likelihood addition is completely changed to the maximum calculation operation, so that in addition to omitting most of the addition operation, the biggest benefit This eliminates the need to estimate the signal-to-noise ratio and makes the algorithm more robust.

4. Soft output Viterbi decoding (SOVA)

The amount of calculation is twice that of the standard Viterbi algorithm. Viterbi algorithm is the maximum likelihood sequence estimation algorithm, but because it must be deleted at each step of it

Turbo codes have some low-likelihood paths, and only one optimal path is reserved for each state. It cannot provide soft output. In order to give each bit of his output a credibility, it is necessary to make some corrections to delete the low-likelihood path in order to retain the necessary information. The basic idea is to use the metric difference between the optimal retention path and the deleted path. The smaller the difference, the better the reliability. Then use this difference to correct the credibility of each bit on this path.

Performance simulation comparison

At present, most of the research on Turbo codes is devoted to reducing decoding complexity and delay while obtaining sub-optimal performance, so as to obtain a realizable Turbo code system.

1. Performance comparison of several major decoding algorithms

The influence of Turbo code decoding algorithm on Turbo code

The MAP algorithm, the Log-MAP algorithm, the Max-Log-MAP algorithm and the SOVA algorithm are simulated and compared under the additive white Gaussian channel (AWGN) environment. The system uses the BPSK modulation method and the interleaving length of the Turbo code is 1024. The generator polynomial of the RSC subcode is (37, 21), the system coding rate is R = 1/2, and iterates 5 times during decoding. The simulation results show that the performance of the MAP algorithm is the best among the four algorithms. The performance of the Log-MAP algorithm is close to that of the MAP algorithm at lower SNRq, and the difference is higher at high signal-to-noise ratio. The performance of Max-Log-MAP algorithm and SOVA algorithm is very close. In general, the performance of Max-Log-MAP algorithm is always slightly better than SOVA algorithm. Compared with MAP and Log-MAP, their performance drops significantly. In terms of algorithm complexity, the MAP algorithm is the most complex, followed by Log-MAP, followed by Max-Log-MAP, and the SOYA algorithm is the simplest. It can be seen from this that the turbo code decoding algorithm with excellent performance is very complicated. If the decoding is to be implemented easily and the algorithm is simplified or a simple algorithm is used, it often needs to be at the cost of reduced performance.

2. Effect of different iterations on Turbo code performance

Effect of iteration number on Turbo codes

The left figure of the Turbo code shows the relationship between the BER and Eb / N0 of the Turbo code with a code rate of 1/2 under different decoding iteration times. The interleaving length of the Turbo code is 1024, the generator polynomial of the RSC subcode is (37, 21), and the system coding rate is R = 1/2. As described in Turbo Code Decoding Principles, the two decoders intersect each other with external information for iteration.

Turbo codes can be obtained, the number of iterative decoding increases, and the decoding performance increases. The bit error performance in the first iteration is relatively poor, because the information between the two component decoders has not been well utilized by each other. As the number of iterations increases, the external information between the two component decoders is better utilized, and the estimation of information bits is closer to the maximum likelihood ratio, and the higher the accuracy of the decision output. When the number of iterations reaches a certain value, the decoding performance tends to be stable, and adding new iterations improves the performance very little. Iteration increases decoding delay, especially when encoding large frames. The running time increases significantly when the number of iterations increases in the simulation.

After reaching a certain number of iterations, the newly added iterations do not improve the performance greatly, and the legal generation greatly increases the decoding delay. Therefore, when designing the Turbo code system, it is necessary to select the appropriate number of iterations. Within the delay, to achieve the best decoding performance. This way of pre-specifying the number of iterations is one of the ways to terminate the number of decoding iterations. When the required signal-to-noise ratio is relatively large and the error rate requirement is not too high, the translation can often be achieved after few iterations. The code requires correct decoding. At this time, if the preset number of iterations is relatively large, the decoder will continue to decode until the preset number of iterations. The subsequent generations do not significantly improve performance and are completely unnecessary, and The superfluous French food substitutes bring extra delay to the decoding.

3. The effect of different coding constraints K on Turbo code performance

Effect of different constraints on Turbo code performance

The performance of Turbo codes with different subcodes is also very different. In the design of Turbo codes, the first is to choose a good RSC subcode. Here, only several commonly used and better Turbo codes that use RSCs with different constraint lengths as subcodes are simulated to analyze the effect of constraint lengths on the performance of Turbo codes. It can be seen that as the constraint length K increases, the encoded symbols are related to more information bits, so the stronger the decoding error correction capability, the smaller the bit error rate HER. When BER <10-2e, increase The constraint of the convolutional code will improve the performance of the turbo code HER. When the interleaver length and code rate are fixed, the greater the degree of constraint, the better the HER performance of the turbo code.

Application in 3G

Channel coding technology can improve the error caused by noise and interference during the transmission of digital information, and improve the reliability of the system. Therefore, the efficient channel coding technology has become one of the key technologies in the 3G mobile communication system. The diversity and flexibility of the types of services provided by the 3G mobile communication system put forward higher requirements for error control coding and decoding. Both WCDMA and cdma2000 schemes recommend the use of Turbo coding technology in addition to the convolutional coding technology and interleaving technology similar to the IS-95 CDMA system.

1. Design of RSC encoder

In the cdma2000 scheme, Turbo codes are used in the forward and reverse link channels of the CDMA system. In the reverse link channel, the sub-encoder (3, 1, 3) RSC generator matrix is:

Turbo code

The RSC encoder is based on an 8-state parallel concatenated convolutional code (8PCCC). Interleaving uses bit flip technology. Through the puncturing process, Turbo codes with code rates of 1/4, 1/2, and 1/3 are used. The output parity bits V2 and V2 'of the two sub-encoders are alternately punctured to obtain a Turbo code with a code rate of 1/4; for V1 and V1' puncturing, the available code rate is 1/3; for V2, V2 'is separated by several V1, V1' is deleted, and the code rate is 1/2.

In WCDMA, the BER for receiving service quality is between 10-3e and 10-6e. And to allow data services with long delay, the RSC sub-encoder uses 8-state parallel concatenated convolutional code 8-PCCι. The generating matrix is:

Turbo encoder in WCDMA

2. Selection of interleaving length

In 3G mobile communication, the service rate is from 32kbit / s to 2Mbit / s. 10ms per frame, frame length from 20 to 20000. In order to improve the performance of the decoder, in some low-speed services, multiple frames can be used to form a data block to increase the interleaving depth.

In WCDMA, the turbo code interleaver is a truncable block interleaver. The number of interleaved rows is 5, 10 or 20, and the number of columns is selected based on the determination of the number of rows. Data is read into the interleaver line by line, and line-to-line conversion is performed in a fixed mode. Different input sequence lengths correspond to different line numbers and line-to-line conversion modes. After the row conversion is completed, the near row and column conversion. Different rows correspond to conversion parameters between different columns, and a near-randomized prime modulus algorithm is adopted. After the row and column conversion is completed, the data is read out by column.

cdma2000 is also based on block interleaving. The number of interleaved rows is 25 = 32 rows, and the number of columns N = 2n. N is the minimum value that satisfies 32N greater than or equal to the frame length. The data is read by line. The basis for the conversion between lines is the bit flip principle. The substitution formula for column conversion is: x (i + 1) = [x (i) + c] mod N, which is the remainder of the same mode. In order to be closer to randomization, the offset of each column takes different values. After the data has been converted by rows and columns, it is output by columns.

3. Design of decoder

Due to the complexity of the turbo code decoding algorithm and the long decoding delay, the application of data services with high delay requirements is limited. Therefore, the design of low complexity decoder has become the focus of Turbo code decoding algorithm design. In exchange for simplicity of complexity, sub-optimal performance decoding is allowed. For example, the 3GPP allows Turbo code to have a 1dB gain loss compared to the standard MAP algorithm. Combined with CRC check to reduce the number of iterations, it can reduce decoding complexity and decoding delay when the SNR is large.

Prospects

A few days ago, the study of Turbo codes still lacks the support of theoretical basis, but under various harsh conditions (ie, low SNR), the ability to provide communication close to Shannon's limit has been proved by simulation. However, Turbo codes also have some urgent problems to be solved, such as improvement of decoding algorithm, reduction of complexity, and reduction of decoding delay. As one of the key technologies of commercial 3G mobile communication systems, Turbo codes will gradually gain better theoretical support and be further developed and improved.

Hanukah candle /Chanukah Candle/Jewish candles for holiday use .small Spiral Candle and taper candles color popular in America and Isreal market .

there are 6 color in box , yellow red white green blue orannge color as your require ,

3.8gram/pc  multi-color candle 44pcs/box 50box/ctn 

7gram/pc  multi-color candle 45pcs/pvc box  25box/ctn 

shipment is very quickly ,in the 30days after get the depsoit .welcome to visit my factory 

pls be free to contact with me .



Chanukah Candle

Chanukah Candle,Hand-Dipped Chanukah Candle,Colorful Chanukah Candles,Chanukah Candle Kits

Shijiazhuang Zhongya Candle Co,. Ltd. , https://www.zycandlefactory.com