4

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

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

举个例子:

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 个以上的复数向量,这是可能的。

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

感谢阅读,基兰

4

1 回答 1

4

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

如果您需要快速完成,请根据需要放置尽可能多的复杂乘法器和加法器,并将输入元素连接到它们 - 这将立即为您提供所有输出,并要求您同时提供所有输入.

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

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

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

于 2011-05-10T14:35:03.170 回答