Необходимо переложить текст программы с Матлаба на VHDL. Суть самой программы- ТЧП(теоретико-числовые преобразования).
Текст на Матлаб:
x=a;
for k=1:N
a=1;s=0;
for i=1:N
s=s+a*x(i);
a=a*gg;
a=mod(a,p);
end;
X(k)=mod(s,p);
gg=gg*g;gg=mod(gg,p);
end
-------------------------------------
-------------------------------------
Реализация его на VHDL:
package random_1 is
subtype short is integer range 0 to 255;
type vhod is array (1 to 8) of short;
subtype buf is integer range 0 to 255;
end package random_1;
------------------------------------------------------
package random_2 is
function modul(ch: integer; m:integer) return integer;
end package random_2;
-------------------------------------------------------------
package body random_2 is
function modul(ch: integer; m:integer) return integer is
variable c,b,kj,modify: integer:= 0;
begin
kj:= 17;
c:= ch;
b:= m;
while (c>b) loop
c:= c-kj;
end loop;
modify:= c;
return modify;
end function modul;
end package body random_2;
---------------------------------------------------------
Library IEEE;
use IEEE.std_logic_1164.all;
use Work.random_1.all;
use Work.random_2.all;
entity NTTwar is
generic (N: integer:=8;
p:integer:=17);
port (x: in vhod:= (0,0,0,0,0,0,0,0);
zx: out vhod:= (0,0,0,0,0,0,0,0);
clk: in bit);
end entity NTTwar;
------------------------------------------------------------
architecture Top2 of NTTwar is
signal dres: vhod;
begin
process(x)
variable zero,s,a,gg,g: integer;
variable prob: vhod;
begin
gg:= 1;
g:=4;
for k in 1 to N loop
a:= 1;
s:= 0;
for i in 1 to N loop
s:= s+a*x(i);
a:= a*gg;
a:= modul(s,p);
end loop;
prob(k):= modul(s,p);
gg:= gg*g;
gg:= modul(gg,p);
end loop;
zx <= prob;
end process;
end architecture Top2;
-----------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
СУТЬ ПРОБЛЕМЫ:
1)ПРОГРАММА НЕ РАБОТАЕТ ДОЛЖНЫМ ОБРАЗОМ(ВЫХОДНЫЕ ОТЧЁТЫ)-ПОЧЕМУ ВОПРОС :)
БУДЬТЕ ДОБРЫ, ПОДСКАЖИТЕ КАК УСТРАНИТЬ ДАННУЮ НЕИСПРАВНОСТЬ И РЕАЛИЗОВАТЬ ДАННУЮ ПРОГРАММУ ПОДОБАЮЩИМ ОБРАЗОМ И ЕСЛИ ИМЕЕТСЯ ВОЗМОЖНОСТЬ КИНЬТЕ ССЫЛКИ НА VHDL-КОД, РЕАЛИЗУЮЩИЙ ТЧП ЛИБО КАКОЙ-ЛИБО АЛГОРИТМ С ВЛОЖЕННЫМИ ЦИКЛАМИ(НЕОБХОДИМО РАЗОБРАТЬСЯ В ИХ РАБОТЕ).