Проектування та програмування мікроконтролерних пристроїв захисту інформації

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
ЗІ
Кафедра:
Захист інформації

Інформація про роботу

Рік:
2024
Тип роботи:
Курсова робота
Предмет:
Мікропроцесори в системах технічного захисту інформації
Варіант:
19

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра «Захист інформації» / КУРСОВА РОБОТА з дисципліни: «Мікропроцесори в системах технічного захисту інформації» на тему: «Проектування та програмування мікроконтролерних пристроїв захисту інформації» Варіант № 19 Зміст 1.Завдання…………………………………………………………………………………3 2.Схема електрична принципова………………………………………………………4 3.Розрахунок схеми………………………………………………………………………5 4.Лістинг програми………………………………………………………………………7 5.Результат симуляції в середовищі Proteus………………………………………12 6.Специфікація елементів схеми……………………………………………………13 7.Висновок………………………………………………………………………………14 8.Список використаної літератури………………………………………………15 Завдання Скласти електричну принципову схему і написати програму для функціонування вимірювальної частини технічної системи захисту інформації, структурна схема якої представлена на рис. 1. / Рис. 1. Структурна схема проектованої СТЗІ Система здійснює оцифрування вхідного аналогового сигналу Vin з заданою частотою дискретизації Fd. Отримані дані шифруються за заданим алгоритмом і записуються в мікросхему енегронезалежної EEPROM – пам‘яті та передаються через інтерфейс RS232 з заданною швидкістю R. Таблиця 1 Параметри типової СТЗІ Варіант Діапазон вхідного сигналу Vin, В Частота дискретизації Fd, Гц Алгоритм шифрування Мікросхема EEPROM-пам‘яті Швидкість передачі R, біт/сек  19 0 ... 1 2 TEA 24FC512(65536x 8 біт I2C Serial EEPROM) 115200   Схема електрична принципова / Рис.2. Схема електрична принципова Розрахунок схеми Джерелом струму є дві алкалайнові батареї . Отже для живлення нашої схеми доцільно використати мікросхему Step-Up стабілізатора LTC3525-5, спеціально призначену для живлення портативної апаратури від батарей та акумуляторів. Розрахунок Step-Up стабілізатора LTC3525-5. / Рис. 3. Схема Step-Up стабілізатора LTC3525-5 На виході нашого стабілізатора ми отримуємо напругу Vout =5 В. На вхід стабілізатора подається напруга Vbat = 3 В. Розрахунок кола підсилення, масштабування та фільтрації Кола масштабування та підсилення повинні забезпечити, щоб діапазон вхідного сигналу АЦП відповідав діапазону перетворення АЦП. Коло фільтрації повинне забезпечити виконання умов теореми Котельникова та ослабити шуми і завади. Діапазон перетворення АЦП становить 0 ... Vref, де Vref – опорна напруга. Я використав мікроконтроллера ATmega16 з вбудованим АЦП. Опорна напруга 5 В подається через вхід AVCC , отже діапазон перетворення АЦП 0 .. 5 Діапазон вхідного сигналу – 0 ... 1 В, отже нам перед передачею сигналу на АЦП необхідно його підсилити в 5 разів. Використовуємо підсилювач напруги на базі ОП (TLV2252IDR) з неінвертуючим включенням. / Рис. 4. Схема неінвертуючого включення операційного підсилювача Коефіцієнт підсилення К = 1+ (R3/R2). Для К = 5, R3 = 40 кОм, R2 = 10 кОм. Для виконання теореми Котельникова я використовую пасивний фільтр нижніх частот першого порядку. Частота дискретизації фільтра Fd = 2 * Fmax, Fd = 2 Гц , тоді Fmax = 1 Гц. Отже fзр = 1 Гц. , R1 = 10 кОм, С1 = 16 мкФ. Лістинг програми Програма здійснює перетворення аналогового сигналу в цифровий, шифрування його за алгоритмом ТЕА і передачу через UART. #include <mega16.h> // бібліотека контролера #include <delay.h> // переривання #include <stdio.h> // вхідні-вихідні функції #include <crypto.c> // підключити метод шифрування #include <stdlib.h> // приведення типу /* now you can include the I2C Functions */ #include <i2c.h> // протокол передачі даних в зовнішню пам’ять #define FOSC 7372800 // Тактова частота #define BAUD 115200 // Необхідна швидкість передачі USART #define MYUBRR 3 // FOSC/16/BAUD-1 #define N_1 3600 // Значення, записане в регістр порівняння OCR1A // береться з формули N=Fosc/fd/1024 #define EEPROM_BUS_ADDRESS 0xa0 // початковий адрес пам’яті згідно datasheet // Прототипи функцій. void Init(void); void eeprom_write(uint8_t* data); void USART_Init(uint16_t); uint16_t strt_addr=0; uint16_t ADC_Data[4]; // масив для запису данних з АЦП uint16_t Enc_Data[4]; // масив данних для шифрування uint16_t Dcr_Data[4]; // масив даних після шифрування uint8_t Buffer_Full_flag=0; uint8_t Sample_Cnt=0; uint8_t Byte_Cnt; uint8_t* Ptr_8bit = (uint8_t*)&Dcr_Data; // вказівник на адресу зашифрованих даних // Переривання interrupt [USART_DRE] void usart_int (void) // викликається при пустому регістрі UART { UDR = *Ptr_8bit++; // відправити шашифровані дані з масиву Dcr_Data через USART (покажчик на адрес елементу масиву) Byte_Cnt++; // лічильник кількості байтів if( Byte_Cnt == 8 ) { Byte_Cnt = 0; // обнулення Ptr_8bit = (uint8_t*)&Dcr_Data; UCSRB = UCSRB&(~(1<<UDRIE)); // обчислення біта UDRIE регістра UCSRB } } // Підпрограма обробки переривання при співпадінні OCR1A і регістра лічби interrupt [TIM1_COMPA] void timer1_ovf_isr(void) // виклик переривання при співпадінні тактів { ADCSRA|=(1<<ADSC); // Зробити одне ADC. } // Запуск ADC // Обробка по закінченню ADC interrupt [ADC_INT] void adc_isr(void) { ADC_Data[Sample_Cnt++] = ADCW; // результат роботи ADC if(Sample_Cnt==4) { Buffer_Full_flag=1; // заповнення набору потрібною кількістю даних Enc_Data[0]= ADC_Data[0]; // 0x4344; Enc_Data[1]= ADC_Data[1]; // 0x4142; Enc_Data[2]= ADC_Data[2]; // 0x4748; Enc_Data[3]= ADC_Data[3]; // 0x4546; Sample_Cnt=0; } } void main(void) { uint32_t key[4] = { 0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f }; Init(); // Ініціалізація таймера1, i2c , uart і ADC. #asm("sei") // Дозволити переривання в програмі. while (1) // запуск вічного циклу { if( Buffer_Full_flag == 1 ) // перевірка заповнення буферу { encrypt ((uint32_t*)Enc_Data, key); // виклик функції зашифрування Dcr_Data[0]=Enc_Data[0]; Dcr_Data[1]=Enc_Data[1]; Dcr_Data[2]=Enc_Data[2]; Dcr_Data[3]=Enc_Data[3]; Buffer_Full_flag=0; UCSRB = UCSRB|(1<<UDRIE); // вивід на порт eeprom_write((uint8_t*)Dcr_Data); // запис в зовнішню пам’ять } } } // Функції!!! void Init (void) // Ініціалізація таймера т1 і ADC. { // ADC. SFIOR=0x00; //тут нулі бо додаткові функції(такі як неінвертувальний аналоговий компаратор)нам не потрібні ! ADMUX = (1<<MUX0)|(1<<REFS0); ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); // Частота роботи ADC задалася ADPS2 і ADPS1 тобто FOSC\4 = 115.200 kHz, // зовнішнє джерело опорної напруги на AREF, режим однократного запуску вимірювань . USART_Init ( MYUBRR ); // Ініціалізація USART. /* initialize the I2C bus */ i2c_init(); // Таймер T1. // Занести в регістр порівняння таймера Т1 розраховану константу N OCR1A = N_1; // Запустити таймер Т1,задати DIV=1024, скидання TCNT1 в ноль при співпадінні TCCR1B = (1<<WGM12) | (1<<CS11) | (1<<CS10); // Дозволити переривання від таймера Т1 в режимі порівняння TIMSK = (1<<OCIE1A); } void USART_Init(uint16_t ubrr) // Ініціалізація USART. { /* Set baud rate */ UBRRH = (uint8_t)(ubrr>>8); // найбільша швидкість передачі даних UBRRL = (uint8_t)ubrr; // найменша швидкість передачі даних /* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN); /* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); } /* write a byte to the EEPROM */ void eeprom_write(uint8_t* data) // запис даних в пам’ять { uint8_t i; // ініціалізація лічильника for(i=0;i<8;i++) // виклик циклу { i2c_start(); // старт запису i2c_write(EEPROM_BUS_ADDRESS); // передача адреси i2c_write((strt_addr>>8)); i2c_write((unsigned char)strt_addr); i2c_write(data[i]); i2c_stop(); /* 5 ms delay to complete the write operation */ delay_ms(5); // затримка strt_addr++; // збільшення на 1, вибір наступної комірки пам’яті } } crypto.c #include <stdint.h> void encrypt (uint32_t* v, uint32_t* k) { //TEA uint32_t v0=v[0], v1=v[1], sum=0, i; /* set up */ uint32_t delta=0x9e3779b9; /* a key schedule constant */ uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */ for (i=0; i < 32; i++) { /* basic cycle start */ sum += delta; v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); } /* end cycle */ v[0]=v0; v[1]=v1; } void decrypt (uint32_t* v, uint32_t* k) { uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */ uint32_t delta=0x9e3779b9; /* a key schedule constant */ uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];/* cache key */ for (i=0; i<32; i++) { /* basic cycle start */ v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); sum -= delta; } /* end cycle */ v[0]=v0; v[1]=v1; } Результат симуляції в програмі Proteus / / Рис. 4. Результат симуляції в програмі Proteus Специфікація елементів схеми Специфікація № К-ть Позначення Опис Маркування Виробник Корпус Номінал  Резистори  1 1 R1 SMD-резистор, 5%, 0.125 Вт Any Any 0805 10кОм  2 1 R2 SMD-резистор, 5%, 0.125 Вт Any Any 0805 2.2МОм  3 3 R3, R4,R6 SMD-резистор, 5%, 0.125 Вт Any Any 0805 10кОм  4 1 R5 SMD-резистор, 5%, 0.125 Вт Any Any 0805 40кОм  Конденсатори  5 1 С1 SMD-конденсатор, 10%, 16В Any Any 0805 16 мкФ  6 1 С2 SMD-конденсатор, 10%, 16В Any Any 0805 3.3мкФ  7 1 С3 SMD-конденсатор, 10%, 16В Any Any 0805 10мкФ  8 2 С4, С5 SMD-конденсатор, 10%, 16В Any Any 0805 22пФ  9 3 С6, С7, С8 SMD-конденсатор, 10%, 16В Any Any 0805 100нФ  Мікросхеми  10 1 U1 Мікроконтроллер ATmega16 Atmel 44-QFP   11 1 U2 Мікросхема EEPROM- пам’яті 24FC512 Microchip    12 1 U5 Перетворювач рівнів MAX232 Atmel    13 1 J1 Роз‘єм CONN-D9F Any Any    14 1 DA1 Операційний підсилювач TLV2252IDR Texas Instruments SOIC-8   15 1 U4 Cтабілізатор Step-Up 5 В LTC3525-5 Linear Technology 10-QFN   Решта  16 2 L1,L2 SMD-індуктивність, 20%, 1.65 А Any Any 0805 10мкГн   Висновок На даний момент йде активний розвиток науки і техніки, і разом з ними розвиваються системи для здобуття інформації та системи технічного захисту інформації. Мікропроцесори в системах технічного захисту інформації відіграють що далі то більшу і більшу роль, оскільки іхні потужності та можливості постійно зростають, а розміри зменшуються. В цьому курсовому проекті я реалізував пристрій на базі мікроконтроллера AVR ATmega16 , котрий зчитує аналоговий сигнал з джерела, оцифровує його, потім кодує за допомогою алгоритму шифрування ТЕА і передає зашифроване значення через інтерфейс RS232. 8. Список літератури 1. Проектування та програмування мікроконтролерних пристроїв захисту інформації // Методичні вказівки до розрахункової роботи з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин – Львiв: Національний університет "Львівська політехніка", 2013. – 17 с. 2. Побудова охоронних систем з GSM-сигналізацією на AVR-мікроконтролерах. Знайомство з середовищем CodeVisionAVR // Методичні вказівки до лабораторної роботи No 4 з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин, М. Ю. Стахів – Львiв: Національний університет "Львівська політехніка", 2010. – 22 с. 3. Побудова інфрачервоних детекторів руху на AVR-мікроконтролерах // Методичні вказівки до лабораторної роботи No 3 з курсу «Мікропроцесори в системах технічного захисту інформації» для студентів напряму 6.170102 «Системи технічного захисту інформації» / Укл. Я. Р. Совин, М. Ю. Стахів - Львiв: Національний університет "Львівська політехніка", 2010. - 15 с. 4. Евстифеев А. В. Микроконтроллеры AVR семейства Classic фирмы «ATMEL». – М. Издательский дом “Додэка-ХХI”, 2002. – 288 с. 5. Лебедев М. Б. CodeVisionAVR: пособие для начинающих. – М.: Додэка-ХХI, 2008. – 592 с.:ил. 6. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. – СПб.: БХВ-Петербург, 2008. – 384 с. 7. Баранов В. Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы. – М.: Издательский дом “Додэка-ХХI”, 2004. – 288 с.
Антиботан аватар за замовчуванням

06.02.2014 14:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!