Перейти к содержанию
    

Rokki

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Ув. Gate! Не сердчайте! Я ведь только студент и работаю с данным пакетом очень мало. :) Итак. Попробую ещё раз изложить суть проблемы(т.к. возможно был не совсем корректен): Имеется код,работающий на Матлабе.Этот код выполняет ТЧП(Теоретико-числовое преобразование). Мне требуется переложить его на VHDL. В результате чего получился выложенный выше код. В процессе компиляции ошибки не обнаруженны,но работа программы не корректна: выходной массив содержит просто одиннаковые элементы. Возникло подозрение,что я чего-то недопонимаю в работе вложенных циклов.....вот и задал вопрос. Gate, согласен с вами, что сам вопрос не совсем корректен....просто я создал топик в надежде на то,что либо кто-то реализовывал подобное, либо кто-то узрит ошибку в самом стиле описания.
  2. Я имел ввиду в моём случае конструкцию типа: for .........loop операторы for............ loop операторы end loop; end loop;
  3. Ув. CappuCcino, мне конечно немного не ловко, но не могли бы вы выложить ссылочку или конкретный пример с исп. регистра для работы с вложенными циклами. Заранее спасибо. :)
  4. Необходимо переложить текст программы с Матлаба на 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-КОД, РЕАЛИЗУЮЩИЙ ТЧП ЛИБО КАКОЙ-ЛИБО АЛГОРИТМ С ВЛОЖЕННЫМИ ЦИКЛАМИ(НЕОБХОДИМО РАЗОБРАТЬСЯ В ИХ РАБОТЕ).
×
×
  • Создать...