[an error occurred while processing this directive]
Да я просто не оптимизировал по скорости загрузки - это просто оценочный проект :)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))
Количество тактов - 1(разрузка) + 32(основной цикл) + 1(выгрузка) + 1(Ack от регистра-приёмника). А таблицу реализовал в лоб:
subtype Nibble_Type is std_logic_vector(PERMUTE-1 downto 0);
type S_Type is array (2**PERMUTE-1 downto 0) of Nibble_Type;
type Permute_Type is array (KEY_MIX_ROUND-1 downto 0) of S_Type;
constant S_Table:Permute_Type:=(....)
и, соответсвенно, функции
function Permutate_Nibble(Op1: in Nibble_Type; Number: in integer range 0 to BLOCKS-1) return Nibble_Type is
begin
return S_Table(Number)(CONV_INTEGER(Op1));
end;
function PERMUTE_4x4(Op1: in Data_Type) return Data_Type is
variable Res : Data_Type;
begin
G1: for I in 0 to 7 loop
Res(PERMUTE*(I+1)-1 downto PERMUTE*I):=Permutate_Nibble(Op1(PERMUTE*(I+1)-1 downto PERMUTE*I), I);
end loop G1;
return Res;
end function PERMUTE_4x4;
В операционном блоке просто PM := PERMUTE_4x4(CM1).
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru