Simulink中两个复矢量的矩阵乘法

时间:2011-05-09 22:34:00

标签: fpga simulink xilinx system-generator

真的有两个问题,但我想让它更具描述性:

我正在实现一个涉及复杂Vector的矩阵乘法的调制器:

举一个例子:

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 ];

基本上,我需要在Simulink(Xilinx)中最终在硬件中实现这一点:

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

我的问题是,如何使用复杂向量建模矩阵乘法。我的理解是使用Complex Multiplier。但那就是只增加2个复数向量

如果我必须在一个时钟中乘以2个以上的复数向量,那么它是可能的。

我不期待任何答案,如模型本身,但可能的方法/方向,如果有任何解决问题

感谢阅读, 基兰

1 个答案:

答案 0 :(得分:4)

只需写出矩阵乘法产生的低级方程式。输出的每个元素都是对输入向量和矩阵中元素乘法的集合求和的结果。

如果您需要快速完成,然后根据需要放下尽可能多的复数乘法器和加法器,并将输入元素连接到它们 - 这将立即为您提供所有输出并要求您输入所有输入马上就可以买到。

或者,将输入放入一个内存块(或者可能是2,一个用于向量,一个用于矩阵)并安排一些逻辑,将正确的地址输入到该内存块中,以适当的顺序迭代元素。这些输入转到复数乘法器,然后转到复数累加器(您可能需要对加法器和可复位寄存器进行建模)。您的控制逻辑需要定期重置此累加器。

累加器的输出可以输入到下一级,或者存储在另一个存储器块中(另一个地址供您控制逻辑管理)。

如果您的编码表总是包含仅来自集合(1,-1,j,-j)的元素,那么您可以将它们编码为2位而不是存储完整表示的复数并编写自定义利用这一事实创造一个比通用目的更简单的复数乘数的逻辑。