Дипломная работа: Подсистема шифрования системы условного доступа

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Мощный RISC процессор ядра ARM7TDMI выполняет все функции, кроме функций оконечных радиочастотных модулей.

3.4 Процесс передачи данных по Bluetooth

3.4.1 Описание работы

Процесс передачи данных по Bluetooth инициируется внешним устройством, поддерживающим функцию Мастера Передачи. С точки зрения пользовательского приложения активизация одного из сигналов на шине T_BARHIT говорит о начале передачи данных по шине. Одновременно активизируется один из сигналов T_RD или T_WR. При готовности к обработке данных (запись или чтение) пользовательское приложение активизирует сигнал T_DRDY.

Чтение из Целевого устройства.

Обращение к Целевому Устройству со стороны Мастера активизирует один из сигналов на шине T_BARHIT. Одновременно активизируется сигнал T_RD.

При готовности данных на шине APP_ADo пользовательское приложение активизирует сигнал T_DRDY. Активизация сигнала T_NEXTD свидетельствует о том, что текущая фаза данных успешно завершена и необходимо подготовить следующие данные. Если пользовательское приложение имеет достаточную производительность, для того чтобы подготовить данные к следующему фронту системной частоты Bluetooth, сигнал T_DRDY может остаться активным, в противном случае приложение должно немедленно сбросить сигнал T_DRDY.

Запись в Целевое устройство.

Обращение к Целевому Устройству со стороны Мастера активизирует один из сигналов на шине T_BARHIT[i]. Одновременно активизируется сигнал T_WR.

При готовности принять данные с шины APP_ADi пользовательское приложение активизирует сигнал T_DRDY. Активизация сигнала T_WE говорит о том, что данные на шине APP_ADi действительны и должны быть записаны в регистр назначения.

Активизация сигнала T_DRDY во время записи в Целевое Устройство имеет следующие особенности. Если пользовательское приложение имеет достаточную производительность для принятия блока данных без циклов ожидания, сигнал T_DRDY может оставаться активным.

Если Целевому Устройству требуется дополнительное время для обработки полученных данных перед принятием следующего слова данных, необходимо активизировать сигнал T_DRDY только на один такт. Далее следует дождаться последующей активизации сигнала T_WE, обработать полученные данные и активизировать сигнал T_DRDY снова. В данном случае блочной передачи Целевое Устройство генерирует дополнительные циклы ожидания на шине.

3.4.2 Настройка конфигурационного пространства

Параметры необходимые для настройки конфигурационного пространства находятся в файле CORE_SET.VHD.

Vendor ID - Производитель устройства, присваивается Bluetooth SIG. По умолчанию установлен 0x1999.

constant VENDOR_ID : std_logic_vector(15 downto 0):=”0001100110011001”;

Device ID - Тип устройства, определяется разработчиком. По умолчанию установлен 0x680C.

constant DEVICE_ID : std_logic_vector(15 downto 0):=”0110100000001100”;

Class ID - Определяется разработчиком в соответствии с функциональной принадлежностью устройства определённой в спецификации Bluetooth. По умолчанию установлен 0x0B4000.

constant CLASS_ID: std_logic_vector(23 downto 0):=”00001011” & “01000000” & 00000000”;

Revision ID - Номер версии, определяется разработчиком. По умолчанию установлен 0x01.

constant REV_ID: std_logic_vector(7 downto 0):=”00000001”;

Subsystem Vendor ID - идентичен Vendor ID

constant SUBVENDOR_ID : std_logic_vector(15 downto 0):=”0001100110011001”;

Subsystem Device ID - идентичен Device ID

constant SUBDEVICE_ID : std_logic_vector(15 downto 0):=”0110100000001100”;

Maximum Latency - содержимое регистра не имеет значения при работе устройства в качестве Целевого

constant MAX_LAT: std_logic_vector(7 downto 0):=”00000000”;

Minimum Grant - содержимое регистра не имеет значения при работе устройства в качестве Целевого

constant MIN_GNT: std_logic_vector(7 downto 0):=”00000000”;

Interrupt Line - определяет линию пользовательского прерывания. 0x00 - прерывание не используется; 0x01 - INTA#

constant INT_LINE: std_logic_vector(7 downto 0):=”00000001”;

Каждый из Базовых Адресных Регистров может быть настроен на декодирование пространства Ввода/Вывода или Памяти. Наличие Базового Адресного Регистра (х) в пространстве конфигурации определяется значением константы BARx_PRESENT. Тип и диапазон декодируемого пространства определяется константой BARx_MAP.

В нашем устройстве имеется буфер приема-передачи BUF_IN_OUT. Размер буфера - 512 двойных слов - 5124=2048 байт. Настроим базовый адресный регистр BAR0 для декодирования 2Kбайт пространства памяти.

Настройка BAR0 в файле CORE_SET.VHD следующая:

constant BAR0_PRESENT: boolean:= TRUE;

constant BAR0_MAP:

std_logic_vector(31 downto 0):=”11111111111111111111100000000000”;

constant BAR0_DWIDTH: integer := 21;

Так же, мы имеем 7 регистров: регистр статуса, регистр управления, регистр адреса, два регистра ключа, регистр принятой команды и регистр передаваемой команды. Каждый регистр рассматривается как 32-битный, так как Bluetooth оперирует блоками двойных слов (неиспользуемые биты просто не существуют физически). Следовательно нам необходимо еще 74=28 байт. Настроим базовый адресный регистр BAR1 для декодирования 32 байт пространства памяти.

Настройка BAR1 в файле CORE_SET.VHD следующая:

constant BAR0_PRESENT: boolean:= TRUE;

constant BAR0_MAP:

std_logic_vector(31 downto 0):=”11111111111111111111111111100000”;

constant BAR0_DWIDTH: integer := 27;

Итого, у нас в устройстве сконфигурировано два пространства памяти - одно на 2 Кбайт, другое на 32 байта (из которых используются только 28 байт).

3.4.3 Подключение блока памяти к контроллеру Bluetooth

Подключим порт А буфера приема-передачи (см. 3.5) к контроллеру Bluetooth. Когда драйвер приложения пользователя обращается к пространству памяти буфера, сконфигурированному в регистре BAR0, контроллер Bluetooth активизирует сигнал T_BARHIT[0]. Схемотехническая интерпретация подключения приведена на рисунке 3.19. Аналогичным образом подключаются все остальные регистры.

Рисунок 3.19 - Схемотехническая интерпретация подключения порта А блока памяти BUF_IN_OUT

3.5 Конфигурация памяти

Все современные ПЛИС высокой сложности включают в свой состав блоки статической памяти (ЗУ) с произвольным доступом достаточно большого объема . Внутренняя память ПЛИС организована по модульному принципу и может реконфигурироваться в самые разнообразные структуры. Поэтому проблема реализации подсистем памяти в проектах состоит не столько в проектировании отдельных блоков памяти и даже не в создании средств доступа, сколько в выборе конфигурации из числа вариантов, предлагаемых в библиотеках типовых решений СПАР, и их соответствующего представления в проекте.

В состав библиотек фирмы Xilinx достаточно давно введены модули двухпортовой памяти . В таблице 3.1 приведены стандартные библиотечные модули блочной двухпортовой памяти. Для нашего проекта подойдет модуль RAMB4_S8_S16.

Таблица 3.1

Каждый порт представлен входом адреса (ADDRA для канала A и ADDRB для канала B), входом данных (DIA и DIB, соответственно) и выходом данных (DOA и DOB). Модуль обеспечивает полностью симметричный режим работы. Возможно обращение к обоим портам в одном цикле как по чтению, так и по записи с произвольными адресами запроса. Единственное, и вполне естественное, ограничение - это недопустимость одновременной записи по одному адресу. Но в нашем случае такого произойти не может, что заложено в алгоритм работы пакетного контроллера.

На рисунке 3.20 представлен модуль памяти RAMB4_S8_S16.

Рисунок 3.20 - Модуль памяти RAMB4_S8_S16 библиотеки элементов Xilinx

3.6 Проектирование структуры блока шифратора-дешифратора AES

При проектировании специализированных устройств передачи данных реализуемых на ПЛИС актуальна задача реализации криптоалгоритмов на этой же элементной базе. Так как отказ от применения внешних микросхем реализующих тот или иной криптоалгоритм и реализация этого алгоритма на одной ПЛИС вместе с проектируемым устройством обладает рядом преимуществ. Во-первых, увеличивается надежность проектируемого устройства, обусловленная меньшим количеством внешних соединений. Во-вторых, уменьшаются габаритные размеры и энергопотребление устройства, за счет сокращение количества элементов схемы. В-третьих, появляется возможность замены криптоалгоритма без внесения изменений в схему устройства.

На данный момент алгоритм АES является одним из самых распространенных в мире и принят разными организациями и странами в качестве стандарта. Изобилие повторений в алгоритме делает его идеальным для реализации в специализированной микросхеме.

3.7 Блок вычисления контрольной последовательности

Передача данных по радиоканалу связи осуществляется в соответствии с протоколом А.25. Этот протокол предусматривает помехоустойчивое кодирование блоков данных с образующим полиномом p(x)=x16+x12+ x5+1.

Последовательность действий для вычисления контрольной последовательности по алгоритму CRC16 следующий: к исходному сообщению добавляется 16 нулевых битов, выполняется деление информационной последовательности и 16 добавленных битов на полином p(x)=x16+x12+ x5+1, формируется остаток от деления, который и является вычисленным результатом контрольной последовательности.

Исходя из этих соображений, легко реализовать прямой алгоритм вычисления с помощью VHDL. В блоках Decoder_Frame и Coder_Frame используется два модуля: CRC16_8 и CRC16_64, вычисляющие контрольное поле для информационных кадров и для управляющих (см. протокол передачи).

Блок Decoder_Frame вычисляет контрольную последовательность у соответствующего кадра, сравнивает с принятой последовательностью, вычисленной передатчиком, и вырабатывает соответствующее прерывание.

Блок Coder_Frame вычисляет контрольную последовательность для информационного или управляющего кадра в зависимости от сигналов EncryptData_Ok и CreateComFrame соответственно.

Блоки Coder_Frame и Decoder_Frame являются комбинационными схемами, то есть вычисление результата происходит меньше чем за один такт.

Исходные тексты VHDL описания модулей CRC16_8 и CRC16_64 приведены в приложении.

3.8 Ассемблер и дизассемблер кадров

Формирователи кадров построены на основе сдвиговых регистров.

По сигналу RX блока Disassembler_frame разрешается тактирование сдвиговых регистров сигналом Clk_M приемопередающего модуля (Частота Clk_M равна скорости следования символов в канале связи, в нашем случае 1 МГц). С помощью простых схем сравнения происходит идентификация флагов кадра, и формирование соответствующего прерывания InfFrame_In или ComFrame_In для последующих блоков обработки информации.

Аналогичным образом построен и блок Assembler_frame. По сигналу блока Coder_Frame InfFrame_load или ComFrame_load данные загружаются в соответствующие сдвиговые регистры и по сигналу управляющего автомата TxComFrame или TxInfFrame разрешается сдвиг бит по тактовому сигналу Clk_M.

3.9 Логический синтез проекта

Синтез схемы по ее модели-спецификации на языке высокого уровня VHDL выполняется воплощением проектируемого цифрового устройства в виде так называемого логического проекта - схемы на вентильном уровне, то есть схемы, детализированной до уровня отдельных вентилей - примитивов представления цифрового устройства на логическом уровне.

Синтез выполнен в пакете XST , входящего в состав САПР ISE 6.3 c настройками синтеза по умолчанию для микросхемы серии Spartan-II - XC2S100 со следующими характеристиками:

Таблица 3.2 - Ресурсы микросхемы XC2S100

Характеристика

Значение

Логические ячейки

2 700

Системные вентили

100 000

Блочная ОЗУ, бит

40 960

Результаты синтеза сведены в таблицу 3.3.

Таблица 3.3 - Распределение ресурсов ПЛИС пакетного контроллера

Модуль проекта

Количество логических ячеек

Длительность цикла, нс

Частота,

МГц

Блочная память, бит

Bluetooth_Control

255

16.070

62.228

Control_Unit

38

4.863

205.634

АES_Scrambler

714

7.540

132.626

Coder/Decoder

282

14

67

Assembler_Frame

180

4.838

206.697

Disassembler_Frame

10

3.0

333.333

BUF_IN_OUT

16 384

Всего

1479

16.070

62.228

16 384

Отсюда видно, что в данной реализации проекта мы задействуем всего около 50% ресурсов кристалла и 40% блочной памяти. Из таблицы следует, что самым ресурсоемким модулем в проекте является шифратор/дешифратор АES (714 логических ячеек из 2700). Данную схему можно оптимизировать, реализовав функции S-блоков с помощью таблиц соответствия (LOOK-UP TABLES), разместив их в блочной памяти ПЛИС.

3.10 Выбор ПЛИС

Описанная выше структура разрабатываемого цифрового устройства предполагает реализацию в ПЛИС архитектуры FPGA. Это обусловлено требованиями логической емкости проекта (см. 3.9), неограниченным количестве перепрограммировании кристалла, наличием блочной памяти, совместимостью с технологией Bluetooth.

Источник: https://otherreferats.allbest.ru/download/1020334/