基于FPGA的映射调制实现
项目简述
在通信过程中,经常能碰见调制解调,这里将讲解一种映射调制的方法,并且给出相应的代码供大家学习。一般调制位于无线通信中比较靠后的未知,在交织之后。这里的映射调制并没有介入载波,只是进行了相应的星座图映射,至于最后载波的加入,将在后面的博客中学习。
数学建模
首先我们常见的QPSK与16-QAM的星座图如下:
由星座图可以得到编码之后的如下信息:
QPSK编码对应坐标轴大小
16-QAM编码对应坐标轴大小
星座图映射的对象为位交织输出 u = ( u 0 , u 1 , . . . , u N l d p c − 2 , u N l d p c − 1 ) u=(u_0,u_1,...,u_{N_{ldpc}-2},u_{N_{ldpc}-1}) u=(u0,u1,...,uNldpc−2,uNldpc−1) , N l d p c = 16200 N_{ldpc}=16200 Nldpc=16200主要是因为LDPC编码之后每包的长度就是16200,星座图映射分为两步:
(1)解复用,将 u u u 分解为 N s u b s t r e a m s N_{substreams} Nsubstreams 个子流
(2)将 N s u b s t r e a m s N_{substreams} Nsubstreams 个子流根据调制方式映射到对应星座图。
那么对于不同的调制方式, $N_{substreams}的值如下:
Modulation | Number of sub-streams N s u b s t r e a m s N_{substreams} Nsubstreams |
---|---|
QPSK | 2 |
16-QAM | 8 |
首先我们要完成解复用,其实说白了解复用就是一个串并变换。
解复用模块将输入 v d i v_{di} vdi 映射到输出 b i , j b_{i,j} bi,j,其中 i i i为第 i i i个子流, j = d i d i v N s u b s t r e a m s j=di \ div\ N_{substreams} j=di div Nsubstreams。其中对于QPSK调制,i与 d i m o d N s u b s t r e a m s di \ mod\ N_{substreams} di mod Nsubstreams的值一样,对于16-QAM则进行了相应的变换,如下表:
Modulation format | QPSK | |
---|---|---|
d i m o d N s u b s t r e a m s di \ mod\ N_{substreams} di mod Nsubstreams | 0 | 1 |
e | 0 | 1 |
Modulation format | 16-QAM | |||||||
---|---|---|---|---|---|---|---|---|
d i m o d N s u b s t r e a m s di \ mod\ N_{substreams} di |