Генерация VHDL-кода с использованием Matlab HDL Coder
Прошу прощения, если я скажу что-то глупое. Пожалуйста, прости меня: я пытаюсь преобразовать код Matlab (приведенный ниже) в код VHDL, используя кодер HDL. Он содержит функцию sum.Nut, когда я пытаюсь преобразовать код, который он дает мне ошибка:
Генерация кода поддерживает SumModes 'SpecifyPrecision' и 'KeepLSB' для '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. Я действительно застрял, пожалуйста, помогите! Заранее спасибо!
1 ответ
@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, и кажется, что вектор перевернут. Это решает ошибку?