【精品资源】基于FPGA的超高阶16384QAM星座点映射verilog实现

目录

1.16384-QAM星座图映射原理

1.1 映射原理

1.2 映射公式

1.3 映射表

2.Verilog实现

3.测试结果

4.完整程序下载


       超高阶调制技术如16384-QAM(Quadrature Amplitude Modulation, 正交幅度调制)星座图映射是一种先进的数字通信技术,它能够在有限的频谱资源内传输更多的信息比特,从而提高数据传输速率。然而,高阶调制技术也面临着接收端解调复杂度增加、误码率升高等挑战。

1.16384-QAM星座图映射原理

       QAM调制是将数字信息转换为模拟信号的一种方式,它同时利用了载波的幅度和相位来携带信息。对于N阶QAM调制,每个符号可以表示log₂(N)个比特的信息。16384-QAM意味着每个调制符号可以携带log₂(16384) = 14比特的信息。为了实现如此高的信息承载能力,需要设计一个足够大的星座图,使得星座点之间的最小欧氏距离尽可能大,从而降低误码率。

1.1 映射原理

       在16384-QAM中,每个符号由实部和虚部组成,每个部分都需要映射到相应的星座点上。理想情况下,星座点应该均匀分布在复平面内,形成一个规则的网格结构。然而,随着星座点数量的增加,要维持星座点之间的足够距离变得越来越困难。

1.2 映射公式

       假设星座点在复平面上的坐标为I+jQ,其中 I 和 Q 分别表示实部和虚部。对于16384-QAM,每个部分需要映射到128个不同的电平上。设I 和Q 的取值范围分别为 [−63,63][−63,63]。

1.3 映射表

       对于14比特的信息,可以将其分为两部分,每部分7比特。第一部分用于确定实部I 的值,第二部分用于确定虚部Q 的值。具体映射关系可以表示为:

2.Verilog实现

 008·················································································   
      if(dac_IQ_control) begin
        case(I)
          7'b0000000: I_4d <= 1*D;
          7'b0000001: I_4d <= 3*D;
          7'b0000010: I_4d <= 5*D;
          7'b0000011: I_4d <= 7*D;
          7'b0000100: I_4d <= 9*D;
          7'b0000101: I_4d <= 11*D;
          7'b0000110: I_4d <= 13*D;
          7'b0000111: I_4d <= 15*D;
          7'b0001000: I_4d <= 17*D;
          7'b0001001: I_4d <= 19*D;
          7'b0001010: I_4d <= 21*D;
          7'b0001011: I_4d <= 23*D;
          7'b0001100: I_4d <= 25*D;
          7'b0001101: I_4d <= 27*D;
          7'b0001110: I_4d <= 29*D;
          7'b0001111: I_4d <= 31*D;
          7'b0010000: I_4d <= 33*D;
          7'b0010001: I_4d <= 35*D;
          7'b0010010: I_4d <= 37*D;
          7'b0010011: I_4d <= 39*D;
          7'b0010100: I_4d <= 41*D;
          7'b0010101: I_4d <= 43*D;
          7'b0010110: I_4d <= 45*D;
          7'b0010111: I_4d <= 47*D;
          7'b0011000: I_4d <= 49*D;
          7'b0011001: I_4d <= 51*D;
          7'b0011010: I_4d <= 53*D;
          7'b0011011: I_4d <= 55*D;
          7'b0011100: I_4d <= 57*D;
          7'b0011101: I_4d <= 59*D;
          7'b0011110: I_4d <= 61*D;
          7'b0011111: I_4d <= 63*D;
          7'b0100000: I_4d <= 65*D;
          7'b0100001: I_4d <= 67*D;
          7'b0100010: I_4d <= 69*D;
          7'b0100011: I_4d <= 71*D;
          7'b0100100: I_4d <= 73*D;
          7'b0100101: I_4d <= 75*D;
          7'b0100110: I_4d <= 77*D;
          7'b0100111: I_4d <= 79*D;
          7'b0101000: I_4d <= 81*D;
          7'b0101001: I_4d <= 83*D;
          7'b0101010: I_4d <= 85*D;
          7'b0101011: I_4d <= 87*D;
          7'b0101100: I_4d <= 89*D;
          7'b0101101: I_4d <= 91*D;
          7'b0101110: I_4d <= 93*D;
          7'b0101111: I_4d <= 95*D;
          7'b0110000: I_4d <= 97*D;
          7'b0110001: I_4d <= 99*D;
          7'b0110010: I_4d <= 101*D;
          7'b0110011: I_4d <= 103*D;
          7'b0110100: I_4d <= 105*D;
          7'b0110101: I_4d <= 107*D;
          7'b0110110: I_4d <= 109*D;
          7'b0110111: I_4d <= 111*D;
          7'b0111000: I_4d <= 113*D;
          7'b0111001: I_4d <= 115*D;
          7'b0111010: I_4d <= 117*D;
          7'b0111011: I_4d <= 119*D;
          7'b0111100: I_4d <= 121*D;
          7'b0111101: I_4d <= 123*D;
          7'b0111110: I_4d <= 125*D;
          7'b0111111: I_4d <= 127*D;
 

          7'b1000000: I_4d <= -D;
          7'b1000001: I_4d <= -3*D;
          7'b1000010: I_4d <= -5*D;
          7'b1000011: I_4d <= -7*D;
          7'b1000100: I_4d <= -9*D;
          7'b1000101: I_4d <= -11*D;
          7'b1000110: I_4d <= -13*D;
          7'b1000111: I_4d <= -15*D;
          7'b1001000: I_4d <= -17*D;
          7'b1001001: I_4d <= -19*D;
          7'b1001010: I_4d <= -21*D;
          7'b1001011: I_4d <= -23*D;
          7'b1001100: I_4d <= -25*D;
          7'b1001101: I_4d <= -27*D;
          7'b1001110: I_4d <= -29*D;
          7'b1001111: I_4d <= -31*D;
          7'b1010000: I_4d <= -33*D;
          7'b1010001: I_4d <= -35*D;
          7'b1010010: I_4d <= -37*D;
          7'b1010011: I_4d <= -39*D;
          7'b1010100: I_4d <= -41*D;
          7'b1010101: I_4d <= -43*D;
          7'b1010110: I_4d <= -45*D;
          7'b1010111: I_4d <= -47*D;
          7'b1011000: I_4d <= -49*D;
          7'b1011001: I_4d <= -51*D;
          7'b1011010: I_4d <= -53*D;
          7'b1011011: I_4d <= -55*D;
          7'b1011100: I_4d <= -57*D;
          7'b1011101: I_4d <= -59*D;
          7'b1011110: I_4d <= -61*D;
          7'b1011111: I_4d <= -63*D;
          7'b1100000: I_4d <= -65*D;
          7'b1100001: I_4d <= -67*D;
          7'b1100010: I_4d <= -69*D;
          7'b1100011: I_4d <= -71*D;
          7'b1100100: I_4d <= -73*D;
          7'b1100101: I_4d <= -75*D;
          7'b1100110: I_4d <= -77*D;
          7'b1100111: I_4d <= -79*D;
          7'b1101000: I_4d <= -81*D;
          7'b1101001: I_4d <= -83*D;
          7'b1101010: I_4d <= -85*D;
          7'b1101011: I_4d <= -87*D;
          7'b1101100: I_4d <= -89*D;
          7'b1101101: I_4d <= -91*D;
          7'b1101110: I_4d <= -93*D;
          7'b1101111: I_4d <= -95*D;
          7'b1110000: I_4d <= -97*D;
          7'b1110001: I_4d <= -99*D;
          7'b1110010: I_4d <= -101*D;
          7'b1110011: I_4d <= -103*D;
          7'b1110100: I_4d <= -105*D;
          7'b1110101: I_4d <= -107*D;
          7'b1110110: I_4d <= -109*D;
          7'b1110111: I_4d <= -111*D;
          7'b1111000: I_4d <= -113*D;
          7'b1111001: I_4d <= -115*D;
          7'b1111010: I_4d <= -117*D;
          7'b1111011: I_4d <= -119*D;
          7'b1111100: I_4d <= -121*D;
          7'b1111101: I_4d <= -123*D;
          7'b1111110: I_4d <= -125*D;
          7'b1111111: I_4d <= -127*D;
 
 
 
        endcase
        case(Q)
          7'b0000000: Q_4d <= 1*D;
          7'b0000001: Q_4d <= 3*D;
          7'b0000010: Q_4d <= 5*D;
          7'b0000011: Q_4d <= 7*D;
          7'b0000100: Q_4d <= 9*D;
          7'b0000101: Q_4d <= 11*D;
          7'b0000110: Q_4d <= 13*D;
          7'b0000111: Q_4d <= 15*D;
          7'b0001000: Q_4d <= 17*D;
          7'b0001001: Q_4d <= 19*D;
          7'b0001010: Q_4d <= 21*D;
          7'b0001011: Q_4d <= 23*D;
          7'b0001100: Q_4d <= 25*D;
          7'b0001101: Q_4d <= 27*D;
          7'b0001110: Q_4d <= 29*D;
          7'b0001111: Q_4d <= 31*D;
          7'b0010000: Q_4d <= 33*D;
          7'b0010001: Q_4d <= 35*D;
          7'b0010010: Q_4d <= 37*D;
          7'b0010011: Q_4d <= 39*D;
          7'b0010100: Q_4d <= 41*D;
          7'b0010101: Q_4d <= 43*D;
          7'b0010110: Q_4d <= 45*D;
          7'b0010111: Q_4d <= 47*D;
          7'b0011000: Q_4d <= 49*D;
          7'b0011001: Q_4d <= 51*D;
          7'b0011010: Q_4d <= 53*D;
          7'b0011011: Q_4d <= 55*D;
          7'b0011100: Q_4d <= 57*D;
          7'b0011101: Q_4d <= 59*D;
          7'b0011110: Q_4d <= 61*D;
          7'b0011111: Q_4d <= 63*D;
          7'b0100000: Q_4d <= 65*D;
          7'b0100001: Q_4d <= 67*D;
          7'b0100010: Q_4d <= 69*D;
          7'b0100011: Q_4d <= 71*D;
          7'b0100100: Q_4d <= 73*D;
          7'b0100101: Q_4d <= 75*D;
          7'b0100110: Q_4d <= 77*D;
          7'b0100111: Q_4d <= 79*D;
          7'b0101000: Q_4d <= 81*D;
          7'b0101001: Q_4d <= 83*D;
          7'b0101010: Q_4d <= 85*D;
          7'b0101011: Q_4d <= 87*D;
          7'b0101100: Q_4d <= 89*D;
          7'b0101101: Q_4d <= 91*D;
          7'b0101110: Q_4d <= 93*D;
          7'b0101111: Q_4d <= 95*D;
          7'b0110000: Q_4d <= 97*D;
          7'b0110001: Q_4d <= 99*D;
          7'b0110010: Q_4d <= 101*D;
          7'b0110011: Q_4d <= 103*D;
          7'b0110100: Q_4d <= 105*D;
          7'b0110101: Q_4d <= 107*D;
          7'b0110110: Q_4d <= 109*D;
          7'b0110111: Q_4d <= 111*D;
          7'b0111000: Q_4d <= 113*D;
          7'b0111001: Q_4d <= 115*D;
          7'b0111010: Q_4d <= 117*D;
          7'b0111011: Q_4d <= 119*D;
          7'b0111100: Q_4d <= 121*D;
          7'b0111101: Q_4d <= 123*D;
          7'b0111110: Q_4d <= 125*D;
          7'b0111111: Q_4d <= 127*D;
 

          7'b1000000: Q_4d <= -D;
          7'b1000001: Q_4d <= -3*D;
          7'b1000010: Q_4d <= -5*D;
          7'b1000011: Q_4d <= -7*D;
          7'b1000100: Q_4d <= -9*D;
          7'b1000101: Q_4d <= -11*D;
          7'b1000110: Q_4d <= -13*D;
          7'b1000111: Q_4d <= -15*D;
          7'b1001000: Q_4d <= -17*D;
          7'b1001001: Q_4d <= -19*D;
          7'b1001010: Q_4d <= -21*D;
          7'b1001011: Q_4d <= -23*D;
          7'b1001100: Q_4d <= -25*D;
          7'b1001101: Q_4d <= -27*D;
          7'b1001110: Q_4d <= -29*D;
          7'b1001111: Q_4d <= -31*D;
          7'b1010000: Q_4d <= -33*D;
          7'b1010001: Q_4d <= -35*D;
          7'b1010010: Q_4d <= -37*D;
          7'b1010011: Q_4d <= -39*D;
          7'b1010100: Q_4d <= -41*D;
          7'b1010101: Q_4d <= -43*D;
          7'b1010110: Q_4d <= -45*D;
          7'b1010111: Q_4d <= -47*D;
          7'b1011000: Q_4d <= -49*D;
          7'b1011001: Q_4d <= -51*D;
          7'b1011010: Q_4d <= -53*D;
          7'b1011011: Q_4d <= -55*D;
          7'b1011100: Q_4d <= -57*D;
          7'b1011101: Q_4d <= -59*D;
          7'b1011110: Q_4d <= -61*D;
          7'b1011111: Q_4d <= -63*D;
          7'b1100000: Q_4d <= -65*D;
          7'b1100001: Q_4d <= -67*D;
          7'b1100010: Q_4d <= -69*D;
          7'b1100011: Q_4d <= -71*D;
          7'b1100100: Q_4d <= -73*D;
          7'b1100101: Q_4d <= -75*D;
          7'b1100110: Q_4d <= -77*D;
          7'b1100111: Q_4d <= -79*D;
          7'b1101000: Q_4d <= -81*D;
          7'b1101001: Q_4d <= -83*D;
          7'b1101010: Q_4d <= -85*D;
          7'b1101011: Q_4d <= -87*D;
          7'b1101100: Q_4d <= -89*D;
          7'b1101101: Q_4d <= -91*D;
          7'b1101110: Q_4d <= -93*D;
          7'b1101111: Q_4d <= -95*D;
          7'b1110000: Q_4d <= -97*D;
          7'b1110001: Q_4d <= -99*D;
          7'b1110010: Q_4d <= -101*D;
          7'b1110011: Q_4d <= -103*D;
          7'b1110100: Q_4d <= -105*D;
          7'b1110101: Q_4d <= -107*D;
          7'b1110110: Q_4d <= -109*D;
          7'b1110111: Q_4d <= -111*D;
          7'b1111000: Q_4d <= -113*D;
          7'b1111001: Q_4d <= -115*D;
          7'b1111010: Q_4d <= -117*D;
          7'b1111011: Q_4d <= -119*D;
          7'b1111100: Q_4d <= -121*D;
          7'b1111101: Q_4d <= -123*D;
          7'b1111110: Q_4d <= -125*D;
          7'b1111111: Q_4d <= -127*D;
 
        endcase

3.测试结果

FPGA仿真结果

matlab显示星座图

       16384-QAM作为一种超高阶调制技术,能够在有限的频谱资源内传输更多的信息比特,从而提高数据传输速率。然而,高阶调制技术也面临着接收端解调复杂度增加、误码率升高等挑战。

4.完整程序下载

完整可运行代码,博主已上传至CSDN,使用版本为matlab2022a:

https://download.csdn.net/download/ccsss22/89741226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值