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

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


НазваниеПрограммный сложно-функциональный блок
Дата08.10.2019
Размер2.06 Mb.
Формат файлаpdf
Имя файлаВКР Магистра.PDF
оригинальный pdf просмотр
ТипПрограмма
#65602
страница3 из 8
Каталог
1   2   3   4   5   6   7   8
2.2.3. Функциональный узел реконфигурации программного
обеспечения (РПО)
Функциональный узел реконфигурации программного обеспечения принимает пакеты данных для программирования энергонезависимой памяти. После принятия данных, узел осуществляет буферизацию данных для последующего программирования и исполняет команду на программирование.
Кроме этого, он осуществляет считывание, контроль запрограммированного участка энергонезависимой памяти и передает в ОДСК информацию о результате программирования, и о текущем состоянии процесса программирования.
Объем накапливаемых данных равен или кратен размеру одного сектора энергонезависимой памяти. Тип и объем энергонезависимой памяти зависит от типа устройства и может быть уникальным для типа и версии устройства. Для буферизации приходящих от BMC данных для программирования использовалась внутренняя память ПЛИС.
Для хранения программного обеспечения в различных функциональных модулях РВС, были выбраны 2 типа памяти отечественной разработки
1661РР2У с организацией 1М х 8 бит и последовательным интерфейсом и
1666РЕ014 с 17 разрядной шиной адреса и с 8-ми разрядной шиной данных.
Поле ―Данные‖ входящего пакета, приходящего на СФБУТ выглядит следующим образом: первые 3 байта занимает адрес, с которого будет начинаться запись во внешнюю память, далее идут данные для перепрограммирования внешней памяти. Если во входящем пакете в поле ―Тип запроса/ команда‖ ОДСК обнаруживает команду на запись во внешнюю память, ОДСК передает информацию для записи в РПО, а также номер памяти, в которую необходимо осуществить запись.
35
36
2.2.3.1. Взаимодействие с внутренней памятью ПЛИС
Информация, полученная РПО, записывается во внутреннюю память
ПЛИС последовательно, начиная с адреса 0xFF заканчивая адресом 0x100-N.
Таким образом, начальный адрес для программирования внешней ПЛИС будет находиться в трех ячейках внутренней памяти под адресами
0xFF,0xFE,0xFD. Данные же для перепрограммирования хранятся во внутренней памяти, начиная с адреса 0xFC (рисунок 2.17).
Рисунок 2.17

Запись данных во внутреннюю память
ПЛИС.
После записи информации во внутреннюю память РПО ждет сигнала разрешения на перепрограммирование, который зависит от совпадения или несовпадения контрольной суммы. Дальнейшие действия зависят от того к какому типу памяти подключен СФБУТ. Так как СФБУТ предполагается использовать в различных функциональных блоках, в которых используются различные типы памяти, необходимо реализовать поддержку взаимодействия с этими видами памяти. Рассмотрим специфику взаимодействия модуля
СФБУТ с каждым типом памяти.
2.2.3.2. Взаимодействие с модулем памяти 1661РР2У
Микросхема 1661РР2У представляет собой перепрограммируемую память типа FLASH, которая относится к классу энергонезависимых запоминающих устройств с возможностью многократной перезаписи больших объемов данных, и с долговременным хранением информации, независимо от наличия или отсутствия источника питания. У данной микросхемы памяти последовательный интерфейс, ѐмкость 8 М, и организация 8М х 1 бит. Так
37 как модуль памяти 1661РР2У относится к памяти типа FLASH, то перед перепрограммированием памяти необходимо произвести операцию стирания необходимого объема данных.
После стирания происходит запись и считывание данных с целью проверки правильности записанных данных. При несовпадении считываемых данных с записанными, РПО генерирует сигнал ошибки, который передается на
ОДСК, который, в свою очередь генерирует сообщение об ошибке для передачи его к BMC. На рисунке 2.18 представлены временные диаграммы состояний сигналов разрешения при стирании с 1661РР2У.
SO
nCS
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
CLK
SI
1
3
MSB-
старший разряд
MSB
MSB
4 (
байт-1)
5 (
байт-2)
1
– команда Write enable (0х06)
2
– команда Write page (0x92)
3
– адрес А23...А20 -не важно
А19...А0 - адреса микросхемы
4
– входные данные загрузка первого байта
5
– входные данные загрузка второго байта и т.д.
6
– прекращение загрузки (нет CLK)
7
– начало программирования
Высокий импеданс
CLK
SI
t
cyw
< 8
мс
t >100-200
µs
программирование
7
– начинается режим
программирования
Команда записи и повтор программирования
HZ
4- (
Байт -2)
6
. . .
38 39 40 41 42 43 45 46 47 48 49
MSB
А23 А0
2
0x06
0x92
Рисунок 2.18

Сигналы управления при стирании данных с 1661РР2У.
Стирание данных в постраничном режиме осуществляется в два этапа.
На первом этапе сигнал nCS переходит в состояние логического нуля, а по выводу SI передают 1 байт - команду 0х06 (разрешающую запись/стирание страниц), после чего сигнал nCS возвращается в состояние логической единицы.
На втором этапе вводятся команды стирания страницы размером 8 байт, указание адреса и команда стирания информации. Команды стирания начинается с перехода сигнала nCS в состояние логического нуля, а по SI передают 1 байт - команды 0х20, после чего по SI передают 3 байта адреса страницы, начиная со старшего разряда, после сигнал nCS возвращается в состояние логической единицы. В это время происходит стирание
38 информации. После стирания необходимого объема данных начинается запись.
На рисунке 2.19 представлены временные диаграммы состояний сигналов разрешения при записи на 1661РР2У.
Рисунок 2.19

Сигналы управления при записи данных на 1661РР2У.
Запись данных осуществляется в постраничном режиме также в два этапа.
На первом этапе сигнал nCS переходит в состояние логического нуля, а сигнал SI по тактовому сигналу CLK передает 1 байт - команду 0х06
(разрешающую запись/стирание страниц), после этого сигнал nCS возвращается в состояние логической единицы.
Второй этап — это выбор операции (запись/стирание) и размера страницы в 8 или 256 байт. Выбор размера начинается с перехода сигнала nCS в состояние логического нуля, по SI передается 1 байт - команды 0х92 для выбора страницы размером в 8 байт,после чего по SI передают 3 байта адреса страницы, начиная со старшего разряда, после передачи адреса, передаются данные, которые необходимо записать в микросхему. Количество байт данных должно соответствовать выбранному ранее размеру страницы в
39 8 или 256 байт. После передачи данных сигнал nCS возвращается в состояние логической единицы.
Для проверки правильности записи данных, после записи происходит чтение и сравнение записываемых и записанных значений запрограммированного участка памяти.
На рисунке 2.20 представлены временные диаграммы состояний сигналов разрешения при чтении данных с 1661РР2У.
Рисунок 2.20

Сигналы управления при чтении данных с 1661РР2У.
Чтение данных осуществляется следующим образом: сигнал nCS переходит в состояние логического нуля, а по SI передается 1 байт – команда
0х0В. После этого по SI передают 3 байта адреса, начиная со старшего разряда. После чего на SO выходят данные с указанного адреса, и далее по каждому такту CLK адрес увеличивается на 1 и на DO выходят данные уже с нового адреса, так будет продолжаться до тех пор, пока сигнал nCS находится в состояние логического нуля. Для завершения чтения сигнал nCS необходимо вернуть в состояние логической единицы.
Таким образом, в РПО должен быть реализован алгоритм поочередного стирания записи и чтения информации определенного объема в соответствии с диаграммами 2.18 - 2.20 было принято решение в РПО реализовать посег-
40 ментное стирание запись и чтение с возможностью менять объѐм сегмента.
То есть запись, и последующее чтение сегмента начинается только после стирания этого сегмента определенного объема. Пусть М это объем сегмента.
Для стирания сегмента M необходимо M1 байт, где M1 рассчитывается по формуле:
M1= 3*M +3+M байт
(1)
Для стирания необходимо последовательно выводить адреса стираемых ячеек, которые занимают по 3 байта каждый, плюс три байта занимают флаги выбора режима памяти и команда на стирание, плюс M байт занимает ожидание стирания.
Для записи сектора M необходимо M2 байт, где М2 рассчитывается по формуле:
M2 =3*M+8*M+3+M байт
(2)
Для записи необходимо выводить последовательно адрес, занимающий
3 байта, страница данных, занимающая 8 байт для одного адреса, плюс три байта занимают флаги выбора режима памяти, плюс M байт занимает интервал необходимый для ожидания записи. Для чтения сектора M необходимо
M3 байт, где М3 рассчитывается по формуле:
M3 =3*M+8*M+3 байт
(3)
Общий объем байт необходимых для стирания, записи и чтения сегмента объемом M равен A байт. A рассчитывается по формуле:
A=M1+M2+M3 байт
(4)
Таким образом, посегментное стирание, запись и чтение будет происходить по счетчику, который в зависимости от выбора объема сегмента будет иметь разные значения.
На рисунке 2.21 показаны значения счетчика, при которых будет происходить запись стирание и чтение.
41
Рисунок 2.21

Вид счетчика, по которому происходит стирание, запись и чтение с 1661РР2У.
Стирание данных будет происходить при значении счетчика больше значения N1, где N1 рассчитывается по формуле:
N1=A-M1
(5)
Запись будет происходить при значении этого счетчика от N1 до значения N2+1 включительно, где N2 рассчитываются по формуле:
N2 =N1-M2
(6)
Чтение будет проходить со значения N2 до значения N3+1 включительно, где N3 рассчитываются по формуле:
N3 =N2-M3
(7)
После чего будет происходить стирание запись и чтение следующего сегмента и так далее, до тех пор, пока не будет записан и проверен последний байт на последний адрес.
Таким образом, при выборе объема сегмента M=3 на линию SI при стирании последовательно будет выведено три адреса. При записи и чтении три адреса плюс 24 байта данных.
2.2.3.3. Взаимодействие с модулем памяти 1666РЕ014
Энергонезависимая память 1666РЕ014 (FRAM) имеет емкость 1 Мбит
(128 К × 8) бит.
При взаимодействии с памятью 1666РЕ014 предварительное стирание не нужно. Память имеет стандартный параллельный интерфейс с 17-битный шиной адреса и 8-битной шиной данных.
42
Вид сигналов разрешения при режиме записи показан на временной диаграмме на рисунке 2.22.
Рисунок 2.22

Сигналы управления при записи данных на 1666РЕ014.
В данном случае запись 1 байта данных происходит при низком уровне сигналов nCE и nWE и высоком уровне CE2.
Вид сигналов разрешения при режиме записи показан на временной диаграмме на рисунке 2.23.
Рисунок 2.23

Сигналы управления при чтении данных на 1666РЕ014.
Чтение 1 байта данных происходит при низком уровне сигналов nCE и nOE и высоком уровне CE2
Таким образом, в РПО для взаимодействия с 166РЕ014 должен быть реализован алгоритм поочередной записи и чтения информации определенного объема в соответствии с диаграммами на рисунках 2.22-2.23.
Было принято решение в РПО реализовать посегментную запись и чтение с возможностью менять объѐм сегмента. То есть чтение сегмента начинается только после записи этого сегмента определенного объема. Пусть М это объем сегмента.
43
На рисунке 2.24 показаны значения счетчика, при которых будет происходить запись и чтение
Рисунок 2.24

Вид счетчика, по которому происходит стирание, запись и чтение с 1661РР2У.
Запись данных будет происходить при значении счетчика больше значения N1=A-M1, где A рассчитывается по формуле 4, но при взаимодействии с памятью 1666РЕ014 M1=M2=M.
Чтение будет происходить при значении счетчика от N1, где N1 рассчитывается по формуле 5 до значения N2+1 включительно, где N2 рассчитываются по формуле 6, до тех пор, пока не будет записан и проверен последний байт на последний адрес. Таким образом, при значении сегмента
M=8 чтение будет происходить только после записи 8 байт данных.
44
3. РАЗРАБОТКА ФУНКЦИОНАЛЬНОЙ СХЕМЫ
В данном проекте преимущественно использовался текстовый способ описания с привлечением аппарата языка описания аппаратуры Verilog. Такой выбор обусловлен рядом достоинств, присущих этому способу, которые заключаются в его компактности и относительной простоте автоматизации любых преобразований, включая начальную генерацию описания проекта. В проекты легко вносить изменения (добавлять или удалять объекты), объекты проектов легче модифицируются, можно создавать блоки с легко задаваемыми и изменяемыми параметрами.
Основной используемый метод для осуществления проектирования - это функциональная декомпозиция модуля. Для системы и ее блоков применяем концепцию "черного ящика". Для "черного ящика" разрабатывается функциональная спецификация, она включает внешнее описание блока (входы и выходы) и внутреннее описание — функцию или алгоритм работы;
F=Ф(Х,t), где X— вектор входных величин; F — вектор выходных величин; t
— время. При декомпозиции функция Ф разбивается на более простые функции Ф
1,
Ф
2
...Ф
к,
между которыми должны быть установлены определенные связи, соответствующие принятому алгоритму реализации функции Ф. В результате разбиения, в конечном счете, получается структура.
Процесс проектирования — многошаговый и итерационный, с возвратами назад и пересмотром ранее принятых решений. Выбор наилучшего варианта синтеза устройства осуществляется по результатам анализа. При анализе проверяется правильность работы и некоторые показатели, характеризующие устройство. Для реализации СФБУТ была выбрана ПЛИС 5576ХС6Т отечественной разработки. Данная ПЛИС имеет 2880 логических ячеек и поддерживает до 40960 бит памяти. Данная микросхема является аналогом
ПЛИС Altera FLEX10.
45
Синтез СФБУТ на языке Verilog производилась в пакете Altera
QuartusII версии 8.1, так как, начиная с версии 8.2, поддержка ПЛИС Altera
FLEX10, была приостановлена.
В результате проектирования была разработана функциональная схема модуля СФБУТ, изображенная на рисунке 3.1.
Рисунок 3.1

Вид СФБУТ.
Рассмотрим конфигурацию выводов СФБУТ, а также функциональную схему этого модуля, полученную в результате проектирования, назначение и особенности реализации основных блоков этой схемы. В таблице 5 приведены все выводы и их назначения в СФБУТ.
46
Таблица 5

Выводы и их назначения в СФБУТ
Вывод
Назначение
CLK
Вход тактового сигнала clk_on
Вход сигнала разрешения СФБУТ sensor1-sensor8
Вход для данных с датчиков при использовании компаратора (бинарный) sensor1a-sensor8a
Вход для данных с датчиков при использовании АЦП
(16-ти разрядный)
S1-S4
Последовательный вход данных с памяти (при использовании памяти 1661РР2у)
SDA
Последовательная двунаправленная шина данных для взаимодействия с системным контроллером
SCL
Последовательная двунаправленная шина тактов для взаимодействия с системным контроллером
IO1-IO4
Двунаправленная шина обмена данными с памятью
(1666РЕ014) nCE1_1- nCE1_4, nCE2_1- nCE2_4, nOE_1- nOE_4
Сигналы разрешения записи/чтения для памяти
1666РЕ014 nCS_1- nCS_4, nWP1- nWP4
Сигналы разрешения записи/чтения для памяти
1661РР2У clk_out_memr2u
Вывод тактового сигнала для памяти 1666РР2У
ADDR
Вывод адреса для памяти 1666РЕ014
Для удобства моделирования в модуле СФБУТ все двунаправленные выводы разделены на однонаправленные, которые подключены через буфер трех состояний. Вид модуля буфера трех состояний показан на рисунке 3.2.
Рисунок 3.2

Структурная схема буфера трех состояний.
47
В зависимости от сигнала, приходящего на вход enable, шина INOUT работает либо в режиме приема данных, либо в режиме передачи данных.
Если enable=1, то шина INOUT работает в режиме приема, и данные с INOUT поступают на выход OUT, который подключен к входным выводам, при этом вывод IN находится в Z состоянии. Если enable=0, то на вывод INOUT подается сигнал с вывода IN, который подключен к выходным выводам.
Общий вид соединений СФБУТ с применением буфера трех состояний показан на рисунке 3.3.
Рисунок 3.3

Общий вид соединений СФБУТ с применением буфера трех состояний.
IN
enable
INOUT
OUT
IN
enable
INOUT
OUT
enableio
INio[7..0]
OUTio[7..0]
INOUTio[7..0]
enableio
INio[7..0]
OUTio[7..0]
INOUTio[7..0]
enableio
INio[7..0]
OUTio[7..0]
INOUTio[7..0]
enableio
INio[7..0]
OUTio[7..0]
INOUTio[7..0]
SI1
SI2
SI3
SI4
clk scl_in sda_in 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]
PIn1[7..0]
PIn2[7..0]
PIn3[7..0]
PIn4[7..0]
SO
clk_out_memrr2u (GND)
enbufIO1 (GND)
enbufIO3 (GND)
enbufIO4 (GND)
nCE1_1
nCE1_2
nCE1_3
nCE1_4
nCE2_1
nCE2_2
nCE2_3
nCE2_4
nCS_1
nCS_2
nCS_3
nCS_4
nOE_1
nOE_2
nOE_3
nOE_4
nWP_1 (GND)
nWP_2 (GND)
nWP_3 (GND)
nWP_4 (GND)
scl_out sda_out tristate_usl tristate_usl_scl
IOout1[7..0]
IOout2[7..0]
IOout3[7..0]
IOout4[7..0]
ADDR[16..0]
CLK
clck_on clk tri_buf:tribuf_SDA
tri_buf:tribuf_SCL
tri_bufIO:tribuf_IO3
tri_bufIO:tribuf_IO4
SDA
CLK
SCL
sensor1
sensor2
sensor3
sensor4
sensor5
sensor6
sensor7
sensor8
nCE1_1
nCE2_1
nOE_1
nCE1_2
nCE2_2
nOE_2
nCE1_3
nOE_3
nCE1_4
nCE2_4
nOE_4
SO
SI1
SI2
SI3
SI4
nCS_1
nWP_1
nCS_2
nWP_2
nWP_3
nCS_4
nWP_4
clck_on sensor1a[15..0]
sensor2a[15..0]
sensor4a[15..0]
sensor6a[15..0]
sensor7a[15..0]
sensor8a[15..0]
ADDR[16..0]
IO1[7..0]
IO2[7..0]
IO4[7..0]
clckEN:clckENmy nCE2_3
IO3[7..0]
sensor5a[15..0]
sensor3a[15..0]
clk_out_memrr2u tri_bufIO:tribuf_IO2
tri_bufIO:tribuf_IO1
nCS_3
I2CslaveWith8bitsIO:i2c
48
У СФБУТ имеются:

Входы тактовой частоты CLK;

Входы, на которые поступают данные с датчиков, при подключении их через компаратор: sensor_1, sensor_2, … sensor_8;

Входы, на которые поступают данные с датчиков, при подключении их через АЦП: sensor_1a, sensor_2a… sensor_8a;

Шины входа линии sda_in и scl_in;

Выходные сигналы разрешения записи/чтения, для выбора модуля памяти, которую необходимо перепрограммировать (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.
Также СФБУТ имеет выходные сигналы адреса и данных, для двух типов памяти соответственно и выходные сигналы линий sda_out и scl_out.
СФБУТ состоит из трех функциональных узлов:

Функциональный узел обмена данных с системным контроллером
(ОДСК) – Функциональный узел, который обеспечивает формирование сигнала к BMC, а также проверяет целостность передаваемых между
СФБУТ и BMC данных;
49

Функциональный узел телеметрии и обмена данными с модулем датчиков (ТОДМ) – узел, который обеспечивает опрос датчиков и передачу информации с датчиков в ОДСК;

Функциональный узел реконфигурации программного обеспечения
(РПО) – узел, который отвечает за реконфигурацию программного обеспечения в функциональных модулях РВС.
Соединения модулей показаны на рисунке 3.4.
Рисунок 3.4

Соединения модулей, входящих в состав СФБУТ. clk event1
memerror scl_in sda_in write_success dat1[7..0]
dat2[7..0]
dat3[7..0]
cnt_numb_event[7..0]
dat4[7..0]
dat5[7..0]
dat6[7..0]
incycle linefree read_int_mem scl_out sda_out tristate_usl tristate_usl_scl
N_sens[7..0]
value[7..0]
data_RPO[7..0]
cnt_RPO[8..0]
select_mem[2..0]
clk linefree sensor1_1
sensor2_1
sensor3_1
sensor4_1
sensor5_1
sensor6_1
sensor7_1
sensor8_1
N_sens[7..0]
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]
event1
dat1[7..0]
dat2[7..0]
dat3[7..0]
cnt_numb_event[7..0]
SI1
SI2
SI3
SI4
clk incycle read_int_mem value[7..0]
data_RPO[7..0]
cnt_RPO[8..0]
select_mem[2..0]
PIn1[7..0]
PIn2[7..0]
PIn3[7..0]
PIn4[7..0]
SO
clk_out_memrr2u (GND)
enbufIO1 (GND)
enbufIO2 (GND)
enbufIO3 (GND)
enbufIO4 (GND)
memerror nCE1_1
nCE1_2
nCE1_3
nCE1_4
nCE2_1
nCE2_2
nCE2_3
nCE2_4
nCS_1
nCS_2
nCS_3
nCS_4
nOE_1
nOE_2
nOE_3
nOE_4
nWP_1 (GND)
nWP_2 (GND)
nWP_3 (GND)
nWP_4 (GND)
write_success dat4[7..0]
dat5[7..0]
dat6[7..0]
IOout1[7..0]
IOout2[7..0]
IOout3[7..0]
IOout4[7..0]
ADDR[16..0]
ODSKmy:ODSK
TODMmy:TODM
RPOmy:RPO
sda_in scl_in clk sda_out scl_out tristate_usl tristate_usl_scl sensor1_1
sensor2_1
sensor3_1
sensor4_1
sensor5_1
sensor6_1
sensor7_1
sensor8_1
nCE1_1
nCE2_1
nOE_1
nCE1_2
nCE2_2
nOE_2
nCE1_3
nCE2_3
nOE_3
nCE1_4
nCE2_4
nOE_4
SO
SI1
SI2
SI3
SI4
nCS_1
nWP_1
nCS_2
nWP_2
nCS_3
nWP_3
nCS_4
nWP_4
clk_out_memrr2u enbufIO1
enbufIO2
enbufIO3
enbufIO4
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]
IOout1[7..0]
IOout2[7..0]
IOout3[7..0]
IOout4[7..0]
PIn1[7..0]
PIn2[7..0]
PIn3[7..0]
PIn4[7..0]
ADDR[16..0]

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