我正在寻找使用 FPGA 执行互相关* 操作。
我目前正在努力解决的具体部分是乘法部分。我想将使用过量或偏移表示**的 nx8 移位寄存器的每个 8 位元素与 nx1 移位寄存器相乘,在该移位寄存器中,出于乘法的目的,我将 0 视为 -1。
现在,如果我对单个元素执行此操作,我可能会为操作执行以下操作:
input [7:0] dataIn;
input refIn;
output [7:0] dataOut;
wire [7:0] dataOut;
wire [7:0] invertedData;
assign invertedData = 8'd0 - dataIn;
assign dataOut <= refIn ? dataIn : invertedData;
我想知道如何将其扩展到 4、8、n 个元素?
我的第一个想法是使用这样的 for 循环:
for(loop=0; loop < n; loop = loop+1)
begin
assign invertedData[loop*8+7:loop*8] = 8'd0 - dataIn[loop*8+7:n*8];
assign dataOut[loop*8+7:loop*8] <= refIn[loop] ? dataIn[loop*8+7:loop*8] : invertedData[loop*8+7:loop*8];
end
这不会编译,但这或多或少是个想法,我似乎无法找到正确的语法来做我想做的事。
** http://www.cs.auckland.ac.nz/~patrice/210-2006/210%20LN04_2.pdf