Пристрій перетворення цифрової інформації з її шифруванням

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Анотація

У рамках запропонованої розрахунково-графічної роботи необхідно створити апаратний вузол, що виконує задачу перетворення цифрової інформації з її шифруванням за певним алгоритмом. Пристрій необхідно спроектувати з використанням мови високорівневого опису апаратури VHDL.

Завдання на розробку

У системі є два пристрої: джерело (І) і приймач (П) інформації. Необхідно описати пристрій є посередником між пристроями І та П (рис. 1). Пристрій І має дві вихідні односпрямовані шини даних: 32-х розрядну X і 4-х розрядну n, 8-и розрядну шину адреси Address, два вихідних сигналу Write і Read і вхідний сигнал Ready. Пристрій посередник обчислює функцію

Y (0: 31) =

f (X (0: 32))

і по сигналу Write записує обчислені дані в ОЗУ за адресою, виставленому на шину адреси джерела. За сигналом Read пристрій посередник зчитує байт за адресою, виставленому на шину адреси, і видає його в послідовному коді приймача попередньо пропустивши через блок шифрування БШ. Видача послідовного коду здійснюється, коли на сигнал готовності посередника до передачі Ready, приймач відповідає сигналом готовності прийому Ask.

Блок шифрування

r1 = 6 r2 = 0

Функції

Bn cos x

де

1

Bk = Σ

π 2 k - 1

p = 1 p 2 k

(2 k)

Блок обчислення функції

Блок має дві вхідні шини: 32-х розрядну X і 4-х розрядну n і вихідну 32 - х розрядну шину Y. Вважати, що по шині X передається число з плаваючою крапкою в форматі (рис. 3).

У блоці всі операції проводяться над речовими типами даних. Для отримання речових даних організувати функцію, що здійснює переклад з типу STD _ LOGIC _ VECTOR в тип REAL, для отримання двійкових даних з речових організувати функцію, що здійснює зворотний переклад. Аналогічно організувати (або скористатися готовою, наприклад, з пакету exemplar) функцію для перекладу даних 4-х розрядної шини n в цілий тип.

Пристрій, обчислює функцію Y = f (X), за допомогою розкладання в ряд з точністю визначається кількістю доданків рівним значенням n. При реалізації опису використовувати тільки стандартні арифметичні операції "+", "-", "/" і власну функцію повертає квадрат аргументу

rr: = b -1;

result: = mut (a, pwr (a, rr));

end if;

return result; \ '

end pwr;

function toreal (X

: STD_LOGIC_VECTOR (31 downto 0))

return real is

variable result, res1, tt3, tt2, myn: real;

variable res2, tt1: integer;

begin

function toreal (X

: STD_LOGIC_VECTOR (31 downto 0))

return real is

variable result, res1, myn: real;

variable res2: integer;

begin

res1: = real (CONV_INTEGER (X (20 downto 1)));

M1: while res1> = 1.0 loop res1: = res1/10.0;

end loop M1;

if X (0) = '1 'then res1: =- res1;

end if;

res2: = CONV_INTEGER (X (31 downto 22));

if X (20) = '1 'then res2: =- res2;

end if;

myn: = 2.0 ** res2;

result: = mut (res1, myn);

return result;

end toreal;

function fakt (n: real) return real is variable rr: real;

variable result: real;

begin

if n = 1.0 then result: = n;

elsif n = 0.0 then result: = 0.0;

elsif n <0.0 then

result: = 0.0;

else

rr: = n -1.0;

result: = mut (n, fakt (rr));

end if;

return result;

end fakt;

res1: = 0.0;

e1: for i in 20 downto 1 loop tt1: = i;

tt2: = 1.0 / (pwr (2.0, tt1));

tt3: =

mut (real (CONV_INTEGER (X (i))), real (tt2)

);

res1: = res1 + real (tt3);

end loop e1;

if X (0) = '1 'then res1: =- res1;

end if;

res2: = CONV_INTEGER (X (31 downto

22));

myn: = pwr (2.0, res2);

if X (21) = '1 'then myn: = 1.0/myn;

end if;

result: = mut (res1, myn);

return result;

end toreal;

function BK (X: real; N: integer)

return real is

variable result, pi: real;

variable k1, k2, k3, k4: real;

begin pi: = 3.14;

for i in 1 to N loop k1: = mut (2.0, x); k2: = pwr (REAL (i), INTEGER (k1));

k3: = 1.0/k2; k4: = (pwr (pi, INTEGER (k1)) -

1.0) / fakt (k1); result: = k4; end loop;

return result;

end BK;

function MYFUN (X: real; N: integer

) Return real is

variable result, pi: real;

variable k2, k1: integer;

variable RR, l1, l2, l3, g1, g2, g3: real;

begin pi: = 3.14;

result: = 0.0;

if abs (x)> (3.14 / 2) then return result;

end if;

for i in 1 to N loop

K1: = integer (pwr (2.0, i)); K2: = k1 - 1;

L1: = pwr (2.0, k2);

L2: = pwr (2.0, k1); L3: = pwr (x, k1);

G1: = fakt (real (k1));

G2: = mut (REAL (n), g1); Rr: = mut (l1, (l2-1.0));

G3: = BK (x, i);

Rr: = mut (rr, G3); Rr: = mut (rr, l3); result: = rr/g2;

end loop;

return result;

end MYFUN;

function tostd (X1: real) return

STD_LOGIC_VECTOR is variable

result: STD_LOGIC_VECTOR (31 downto

0)

: = "00000000000000000000000000000000"

;

variable X, myn, a, b, c: real; variable pr, w: integer; begin

X: = X1;

pr: = 0;

M2: while abs (X)> = 1.0 loop

X: = X / 2.0;

pr: = pr +1;

end loop M2;

result (31 downto 22): = CONV_STD_LOGIC_VECTOR (pr, 10);

result (21): = '0 ';

if X <0.0 then

result (0): = '1 ';

end if;

X: = abs (X);

a: = real (integer (X));

b: = real (X); c: = ba; w: = 1;

M3: while c / = 0.0 loop

X: = X * 10.0;

a: = real (integer (X));

b: = real (X); c: = ba; w: = w +1;

exit M3 when w> 6;

end loop M3;

result (20 downto 1): = CONV_STD_LOGIC_VECTOR (integer (X

), 20);

return result;

end tostd;

begin

process (X, N)

variable mynum, res: real; variable count: integer; begin

mynum: = toreal (X);

count: = CONV_INTEGER (N); res: = MYFUN (mynum, count); Y <= tostd (res);

end process;

end F;

Блок шифрування

Блок шифрування організований у вигляді сдвигового регістра з зворотними зв'язками, в які включені елементи підсумовування за модулем два, генеруючого потік ключів Результат генерації підсумовується за модуля два з послідовним кодом, отриманим з виходу блоку перетворення паралельного коду в послідовний і видається приймача. Блок шифрування одноразово при початку роботи пристрою завантажується початковим значенням Key за сигналом Load.

Блок шифрування реалізувати на основі 30-і бітового сдвигового регістра з зворотними зв'язками.

VHDL КОД:

library IEEE;

use IEEE.std_logic_1164.all;

entity BCODE is port (

CLK: in std_logic; LOAD: in std_logic; DIN: in std_logic;

DATA: in std_logic_vector (29 downto 0); SO: out std_logic

);

end entity;

architecture BCODE of BCODE is

signal TEMP_SO: std_logic_vector (29 downto 0);

begin process (CLK, LOAD) begin

if LOAD = '1 'then

TEMP_SO <= DATA;

ELSif rising_edge (CLK) then

TEMP_SO <= ((TEMP_SO (0) XOR

TEMP_SO (18)) XOR TEMP_SO (19)) & TEMP_SO (29 downto 1);

end if;

end process;

SO <= TEMP_SO (0) XOR DIN;

end architecture;

Блок ОЗУ

ОЗУ з роздільними шинами читання і запису даних

we

data

addr

Q

1

data

<= Addr

Data

0

X

<= Addr

dataaddr

VHDL КОД

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

entity ram is port (

WE: in STD_LOGIC;

ADDR: in STD_LOGIC_VECTOR (7 downto 0);

DATA: in STD_LOGIC_VECTOR (31 downto 0);

Лист

Q: out STD_LOGIC_VECTOR (31 downto 0)

);

end entity;

architecture ram_arch of ram is

Блок ОЗУ

type ram_mem_type is array (254 downto 0) of STD_LOGIC_VECTOR (31 downto 0);

signal ram_mem: ram_mem_type;

begin

process (WE, ADDR, DATA)

variable ADDR_TEMP: integer range 254 downto 0;

begin

if (WE = '1 ') then

ADDR_TEMP: = CONV_INTEGER (ADDR);

ram_mem (ADDR_TEMP) <= DATA;

end if;

end process;

Q <= ram_mem (CONV_INTEGER (ADDR));

end architecture;

Блок-перетворювач паралельного коду в послідовний

clk

load

data

reg

so

0

0

X

data

data (0)

1

1

data

data

data (0)

1

0

X

0.data

data (1)

VHDL КОД

library IEEE;

use IEEE.std_logic_1164.all;

entity regpiso is port (

);

end entity;

CLK: in std_logic; LOAD: in std_logic;

DATA: in std_logic_vector (31 downto 0); SO: out std_logic

architecture regpiso of regpiso is

signal TEMP_SO: std_logic_vector (31 downto 0);

begin

process (CLK)

begin

if rising_edge (CLK) then if LOAD = '1 'then

TEMP_SO <= DATA;

end if;

end process;

else end if;

TEMP_SO <= '0 '& TEMP_SO (31 downto 1);

SO <= TEMP_SO (0);

end architecture;

Блок пристрої керування

Пристрій управління реалізувати керуючим а автоматом граф переходів, якого описати в редакторі FSM

read

ask

c

num

load

clk1

clk2

stb

ready

0

X

X

0

0

0

0

0

1

X

0

x

0

0

0

0

0

1

1

1

1

0

1

1

0

0

0

X

X

1

1

0

0

1

1

0

x

x

1

2

0

1

0

0

0

....

...

..

...

...

... ..

...

...

....

x

x

1

32

0

0

1

1

0

X

X

1

0

0

1

0

0

1

VHDL Код

library IEEE;

use IEEE.std_logic_1164.all;

entity FUNC is port (

ASK: in STD_LOGIC; LOAD: in STD_LOGIC; READ: in STD_LOGIC; WR: in STD_LOGIC;

ADDR: in STD_LOGIC_VECTOR (7 downto 0); KEY: in STD_LOGIC_VECTOR (29 downto 0); N: in STD_LOGIC_VECTOR (3 downto 0);

X: in STD_LOGIC_VECTOR (31 downto 0); READY: out STD_LOGIC;

READYO: out STD_LOGIC; RESULT: out STD_LOGIC; STB: out STD_LOGIC

);

end FUNC;

architecture FUNC of FUNC is

---- Component declarations ----- component bcode

port (

CLK: in STD_LOGIC;

DATA: in STD_LOGIC_VECTOR (29 downto 0); DIN: in STD_LOGIC;

LOAD: in STD_LOGIC; SO: out STD_LOGIC

);

end component; component f port (

N: in STD_LOGIC_VECTOR (3 downto 0); X: in STD_LOGIC_VECTOR (31 downto 0); Y: out STD_LOGIC_VECTOR (31 downto 0)

);

end component; component kontroler port (

ASK: in STD_LOGIC; C: in STD_LOGIC; READ: in STD_LOGIC; CLK1: out STD_LOGIC; CLK2: out STD_LOGIC;

LOAD: out STD_LOGIC;

READY: out STD_LOGIC; STB: out STD_LOGIC

);

end component; component oscill port (

CLOCK: out STD_LOGIC

);

end component; component ram port (

ADDR: in STD_LOGIC_VECTOR (7 downto 0); DATA: in STD_LOGIC_VECTOR (31 downto 0); WE: in STD_LOGIC;

Q: out STD_LOGIC_VECTOR (31 downto 0)

);

end component;

component regpiso

port (

CLK: in STD_LOGIC;

DATA: in STD_LOGIC_VECTOR (31 downto 0); LOAD: in STD_LOGIC;

SO: out STD_LOGIC

);

end component;

---- Signal declarations used on the diagram ----

signal CLK1: STD_LOGIC; signal CLK2: STD_LOGIC; signal LO1: STD_LOGIC; signal NET578: STD_LOGIC; signal NET908: STD_LOGIC; signal RED: STD_LOGIC;

signal REDY: STD_LOGIC, 11

signal BUS127: STD_LOGIC_VECTOR (31 downto 0);

signal BUS534: STD_LOGIC_VECTOR (31 downto 0);

begin

U1: f

port map (

N => N, X => X,

Y => BUS127

);

U2: ram port map (

ADDR => ADDR, DATA => BUS127,

Q => BUS534, WE => WR

);

U3: regpiso port map (

CLK => CLK1, DATA => BUS534, LOAD => LO1,

SO => NET578

);

U4: bcode port map (

CLK => CLK2,

DATA => KEY,

DIN => NET578,

LOAD => LOAD, SO => RESULT

);

U5: kontroler port map (

ASK => ASK, C => NET908, CLK1 => CLK1, CLK2 => CLK2, LOAD => LO1, READ => RED, READY => REDY, STB => STB

);

U6: oscill port map (

CLOCK => NET908

);

RED <= READ;

- Output \ buffer terminals READY <= REDY; READYO <= REDY;

end FUNC;

Тимчасова діаграма

Діаграма потоку даних:

KEY

LOA

Лист

N (3: X (31

func

f

mut

pwr

mut

pwr

ADR (7

WR READ READ

a

tore l

aa *

myn

a ^

myn

a

a * MYF

UN

n re

re

a * a tost

d

BK MYF

RESU ST

READ

AS

X (31

X (31

PROCESS

mynum, res: real count: integer;

Y (31:0

N (3:

UN

fakt

ram

Y (31

regpiso

Y (31 Y (0)

mu

BCODE

result

adr (7:

process (WE, ADDR, DATA) ram_mem

process (CLK) TEMP_SO

process (CLK, LOAD) TEMP SO

CLK CLK

KONTROLER

process (C) NUM

Висновок

Структура шіфрующе-обчислює пристрою була описана мовою VHDL і налагоджена з використанням пакету Aldec Active-HDL.

Опис запропонованого алгоритму на мові опису апаратури виявилося нескладним і повторює підходи і принципи, використовувані при подібних пристроїв на звичайних високорівневих мовах програмування програмування.

Використаний програмний пакет у свою чергу надає розробнику потужний арсенал засобів для налагодження, моделювання і верифікації описаного пристрою.

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

1. Синтез логічних схем з використанням мови VHDL. Бібіло П.М.

2. Проектування цифрових систем на VHDL. Суворова E. А., Шейнін Ю. Є.

3. Fundamentals of Digital Logic with VHDL. Brown S.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
104.3кб. | скачати


Схожі роботи:
Проектування устрою виконує задані функції перетворення цифрової інформації
Елементи цифрової системи передачі інформації
Методи стискання цифрової інформації Метод Лавинский
Розрахунок елементів цифрової системи передачі інформації
Розрахунок радіоприймального пристрою цифрової системи передачі інформації
Пристрій зберігання інформації
Перетворення звукової інформації
Пристрій пам`яті Відтворення і передачі інформації в організмі
Що спільного між шифруванням і лінією Мажино
© Усі права захищені
написати до нас