Matrix multiplication of two complex vectors in Simulink

Two questions actually, but I would like to make it more visual:

I am implementing a modulator that includes matrix multiplication of a complex vector:

Just to give an example:

cck_encoding_table(1,:)= [ 1j 1 1j -1 1j 1 -1j 1 ]; cck_encoding_table(2,:)= [ -1j -1 -1j 1 1j 1 -1j 1 ]; cck_encoding_table(3,:)= [ -1j 1 -1j -1 -1j 1 1j 1 ]; cck_encoding_table(4,:)= [ 1j -1 1j 1 -1j 1 1j 1 ]; 

Basically, I need to implement this in Simulink (Xilinx), eventually in Hardware:

 cck_n_code=exp(1j*Phi1)*cck_encoding_table(index+1,:); 

My question is how to model matrix multiplication with complex vectors. My understanding is to use the Complex Multiplier . But this is only multiplied by 2 complex vectors

If I had to multiply more than 2 complex vectors per cycle, this would be possible.

I do not expect any answers, such as the model itself, but a possible approach / direction, if any, to solve the problem.

Thanks for reading, Kieran

+4
source share
1 answer

Just write low-level equations that are the result of matrix multiplication. Each output element will be the result of adding up a set of element multiplications from your input vector & matrix.

If you need to do this quickly, then attach as many complex factors and adders as you need, and connect input elements to them - this will give you all your outputs at once and require that you have all your inputs available at once.

Alternatively, put your inputs in a memory block (or probably 2, one for a vector, one for a matrix) and arrange some logic that will feed the correct address into this memory block to iterate over the elements in the appropriate order. These inputs go to a complex multiplier, and then to a complex battery (you may have to simulate this from an adder and a resettable register). Your control logic will need to reset to use this drive periodically.

The battery output can be fed to the next stage or stored in another memory unit (another address for controlling logic for controlling).

if your encoding table will always have elements that are only from the set (1, -1, j, -j), then you can encode them as 2 bits, rather than storing integer fully represented complex numbers and write a custom piece of logic that uses this fact to create a much simpler complex factor than for general purpose.

+4
source

All Articles