Главная страница
qrcode

ВКР Магистра. Программный сложно-функциональный блок


НазваниеПрограммный сложно-функциональный блок
Дата08.10.2019
Размер2.06 Mb.
Формат файлаpdf
Имя файлаВКР Магистра.PDF
оригинальный pdf просмотр
ТипПрограмма
#65602
страница4 из 8
Каталог
1   2   3   4   5   6   7   8
3.1. Функциональный узел телеметрии и обмена данных с модулем
датчиков (ТОДМ)
На рисунке 3.5 представлена функциональная схема модуля ТОДМ.
Рисунок 3.5

Вид модуля ТОДМ.
Модуль ТОДМ имеет 8 входов с датчиков при подключении датчиков через компаратор sensor1_1 – sensor8_1 и 8 входов для подключения датчиков с использованием АЦП sensor1_1a-sensor8_1a, выбор режима подключения выбирается параметром sensormode. Узел ТОДМ работает только при разрешающем сигнале linefree, который поступает от ОДСК.
По приходящему запросу с номером датчика N_sens от ОДСК, ТОДМ формирует данные с датчиков (такие как номер датчика, состояние и показание датчика) на выводы dat_1-dat_3. При возникновении превышения датчика, принимает значение вывода event1 и выводит данные с датчика, значение которого превысило порог на выводы dat_1-dat_3, а также формирует значение номера события. Все выходные сигналы с ТОДМ подключены к входам
ОДСК.
N_sens[7..0]
sensor1_1
sensor2_1
sensor3_1
sensor4_1
sensor5_1
sensor6_1
sensor7_1
sensor8_1
sensor1_1a[15..0]
sensor2_1a[15..0]
sensor3_1a[15..0]
sensor4_1a[15..0]
sensor5_1a[15..0]
sensor6_1a[15..0]
sensor7_1a[15..0]
sensor8_1a[15..0]
clk linef ree ev ent1
dat1[7..0]
dat2[7..0]
dat3[7..0]
cnt_numb_ev ent[7..0]
TODMmy inst sw nsormode1 1
Unsigned Binary
Param eter Value
Type
51
3.2. Функциональный узел реконфигурации программного
обеспечения (РПО)
На рисунке 3.6 представлена функциональная схема модуля РПО.
Рисунок 3.6

Вид модуля РПО.
На вход узла РПО data_RPO от узла ОДСК приходит информация, которую РПО накапливает для последующего перепрограммирования внешней энергонезависимой памяти. Среди этой информации данные и адрес, с которого будет осуществляться запись во внешнюю память. РПО записывает поclk v alue[7..0]
data_RPO[7..0]
incy cle cnt_RPO[8..0]
read_int_mem select_mem[2..0]
SI1
SI2
SI3
SI4
PIn1[7..0]
PIn2[7..0]
PIn3[7..0]
PIn4[7..0]
dat4[7..0]
dat5[7..0]
dat6[7..0]
write_success memerror
IOout1[7..0]
IOout2[7..0]
IOout3[7..0]
IOout4[7..0]
nCE1_1
nCE2_1
nOE_1
nCE1_2
nCE2_2
nOE_2
nCE1_3
nCE2_3
nOE_3
nCE1_4
nCE2_4
nOE_4
clk_out_memrr2u nCS_1
nWP_1
nCS_2
nWP_2
nCS_3
nWP_3
nCS_4
nWP_4
SO
nCS_1
nWP_1
nCS_2
nWP_2
nCS_3
nWP_3
nCS_4
nWP_4
clk_out_memrr2u
ADDR[16..0]
enbuf IO1
enbuf IO2
enbuf IO3
enbuf IO4
RPOmy inst
M
8
Signed Integer
K
0
Signed Integer
Param e te rValue
Type
52 лученную информацию в свою внутреннюю память, запись происходит по счетчику cnt_RPO, значения которого передаются от ОДСК. Также от ОДСК приходит номер памяти select_mem, на которую необходимо осуществить запись и количество данных, которое необходимо записать value.
Параметром K выбирается тип памяти, с которой СФБУТ будет взаимодействовать. Исходя из этого, учитывая номер памяти принятого от ОДСК, будут сформированы соответствующий сигналы разрешения (nCE1_1, nCE1_2… nCE1_4, nCE2_1, nCE2_2… nCE2_4, nCS_1, nCS_2… nCS_4, nOE_1, nOE_2… nOE_4, nWP_1, nWP_2… nWP_4). После записи данных во внутреннюю память ТОДМ ждет сигнала о том, что контрольная сумма совпала (сигнал read_int_mem), после чего можно производить чтение данных из внутренней памяти для стирания/ записи/ чтения.
При записи, информация для перепрограммирования поступает на соответствующие выходы данных и адреса. В зависимости от выбранного режима адрес и данные внешней памяти поступают либо на вывод SO, если выбран режим взаимодействия с памятью 1661РР2У, либо на ADDR и один из выводов IOout, если выбран режим взаимодействия с памятью 1666РЕ014.
После записи происходит чтение данных с одного из входов SI, если выбран 1661РР2У, или с одного из входов PIN, если выбран режим взаимодействия с 1666РЕ014. Параметром М выбирается объем сегмента для стирания/ записи/ чтения.
В среде разработки Quartus II имеется возможность использовать стандартные модули, которые доступны в библиотеке программы. Эти модули называются мегафункциями.
Так как 5576ХС6Т это аналог ПЛИС фирмы Altera, для буферизации адреса и данных для внешней энергонезависимой памяти использовалась мегафункция одно портовой RAM размером 256 байт с 8-битной шиной адреса и данных. Данная память занимает 2048 бит памяти из 40960 доступных в
53 5576ХС6Т. Вид модуля мега функции внутренней памяти показан на рисунке
3.7.
Рисунок 3.7

Вид модуля мегафункции внутренней памяти.
Данная мега функция памяти имеет вход тактового сигнала clock, вход сигнала разрешения записи wren информационный вход data на который подается информация для перепрограммирования внешней памяти, полученная от ОДСК, и информационный выход q с которого происходит чтение из внутренней памяти.
3.3. Функциональный узел обмена данными с системным
контроллером (ОДСК)
На рисунке 3.8 представлена функциональная схема модуля ОДСК.
Рисунок 3.8

Вид модуля ОДСК.
Функциональный узел обмена данными с системным контроллером принимает информацию от системного контроллера и в зависимости от значения поля ―Команда‖ входного сообщения передает команды на исполнение либо к ТОДМ, либо к РПО. К ТОДМ ОДСК передает номер датчика, котороaddress[7..0]
clock data[7..0]
wren q[7..0]
ram inst sda_in scl_in clk ev ent1
dat1[7..0]
dat2[7..0]
dat3[7..0]
cnt_numb_ev ent[7..0]
dat4[7..0]
dat5[7..0]
dat6[7..0]
write_success memerror sda_out scl_out tristate_usl tristate_usl_scl
N_sens[7..0]
v alue[7..0]
data_RPO[7..0]
incy cle cnt_RPO[8..0]
read_int_mem linef ree select_mem[2..0]
sel ram_select
ODSKmy inst
54 го необходимо проверить N_sens и сигнал разрешения опроса датчиков linefree. К РПО ОДСК передает информацию для перепрограммирования внешней памяти data_RPO, сигнал выбора модуля памяти, на которую будет осуществляться запись select_mem, сигнал разрешения записи на внешнюю память read_int_mem и объем данных, который необходимо записать: value.
После того как РПО или ТОДМ обработали информацию, они выводят на вход ОДСК по три 8-битных информационных сигнала с ТОДМ: dat1, dat2, dat3, или с РПО: dat4, dat5, dat6 и в зависимости от команды ОДСК выбирает какие три сигнала вывести в поле ―Данные‖ своего сообщения ответа к системному контроллеру. Считав данные, ОДСК формирует сообщение ответа системному контроллеру по шине sda_out, при этом активируя шину scl_out и сигналы разрешения передачи (tristate_usl и tristate_usl_scl), которые поступают на буфер трех состояний.
3.4. Синтез модуля СФБУТ
Размещение и трассировка (place and route) производилась для ПЛИС фирмы Altera FLEX10 EPF10K50SFC484-1, отчет о занятии ресурсов в
Quartus II 8.1 для указанной микросхемы приводится ниже на рисунке 3.9.
Рисунок 3.9

Отчет о занятии ресурсов в Quartus II.
55
Таким образом, универсальный СФБУТ занимает 987 логических элементов из 2880, это 34% от общего объема логических элементов ПЛИС
5576ХС6Т, также СФБУТ использует 2048 бит памяти из общего объема в
40960 бит, что занимает порядка 5% от общего объема доступных в ПЛИС
5576ХС6Т бит памяти. Из отчета ясно, что у микросхемы остается большое количество ресурсов для дальнейшего улучшения и оптимизации полученного проекта или реализации еще одного устройства на этой же ПЛИС. Программный код СФБУТ представлен в приложении А.
56
4. МОДЕЛИРОВАНИЕ
Полученный проект требует тщательной проверки, поэтому за этапом синтеза следует этап анализа. Моделирование имеет несколько уровней с разной степенью отображения работы программы. Моделирование и верификация производилась в системе Simulink с подключенным спроектированным модулем СФБУТ написанным на языке Verilog в режиме совместной симуляции с программой Modelism. В этом случае программный блок, написанный на языке Verilog в среде Simulink, заменяется ―черным ящиком‖, со своими входами и выходами на которые подаются сигналы, реализуемые в этой среде, а внутреннее состояние сигналов анализируется в среде Modelsim.
Проверим основные ситуации, которые могут возникнуть при взаимодействии СФБУТ и системного контроллера, такие как:

Прием и ответ на сообщение от BMC, такие как запрос датчиков или передача данных для перепрограммирования памяти основного устройства функционального модуля РВС;

При возникновении проблемы с записью на внешнюю RAM формирование сообщения от СФБУТ;

Нарушение целостности передаваемых данных, и формирование сообщения ответа от СФБУТ к BMC;

Возникновение превышения уровня одного из датчиков и формирование сообщения о событии от СФБУТ к BMC.
Вид подключения моделируемых блоков представлен на рисунке 4.1.
В среде Simulink были смоделированы сигналы, поступающие на
СФБУТ от системного контроллера (блок System controller на рисунке 4.1), а также возможные значения с датчиков для двух режимов: с использованием
АЦП (sensor_ADC) или с использованием компаратора (блок SENSORS).
Блок System_controller формирует сигналы SDA и SCL для двух вариантов запроса: запрос на перепрограммирование энергонезависимой памяти
SDA_reprogramming, SCL_reprogramming и запрос на значение датчиков
57
SDA1sens_query и SCL1 sens_query. Также были смоделированы сигналы, приходящие от внешней памяти, для варианта взаимодействия с модулем памяти 1666РЕ014 блок 1666Re014_ANSW1 и 1661RR2U_ANSW для взаимодействия с модулем 1661РР2У.
Рисунок 4.1

Вид соединения блоков, моделирующих входные сигналы и
СФБУТ в программе Simulink.
4.1. Общий вид сообщений запроса и ответа
В среде Simulink был смоделирован сигнал, поступающий от СФБУТ к
BMC, от блока System_controller с выводов SDA1_sens_query и
SCL1_sens_query рисунок 4.1. Значения полей заголовка сигнала, смоделированного в блоке System_controller и поступающего на СФБУТ, представлены в таблице 6 (поле ―Данные‖ в этом случае отсутствует).
58
Таблица 6

Значения полей заголовка смоделированного сигнала от BMC
На временной диаграмме, представленной на рисунке 4.2, представлены входные сигналы, поступающие на СФБУТ: sda_in и scl_in и сигналы ответа сгенерированные СФБУТ sda_out и scl_out. А также сигнал разрешения передачи линии SDA для буфера трех состояний.
Рисунок 4.2

Временная диаграмма при совпадении адреса в сообщении запроса с адресом СФБУТ.
СФБУТ обнаруживает на линии SDA ―СТАРТ‖ условие и начинает считывать адрес. После принятия ―СТАРТ‖ условия линия считается занятой до момента принятия ―СТОП‖ условия. При совпадении полученного адреса из входящего сообщения со своим, СФБУТ опускает линию sda_out, при этом опускается сигнал разрешения, переключая буфер трех состояний в режим передачи. Таким образом, на линию SDA выводится бит подтверждения. После подтверждения адреса СФБУТ начинает считывать данные из входящего сообщения до принятия ―СТОП‖ условия.
При передаче каждые 8 бит СФБУТ опускает линию sda_out, сигнал tristate_usl переводит буфер трех состояний из режима приема в режим передачи и на линию SDA выводится бит подтверждения (ACK). После получения
―СТОП‖ условия линия считается не занятой и СФБУТ приступает к генерации сообщения ответа. СФБУТ выводит в поля заголовка ―I²C системного контроллера‖, ―№ ответа‖, ―Тип запроса/команда‖ информацию об адресе сиI²C адрес устройства
№ запроса
I²C адрес системного контроллера
Тип запроса, команда
Номер датчика
Контрольная сумма
0x51 0xA9 0x04 0x04 0x01 0x63
59 стемного контроллера и номер ответа, из регистров addr_syst_cntrl и numb_query. Также СФБУТ добавляет свой адрес, тип ответа (из регистра type_response) и три информационных байта в поле ―Данные‖. Вид пакета ответа представлен на рисунке 2.10 в пункте. 2.1.2.
При несовпадении адреса бит подтверждения не выводится и СФБУТ не обрабатывает входную информацию (рисунок 4.3).
Рисунок 4.3

Временная диаграмма при несовпадении адреса в сообщении запроса с адресом СФБУТ.
После того как адрес в сообщении совпал с адресом устройства ОДСК записывает значения полей входящего сообщения в соответствующие регистры (numb_query, addr_syst_cntrl, type_query, number_sensor), по счетчику new_bitcnt. Запись входных значений во внутренние регистры представлена на рисунке 4.4.
Рисунок 4.4

Временная диаграмма записи входных значений из заголовка принятого сообщения в регистры.
Начало расчета контрольной суммы (CRC_in) происходит сразу после получения первого входного бита. По значению в регистре type_query ОДСК определяет тип входящего сообщения (таблица 1 пункт.
2.1.4). В данном случае это сообщение на запрос датчика, номер которого содержится в поле
60
―Номер датчика‖ (датчик номер 1). Так как сообщение на запрос датчика имеет фиксированный размер 5 байт (не считая биты подтверждения), значение счетчика останавливается на значении 9’d255, а расчет CRC заканчивается на значении счетчика 9’d256. После считывания последнего поля контрольной суммы ОДСК сравнивает рассчитанное (crc_calc) и полученное
(crc_reciv) значение контрольной суммы и если они совпадают, генерирует флаг совпадения контрольной суммы crceq, и передает номер датчика к узлу
ТОДМ.
При несовпадении контрольной суммы, ОДСК сразу же отправляет сообщение на адрес BMC, от которого получил сообщение. Вид сообщения при несовпадении рассчитанной контрольной суммы и принятой показан на временной диаграмме на рисунке 4.5.
Рисунок 4.5

Временная диаграмма при несовпадении рассчитанной контрольной суммы и принятой.
Поле ―Данные‖ сигнала ответа заполняется из регистров data1-data3, а значение поля заголовка ―Тип команды‖ заполняется из регистра type_response. Значения в этих полях соответстветствуют значениям, представленным в таблице 2 (пункт
2.1.4). Таким образом, все три байта в поле
―Данные‖ будут иметь значение 0x00, а поле ―Тип команды‖ значение 0x03.
61
4.2. Взаимодействие СФБУТ с датчиками, при подключении через
АЦП
4.2.1. Запрос на состояние датчика
Значения в соответствующих полях смоделированного сигнала для запроса состояния датчиков представлены в таблице 6 (п. 4.1). Адрес СФБУТ был выбран:8’h51. Режим подключения датчиков sensormode=1(подключение через АЦП). Таким образом, СФБУТ считывает значения, которые поступают из блока sensor_ADC. Вид подключения блока sensor_ADC к СФБУТ представлен на рисунке 4.1. На временной диаграмме, представленной на рисунке 4.6, показано сообщение ответа на запрос значения с датчика 1 (sensor
1a).
Рисунок 4.6

Временная диаграмма формирования сообщения ответа при запросе данных с датчика.
По значению в регистре type_query СФБУТ определяет тип входящего сообщения (таблица 1, пункт. 2.1.4). В данном случае это сообщение на запрос датчика, номер которого содержится в поле ―Номер датчика‖ (датчик № 1)
После получения номера датчика, СФБУТ формирует значения в регистрах data_1, data_2, data_3, которые содержат номер датчика (data_1) и 16битное значение с данного датчика (data_2, data_3). Значения из этих регистров выводятся в поле ―Данные‖ сообщения ответа от СФБУТ к BMC.
62
Также СФБУТ формирует значение в регистре type_response, которое выводится в поле заголовка ―Тип команды‖. Все значения в этих регистрах, сформированные СФБУТ, соответствуют значениям в таблице 2 (пункт.
2.1.4). Таким образом, в первом байте поля ―Данные‖ выводится значение равное 0x01, которое соответствует номеру запрашиваемого датчика. Во втором и третьем значении поля ―Данные‖ выводится 16-битное значение от запрашиваемого датчика. В данном случае запрашиваемый датчик (датчик №1) имеет значение 0x0050.
4.2.2. Превышение порогового значения датчика
На рисунке 4.7 представлена временная диаграмма случая превышения порогового значения (sensorlim1 и sensorlim2) датчиков, подключенных к первому и второму выводам (sensor1_1a и sensor2_1a соответственно).
Рисунок 4.7

Временная диаграмма при превышении значения пороговых значений датчиками, подключенными к sensor_1a и к sensor_2a.
Опрос датчиков происходит по счетчику cnt3, который выводит значения от одного до восьми. При совпадении номера датчика со значением счетчика, в случае превышения порога, при условии, что шина не занята, генерируется флаг события: event1.
63
Это сделано для формирования очереди при одновременном возникновении превышения пороговых значений разными датчиками. В этом случае генерация сообщений о событии будет происходить по очереди. Подробнее о принципе работы СФБУТ при считывании значений с датчиков рассмотрено в пункте 2.2.2.
По этому флагу генерируется и выводится сообщение о событии на шину sda_out. Также в регистр data_1_last записывается номер датчика, у которого было зафиксировано превышение, для того чтобы при следующем совпадении значения счетчика и номера датчика не происходила повторная генерация сообщении о событии. Сообщения о событии в отличие от обычных сообщений ответа, отправляются на фиксированный адрес системного контроллера по умолчанию.
Как видно из временной диаграммы на рисунке 4.7 при одновременном возникновении превышения пороговых значений двумя датчиками, сообщения о событии на линию sda_out выводятся последовательно. Cnt_numb_event считает количество событий и выводит это число в поле
―№ события‖ сообщения о событии.
При выводе сообщения на линию sda_out, счетчик cnt3 приостанавливает свой счет. А в поле ―Данные‖ сообщения о событии выводится информация, о номере датчика и его значение из регистров data_1 data_2 data_3, в соответствии с таблицей 2. Также в поле ―Тип ответа‖ выводятся данные из регистра: type_response в соответствии с таблицей 2 (пункт 2.1.4).
64
4.3. Взаимодействие СФБУТ с датчиками, при подключении через
компаратор
4.3.1. Запрос на состояние датчика
На временной диаграмме, представленной на рисунке 4.8, показан сигнал ответа при запросе состояния датчика, при использовании подключения через компаратор.
Рисунок 4.8

Запрос и обмен с датчиком с компаратором.
При режиме подключения СФБУТ через компаратор вид сообщения идентичен сообщению при использовании датчиков с АЦП, единственным отличием является содержимое поля данные.
Поле ―Данные‖ и поле ―Тип команды‖ в заголовке пакета ответа от
СФБУТ заполняются из соответствующих регистров. Поле ―Данные‖ из регистров data_1, data_2, data_3, а поле ―Тип команды‖ из регистра type_response. Значения в регистрах выставляются в соответствии с таблицей
2 (пункт 2.1.4). Таким образом, в поле ―Тип команды‖ и во второй и третий байт поля ―Данные‖ выводится значение 0x00, а в первый байт поля ―Данные‖ выводится номер датчика, состояние которого было запрошено (0x1).
1   2   3   4   5   6   7   8

перейти в каталог файлов


связь с админом