使用 Matlab HDL Coder 生成 VHDL 代码

VHDL Code Generation using Matlab HDL Coder

对不起如果我说了一些话silly.Please请原谅我: 我正在尝试将 Matlab 代码(下面给出)转换为 VHDL 代码,使用 HDL coder.It 包含一个名为 sum.But 的函数,当我尝试转换代码时出现错误:

code generation only supports SumModes 'SpecifyPrecision' and 'KeepLSB' for 'SUM' when the size of the inputs can vary at run-time.

但问题是我从未使用过函数 before.Can 任何人请帮助我 it.How 应该更改我的代码以将其转换为 VHDL.It 会非常好!

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 的长度。我真的卡住了,请帮忙! 提前致谢!

@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函数对比了一下,好像是向量反转了。这是否解决了错误?