0

对不起,如果我说些傻话。请原谅我:我正在尝试使用 HDL 编码器将 Matlab 代码(如下所示)转换为 VHDL 代码。它包含一个名为 sum 的函数。但是当我尝试转换它给出的代码时我的错误:

当输入的大小在运行时可能发生变化时,代码生成仅支持 SumModes 'SpecifyPrecision' 和 'KeepLSB' for 'SUM'。

但问题是我以前从未使用过函数。任何人都可以帮我解决它。应该如何更改我的代码以将其转换为 VHDL。这真的很好!

function y = fcn(n,y1,y2)
n=10;
x1c=zeros(2*n-1,1);
for i=1:2*n-1
    if(i>n)
        j1=1;
        k1=2*n-i;
        j2=i-n+1;
        k2=n;
    else
        j1=n-i+1;
        k1=n;
        j2=1;
        k2=i;
    end
    x1c(i)=sum((y1(j1:k1)).*y2(j2:k2));
end
x1c=flipud(x1c).';
y=x1c;

这是 y1 和 y2 的互相关。y1 和 y2 是两个相同长度的向量,n 是 y1 的长度。我真的卡住了请帮忙!提前致谢!

4

1 回答 1

0

@Haider:看看

    n=10;
    y1 = 1:n;
    y2 = n:-1:1;
    x1c=zeros(1,2*n-1);
    for i=1:2*n-1
        y1_temp = zeros(1,2*n-1);
        y2_temp = zeros(1,2*n-1);
        if(i>n)
            j1=1;
            k1=2*n-i;
            j2=i-n+1;
            k2=n;
        else
            j1=n-i+1;
            k1=n;
            j2=1;
            k2=i;
        end
        y1_temp(j1:k1) = y1(j1:k1);
        y2_temp(j1:k1) = y2(j2:k2);
        x1c(i)=sum(y1_temp.*y2_temp);
    end

我将结果与 Matlab xcorr 函数进行了比较,似乎向量是相反的。这能解决错误吗?

于 2016-01-15T06:32:20.537 回答