Розроблення VHDL-опису та синтез елементів пристроїв для зашифрування інформації

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    119,02 Кб
  • Опубликовано:
    2013-01-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розроблення VHDL-опису та синтез елементів пристроїв для зашифрування інформації

Зміст

ЗАВДАННЯ

. Теоретичні відомості

.1 Опис алгоритму шифрування

.2 Схема шифрування алгоритм DES

.3 Початкова перестановка

.4 Цикли шифрування

.5 Основна функція шифрування (функція Фейстеля)

.6 Генерування ключів ki

.7 Кінцева перестановка

. Розроблення поведінкового опису пристрою

.1 Розроблення структурного опису пристрою

Висновки

Список використаної літератури

ЗАВДАННЯ

шифрування програма алгоритм

Відповідно до НЗК (номера залікової книжки) розробити VHDL-програму опису заданого пристрою (шифратора або його частини). В програмі передбачити поведінковий та структурний опис пристрою. За розробленою програмою синтезувати заданий пристрій.

Таблиця 1. Тип шифру

НЗК

Тип шифру

Парний

Афінний

Непарний

DES


Таблиця 2. Варіанти афінного шифру

a mod 10

0

1

2

3

4

5

6

7

8

9

Лінійний афінний шифр і - го порядку

х


х


х


х


х


Узагальнений афінний шифр і - го порядку


х


х


х


х


х


Таблиця 3. Варіанти елементів шифру DES

a mod 10

0

1

2

3

4

5

6

7

8

9

Генератор підключів раундів

х


х


х


х


х


Блок підстановки в S-блоках


х


х


х


х


х


Примітки:

Ø  а - число, що визначається двома останніми цифрами НЗК;

Ø  і - остання цифра НЗК при і>1;

Ø  і = 10 - якщо остання цифра НЗК нуль;

Ø  і = 11 - якщо остання цифра НЗК одиниця.

Номер залікової книжки : 0809003= 03;

mod 10 = 3

Номер залікової книжки є непарний, отже потрібно розробити програму опису шифратора, що реалізує підстановку в S - блоках шифру DES.

1. Теоретичні відомості

 

.1 Опис алгоритму шифрування


DES (Data Encryption Standard) - симетричний <#"601177.files/image001.gif">

Процес шифрування полягає в початковій перестановці, 16 циклах шифрування і кінцевій перестановці.

1.3 Початкова перестановка


Початковий текст T (блок 64 біт) перетворюється за допомогою початкової перестановки IP яка визначається таблицею:

58

50

42

34

26

18

10

2

60

52

44

36

28

20

12

4

62

54

46

38

30

22

14

6

64

56

48

40

32

24

16

8

57

49

41

33

25

17

9

1

59

51

43

35

27

19

11

3

61

53

45

37

29

21

13

5

63

55

47

39

31

23

15

7


По таблиці перші 3 біта результуючого блоку IP(T) після початкової перестановки IP є бітами 58, 50, 42 вхідного блоку Т, а його 3 останні біта є бітами 23, 15, 7 вхідного блоку.

1.4 Цикли шифрування


Отриманий після початкової перестановки 64-бітний блок ІР(Т) використовується в 16-циклах перетворення Фейстеля.

Розбити ІР(Т) на дві частини L0,R0, де L0,R0 - відповідно 32 старших біта і 32 молодших біта блока T0 IP(T) = L0R0

Нехай Ti−1 = Li−1Ri−1 результат (i-1) ітерації, тоді результат i-ої ітерації Ti = LiRi визначається:

=Ri−1


Ліва половина Li рівна правій половині попереднього вектора Li−1Ri−1.

А права половина Ri - це бітове множення Li−1 і f(Ri−1,ki) по модулю 2.

В 16-циклах перетворення Фейстеля функція <#"601177.files/image003.gif">

Ключ ki, i=1,...,16, функція f, перестановка IP і IP -1 такі ж як і в процесі шифрування.

Переглянувши принцип функціонування алгоритма DES можна приступити до реалізації завдання по підстановці S - блоків.

2. Розроблення поведінкового опису пристрою


library IEEE;IEEE.STD_LOGIC_1164.all;S_Matrix is(i:in STD_LOGIC_VECTOR(0 to 5); o:out STD_LOGIC_VECTOR(0 to 3));S_Matrix;S1 of S_Matrix isi select(0) <= '1' when

"000000"|"000100"|"001010"|"001100"|"001110"|"010010"|"010110"|"011010"|

"000011"|"001001"|"001101"|"010001"|"010101"|"010111"|"011001"|"011111"|

"100100"|"100110"|"101000"|"101110"|"110000"|"110010"|"110100"|"111010"|

"100001"|"100011"|"100101"|"101011"|"110011"|"110111"|"111001"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000010"|"000100"|"001010"|"010100"|"010110"|"011000"|"011110"|

"000011"|"000101"|"000111"|"001001"|"001101"|"010011"|"010101"|"011011"|

"100000"|"100100"|"101000"|"101010"|"110000"|"110010"|"110110"|"111100"|

"100001"|"100011"|"101001"|"101111"|"110001"|"110111"|"111101"|"111111",

'0' when others;i select(2) <= '1' when

"000000"|"001000"|"001010"|"001100"|"010000"|"010010"|"010100"|"011110"|

"000011"|"000101"|"001001"|"001011"|"010001"|"010011"|"010111"|"011101"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110110"|"111000"|"111010"|

"100001"|"100111"|"101111"|"110011"|"110101"|"110111"|"111001"|"111101",

'0' when others;i select(3) <= '1' when

"000100"|"000110"|"001010"|"001100"|"010000"|"011000"|"011010"|"011110"|

"000011"|"000101"|"001101"|"001111"|"010111"|"011001"|"011011"|"011101"|

"100010"|"101000"|"101110"|"110000"|"110100"|"110110"|"111000"|"111100"|

"100001"|"101011"|"101101"|"101111"|"110001"|"110011"|"110101"|"111111",

'0' when others;S1;S2 of S_Matrix isi select(0) <= '1' when

"000000"|"000100"|"000110"|"001010"|"010000"|"010110"|"011000"|"011110"|

"000011"|"001001"|"001101"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100010"|"100110"|"101000"|"101100"|"110010"|"110100"|"111000"|"111110"|

"100001"|"100011"|"100101"|"101011"|"110001"|"110111"|"111101"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000110"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000011"|"000101"|"000111"|"001001"|"001111"|"010001"|"011001"|"011111"|

"100010"|"100100"|"101010"|"101100"|"110000"|"110100"|"110110"|"111110"|

"100001"|"101011"|"101101"|"110011"|"110101"|"110111"|"111011"|"111101",

'0' when others;i select(2) <= '1' when

"000000"|"000110"|"001000"|"001010"|"001100"|"010010"|"010100"|"011110"|

"000001"|"000111"|"001001"|"001011"|"001111"|"010111"|"011001"|"011101"|

"100010"|"100100"|"100110"|"101000"|"110110"|"111010"|"111100"|"111110"|

"100101"|"101001"|"101011"|"101111"|"110001"|"110011"|"110101"|"111101",

'0' when others;i select(3) <= '1' when

"000000"|"000010"|"001010"|"001100"|"010000"|"010010"|"010110"|"011100"|

"000001"|"000011"|"000111"|"001001"|"010101"|"011011"|"011101"|"011111"|

"100100"|"100110"|"101100"|"101110"|"110000"|"111000"|"111010"|"111110"|

"100001"|"100111"|"101001"|"101011"|"110001"|"110101"|"111011"|"111111",

'0' when others;S2;S3 of S_Matrix isi select(0) <= '1' when

"000000"|"000100"|"000110"|"001100"|"010010"|"010100"|"011000"|"011110"|

"000001"|"000111"|"001111"|"010011"|"010111"|"011001"|"011011"|"011101"|

"100000"|"100110"|"101000"|"101010"|"110000"|"110110"|"111010"|"111100"|

"100011"|"100101"|"101011"|"101101"|"110011"|"110101"|"111001"|"111111",

'0' when others;i select(1) <= '1' when

"000110"|"001000"|"001100"|"001110"|"010010"|"010100"|"010110"|"011010"|

"000001"|"000011"|"001011"|"001101"|"010101"|"010111"|"011001"|"011101"|

"100000"|"100010"|"100100"|"101010"|"110110"|"111000"|"111100"|"111110"|

"100101"|"101001"|"101111"|"110001"|"110011"|"110101"|"111011"|"111111",

'0' when others;i select(2) <= '1' when

"000000"|"000110"|"001000"|"001010"|"001100"|"010110"|"011000"|"011100"|

"000011"|"001001"|"001101"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100010"|"101010"|"101100"|"110000"|"110100"|"111010"|"111100"|"111110"|

"100011"|"101001"|"101111"|"110011"|"110101"|"110111"|"111001"|"111101",

'0' when others;i select(3) <= '1' when

"000100"|"001010"|"001100"|"001110"|"010000"|"010010"|"010110"|"011000"|

"000001"|"000011"|"000111"|"001001"|"010101"|"011011"|"011101"|"011111"|

"100000"|"100110"|"101010"|"101100"|"110000"|"110010"|"111000"|"111110"|

"100001"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001"|"111011",

'0' when others;S3;S4 of S_Matrix isi select(0) <= '1' when

"000010"|"000100"|"001100"|"001110"|"010100"|"011000"|"011010"|"011110"|

"000001"|"000011"|"000101"|"001011"|"010111"|"011011"|"011101"|"011111"|

"100000"|"100100"|"101000"|"101010"|"101110"|"110000"|"110110"|"111100"|

"100011"|"101001"|"101101"|"101111"|"110001"|"110111"|"111001"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000010"|"000100"|"001010"|"010110"|"011010"|"011100"|"011110"|

"000001"|"000111"|"001001"|"001011"|"010001"|"010011"|"010111"|"011101"|

"100010"|"101000"|"101100"|"101110"|"110000"|"110110"|"111000"|"111110"|

"100011"|"100111"|"101101"|"110011"|"110101"|"111001"|"111011"|"111111",

'0' when others;i select(2) <= '1' when

"000000"|"000100"|"000110"|"001010"|"001110"|"010010"|"011000"|"011110"|

"000101"|"001001"|"001011"|"001111"|"010011"|"010101"|"011011"|"011101"|

"100000"|"100010"|"101010"|"101100"|"110000"|"110100"|"110110"|"111010"|

"100001"|"100011"|"100111"|"101001"|"110111"|"111011"|"111101"|"111111",

'0' when others;i select(3) <= '1' when

"000000"|"000010"|"000110"|"001100"|"010000"|"010110"|"011000"|"011110"|

"000001"|"000101"|"000111"|"001011"|"001111"|"010011"|"011001"|"011111"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110010"|"110100"|"111000"|

"100001"|"100011"|"101011"|"101101"|"110001"|"110101"|"110111"|"111011",

'0' when others;S4;S5 of S_Matrix isi select(0) <= '1' when

"000010"|"001010"|"001100"|"010000"|"010110"|"011000"|"011100"|"011110"|

"000001"|"000011"|"000111"|"001101"|"010101"|"010111"|"011011"|"011101"|

"100110"|"101000"|"101010"|"101110"|"110000"|"110010"|"110100"|"111110"|

"100001"|"100011"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001",

'0' when others;i select(1) <= '1' when

"000010"|"000100"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000001"|"000111"|"001001"|"001011"|"001101"|"010001"|"010101"|"011111"|

"100000"|"101010"|"101100"|"110000"|"110100"|"110110"|"111000"|"111110"|

"100101"|"100111"|"101011"|"101111"|"110001"|"110011"|"111011"|"111101",

'0' when others;i select(2) <= '1' when

"000000"|"001000"|"001010"|"001100"|"001110"|"010100"|"010110"|"011100"|

"000001"|"000011"|"000101"|"001011"|"010101"|"010111"|"011001"|"011111"|

"100010"|"100110"|"101000"|"101100"|"110000"|"111000"|"111010"|"111110"|

"100001"|"100111"|"101011"|"101101"|"110001"|"110011"|"111001"|"111111",

'0' when others;i select(3) <= '1' when

"000110"|"001000"|"001100"|"010010"|"010100"|"010110"|"011000"|"011110"|

"000011"|"001011"|"001101"|"001111"|"010001"|"010101"|"011001"|"011011"|

"100100"|"100110"|"101010"|"101100"|"110000"|"110010"|"110110"|"111010"|

"100001"|"100111"|"101001"|"101111"|"110011"|"110111"|"111101"|"111111",

'0' when others;S5;S6 of S_Matrix isi select(0) <= '1' when

"000000"|"000100"|"000110"|"001000"|"001110"|"010010"|"011000"|"011110"|

"000001"|"000011"|"001011"|"001101"|"010101"|"010111"|"011011"|"011111"|

"100000"|"100010"|"100100"|"101010"|"101100"|"110110"|"111010"|"111100"|

"100111"|"101001"|"101101"|"101111"|"110001"|"110011"|"111101"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000110"|"001100"|"010010"|"010110"|"011000"|"011010"|"011100"|

"000011"|"000101"|"001001"|"001011"|"001111"|"010001"|"010101"|"010111"|

"100010"|"100100"|"100110"|"101100"|"110000"|"110100"|"111010"|"111110"|

"100001"|"100111"|"101011"|"101101"|"110011"|"110111"|"111001"|"111111",

'0' when others;i select(2) <= '1' when

"000100"|"000110"|"001010"|"001100"|"010100"|"011000"|"011010"|"011110"|

"000001"|"000011"|"000111"|"001001"|"010001"|"010111"|"011011"|"011101"|

"100010"|"100100"|"101000"|"101110"|"110000"|"110110"|"111100"|"111110"|

"100011"|"100101"|"101101"|"101111"|"110001"|"110011"|"110111"|"111001",

'0' when others;i select(3) <= '1' when

"000010"|"000110"|"001000"|"010010"|"010100"|"011010"|"011100"|"011110"|

"000011"|"001001"|"001101"|"001111"|"010011"|"010101"|"011011"|"011101"|

"100000"|"100100"|"100110"|"101110"|"110000"|"111000"|"111010"|"111100"|

"100011"|"101001"|"101011"|"101101"|"110001"|"110101"|"110111"|"111111",

'0' when others;S6;S7 of S_Matrix isi select(0) <= '1' when

"000010"|"000110"|"001000"|"001100"|"001110"|"010010"|"010100"|"011010"|

"000001"|"000101"|"001011"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100100"|"100110"|"101000"|"101110"|"110000"|"110010"|"110110"|"111100"|

"100011"|"100101"|"100111"|"101101"|"110001"|"110111"|"111001"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000110"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000001"|"000111"|"001001"|"010001"|"010101"|"010111"|"011011"|"011111"|

"100010"|"100110"|"101000"|"101100"|"101110"|"110010"|"110100"|"111010"|

"100001"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001"|"111111",

'0' when others;i select(2) <= '1' when

"000010"|"000100"|"000110"|"001000"|"010000"|"010110"|"011010"|"011100"|

"000101"|"000111"|"001111"|"010001"|"010011"|"011001"|"011011"|"011111"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110010"|"110100"|"111110"|

"100001"|"100011"|"101101"|"101111"|"110111"|"111001"|"111011"|"111101",

'0' when others;i select(3) <= '1' when

"000010"|"001000"|"001110"|"010000"|"010100"|"010110"|"011000"|"011110"|

"000001"|"000101"|"000111"|"001011"|"001101"|"010011"|"010101"|"011011"|

"100000"|"100100"|"100110"|"101010"|"101100"|"110010"|"111010"|"111100"|

"100011"|"100101"|"101001"|"101111"|"110001"|"110011"|"110111"|"111101",

'0' when others;S7;S8 of S_Matrix isi select(0) <= '1' when

"000000"|"000100"|"001010"|"001100"|"010000"|"010010"|"010110"|"011100"|

"000011"|"000101"|"000111"|"001001"|"010001"|"010111"|"011011"|"011101"|

"100010"|"101000"|"101010"|"101100"|"110100"|"110110"|"111000"|"111110"|

"100101"|"101011"|"101101"|"101111"|"110001"|"110011"|"110101"|"111111",

'0' when others;i select(1) <= '1' when

"000000"|"000110"|"001000"|"001010"|"010110"|"011000"|"011100"|"011110"|

"000011"|"000101"|"001101"|"001111"|"010001"|"010011"|"010101"|"011011"|

"100000"|"100100"|"101010"|"101100"|"110010"|"110110"|"111000"|"111100"|

"100101"|"100111"|"101001"|"101111"|"110001"|"110011"|"111011"|"111101",

'0' when others;i select(2) <= '1' when

"000010"|"001000"|"001010"|"001100"|"010000"|"010100"|"010110"|"011110"|

"000011"|"001001"|"001011"|"001101"|"010101"|"010111"|"011011"|"011111"|

"100000"|"100010"|"101100"|"101110"|"110010"|"110100"|"111000"|"111010"|

"100001"|"100101"|"100111"|"101011"|"110001"|"111001"|"111101"|"111111",

'0' when others;i select(3) <= '1' when

"000000"|"001010"|"001100"|"001110"|"010010"|"010100"|"011000"|"011110"|

"000001"|"000011"|"000101"|"001011"|"001101"|"010011"|"010111"|"011101"|

"100000"|"100010"|"100110"|"101000"|"110110"|"111000"|"111010"|"111100"|

"100011"|"100111"|"101111"|"110001"|"110101"|"111001"|"111011"|"111111",

'0' when others;S8;

Список ідентифікаторів

Назва ідентифікатора

Значення ідентифікатора

і

Вхідний вектор довжиною 6 біт, який використовується для підстановки в S-блоках.

о

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в S-блоці.


2.1 Розроблення структурного опису пристрою


Код бібліотеки:

library ieee;ieee.std_logic_1164.all;my_func isS1(in1: in STD_LOGIC_VECTOR(0 to 5); out1: out STD_LOGIC_VECTOR(0 to 3));component;S2(in2: in STD_LOGIC_VECTOR(0 to 5); out2: out STD_LOGIC_VECTOR(0 to 3));component;S3(in3: in STD_LOGIC_VECTOR(0 to 5); out3: out STD_LOGIC_VECTOR(0 to 3));component;S4(in4: in STD_LOGIC_VECTOR(0 to 5); out4: out STD_LOGIC_VECTOR(0 to 3));component;S5(in5: in STD_LOGIC_VECTOR(0 to 5); out5: out STD_LOGIC_VECTOR(0 to 3));component;S6(in6: in STD_LOGIC_VECTOR(0 to 5); out6: out STD_LOGIC_VECTOR(0 to 3));component;S7(in7: in STD_LOGIC_VECTOR(0 to 5); out7: out STD_LOGIC_VECTOR(0 to 3));component;S8(in8: in STD_LOGIC_VECTOR(0 to 5); out8: out STD_LOGIC_VECTOR(0 to 3));component;package my_func;

-Тіло пакету.body my_func ispackage body my_func;ieee;ieee.std_logic_1164.all;S1 is(in1: in STD_LOGIC_VECTOR(0 to 5); out1: out STD_LOGIC_VECTOR(0 to 3));S1;model_S1 of S1 isin1 select(0) <= '1' when

"000000"|"000100"|"001010"|"001100"|"001110"|"010010"|"010110"|"011010"|

"000011"|"001001"|"001101"|"010001"|"010101"|"010111"|"011001"|"011111"|

"100100"|"100110"|"101000"|"101110"|"110000"|"110010"|"110100"|"111010"|

"100001"|"100011"|"100101"|"101011"|"110011"|"110111"|"111001"|"111111",

'0' when others;in1 select(1) <= '1' when

"000000"|"000010"|"000100"|"001010"|"010100"|"010110"|"011000"|"011110"|

"000011"|"000101"|"000111"|"001001"|"001101"|"010011"|"010101"|"011011"|

"100000"|"100100"|"101000"|"101010"|"110000"|"110010"|"110110"|"111100"|

"100001"|"100011"|"101001"|"101111"|"110001"|"110111"|"111101"|"111111",

'0' when others;in1 select(2) <= '1' when

"000000"|"001000"|"001010"|"001100"|"010000"|"010010"|"010100"|"011110"|

"000011"|"000101"|"001001"|"001011"|"010001"|"010011"|"010111"|"011101"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110110"|"111000"|"111010"|

"100001"|"100111"|"101111"|"110011"|"110101"|"110111"|"111001"|"111101",

'0' when others;in1 select(3) <= '1' when

"000100"|"000110"|"001010"|"001100"|"010000"|"011000"|"011010"|"011110"|

"000011"|"000101"|"001101"|"001111"|"010111"|"011001"|"011011"|"011101"|

"100010"|"101000"|"101110"|"110000"|"110100"|"110110"|"111000"|"111100"|

"100001"|"101011"|"101101"|"101111"|"110001"|"110011"|"110101"|"111111",

'0' when others;model_S1;ieee;ieee.std_logic_1164.all;S2 is(in2: in STD_LOGIC_VECTOR(0 to 5); out2: out STD_LOGIC_VECTOR(0 to 3));S2;model_S2 of S2 isin2 select(0) <= '1' when

"000000"|"000100"|"000110"|"001010"|"010000"|"010110"|"011000"|"011110"|

"000011"|"001001"|"001101"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100001"|"100011"|"100101"|"101011"|"110001"|"110111"|"111101"|"111111",

'0' when others;in2 select(1) <= '1' when

"000000"|"000110"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000011"|"000101"|"000111"|"001001"|"001111"|"010001"|"011001"|"011111"|

"100010"|"100100"|"101010"|"101100"|"110000"|"110100"|"110110"|"111110"|

"100001"|"101011"|"101101"|"110011"|"110101"|"110111"|"111011"|"111101",

'0' when others;in2 select(2) <= '1' when

"000000"|"000110"|"001000"|"001010"|"001100"|"010010"|"010100"|"011110"|

"000001"|"000111"|"001001"|"001011"|"001111"|"010111"|"011001"|"011101"|

"100010"|"100100"|"100110"|"101000"|"110110"|"111010"|"111100"|"111110"|

"100101"|"101001"|"101011"|"101111"|"110001"|"110011"|"110101"|"111101",

'0' when others;in2 select(3) <= '1' when

"000000"|"000010"|"001010"|"001100"|"010000"|"010010"|"010110"|"011100"|

"000001"|"000011"|"000111"|"001001"|"010101"|"011011"|"011101"|"011111"|

"100100"|"100110"|"101100"|"101110"|"110000"|"111000"|"111010"|"111110"|

"100001"|"100111"|"101001"|"101011"|"110001"|"110101"|"111011"|"111111",

'0' when others;model_S2;ieee;ieee.std_logic_1164.all;S3 is(in3: in STD_LOGIC_VECTOR(0 to 5); out3: out STD_LOGIC_VECTOR(0 to 3));S3;model_S3 of S3 isin3 select(0) <= '1' when

"000000"|"000100"|"000110"|"001100"|"010010"|"010100"|"011000"|"011110"|

"000001"|"000111"|"001111"|"010011"|"010111"|"011001"|"011011"|"011101"|

"100000"|"100110"|"101000"|"101010"|"110000"|"110110"|"111010"|"111100"|

"100011"|"100101"|"101011"|"101101"|"110011"|"110101"|"111001"|"111111",

'0' when others;in3 select(1) <= '1' when

"000110"|"001000"|"001100"|"001110"|"010010"|"010100"|"010110"|"011010"|

"000001"|"000011"|"001011"|"001101"|"010101"|"010111"|"011001"|"011101"|

"100000"|"100010"|"100100"|"101010"|"110110"|"111000"|"111100"|"111110"|

"100101"|"101001"|"101111"|"110001"|"110011"|"110101"|"111011"|"111111",

'0' when others;in3 select(2) <= '1' when

"000000"|"000110"|"001000"|"001010"|"001100"|"010110"|"011000"|"011100"|

"000011"|"001001"|"001101"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100010"|"101010"|"101100"|"110000"|"110100"|"111010"|"111100"|"111110"|

"100011"|"101001"|"101111"|"110011"|"110101"|"110111"|"111001"|"111101",

'0' when others;in3 select(3) <= '1' when

"000100"|"001010"|"001100"|"001110"|"010000"|"010010"|"010110"|"011000"|

"000001"|"000011"|"000111"|"001001"|"010101"|"011011"|"011101"|"011111"|

"100000"|"100110"|"101010"|"101100"|"110000"|"110010"|"111000"|"111110"|

"100001"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001"|"111011",

'0' when others;model_S3;ieee;ieee.std_logic_1164.all;S4 is(in4: in STD_LOGIC_VECTOR(0 to 5); out4: out STD_LOGIC_VECTOR(0 to 3));S4;model_S4 of S4 isin4 select(0) <= '1' when

"000010"|"000100"|"001100"|"001110"|"010100"|"011000"|"011010"|"011110"|

"000001"|"000011"|"000101"|"001011"|"010111"|"011011"|"011101"|"011111"|

"100000"|"100100"|"101000"|"101010"|"101110"|"110000"|"110110"|"111100"|

"100011"|"101001"|"101101"|"101111"|"110001"|"110111"|"111001"|"111111",

'0' when others;in4 select(1) <= '1' when

"000000"|"000010"|"000100"|"001010"|"010110"|"011010"|"011100"|"011110"|

"000001"|"000111"|"001001"|"001011"|"010001"|"010011"|"010111"|"011101"|

"100010"|"101000"|"101100"|"101110"|"110000"|"110110"|"111000"|"111110"|

"100011"|"100111"|"101101"|"110011"|"110101"|"111001"|"111011"|"111111",

'0' when others;in4 select(2) <= '1' when

"000000"|"000100"|"000110"|"001010"|"001110"|"010010"|"011000"|"011110"|

"000101"|"001001"|"001011"|"001111"|"010011"|"010101"|"011011"|"011101"|

"100000"|"100010"|"101010"|"101100"|"110000"|"110100"|"110110"|"111010"|

"100001"|"100011"|"100111"|"101001"|"110111"|"111011"|"111101"|"111111",

'0' when others;in4 select(3) <= '1' when

"000000"|"000010"|"000110"|"001100"|"010000"|"010110"|"011000"|"011110"|

"000001"|"000101"|"000111"|"001011"|"001111"|"010011"|"011001"|"011111"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110010"|"110100"|"111000"|

"100001"|"100011"|"101011"|"101101"|"110001"|"110101"|"110111"|"111011",

'0' when others;model_S4;ieee;ieee.std_logic_1164.all;S5 is(in5: in STD_LOGIC_VECTOR(0 to 5); out5: out STD_LOGIC_VECTOR(0 to 3));S5;model_S5 of S5 isin5 select(0) <= '1' when

"000010"|"001010"|"001100"|"010000"|"010110"|"011000"|"011100"|"011110"|

"000001"|"000011"|"000111"|"001101"|"010101"|"010111"|"011011"|"011101"|

"100110"|"101000"|"101010"|"101110"|"110000"|"110010"|"110100"|"111110"|

"100001"|"100011"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001",

'0' when others;in5 select(1) <= '1' when

"000010"|"000100"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000001"|"000111"|"001001"|"001011"|"001101"|"010001"|"010101"|"011111"|

"100000"|"101010"|"101100"|"110000"|"110100"|"110110"|"111000"|"111110"|

"100101"|"100111"|"101011"|"101111"|"110001"|"110011"|"111011"|"111101",

'0' when others;in5 select(2) <= '1' when

"000000"|"001000"|"001010"|"001100"|"001110"|"010100"|"010110"|"011100"|

"000001"|"000011"|"000101"|"001011"|"010101"|"010111"|"011001"|"011111"|

"100010"|"100110"|"101000"|"101100"|"110000"|"111000"|"111010"|"111110"|

"100001"|"100111"|"101011"|"101101"|"110001"|"110011"|"111001"|"111111",

'0' when others;in5 select(3) <= '1' when

"000110"|"001000"|"001100"|"010010"|"010100"|"010110"|"011000"|"011110"|

"000011"|"001011"|"001101"|"001111"|"010001"|"010101"|"011001"|"011011"|

"100100"|"100110"|"101010"|"101100"|"110000"|"110010"|"110110"|"111010"|

"100001"|"100111"|"101001"|"101111"|"110011"|"110111"|"111101"|"111111",

'0' when others;model_S5;ieee;ieee.std_logic_1164.all;S6 is(in6: in STD_LOGIC_VECTOR(0 to 5); out6: out STD_LOGIC_VECTOR(0 to 3));S6;model_S6 of S6 isin6 select(0) <= '1' when

"000000"|"000100"|"000110"|"001000"|"001110"|"010010"|"011000"|"011110"|

"000001"|"000011"|"001011"|"001101"|"010101"|"010111"|"011011"|"011111"|

"100000"|"100010"|"100100"|"101010"|"101100"|"110110"|"111010"|"111100"|

"100111"|"101001"|"101101"|"101111"|"110001"|"110011"|"111101"|"111111",

'0' when others;in6 select(1) <= '1' when

"000000"|"000110"|"001100"|"010010"|"010110"|"011000"|"011010"|"011100"|

"000011"|"000101"|"001001"|"001011"|"001111"|"010001"|"010101"|"010111"|

"100010"|"100100"|"100110"|"101100"|"110000"|"110100"|"111010"|"111110"|

"100001"|"100111"|"101011"|"101101"|"110011"|"110111"|"111001"|"111111",

'0' when others;in6 select(2) <= '1' when

"000100"|"000110"|"001010"|"001100"|"010100"|"011000"|"011010"|"011110"|

"000001"|"000011"|"000111"|"001001"|"010001"|"010111"|"011011"|"011101"|

"100010"|"100100"|"101000"|"101110"|"110000"|"110110"|"111100"|"111110"|

"100011"|"100101"|"101101"|"101111"|"110001"|"110011"|"110111"|"111001",

'0' when others;in6 select(3) <= '1' when

"000010"|"000110"|"001000"|"010010"|"010100"|"011010"|"011100"|"011110"|

"000011"|"001001"|"001101"|"001111"|"010011"|"010101"|"011011"|"011101"|

"100000"|"100100"|"100110"|"101110"|"110000"|"111000"|"111010"|"111100"|

"100011"|"101001"|"101011"|"101101"|"110001"|"110101"|"110111"|"111111",

'0' when others;model_S6;ieee;ieee.std_logic_1164.all;S7 is(in7: in STD_LOGIC_VECTOR(0 to 5); out7: out STD_LOGIC_VECTOR(0 to 3));S7;model_S7 of S7 isin7 select(0) <= '1' when

"000010"|"000110"|"001000"|"001100"|"001110"|"010010"|"010100"|"011010"|

"000001"|"000101"|"001011"|"001111"|"010001"|"010111"|"011011"|"011101"|

"100100"|"100110"|"101000"|"101110"|"110000"|"110010"|"110110"|"111100"|

"100011"|"100101"|"100111"|"101101"|"110001"|"110111"|"111001"|"111111",

'0' when others;in7 select(1) <= '1' when

"000000"|"000110"|"001000"|"001110"|"010010"|"010110"|"011000"|"011100"|

"000001"|"000111"|"001001"|"010001"|"010101"|"010111"|"011011"|"011111"|

"100010"|"100110"|"101000"|"101100"|"101110"|"110010"|"110100"|"111010"|

"100001"|"100101"|"101011"|"101111"|"110011"|"110111"|"111001"|"111111",

'0' when others;in7 select(2) <= '1' when

"000010"|"000100"|"000110"|"001000"|"010000"|"010110"|"011010"|"011100"|

"000101"|"000111"|"001111"|"010001"|"010011"|"011001"|"011011"|"011111"|

"100100"|"101010"|"101100"|"101110"|"110000"|"110010"|"110100"|"111110"|

"100001"|"100011"|"101101"|"101111"|"110111"|"111001"|"111011"|"111101",

'0' when others;in7 select(3) <= '1' when

"000010"|"001000"|"001110"|"010000"|"010100"|"010110"|"011000"|"011110"|

"000001"|"000101"|"000111"|"001011"|"001101"|"010011"|"010101"|"011011"|

"100000"|"100100"|"100110"|"101010"|"101100"|"110010"|"111010"|"111100"|

"100011"|"100101"|"101001"|"101111"|"110001"|"110011"|"110111"|"111101",

'0' when others;model_S7;ieee;ieee.std_logic_1164.all;S8 is(in8: in STD_LOGIC_VECTOR(0 to 5); out8: out STD_LOGIC_VECTOR(0 to 3));S8;model_S8 of S8 isin8 select(0) <= '1' when

"000000"|"000100"|"001010"|"001100"|"010000"|"010010"|"010110"|"011100"|

"000011"|"000101"|"000111"|"001001"|"010001"|"010111"|"011011"|"011101"|

"100010"|"101000"|"101010"|"101100"|"110100"|"110110"|"111000"|"111110"|

"100101"|"101011"|"101101"|"101111"|"110001"|"110011"|"110101"|"111111",

'0' when others;in8 select(1) <= '1' when

"000000"|"000110"|"001000"|"001010"|"010110"|"011000"|"011100"|"011110"|

"000011"|"000101"|"001101"|"001111"|"010001"|"010011"|"010101"|"011011"|

"100000"|"100100"|"101010"|"101100"|"110010"|"110110"|"111000"|"111100"|

"100101"|"100111"|"101001"|"101111"|"110001"|"110011"|"111011"|"111101",

'0' when others;in8 select(2) <= '1' when

"000010"|"001000"|"001010"|"001100"|"010000"|"010100"|"010110"|"011110"|

"000011"|"001001"|"001011"|"001101"|"010101"|"010111"|"011011"|"011111"|

"100000"|"100010"|"101100"|"101110"|"110010"|"110100"|"111000"|"111010"|

"100001"|"100101"|"100111"|"101011"|"110001"|"111001"|"111101"|"111111",

'0' when others;in8 select(3) <= '1' when

"000000"|"001010"|"001100"|"001110"|"010010"|"010100"|"011000"|"011110"|

"000001"|"000011"|"000101"|"001011"|"001101"|"010011"|"010111"|"011101"|

"100000"|"100010"|"100110"|"101000"|"110110"|"111000"|"111010"|"111100"|

"100011"|"100111"|"101111"|"110001"|"110101"|"111001"|"111011"|"111111",

'0' when others;model_S8;

Код програми:ieee, my_lib;ieee.std_logic_1164.all, my_lib.my_func.all;DES is(my_in: in STD_LOGIC_VECTOR(0 to 5); my_out: out STD_LOGIC_VECTOR(0 to 3));DES;S of DES isS1(in1: in STD_LOGIC_VECTOR(0 to 5); out1: out STD_LOGIC_VECTOR(0 to 3));component;S2(in2: in STD_LOGIC_VECTOR(0 to 5); out2: out STD_LOGIC_VECTOR(0 to 3));component;S3(in3: in STD_LOGIC_VECTOR(0 to 5); out3: out STD_LOGIC_VECTOR(0 to 3));component;S4(in4: in STD_LOGIC_VECTOR(0 to 5); out4: out STD_LOGIC_VECTOR(0 to 3));component;S5(in5: in STD_LOGIC_VECTOR(0 to 5); out5: out STD_LOGIC_VECTOR(0 to 3));component;S6(in6: in STD_LOGIC_VECTOR(0 to 5); out6: out STD_LOGIC_VECTOR(0 to 3));component;S7(in7: in STD_LOGIC_VECTOR(0 to 5); out7: out STD_LOGIC_VECTOR(0 to 3));component;S8(in8: in STD_LOGIC_VECTOR(0 to 5); out8: out STD_LOGIC_VECTOR(0 to 3));component;, x2, x3, x4, x5, x6, x7, x8: STD_LOGIC_VECTOR(0 to 5);, out2, out3, out4, out5, out6, out7, out8: STD_LOGIC_VECTOR(0 to 3);: S1 port map (x1, out1);: S2 port map (x2, out2);: S3 port map (x3, out3);: S4 port map (x4, out4);: S5 port map (x5, out5);: S6 port map (x6, out6);: S7 port map (x7, out7);: S8 port map (x8, out8);S;

Список ідентифікаторів

Назва ідентифікатора

Значення ідентифікатора

x1

Вхідний вектор довжиною 6 біт, який використовується для підстановки в першому S-блоці.

x2

Вхідний вектор довжиною 6 біт, який використовується для підстановки в другому S-блоці.

x3

Вхідний вектор довжиною 6 біт, який використовується для підстановки в третьому S-блоці.

x4

Вхідний вектор довжиною 6 біт, який використовується для підстановки в четвертому S-блоці.

x5

Вхідний вектор довжиною 6 біт, який використовується для підстановки в п’ятому S-блоці.

x6

Вхідний вектор довжиною 6 біт, який використовується для підстановки в шостому S-блоці.

x7

Вхідний вектор довжиною 6 біт, який використовується для підстановки в сьомому S-блоці.

x8

Вхідний вектор довжиною 6 біт, який використовується для підстановки в восьмому S-блоці.

out1

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в першому S-блоці.

out2

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в другому S-блоці.

out3

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в третьому S-блоці.

out4

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в четвертому S-блоці.

out5

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в п’ятому S-блоці.

out6

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в шостому S-блоці.

out7

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в сьомому S-блоці.

out8

Вихідний вектор довжиною 4 біта, який утворюється в результаті перетворення в восьмому S-блоці.


Висновки


В результаті виконання даної роботи по розробленню VHDL опису та синтезу елементів пристрою для реалізації підстановки в S-блоках алгоритму DES була написана програма.

Перший лістинг програми представляє собою поведінковий опис пристрою.

Другий лістинг являє собою структурну форму опису пристрою.

Після проведення симуляції роботи даних програм в середовищі САПР Aldec Riviera 2004, були отримані результати роботи, які були представлені у вигляді двійкових діаграм. При симуляції обох програм ми отримали одинаковий результат, що вказує направельність результату.

Список використаної літератури


1    Бибило П.Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.

2       Дьяков И.А. Моделирование цифровых и микропроцессорных систем. Язык VHDL

         Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы XILINX в САПР WebPACK ISE. - М.: Горячая линия-Телеком. 2003.

         Кнышев Д. А., Кузелин М. О. ПЛИС фирмы XILINX: описание структуры основных семейств. - М.: ДОДЭКА. 2001.

         Стешенко В. Б. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. - М.: ДОДЭКА. 2000.

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

Похожие работы на - Розроблення VHDL-опису та синтез елементів пристроїв для зашифрування інформації

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!