Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

[SOLVED] 64 and 256 QAM constellation map

Status
Not open for further replies.

arash rezaee

Member level 5
Joined
Sep 10, 2009
Messages
87
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,951
Hi every one. I want to know how can I find the amplitude and phase of each symbol in 64-QAM and 256-QAM. I have this mapping for 16-QAM but I don`t know how to find it for 64 or 256-QAM. Basically, I want to generate 64 and 256-QAM in the FPGA so I think this way is good. If there is any idea about implementing QAM in FPGA, It is my pleasure to hear it.

Regards
Arash
 

Mityan

Full Member level 5
Joined
Jul 11, 2012
Messages
281
Helped
48
Reputation
96
Reaction score
47
Trophy points
1,308
Activity points
2,835
64 QAM is 8 by 8 square array.
Consider the maximum magnitude is 1. In this case you should lay the elements of the constellation in horizontal direction from -1/sqrt(2) to +1/sqrt(2) spaced uniformly with the step s=2/(7*sqrt(2)) because 8 point = 7 spaces.
In vertical direction just do the same.
Horizontal - In-phase channel, vertical - quadrature.
And you will get point (1,1) with coordinates (I,Q) = (-1/sqrt(2), -1/sqrt(2)). Magnidute will be 1.
point (1,2) - (-1/sqrt(2), -1/sqrt(2)+s)
point (2,1) - (-1/sqrt(2)+s, -1/sqrt(2))
point (2,2) - (-1/sqrt(2)+s, -1/sqrt(2)+s)
point (8,8) - (1/sqrt(2), 1/sqrt(2)).

Numbering is arbitrary

For QAM 256 tthere is 16X16 array.
 

arash rezaee

Member level 5
Joined
Sep 10, 2009
Messages
87
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,951
Thanks a lot for your reply. I understood for In-Phase. But the quadrature part it has to be in phase(degree). Am I right? Can you explain it more?

Regards
Arash

- - - Updated - - -

I found one example in matlab web site and I saw the points and I followed your way but I didn`t get the same answer. here I put the point on that example

[0.4629 + 0.4629i 0.4629 + 0.1543i 0.4629 + 0.7715i 0.4629 + 1.0801i 0.4629 - 0.4629i 0.4629 - 0.1543i 0.4629 - 0.7715i 0.4629 - 1.0801i 0.1543 + 0.4629i 0.1543 + 0.1543i 0.1543 + 0.7715i 0.1543 + 1.0801i 0.1543 - 0.4629i 0.1543 - 0.1543i 0.1543 - 0.7715i 0.1543 - 1.0801i 0.7715 + 0.4629i 0.7715 + 0.1543i 0.7715 + 0.7715i 0.7715 + 1.0801i 0.7715 - 0.4629i 0.7715 - 0.1543i 0.7715 - 0.7715i 0.7715 - 1.0801i 1.0801 + 0.4629i 1.0801 + 0.1543i 1.0801 + 0.7715i 1.0801 + 1.0801i 1.0801 - 0.4629i 1.0801 - 0.1543i 1.0801 - 0.7715i 1.0801 - 1.0801i -0.4629 + 0.4629i -0.4629 + 0.1543i -0.4629 + 0.7715i -0.4629 + 1.0801i -0.4629 - 0.4629i -0.4629 - 0.1543i -0.4629 - 0.7715i -0.4629 - 1.0801i -0.1543 + 0.4629i -0.1543 + 0.1543i -0.1543 + 0.7715i -0.1543 + 1.0801i -0.1543 - 0.4629i -0.1543 - 0.1543i -0.1543 - 0.7715i -0.1543 - 1.0801i -0.7715 + 0.4629i -0.7715 + 0.1543i -0.7715 + 0.7715i -0.7715 + 1.0801i -0.7715 - 0.4629i -0.7715 - 0.1543i -0.7715 - 0.7715i -0.7715 - 1.0801i -1.0801 + 0.4629i -1.0801 + 0.1543i -1.0801 + 0.7715i -1.0801 + 1.0801i -1.0801 - 0.4629i -1.0801 - 0.1543i -1.0801 - 0.7715i -1.0801 - 1.0801i]'

Regards
Arash

Thanks a lot for your reply. I understood for In-Phase. But the quadrature part it has to be in phase(degree). Am I right? Can you explain it more?

Regards
Arash
 

enjunear

Advanced Member level 3
Joined
Dec 21, 2010
Messages
960
Helped
309
Reputation
618
Reaction score
303
Trophy points
1,343
Location
USA, midwest
Activity points
9,749
Thanks a lot for your reply. I understood for In-Phase. But the quadrature part it has to be in phase(degree). Am I right? Can you explain it more?
It's a complex number, which can be represented in two ways: rectangular coordinates or polar coordinates.

Rectangular coordinates are written as the sum of two magnitudes (in-phase, quadrature)... like the data you found (e.g. 0.4629 + 0.4629i). Recall that i and j = sqrt(-1), which in signal theory translates to a phase shift of 90 degrees (see Euler's Identity). So, the first number is the in-phase signal magnitude, and the number with the i (or j) is the quadrature signal magnitude.

You can express the same point as the vector's magnitude and phase angle (mag /phase). (0.4629 + 0.4629i) would be written as 0.6546 @ +45 degrees.

This is probably why your conversion isn't lining up... the previous poster stated to set the corner points (max magnitude) with a magnitude of 1, whereas the dataset you found has a max magnitude of 1.527 (1.0801 + 1.0801i --> 1.5275 @ 45 deg). For a maximum vector magnitude of 1, your rectangular values would be 0.7071 at the largest (e.g. +/- 0.7071 +/- 0.7071i for the four corner points).
 

arash rezaee

Member level 5
Joined
Sep 10, 2009
Messages
87
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,951
Thanks for your answering. I have one more question :p. How can I calculate point as the vector's magnitude and phase angle (mag /phase)?
Please help me if you don`t mind.

Regards
Arash
 

enjunear

Advanced Member level 3
Joined
Dec 21, 2010
Messages
960
Helped
309
Reputation
618
Reaction score
303
Trophy points
1,343
Location
USA, midwest
Activity points
9,749
1) Since you are already using Matlab, use the built-in function, cart2pol.
MathWorks - CART2POL

2) Most handheld scientific calculators have a method to convert coordinates from rectangular to polar form, and back again.

3) If you want to do the trig, the vector magnitude is the length of the hypotenuse of a triangle with sides of length x and y (think Pythagorean theorem... c^2 = a^2 + b^2 ).

Calculating the angle is a little more tricky. The angle is always determined as a vector starting from pointing along the positive x-axis. So, if your vector is in the upper-right quadrant (positive x, positive y), then theta = arctan(|y|/|x|). However, if your vector is in the upper-left quadrant, then the arc-tangent will give you the angle from the negative x-axis, so you will have to take 180-arctan(|y|/|x|) to get the angle starting from the positive x-axis. Similar adjustments to the triangle's included angle need to be done for the lower-left quadtrant ( arctan(|y|/|x|)+180 ), and the lower-right quadrant ( 360-arctan(|y|/|x|) ).

There are other ways to calculate and represent the angles, but this should help you get some insight into the method of conversion from rectangular to polar coordinates. Draw the four cases out and follow what angle the arctan is calculating, and why you need to compensate with 180-, +180 and 360- for those three quadrants.
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top