Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая_СТЗИ_Клепач.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
644.79 Кб
Скачать

Конвертирования программных величин

library IEEE;

use IEEE.STD_LOGIC_1164.all;

package CONVERTERS is

function CONV (X :STD_LOGIC_VECTOR) return BIT_VECTOR;

function CONV (X :BIT_VECTOR) return STD_LOGIC_VECTOR;

function CONV (X :STD_LOGIC_VECTOR (7 downto 0)) return CHARACTER;

function CONV (X :CHARACTER) return STD_LOGIC_VECTOR;

function CONV (X :STD_LOGIC_VECTOR) return INTEGER;

function CONV8 (X :INTEGER) return STD_LOGIC_VECTOR;

end CONVERTERS;

package body CONVERTERS is

-----------------------------------------------------------------------------

function CONV (X :STD_LOGIC_VECTOR) return BIT_VECTOR is

constant XMAP :BIT :='0';

variable RESULT :BIT_VECTOR (X'RANGE);

begin

for i in RESULT'RANGE loop

case X(i) is

when '0' | 'L' => RESULT(i) := '0';

when '1' | 'H' => RESULT(i) := '1';

when others => RESULT(i) := XMAP;

end case;

end loop;

return RESULT;

end CONV;

------------------------------------------------------------------------------

-- From BIT_VECTOR to STD_LOGIC_VECTOR converter

------------------------------------------------------------------------------

function CONV (X :BIT_VECTOR) return STD_LOGIC_VECTOR is

variable RESULT :STD_LOGIC_VECTOR (X'RANGE);

begin

for i in RESULT'RANGE loop

case X(i) is

when '0' => RESULT(i) := '0';

when '1' => RESULT(i) := '1';

end case;

end loop;

return RESULT;

end CONV;

------------------------------------------------------------------------------

-- From STD_LOGIC_VECTOR to CHARACTER converter

------------------------------------------------------------------------------

function CONV (X :STD_LOGIC_VECTOR (7 downto 0)) return CHARACTER is

constant XMAP :INTEGER :=0;

variable TEMP :INTEGER :=0;

begin

for i in X'RANGE loop

TEMP:=TEMP*2;

case X(i) is

when '0' | 'L' => null;

when '1' | 'H' => TEMP :=TEMP+1;

when others => TEMP :=TEMP+XMAP;

end case;

end loop;

return CHARACTER'VAL(TEMP);

end CONV;

------------------------------------------------------------------------------

-- From CHARACTER to STD_LOGIC_VECTOR (7 downto 0) converter

------------------------------------------------------------------------------

function CONV (X :CHARACTER) return STD_LOGIC_VECTOR is

variable RESULT :STD_LOGIC_VECTOR (7 downto 0);

variable TEMP :INTEGER :=CHARACTER'POS(X);

begin

for i in RESULT'REVERSE_RANGE loop

case TEMP mod 2 is

when 0 => RESULT(i):='0';

when 1 => RESULT(i):='1';

when others => null;

end case;

TEMP:=TEMP/2;

end loop;

return RESULT;

end CONV;

------------------------------------------------------------------------------

-- From STD_LOGIC_VECTOR to unsigned INTEGER converter

------------------------------------------------------------------------------

function CONV (X :STD_LOGIC_VECTOR) return INTEGER is

constant XMAP :INTEGER :=0;

variable RESULT :INTEGER :=0;

begin

for i in X'RANGE loop

RESULT:=RESULT*2;

case X(i) is

when '0' | 'L' => null;

when '1' | 'H' => RESULT :=RESULT+1;

when others => RESULT :=RESULT+XMAP;

end case;

end loop;

return RESULT;

end CONV;

------------------------------------------------------------------------------

-- From INTEGER to 8-bit STD_LOGIC_VECTOR converter

------------------------------------------------------------------------------

function CONV8 (X :INTEGER) return STD_LOGIC_VECTOR is

constant L :INTEGER :=8;

variable RESULT :STD_LOGIC_VECTOR (L-1 downto 0);

variable TEMP :INTEGER;

begin

if X<0 then

TEMP:=(2**RESULT'LENGTH)+X;

else

TEMP:=X;

end if;

for i in RESULT'REVERSE_RANGE loop

case TEMP mod 2 is

when 0 => RESULT(i):='0';

when 1 => RESULT(i):='1';

when others => null;

end case;

TEMP:=TEMP/2;

end loop;

return RESULT;

end;

end CONVERTERS;

В ременные диаграммы работы данной программы

ВЫВОДЫ

В данной части проекта я разработала криптографический процессор для выполнения операций шифрования и дешифрования текстовой информации. Для считывания и обработки данных я использовала специальную библиотеку с функциями конвертации. Вторая часть проекта была ревлизована в программе Active HDL. После написания кода программы на языке HDL работа программы была передставлена на временной диаграмме данной схемы.

ЛИТЕРАТУРА:

1. Герасименко В.А. Защита информации в автоматизированных системах обработки данных: в 2-х кн. / Герасименко В.А. - М. Энергоатомиздат, 1994. – 746 с.

2. Угрюмов Е.П. Цифровая схемотехника. – СПб.: БХВ – Петербург, 2000. – 528 с.

3. ДСТУ 3212-95. Микросхемы интегрированные. Классификация и система условных обозначений. Введен в 1994 г.

4. Грушевский Р. и др. Проектирование систем на микросхемах программируемой логики. Учебное пособие – СПб.: БХВ-Петербург, 2002. – 623 с.

5. Корченко А.Г., Тимошенко Н.П. и др., VHDL: Справочное пособие по основам языка. М: «Додэка ХХ1», 2008 – 224 с.: ил.

6. Соловьев В.В. VHDL’92. Новые свойства языка описания аппаратуры. /Пер. с англ./ - М: Радио и связь, 1995. – 256 с.

7. Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL. Учебное пособие. – СПб.: БХВ-Петербург, 2002. –560 с.

8. Тимошенко Н.П., Щербак Л.Н. и др. Системы автоматизированного проектирования, CD “Віртуальний університет”, ІЗДН, 2005