- •Файл Lekz5_massiv.Doc Лекция № 5 (5-тый курс) Тема: массивы в языке vhdl и проектах криптографических процессоров.
- •1. Вводные замечания и классификация массивов
- •2. Предопределенные типы массивов.
- •3. Массивы пользователя.
- •4. Примеры оформления объявлений пользовательских массивов:
- •5. Методы и средства для определения массивов (Задание значений элементам массивов)
- •6. Инициализация (задание) начальных значений массивов типов bit_vector и std_logic_vector посредством строки бит.
- •7. Инициализация (задание) начальных значений символьных типов массивов посредством символьной строки.
- •8. Программное формирование значений элементов массивов и доступ к элементам массивов
- •9. Пример vhdl проекта криптографического процессора, построенного с использованием массивов
9. Пример vhdl проекта криптографического процессора, построенного с использованием массивов
Этот криптографический процессор реализует алгоритм шифрования, основанный на методе замены символов. Так в частности, если во входной последовательности символов-ключей поступающих на входной порт dach_in обнаруживается символ 'r', то в исходном шифруемом тексте, хранимом в массиве mas2, текущий символ заменяется символом 'r'.
Процедура замены символов реализуется в теле оператора process (clk1) , помеченного меткой pr1 .
В теле оператора process (clk2) , помеченного меткой pr2, реализуется процедура пересылки зашифрованного текста на выходной порт dach_out .
Library ieee;
use ieee.std_logic_1164.all;
entity mas_ch1 is
port ( clk1 :in std_logic;
clk2 :in std_logic;
dach_in : in character;
dach_out : out character);
end mas_ch1;
architecture mas_ch1a of mas_ch1 is
type mas1 is array ( 1 to 8 ) of character ;
signal mas2 : mas1 := "mashines"; -- шифруемый текст
begin
pr1 : process (clk1)
variable k : integer range 0 to 8 := 0;
begin
if clk1'event and clk1 = '1' then
k :=( k )+1;
if dach_in = 'r' and k < 8 then
mas2(k) <= dach_in; -- замена симв. в исходном тексте
end if;
end if;
end process;
process(clk2)
variable i : integer := 0;
begin
if clk2'event and clk2 = '1' and i < 8 then
i := (i ) +1;
dach_out <= mas2(i);
end if;
end process;
end mas_ch1a;
Примечание: Дополнительный материал по объявлению и определению массивов можно найти в папке labor4 (проект mas_pol ). В папке labor4 содержатся также несколько примеров криптографических процессоров, при построении которых использовались массивы.
