Русский
Русский
English
Статистика
Реклама

Производство и разработка электроники

Мобильная Установка Доказательства Актуальности Контроля Изменений. Часть 1. Хороший человек идет на войну

28.12.2020 06:15:07 | Автор: admin

Итак, надоело! Даже, не так, ДОСТАЛО! А точнее, за.... Впрочем, не буду прибегать к ненормативной лексике. Квартира, купленная 2.5 года назад - это не квартира, а какое-то вечное испытание. Да такое, что Форт Баярд отдыхает. Кроме того, в конце игры Баярда можно нехило поднять золотишка, а чем тут все закончится - я еще не знаю. Недостаточная (ниже норм, утвержденных Правительством РФ, а эти нормы, скажем так, разрабатывались моржами) температура воздуха в помещении, отсутствие горячей воды по утрам, а ежедневное принятие душа превращается в соревнование "кто быстрей", ибо вода неожиданно может стать кипятком. Или, наоборот, льдом. Бездействие управляющей компании, сбор инициативной группы, объявления по подъездам, коллективная жалоба... это и многие другие веселые подробности останутся за рамками повествования.

Итак, если какой-то параметр, будь то температура или давление, не устраивает, то этот параметр надо для начала измерить. Желательно, в автоматическом режиме, непрерывно и с сохранением всех значений. И тут на помощь приходят средства промышленной автоматизации - датчик давления, датчик температуры, и программируемый логический контроллер с модулем аналоговых входов и поддержкой протокола HART. Почему именно они? Во-первых, я АСУшник, а не электронщик. Во-вторых, я исполняю обязанности руководителя технической группы Управления "Цифровое производство" уральского филиала компании ООО "Сименс". А, стало быть, все эти игрушки у меня есть. Этого оказалось вполне достаточно, чтобы продумать, собрать на коленке и запрограммировать систему, которой я дал замысловатое название Мобильная Установка Доказательства Актуальности Контроля Измерений (весь смысл замысловатости заключается в получившейся аббревиатуре... настолько я огорчен сложившейся ситуацией).

В качестве датчика, измеряющего давление, выступает Siemens Sitrans P DS3 с диапазоном измерения от 0 до 16 бар, выходом 4..20 мА и, что немаловажно, поддержкой цифрового протокола HART. HART означает Highway Addressable Remote Transducer. По сути, это цифровой протокол обмена данными между системой управления и датчиком. Обмен данными двухсторонний. Для кодирования нулей и единичек цифрового обмена используется частотная модуляция, которая накладывается прямо поверх аналогового сигнала 4..20 мА. Поддержка HART сильно играет мне на руку, поскольку позволяет избежать дополнительного аналого-цифрового преобразования на стороне ПЛК и, скажем откровенно, "забить" на "землю" (боюсь, что после этих слов мне коллеги руки не подадут). На фотографии этот красавец уже подключен к домашнему водопроводу.

Датчик температуры - тоже Siemens, тоже с HART'ом. Вторичка - Sitrans TH300, первичка - обычный Pt100 в толстой гильзе. Именно из-за гильзы он не подошел для замеров температуры воздуха - просто огромная инерция измерений.

В качестве CPU применяется S7-1510 (он же ET200SP CPU), заказной номер 6ES7 510-1DJ01-0AB0, версия прошивки 2.8. К CPU справа подключен четырехканальный модуль аналоговых входов с поддержкой HART, заказной номер 6ES7 134-6TD00-0CA1. Блок питания слева от контроллера, весьма большой и очень избыточный по мощности в моем случае.

Для визуализации измеряемых параметров и, что немаловажно, для их архивации взял базовую операторскую панель второго поколения, KTP400 Basic, 6AV2 123-2DB03-0AX0, прошивка обновлена до 16.0. Причина для такого выбора простая - мобильных панелей у меня под рукой нет, а "немобильные", стандартные версии предназначены для врезки в дверь шкафа управления, но никак не для того, чтобы держать их в руках. Маленькую четырехдюймовую панель на весу удержать можно без проблем, а вот семидюймовую Comfort или Unified одной рукой не удержишь. Разбивать подотчетное оборудование и попадать на 1200 евро её листовой стоимости не хочется никак, поэтому лучше маленькую и легкую, чем большую, тяжелую, но функциональную.

Для обвязки применяется обычный провод сечением 0.5 мм2 и НШВИ 0.5х8. Техническая эстетика не соблюдается никак. Корпуса нет. Заземляющих проводников нет. Все обвязано, абы как. Прикладное ПО далеко не универсально, уставок от оператора нет, даже константы не применяются, все тупо в лоб. В общем, это ни в коем случае не готовое решение, которое можно сертифицировать и вносить в реестр СИ. Я напишу про это тут один раз, дабы избежать войн в комментариях, да, со всеми этими замечаниями я согласен.

Датчики подключаем к каналам 0 и 1 аналогового модуля в соответствии с документацией.

У нас используется вариант (1) - двухпроводное подключение датчика. Под "двухпроводностью" подразумевается, что к датчику в общем случае идет всего два провода, "+" и "-" непосредственно от аналогового модуля. Отдельного питания на датчик не требуется, он запитывается от модуля AI. Электроника модуля получает энергию по внутренней шине контроллера, а "силовая" часть подается на отдельные клеммы. В итоге, первый датчик (датчик давления) садим на контакты 9 и 13 (нулевой канал), датчик температуры - 10 и 14 (первый канал).

Для программирования и конфигурирования этой системы применяем среду разработки TIA Portal V16 (+update 3), в составе Step 7 Professional (контроллер) и WinCC Basic (операторская панель). После создания проекта в первую очередь создаем и конфигурируем ПЛК.

Включаем System and Clock Memory, пригодится.

Задаем IP адрес CPU - 192.168.43.205. Конфигурируем аналоговый модуль. Второй и третий каналы отключаем, на нулевом и первом включаем HART и активируем всю диагностику (диагностика совсем необязательна в моем простом случае).

Обзор настройки каналов модуляОбзор настройки каналов модуляНастройка нулевого (и первого тоже) каналаНастройка нулевого (и первого тоже) канала

Поскольку в данном случае задействовано всего 2 канала, а от функционала HART требуется всего лишь передача значения измеряемой величины, то можно поступить просто и забирать первичную переменную HART обоих датчиков через пространство ввода/вывода аналогового модуля. Тем самым избавляемся от необходимости осуществлять системный вызов в программе PLC.

Из этой таблицы видно, что нам надо забрать две переменные с адресов ID8 и ID13. Первичные переменные HART будут поступать нам, как готовые вещественные величины. Пропишем эти адреса в Tag Table. Так же я еще прописал все четыре аналоговых канала модуля, но в программе они никак не используются... просто привычка объявлять переменные по каналам, которые есть в проекте.

Посмотрим, что я начудил в программе контроллера. Вообще, в ПЛК можно обойтись без какой-либо программы вообще. Информация с датчиков и так автоматически поступает в переменные с именами CH0_HART (давление) и CH1_HART (температура). Однако, установка изначально разрабатывалась, как универсальная - она замеряет и Т воздуха, и Т воды, и давление воды, да еще и в нескольких местах (воздух в разных комнатах, например). Если обойтись одним трендом, то можно уже через день запутаться, что, где и когда измерял. Поэтому программа контроллеру тут носит больше "организационный" характер.

Все необходимые переменные сведены в один блок данных.

Вся программа написана в "главном" огранизационном блоке. Расписывать ее нет необходимости, можно ознакомиться с комментариями в коде.

"Data".CurrentPress := "Ch0_HART" / 10.0; //давление перевести из бар в МПа"Data".CurrentTemp := "Ch1_HART"; //текущая температураIF "Data".MeasP THEN //если включен (с панели) замер давления        //допускается всего 4 места измерения давления - в ванной (ХВС, ГВС) и на кухне    IF "Data".WaterSelector <= 0 OR "Data".WaterSelector > 4 THEN         "Data".WaterSelector := 1;    END_IF;        //создать для панели сообщение "идет замер давления в/на <место замера и выбранная труба">    CASE "Data".WaterSelector OF        1: //ХВС в ванной            "Data".WaterMessage := W#2#0000000000000001;        2: //ГВС в ванной            "Data".WaterMessage := W#2#0000000000000010;        3: //ХВС на кузне            "Data".WaterMessage := W#2#0000000000000100;        4: //ГВС на кухне            "Data".WaterMessage := W#2#0000000000001000;    END_CASE;        //тнекщее давление в МПа скопировать в отдельную переменную для тренда    "Data".CurrentPress_M := "Data".CurrentPress;        //если замер только что включили, сбросить минимальное и максимальное зафиксированное значение    IF (NOT "Data".MeasP_prv) THEN        "Data".MinPress_M := "Data".CurrentPress_M;        "Data".MaxPress_M := "Data".CurrentPress_M;    END_IF;        //зафиксировать при необходимости минимальное значение    IF "Data".CurrentPress_M < "Data".MinPress_M THEN        "Data".MinPress_M := "Data".CurrentPress_M;    END_IF;        //зафиксировать максимальное значение давления во время этого замера    IF "Data".CurrentPress_M > "Data".MaxPress_M THEN        "Data".MaxPress_M := "Data".CurrentPress_M;    END_IF;        //выставить аварийные и предупредительные сообщения    "Data".P003Alarm_M := "Data".CurrentPress_M < 0.03;    "Data".P01Alarm_M := "Data".CurrentPress_M < 0.1;    "Data".P02Alarm_M := "Data".CurrentPress_M < 0.2;ELSE //если замер давления не ведется    "Data".CurrentPress_M := 0.0; //обнулить переменную для тренад давления    "Data".WaterMessage := W#2#0000000000000000; //сбросить "место проведения давления"    "Data".P003Alarm_M := FALSE; //сбросить флаги алармов и сообщений    "Data".P01Alarm_M := FALSE;;    "Data".P02Alarm_M := FALSE;;END_IF;IF "Data".MeasTair THEN //аналогично для температуры воздуха        IF "Data".PlaceSelector <= 0 OR "Data".PlaceSelector > 7 THEN        "Data".PlaceSelector := 7;    END_IF;        CASE "Data".PlaceSelector OF        1: //спальня            "Data".PlaceMessage := W#2#0000000000000001;        2: //детская            "Data".PlaceMessage := W#2#0000000000000010;        3: //зал            "Data".PlaceMessage := W#2#0000000000000100;        4: //кухня            "Data".PlaceMessage := W#2#0000000000001000;        5: //ванная            "Data".PlaceMessage := W#2#0000000000010000;        6: //туалет            "Data".PlaceMessage := W#2#0000000000100000;        7: //прочее            "Data".PlaceMessage := W#2#0000000001000000;    END_CASE;        "Data".CurrentTemp_Mair := "Data".CurrentTemp;        IF (NOT "Data".MeasTair_prv) THEN        "Data".MinTemp_Mair := "Data".CurrentTemp_Mair;        "Data".MaxTemp_Mair := "Data".CurrentTemp_Mair;        "Data".MeasTwater := false;    END_IF;        IF "Data".CurrentTemp_Mair < "Data".MinTemp_Mair THEN        "Data".MinTemp_Mair := "Data".CurrentTemp_Mair;    END_IF;        IF "Data".CurrentTemp_Mair > "Data".MaxTemp_Mair THEN        "Data".MaxTemp_Mair := "Data".CurrentTemp_Mair;    END_IF;        "Data".T18Alarm_M := "Data".CurrentTemp < 18;    "Data".T20Alarm_M := "Data".CurrentTemp < 20;    "Data".T22Alarm_M := "Data".CurrentTemp < 22;ELSE    "Data".CurrentTemp_Mair := 0.0;    "Data".PlaceMessage := W#2#0000000000000000;    "Data".T18Alarm_M := FALSE;    "Data".T20Alarm_M := FALSE;    "Data".T22Alarm_M := FALSE;END_IF;//аналогично для температуры водыIF "Data".MeasTwater THEN    "Data".CurrentTemp_Mwater := "Data".CurrentTemp;        IF (NOT "Data".MeasTwater_prv) THEN        "Data".MinTemp_Mwater := "Data".CurrentTemp_Mwater;        "Data".MaxTemp_Mwater := "Data".CurrentTemp_Mwater;        "Data".MeasTair := false;    END_IF;        IF "Data".CurrentTemp_Mwater < "Data".MinTemp_Mwater THEN        "Data".MinTemp_Mwater := "Data".CurrentTemp_Mwater;    END_IF;        IF "Data".CurrentTemp_Mwater > "Data".MaxTemp_Mwater THEN        "Data".MaxTemp_Mwater := "Data".CurrentTemp_Mwater;    END_IF;        "Data".T40Alarm_M := "Data".CurrentTemp < 40;    "Data".T55Alarm_M := "Data".CurrentTemp < 55;    "Data".T57Alarm_M := "Data".CurrentTemp < 57;    "Data".T60Alarm_M := "Data".CurrentTemp < 60;ELSE    "Data".CurrentTemp_Mwater := 0.0;    "Data".T40Alarm_M := FALSE;    "Data".T55Alarm_M := FALSE;    "Data".T57Alarm_M := FALSE;    "Data".T60Alarm_M := FALSE;END_IF;//при первом запуске контроллера сбросить зафисированные мин и макс "общих" (не замерных) величин"tonFirstScan".TOF(IN:=NOT "FirstScan",                   PT:=T#1s);IF "tonFirstScan".Q THEN    IF "Data".CurrentPress < "Data".MinPress THEN        "Data".MinPress := "Data".CurrentPress;    END_IF;        IF "Data".CurrentPress > "Data".MaxPress THEN        "Data".MaxPress := "Data".CurrentPress;    END_IF;        IF "Data".CurrentTemp < "Data".MinTemp THEN        "Data".MinTemp := "Data".CurrentTemp;    END_IF;        IF "Data".CurrentTemp > "Data".MaxTemp THEN        "Data".MaxTemp := "Data".CurrentTemp;    END_IF;END_IF;//сбросить мин и макс по запросу с панелиIF "Data".ResetPressStat THEN    "Data".MinPress := "Data".CurrentPress;    "Data".MaxPress := "Data".CurrentPress;    "Data".ResetPressStat := FALSE;END_IF;IF "Data".ResetTempStat THEN    "Data".MinTemp := "Data".CurrentTemp;    "Data".MaxTemp := "Data".CurrentTemp;    "Data".ResetTempStat := FALSE;END_IF;//выставить обобщенный флаг "идет замер""Data".Meas := "Data".MeasP OR "Data".MeasTair OR "Data".MeasTwater;//для определения фронтов"Data".MeasP_prv := "Data".MeasP;"Data".MeasTair_prv := "Data".MeasTair;"Data".MeasTwater_prv := "Data".MeasTwater;//сообщения для панели оператора"Data".Alarms.%X0 := "Data".MeasP;"Data".Alarms.%X1 := "Data".MeasTair;"Data".Alarms.%X2 := "Data".MeasTwater;"Data".Alarms.%X3 := "Data".T18Alarm_M;"Data".Alarms.%X4 := "Data".T20Alarm_M;"Data".Alarms.%X5 := "Data".T40Alarm_M;"Data".Alarms.%X6 := "Data".P003Alarm_M;"Data".Alarms.%X7 := "Data".P01Alarm_M;"Data".Alarms.%X8 := "Data".P02Alarm_M;"Data".Alarms.%X9 := "Data".T22Alarm_M;"Data".Alarms.%X10 := "Data".T55Alarm_M;"Data".Alarms.%X11 := "Data".T57Alarm_M;"Data".Alarms.%X12 := "Data".T60Alarm_M;

Перейдем к конфигурирования прикладного программного обеспечения операторской панели. Добавим ее в общий проект и зададим ip адрес.

Добавим некоторые настройки рантайма - выбор бита для списков и цвет алармов в зависимости от их класса.

Создадим соединение с контроллером и вытащим необходимые тэги (все это делается автоматически при вытаскивании тэга с ПЛК на любой экран панели). Выставим минимально возможное время опроса переменных в 100 мс.

Все тэги берем с блока данных 1 ПЛКВсе тэги берем с блока данных 1 ПЛК

Для тэгов Data_Alarms, DataWaterMessage и Data_PlaceMessage создадим сообщения.

Создадим Alarm Log для сообщений панели на максимальное количество записей, 500000. Весь лог будет храниться в текстовом виде на USB-флэшке, подключенной к панельке. Журнал циклический, по достижению предельного количества записей, старые будут затираться.

В настройках классов сообщений укажем, алармы каких классов будут сохраняться на фдэшке

Аналогично создадим хранилище для исторических трендов, которое будет так же храниться на флэшке в виде текстового файла. "Трендировать" будем три переменных - значение давление, температуры воздуха и температуры воды во время измерения (не на постоянной основе). Запись значений будет производиться только при изменении переменной, а не на постоянной основе. В противном случае журнал начнет весьма быстро перезатираться.

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

Кнопкой F1 листаем экраны замеров. Остановися только на экране давления, два других аналогичны. На этом экране отображается текущее мгновенное значение давления при идущем замере, эксремумы давления, выбор места проведения измерения и график с историческими данными. Кнопкой F3 начинаем замер давления, кнопкой F4 останавливаем,

На любом экране кнопкой F2 открывается журнал событий.

Дополнительно для собственного удобство я сделал копию этой панели и изменил ее тип на PC Station с одиночной SCADA-системой WinCC RT Advanced. На 4дюймовом экране очень неудобно смотреть графики.

Зато, на 24 дюймах смотреть удобно

Установка находится в работе с 21 декабря. За это время мне стало изместно время пикового вечернего разбора воды, это в районе 22 часов местного времени. Ситуация удручающая, давление падает ниже установленных норм (0.03МПа) и падает влоть до нуля. Да и в целом давление не постоянное, оно может за секунду упасть с трех килограммов до одного, а потом за 5 секунд подняться до 2.5 килограмм.

В настоящий момент система полностью локальна. Все данные сохраняются в панельке, на фэшке переносятся на ПК и изучаются на нем.

Следующим шагом будет установка к линейку ПЛК WiFi модуля, настройка WiFi-моста и создание полноценного операторского интерфейса на базе WinCC OA под управлением Linux Debian (Buster).

Подробнее..

Перспективы радарных систем на наноспутниках

13.01.2021 18:13:38 | Автор: admin

Я раньше не очень интересовался cubesat. Они казались мне чем-то неземным, сложным, далеким. Но все изменилось, когда недавно нам пришел заказ на разработку одной подсистемы для наноспутника. Я стал интересоваться, а какое же радиооборудование люди умудряются ставить на этих малышей. К своему удивлению, я увидел даже примеры создания радарных систем на cubesat. Эта техника показалась мне настолько крутой, что мы c k_const составили себе труд присмотреться к некоторым примерам спутниковой радарной обработки с синтезированной апертурой.


Мы заранее скажемся новичками в этой области. Призываю специалистов к критике и обмену информацией по теме в комментариях.


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


Повышению интереса к теме радарных систем на маленьких космических носителях способствует снижение стоимости их выведения на орбиту. Я не знаю цен выведения на орбиту в России, подскажите, кто знает. Но цены самих платформ известны, и они не космические. На западе все более открыто, информация есть здесь, например. Эти цены сильно ниже тех миллионов, которые нужно выложить за запуск "обычного" спутника, а также за его железо. Ведь оно должно быть более надежным, так как большая цена решения увеличивает риск. Это я уже не говорю про софт, надежность которого должна быть такой, какая нам, наземным программистам, даже и не снилась.


Ввиду этих фактов, вполне понятен интерес ученых и инженеров всего мира к возможности создания радарных систем на наноспутниках. Недолго поразмыслив, мы увидим, что единственное, что можно предложить, это разделить радарную систему на приемную и передающую части и расположить их на отдельных спутниках. Конечно, создать апертуру антенны, равнозначную апертуре на "обычном" спутнике не удастся. Нужны системные ухищрения, чтобы скомпенсировать потери в энергетическом бюджете. В публикациях западных инженеров мы находим несколько подходов к компенсации. Рассмотрим подходы более подробно.


Здесь следует отметить, что ввиду большей по сравнению с радарами на воздушных носителях дальности, обычно на спутниках необходимо применять синтез апертуры, как метод увеличения разрешения. Этому способствует хорошая стабильность и предсказуемость движения спутника по орбите. Такие радары называют радарами с синтезированной апертурой (РСА) или synthetic aperture radar (SAR).


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


Следующей возможностью является использование сигналов уже существующих источников. Естественно, копия сигнала этого источника должна оказаться в одном месте с копией принятого отраженного сигнала.


Во-первых, этими источников могут быть передатчика спутниковых систем связи. Они должны иметь мощность, достаточную для обеспечения хорошего ОСШ, и полосу, достаточную для обеспечения требуемого разрешения по дальности. Есть примеры использования как геостационарных спутников связи, так и спутников на низких орбитах. Можно также использовать сигналы существующих радаров на "обычных" спутниках.


Во-вторых, можно воспользоваться сигналами наземных источников. Они имеют достаточную мощность и расстояние от них до поверхности отражения невелико. Полоса таких сигналов тоже может быть достаточной. Одной из проблем такого способа будет ограничение облучаемой таким сигналом поверхности. Если в нужной местности не найдется такого источника, то система работать не будет. Еще одной проблемой может быть наличие нескольких таких сигналов на одной территории, что приведет к усложнению алгоритмов обработки. Даже сам сбор такого сигнала может быть непростым делом, ведь наземные системы оптимизированы для облучения земной поверхности и могут излучать мало энергии в сторону спутника.


В-третьих, можно использовать специально созданный и запущенный источник на воздушном носителе. Недостатком такой системы будет необходимость обеспечения его своевременного запуска и пролета по маршруту. Это также будет приводить к дополнительным сложностям при обработке.


Сейчас я не буду вдаваться во все тонкости этих подходов. Вы можете изучить их по этой и другой литературе, которую легко найти в Сети.


Для нас основным вопросом на данном этапе была доступность математики по обработке сигнала в такой радарной системе. Мы начали с простейшего примера, как мы покажем далее, доступного для освоения каждому.


Простейшим примером с нашей точки зрения является обработка сигналов со спутниковых РСА-систем, типа ALOS, ENVISAT, Sentinel, TerraSAR-X, COSMO-SkyMed, Radarsat-2 и др., производящих съемку в маршрутном режиме. Простота с одной стороны подтверждается банальным наличием сырых данных с некоторых из этих спутников в открытом доступе, c другой стороны наличием ПО с открытым кодом (GMTSAR), которое позволяет как фокусировать сырые радиолокационные изображения, так и делать более сложные вещи, такие как создание интерференционных картин между двумя изображениями, снятыми в различные пролеты спутника. Такая мощная база безусловно может стать хорошим подспорьем в деле изучения РСА.


Далее мы покажем каким образом можно получить радиолокационное изображение интересующей местности на примере сырых данных, полученных при съемке Санкт-Петербурга со спутника ALOS PALSAR. Оговоримся, что данная статья не претендует на всеобъемлющее руководство, мы лишь пытаемся показать, с чего можно начать.


Для начала рассмотрим разрешение радиолокационного изображения, получаемого со спутника. Номинальное разрешение по наклонной дальности определяется полосой B импульса радара:


$rho_{r}=\frac{c}{2B}$


Для нашего случая B = 14 МГц, и разрешение по наклонной дальности равно около 10 м. Не менее важной характеристикой является разрешение по дальности по поверхности земли. Чтобы проще было разобраться в терминологии, обратимся к рис. 1, где представлена геометрия РСА. Вектор скорости спутника перпендикулярен плоскости рисунка, радар излучает импульсы перпендикулярно скорости, под углом к высоте спутника H, наклонная дальность. Разрешение по дальности по поверхности земли геометрически связано с разрешением по наклонной дальности:


$\rho_{gr}=\frac{c}{2Bsin\theta}$


и составляет составляет для нашего случая около 60 м. Из представленных соотношений видно, что разрешение по дальности не зависит от высоты спутника H и может быть улучшено увеличением полосы излучаемого импульса. Во многих случаях полоса импульса ограничена, так как ограничена скорости передачи данных со спутника на землю.


image


Рис.1. Геометрия РСА. Вид спереди. H высота спутника, угол обзора, наклонная дальность.


Чтобы понять разрешение по азимуту, рассмотрим рис. 2, где радар пролетает над точечной целью. В приближении прямоугольной апертуры угол


$ \theta_{a}\approx \lambda /L $


где L длина антенны в азимутальном направлении, длина волны радара. Тогда разрешение по азимуту для радара с реальной апертурой определяется


$ R_{a}=\rho tan\theta_{a}\approx \frac{\rho \lambda}{L}=\frac{\lambda H}{Lcos\theta } $


image


Рис.2. Геометрия РСА. Вид сбоку. L длина антенны, наклонная дальность.


Если точечная цель остается неподвижной во время пролета радара над ней, радар может синтезировать апертуру, величина которой 2Ra, что приводит к значительному улучшению разрешения по азимуту:


$ \rho_{a}=\frac{\rho \lambda}{2R_{a}}=\frac{L}{2} $


Как мы видим теоретическое разрешение по азимуту в маршрутном режиме РСА определяется размерами антенны в азимутальном направлении. Разрешение РСА по азимуту не зависит от расстояния между целью и радаром. Более того, чем меньше размер антенны, тем большее разрешение может быть достигнуто. Объясняется это следующим образом. Чем меньше размер реальной апертуры антенны (шире ее основной лепесток диаграммы направленности), тем больше размер синтетической апертуры (цель дольше находится в луче). Чем больше размер синтетической апертуры, тем более узкий синтетический луч может быть получен, что в конечном итоге приводит к высокому разрешению по азимуту.


Размер антенны в азимутальном направлении спутника ALOS PALSAR составляет 10 м, следовательно теоретически достижимое разрешение по азимуту в маршрутном режиме РСА составляет 5 м. На практике размер пикселя делают одинаковым по дальности и азимуту.


Перед тем как переходить непосредственно к получению изображений, кратко рассмотрим алгоритм фокусировки, который мы будет применять, а именно дальностно-допплеровский алгоритм (range-doppler algorithm, RDA). Этот алгоритм разрабатывался в 1976-1978 гг. для обработки данных со спутника SEASAT SAR, запущенного в 1978 году. Основная идея алгоритма RD: использование того факта, что сигналы дальности и азимута могут быть разделены на два одномерных сигнала при определенных условиях. Тогда фокусировка изображения являет собой две последовательных операции одномерной компрессии импульса, то есть компрессия по дальности и компрессия по азимуту.


Компрессия сигнала по дальности относительно проста и может быть реализована путем согласованной фильтрации эхо-сигнала в частотной области дальности на основе знания опорного передаваемого сигнала. Обычно в качестве передаваемого сигнала используется ЛЧМ импульс (chirp). Это позволяет снизить пиковую мощность передатчика. Этот ЛЧМ импульс отражается от участка поверхности Земли, длиной обычно около 100 км. Принятый отраженный сигнал является сверткой комплексной отражательной способности поверхности Земли и ЛЧМ сигнала. Математически ЛЧМ записывается следующим образом:


$ s(t)= exp(i\pi k t^{2}),\quad \left | t \right |< \tau_{p} $


где k скорость изменения частоты (chirp slope), длительность импульса (pulse duration). Для ALOS PALSAR:


$ k= 1.03704\cdot 10^{12} \quad s^{-2}\\ \tau_{p}=0.27 \quad \mu s $


Согласованный фильтр в данном случае это просто комплексно-сопряженный исходный ЛЧМ импульс, *s****(t).


Обработка сигнала в направлении азимута несколько сложнее. Это связано с тем, что изображение точечной цели, проходящей через синтетическую апертуру, испытывает миграцию по дальности, т. е. эхо-сигнал от одной и той же цели при различных положениях спутника по азимуту (естественно в пределах синтетической апертуры) появляется в различных ячейках дальности. Таким образом, данные по азимуту оказываются связанны с данными по дальности. Чтобы можно было производить компрессию по азимуту, необходимо вернуть отметку о цели в ячейки соответствующие одной дальности. Количественно миграция дальности во временном пространстве дальности частотном пространстве по азимуту определяется следующим выражением:


$ R_{RCMC}(f_{s})=R_{0}\left ( \frac{1}{\sqrt{1-(\lambda f_{s}/(2V))^2}} -1 \right ) $


где Ro дальность ближайшего подхода спутника к цели, fs - доплеровская частота, V - эффективная скорость. Для точной коррекции миграции дальности каждого пикселя требуется процедура интерполяции.


После того как каждая отметка о цели появляется в своей ячейке дальности, можно переходить к компрессии сигнала по азимуту. Запишем фазу эхо-сигнала:


$ C(s)=exp\left [ -i\frac{4\pi }{\lambda }R(s) \right ] $


где R(s) дальность до цели функция времени по азимуту (медленное время), поскольку цель перемещается по синтетической апертуре, пока спутник пролетает над ней. Функция R(s) аппроксимируется параболой:


$ R(s)=R_{0}+\dot{R}(s-s_{0})+\ddot{R}/2(s-s_{0})^{2} $


где точкой обозначены производные по медленному времени s. Тогда мы можем переписать фазу эхо-сигнала, как функцию дальности, а также первой и второй производных дальности по времени s.


$ C(s)=exp\left [ -i\frac{4\pi }{\lambda } \left [ R_{0}+\dot{R}(s-s_{0})+\ddot{R}/2(s-s_{0})^{2} \right ] \right ] $


Определим допплеровский центроид и скорость изменения допплеровской частоты следующим образом:


$ f_{dc}=\frac{-2\dot{R}}{\lambda } \qquad f_{R}=\frac{-2\ddot{R}}{\lambda } $


Тогда


$ C(s)=exp\left [ -i\frac{4\pi R_{0}}{\lambda } \right ] exp \left [ i2\pi \left ( f_{dc}(s-s_{0})+f_{R}(s-s_{0})^{2} \right ) \right ] $


Как мы видим это еще один ЛЧМ сигнал с параметрами fdc и fR. Согласованный фильтр в данном случае это просто комплексно-сопряженный сигнал фазовой функции, *С****(s). При фокусировке по азимуту мы проходим по всем ячейкам дальности (Ro) и для каждой колонки азимута создаем фильтр со своими параметрами (fdc и fR).


Здесь мы не ставим целью всесторонне и исчерпывающе описать дальностно-допплеровский алгоритм фокусировки РСА изображений. В поисках дополнительной информации читатель может обратиться к следующим монографиям:


\1. John C. Curlander, Robert N. McDonough Synthtic Aperture Radar: Systems and Signal Processing
\2. Jan G. Cumming, Frank H. Wong Digital Processing of Synthetic Aperture Radar Data: Algorithms and Implementation
\3. Xiaolan Qiu, Chibiao Ding, Donghui Hu BISTATIC SAR DATA PROCESSING ALGORITHMS


А мы тем временем перейдем к практической части.


Как мы уже упоминали ранее, в нашем распоряжении имеется GMTSAR программное обеспечение с открытым кодом (GNU General Public License) для цифровой обработки данных РСА. Код написан на языке C, однако требует предварительной установки GMT и NETCDF. GMT Generic Mapping Tools (Универсальные картографические инструменты, GMT) набор программ с открытыми кодами, предназначенных для обработки и отображения двумерной и трёхмерной информации, растеризации, фильтрации и других алгоритмов обработки изображения, а также отрисовки различных картографических проекций. NetCDF (Network Common Data Form) машино-независимый двоичный формат файлов, являющийся стандартом для обмена научными данными.


GMTSAR имеет 3 основных компонента: 1) препроцессор для каждого типа спутника для подготовки данных и орбитальной информации из внутреннего формата спутника в формат, пригодный для обработки; 2) InSAR процессор для фокусировки, совмещения нескольких изображений и формирования комплексной интерферограммы; 3) базирующийся на возможностях GMT постпроцессор для фильтрации интерферограмм, формирования градиентов фазы, а также отображения всех получаемых результатов.


Итак, перейдем к установке. Домашняя страница GMTSAR находится по адресу https://topex.ucsd.edu/gmtsar/. Здесь можно найти описание программы, файлы данных РСА, предоставленные в качестве примеров и много другой информации. Инструкцию по установке программы вы найдете по адресу https://github.com/gmtsar/gmtsar/wiki/GMTSAR-Wiki-Page. Продублируем ее здесь для Ubuntu 16.06 LTS/20.0:


  1. Install extra libraries. Note that depending on your OS version the actual version numbers in some of the packages below may differ):

sudo apt-get install csh subversion autoconf libtiff5-dev libhdf5-devsudo apt-get install liblapack-devsudo apt-get install gfortransudo apt-get install g++sudo apt-get install libgmt-devsudo apt-get install gmt gmt-dcw gmt-gshhg (16.0 LTS)sudo apt-get install gmt

  1. Download and install orbit files and place in suitable directory (e.g., /usr/local/orbits):

http://topex.ucsd.edu/gmtsar/tar/ORBITS.tarsudo -icd /usr/localmkdir orbitscd orbitstar -xvf ~/Downloads/ORBITS.tar # (need full path to ORBITS.tar)

  1. Download GMTSAR GITHUB suitable directory:

sudo -icd /usr/localgit clone --branch 6.0 https://github.com/gmtsar/gmtsar GMTSAR#  or#  checkout the master version for more new but not stable features. 

  1. Make and install GMTSAR (change the orbits directory if different):

cd GMTSARautoconf./configure with-orbits-dir=/usr/local/orbitsmakemake install

  1. Add the executables to your path (for csh or tcsh):

cd ~#   edit your .tcshrc file and add the following linessetenv GMTSAR /usr/local/GMTSARsetenv PATH $GMTSAR/bin:"$PATH"#  orcd ~#  edit your .bashrc file and add the following linesexport GMTSAR=/usr/local/GMTSARexport PATH=$GMTSAR/bin:"$PATH"

Инструкция рабочая, однако, может понадобится установка дополнительных библиотек. Для пользователей Windows есть возможность скачать виртуальную машину с предустановленным ПО GMTSAR: https://topex.ucsd.edu/gmtsar/downloads/


ВАЖНЙ МОМЕНТ!!! Перед использованием программы необходимо, чтобы в вашей системе дробная часть числа отделялась от целой части точкой. Это можно сделать, перейдя в меню Параметры вкладка Регион и язык и выбрав в Форматах страну United Kingdom.


Итак, надеемся установка GMTSAR не вызовет значительных трудностей. По окончании установки, если вы откроете терминал и введете команду gmt, то должны увидеть данные об установленной версии GMT. Используя команду gmtsar.csh, вы увидите список найденных скриптов из пакета GMTSAR. Обратим внимание, что все процедуры обработки данных из пакета GMTSAR организованы в виде c-shell скриптов. Скрипты объединяют вызов необходимых подпрограмм на языке Си с вызовом стандартных подпрограмм GMT, а также с манипулированием данными. Одни скрипты могут включать в себя другие, позволяя гибко выбирать необходимые процедуры.


Сегодня нам понадобятся следующие скрипты:


  • pre_proc.csh preprocess the raw SAR data for a pair of images
  • sarp.csh focus a single SAR image
  • slc2amp.csh make and amplitude image from and SLC

Как видно из описаний pre_proc.csh подготавливает данные пары изображений (нам понадобится одно изображение), sarp.csh фокусирует радиолокационное изображение, формируя Single Look Complex-изображение (SLC), slc2amp.csh делает амплитудное изображение из SLC.


Таким образом, с ПО мы разобрались, теперь нам необходимо скачать доступные сырые радиолокационные изображения. Для начала рассмотрим какие вообще данные предоставляет миссия спутника ALOS PALSAR: https://earth.esa.int/eogateway/catalog/alos-palsar-products


ALOS PALSAR products are available in following modes:


Fine Beam Single polarisation(FBS), single polarisation (HH or VV)), swath 40-70km, resolution 10m, temporal coverage from 02/05/2006 to 30/03/2011


Fine Beam Double polarisation (FBD), double polarisation (HH/HV or VV/VH), swath 40-70km, resolution 10m, temporal coverage from 02/05/2006 to 30/03/2011


Polarimetry mode (PLR), with four polarisations simultaneously: swath 30km, resolution 30m, temporal coverage from 26/08/2006 to 14/04/2011


ScanSAR Burst mode 1 (WB1), single polarisation: swath 250-350km, resolution 100m, temporal coverage from 12/06/2006 to 21/04/2011


Following processing levels are available:


RAW(level 1.0): Raw data generated by every downlink segment and every band. Divided into an equivalent size to one scene.


SLC (level 1.1): Slant range single look complex product. Not available for WB1


GDH (level 1.5): Ground range Detected, Normal resolution product


GEC (level 1.5): Geocoded product


Как мы видим миссия ALOS PALSAR вела съемку в 4 различных режимах, предоставляя на выходе 4 уровня обработки данных. Нас, конечно, интересуют в первую очередь сырые RAW (level 1.0) данные в режимах Fine Beam Single polarisation (HH or VV) и Fine Beam Double polarisation (HH/HV or VV/VH), их мы и будем искать.


Для доступа к данным необходимо перейти на сайт https://search.asf.alaska.edu/#/ и зарегистрироваться там. Интерфейс поисковика данных довольно прост и интуитивно-понятен, поэтому тезисно опишем порядок действий (см. рис. 3):


  • Выбираем ALOS PALSAR в меню Dataset
  • Рисуем на карте интересующий регион, нажав + в подменю Area of interest
  • Жмем SEARCH
  • На карте появятся области, для которых доступны радиолокационные данные (выделены синим)
  • В списке, либо кликнув мышкой на карте, выбираем регион, и видим доступные файлы для него
  • Находим файл уровня 1.0 и скачиваем его.

image


Рис.3 Поиск данных со спутника ALOS PALSAR


Теперь переходим непосредственно к обработке скачанных данных с помощью GMTSAR. Откроем терминал, распакуем скачанный zip-файл и перейдем в папку, которая находилась в архиве. Эта папка будет содержать следующие файлы:


cd folder_with_datals -l-rw-r--r-- 1 1000 1000       1848 Dec 16  2016 ALPSRP023161190.l0.workreport-rw-rw-rw- 1 1000 1000  762000120 Dec 16  2016 IMG-HH-ALPSRP023161190-H1.0__A-rw-rw-rw- 1 1000 1000   12506972 Dec 16  2016 LED-ALPSRP023161190-H1.0__A-rw-rw-rw- 1 1000 1000        720 Dec 16  2016 TRL-ALPSRP023161190-H1.0__A-rw-rw-rw- 1 1000 1000       1800 Dec 16  2016 VOL-ALPSRP023161190-H1.0__A-rw-rw-rw- 1 1000 1000       1848 Dec 16  2016 workreport

Файл IMG-HH-ALPSRP023161190-H1.0__A содержит радиолокационные данные, файл LED-ALPSRP023161190-H1.0__A орбитальную информацию, остальные файлы нам не понадобятся.


В первую очередь нам нужно подготовить данные, для этого служит скрипт pre_proc_init.csh. При запуске скрипта без аргументов, выводится мануал по использованию. Запустим pre_proc_init.csh, чтобы понять как пользоваться этим скриптом.


pre_proc_init.cshUsage: pre_proc_init.csh SAT data.in       preprocess a set of images using default Dopper centroid, rear_range and radius, number of patches       a baseline-time plot will be generated       after running this command        the user should choose an appropriate master image        the user should also decide a common Dopper centroid, rear_range and radius, number of patches to run batch processing       the data with completely different Doppler centroid or baselines can be omitted from further processing SAT can be ALOS ERS or ENVI(ENVISAT)       format of data.in is:         line 1: master_name         line 2 and below: aligned_name       example of data.in for ALOS is:         IMG-HH-ALPSRP096010650-H1.0__A         IMG-HH-ALPSRP089300650-H1.0__A         IMG-HH-ALPSRP236920650-H1.0__A       example of data.in for ERS is:         e1_05783         e1_07787         e1_10292       example of data.in for ENVISAT is:         ENV1_2_127_2925_07195         ENV1_2_127_2925_12706         ENV1_2_127_2925_13207Example: pre_proc_init.csh ENVI data.in

Итак, чтобы воспользоваться скриптом, нам необходимо в качестве первого аргумента использовать имя спутника (ALOS), в качестве второго файл, содержащий имена файлов с сырыми данными (несколько файлов нужно для построения интерферограмм, в нашем случае будет один файл IMG-HH-ALPSRP023161190-H1.0__A). Создадим файл data.in и запустим препроцесс:


ls IMG-HH-ALPSRP023161190-H1.0__A >> data.inpre_proc_init.csh ALOS data.inrunning pre_proc_init.cshpreprocess master imageledflag 1.... swapping byteswriting generic LED file: IMG-HH-ALPSRP023161190-H1.0__A.LED near_range, shift = 959139 192 .... calculating doppler for IMG-HH-ALPSRP023161190-H1.0__A.raw Working on line 2000  Working on line 4000  Working on line 6000  Working on line 8000  Working on line 10000  Working on line 12000  Working on line 14000  Working on line 16000  Working on line 18000  Working on line 20000  Working on line 22000  Working on line 24000  Working on line 26000  Working on line 28000  Working on line 30000 

В результате работы скрипта препроцесса, в нашей папке появилось несколько новых файлов, в том числе .PRM, который содержит всю необходимую информацию для фокусировки (более детальное описание PRM-файла можно найти на стр.47 мануала GMTSAR: https://topex.ucsd.edu/gmtsar/tar/GMTSAR_2ND_TEX.pdf ). Для запуска процесса фокусировки необходимо запустить скрипт sarp.csh* с именем PRM-файла, созданного на предыдущем этапе, в качестве аргумента:


sarp.csh IMG-HH-ALPSRP023161190-H1.0__A.PRMComputing range reference function.Processing patch 1Processing Elapsed Time: 0 min 0.07 secRange CompressionProcessing Elapsed Time: 0 min 13.37 secAzimuthal TransformProcessing Elapsed Time: 0 min 33.64 secRange MigrationProcessing Elapsed Time: 0 min 50.55 secAzimuthal CompressionProcessing Elapsed Time: 1 min 53.07 secWriting DataProcessing patch 2Processing Elapsed Time: 1 min 54.17 secRange CompressionProcessing Elapsed Time: 2 min 6.90 secAzimuthal TransformProcessing Elapsed Time: 2 min 26.29 secRange MigrationProcessing Elapsed Time: 2 min 43.15 secAzimuthal Compression

Как можно заметить из вывода выполнения скрипта, фокусировка происходит блоками. В нашем случае фокусировка радиолокационного изображения размером 120000x25000 пикселей длилась около 5 минут. В результате в рабочей папке появится файл IMG-HH-ALPSRP023161190-H1.0__A.SLC, из которого нам останется сформировать амплитудное изображение. Делать мы это будем выполнением следующего скрипта:


slc2amp.cshUsage: slc2amp.csh filein.PRM rng_dec fileout.grd        rng_dec is range decimation       e.g. 1 for ERS ENVISAT ALOS FBD            2 for ALOS FBS             4 for TSXExample: slc2amp.csh IMG-HH-ALPSRP055750660-H1.0__A.PRM 2 amp-ALPSRP055750660-H1.0__A.grd

В качестве первого аргумента надо указать все тот же PRM-файл, в качестве второго децимацию, (в соответствии с режимом съемки наших данных выбираем 2), третьим аргументом указываем имя выходного файлы (out.grd).


slc2amp.csh IMG-HH-ALPSRP023161190-H1.0__A.PRM 2 out.grd

Таким образом, на выходе получаем netCDF-файл out.grd, содержащий информацию об амплитудном изображении. К сожалению, готовых средств для отображения полученного изображения в GMTSAR мы не обнаружили, однако, покажем, что нами действительно получено сфокусированное радиолокационное изображение Санкт-Петербурга. Для этого выполним следующие команды:


gmt begin ampgmt grd2cpt -Cgray out.grdgmt grdimage out.grd -I+d -Bgmt end show

В первой строке мы запускаем сессию GMT с именем "amp". 2 следующие команды формируют изображение, последняя закрывает сессию GMT и открывает файл amp.pdf с полученным изображением. Рассмотрим полученное изображение (рис. 4):


image


Рис.4 Радиолокационное изображение Санкт-Петербурга


Как видно, мы получили сфокусированное радиолокационное изображение. При этом, оно зеркально по вертикали, то есть нижнюю строку мы отобразили как верхнюю, а верхнюю как нижнюю. Однако, это не меняет того факта, что фокусировка прошла успешно и кодом GMTSAR можно пользоваться.


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


СПИСОК ЛИТЕРАТУР


  1. Curlander J. C. Synthtic Aperture Radar: Systems and Signal Processing. / J. C. Curlander, R. N. McDonough. Wiley, 1992. 672 p.
  2. Cumming J. G. Digital Processing of Synthetic Aperture Radar Data: Algorithms and Implementation. J. G. Cumming, F. H. Wong. Artech House, 2005. 436 p.
  3. Xiaolan Qiu Bistatic SAR Data Processing Algorithms. / Xiaolan Qiu, Chibiao Ding, Donghui Hu. Wiley, 2013. 327 p.
  4. Sandwell D. GMTSAR: An InSAR Processing System Based on Generic Mapping Tools (Second edition). / D. Sandwell, R. Mellors, X. Tong, M. Wei, P. Wessel. // UC San Diego: Scripps Institution of Oceanography. 2016. Retrieved from https://topex.ucsd.edu/gmtsar/tar/GMTSAR_2ND_TEX.pdf
Подробнее..

Как одним движением сжечь 10000 и получить удар током

19.01.2021 20:18:31 | Автор: admin

Представим себе в сущности довольно-таки заурядную ситуацию: у вас сломался сетевой источник питания. Вы берете в руки мультиметр и измеряете напряжение на входе и выходе источника. На входе у вас честные 230 В переменного тока из розетки, а на выходе по нулям. Вы знаете, что ваш источник питания импульсный, и вы в курсе про то, что транзисторами источника управляет ШИМ-контроллер, который очень легко идентифицируется на плате.
На столе у вас стоит новенький осциллограф Tektronix DPO 7254 или какой-нибудь LeCroy WavePro 7300A ценою более 10000$, и вы решаете посмотреть с его помощью сигналы ШИМ-контроллера, чтобы диагностировать его исправность или неисправность. На щупе осциллографа написано, что его максимально допустимое напряжение равно 1000 В, это с хорошим запасом больше напряжения в розетке. Непосредственно на самом осциллографе рядом с разъемами для подключению щупов написана цифра 400 V, кроме того, у вас щуп с делителем 1:100, что тоже вселяет уверенность, что все будет в порядке. Вы включаете осциллограф и пробуете подключить его щуп к плате источника питания, однако, как только вы касаетесь щупом осциллографа платы источника питания, проскакивает искра и раздается громкий ба-бах. Экран вашего новенького осциллографа безжизненно потухает, сам осциллограф не реагирует ни на какие кнопки, а комнату заполняет характерный запах сгоревшей электроники. Что же произошло? Почему сгорел осциллограф и как такого избежать? Обо всем этом читайте под катом.


Отказ от ответственности


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

Структура источника питания


В данном разделе, конечно, мы не будем подробно рассматривать устройство импульсных преобразователей, это тема для целой серии статей. Мы рассмотрим этот вопрос в минимальном объеме, необходимом для понимания темы статьи. Итак, на рисунке ниже приведена по сути структурная схема простейшего обратноходового преобразователя. Обратноходовый преобразователь здесь выбран исключительно для примера, совершенно не важно, какая топология источника питания (прямоходовый, мост, полумост, пуш-пул или вообще балластный конденсатор), все сказанное верно для любой из них.


В ней не показаны фильтры синфазных и дифференциальных помех, цепи защиты и некоторые другие компоненты, однако для рассмотрения нашего вопроса это и не нужно. На схеме мы видим диодный мост, к которому подводится сетевое напряжение, микросхему ШИМ-контроллера, объединенную с силовым транзистором, трансформатор и цепь обратной связи. Сетевое напряжение выпрямляется диодным мостом: плюс подводится к трансформатору и коммутируется силовым транзистором, а минус образует потенциал локальной (силовой) земли. Относительного этого потенциала питается ШИМ-контроллер, измеряется напряжение обратной связи, а также относительно него подаются управляющие напряжения на затворы силового транзистора (который в данной схеме находится внутри контроллера). Если мы хотим измерить какое-то напряжение на первичной стороне, это тоже надо делать относительного этого потенциала. В общем, классический такой GND, за исключение одного нюанса: он гальванически не развязан от сети (имеет прямую связь с фазой и нейтралью через пару диодов). И вот именно этот нюанс и является решающим, однако об этом позднее.

Структура осциллографа


В данном разделе будет рассмотрен вопрос, касающейся гальванической связи как между непосредственно самими каналами осциллографа, так и между каналами осциллографа и линией заземления. Существует два типа осциллографов: с изолированными каналами и без такой изоляции. Осциллографы с изолированными каналами довольно редкий вид приборов, и этот факт будет обязательно подчеркнут в описании устройства. Если вы никогда не задумывались о том, есть ли у вашего осциллографа такая изоляция, то, скорее всего, ее нет. Что это значит на практике? Это значит, что сопротивление между земленым хвостом щупа осциллографа и земляным выводом в сетевой розетке 230 В близко к нулю. Для лучшего понимания, этот факт продемонстрирован на рисунке ниже.


На данном рисунке показано измерение сопротивление между земляным хвостом щупа осциллографа и земляным контактом шнура питания осицллографа. Как видим, величина сопротивления очень мала и составляет всего 2,18 Ома. В реальности она еще меньше, потому что здесь не учитывалось сопротивление самих щупов мультиметра, которое может быть более 1 Ома.
Итак, сделаем важный вывод: у осциллографа земляной хвост щупа соединен с земляным контактом розетки и через нее заземлен в электрическом щитке.

Структура бытовой сети 230 В


Наиболее полное описание структуры сети 230 В, конечно, лучше найти в какой-нибудь литературе по теории электрических цепей, прочитав раздел про трехфазные цепи. В рамках данной статьи будет представлена только очень маленькая часть этого курса, имеющая непосредственное отношение к нашей проблеме.
В обычную бытовую розетку приходит как правило 3 провода: фаза, нейтраль и заземление. В старых домах советской постройки третьего провода (заземления) может и не быть. Провод заземления в общем-то соответствует своему названию: в конечном итоге он переходит в шину (контур заземления), которая закапывается глубоко в землю где-нибудь под зданием или в непосредственной близости от него (разумеется, не просто абы как, а в соответствии с определенными правилами). Этот провод предназначен для защиты человека от возможного поражения электрическим током: в случае нештатной ситуации, например, попадания напряжения на корпус прибора, ток начинает идти по проводу заземления, что приводит к срабатыванию защитной автоматики и отключению напряжения.
Нейтраль по сути своей очень близка к заземлению. Если вы внимательно рассмотрите линию электропередач в сельской местности, то заметите, что нейтральный проводник заземляется на каждой опоре.


Кроме того, нейтральный проводник заземлен также и на подстанции (здесь есть свои нюансы, но в быту обычно это так, схемы с изолированной нейтралью мы не рассматриваем).


В идеальном мире сопротивление между проводом заземления и нейтралью в розетке равно нулю, и они имеют абсолютно одинаковый потенциал. В реальном мире сопротивление проводников вносит свои коррективы и между нейтралью и заземлением имеется сопротивление порядка единиц-десятков Ом. Запомним этот факт, он пригодится нам в дальнейшем.
Фазный проводник это непосредственно сам рабочий проводник, который формирует синусоиду относительно нейтрали. Синусоида в бытовой розетке имеет амплитуду порядка 325 В и колеблется в плюс и в минус относительно нейтрального проводника. Таким образом, при положительной полуволне синусоиды ток течет из фазного проводника в нейтральный, а при отрицательной полуволне наоборот ток течет из нейтрального проводника в фазный.

Что происходит при подключении осциллографа?


Итак, сведем в кучку выводы по предыдущим разделам статьи:

  1. В сетевом импульсном источнике питания цепь локальной (силовой) земли связана с нейтралью и фазой через диоды.
  2. У осциллографа земляной хвост щупа соединен внутри него с земляным контактом розетки.
  3. Сопротивление между нейтралью и заземление в сети мало и составляет единицы-десятки Ом.
  4. При положительной полуволне синусоиды ток течет из фазного проводника в нейтральный, а при отрицательной полуволне из нейтрального в фазный.

Для того чтобы понять, как потекут токи при подключении осциллографа к первичной стороне импульсного источника питания, лучше всего воспользоваться моделированием. В качестве среды моделирования в последнее время я обычно использую LTSpice, поэтому анализ будет проводить в ней. Моделировать будем исключительно входные цепи преобразователя: сейчас нет необходимости включать в модель трансформатор и другую обвязку, потому что они никак не влияют на тему статьи. Я исключил из модели даже накопительный конденсатор после диодного моста, чтобы переходной процесс при его заряде не отвлекал от предмета моделирования.
Для начала давайте посмотрим, как ведет себя схема без подключенного осциллографа. На рисунке ниже приведены результаты моделирования такой схемы (картинка кликабельна).


Сопротивление R1 в данном случае это сопротивление нагрузки. Я выбрал его равным 100 кОм. Можно взять любое другое, в данном случае его величина не принципиальна. Сопротивление R2 это сопротивление между нейтральным и проводником и заземлением. Я выбрал его равным 10 Ом. Амплитудное напряжение между фазой и нейтралью составляет 325 В, что соответствует действующему значению напряжения в 230 В, сигнал показан на зеленом графике.
Как видно из графиков тока, он нигде не превышает величины нескольких миллиампер и вся система чувствует себя хорошо.
А что будет, если подключить к такой цепи осциллограф? Результат показан на рисунке ниже (картинка кликабельна).


Как видим, в модель добавился резистор R3 с сопротивлением 2 Ома. Этот резистор соответствует сопротивлению между земляным хвостом щупа осциллографа и контактом заземления шнура питания осциллографа. Чуть выше мы проводили измерение этого параметра и получили величину равную порядка 2 Ом. Этот резистор подключен к локальной силовой земле PGND: именно к этой цепи вы скорее всего и подключите землю осциллографа, если захотите произвести измерения на первичной стороне источника питания. Но как же ведет себя при этом ток? А он вырастает до катастрофических величин. Величина тока в нашей модели составляет более 25 А! В данном случае ток ограничен величиной сопротивления между нейтралью и заземлением, внутренним сопротивлением диодного моста, а также величиной сопротивления всех проводов. И этот ток протекает, помимо всего прочего, через резистор R3, т.е. через щуп осциллографа и через его внутренние цепи. 25 А через внутренние цепи осциллографа гарантированно выжгут внутри все, что возможно, не факт даже, что уцелеет сама печатная плата. Таким образом, данная картинка весьма наглядно показывает, что будет с прибором, если вот так просто попытаться измерить сигналы на не отвязанном от сети источнике.
Если чуть проанализировать результаты выше, то становится понятным, что смертельным для осциллографа оказывается отрицательная полуволна синусоиды в розетке. Отрицательная полуволна создает в точке между диодами D1 и D3 отрицательный потенциал. К точке PGND оказывается приложен нулевой потенциал (GND) через хвост щупа осциллографа, который соединен внутри него с землей розетки. Таким образом, у нас образуется разность потенциалов, причем диод D1 оказывается включенным в прямой полярности, что и приводит к резкому росту тока. Все вышесказанное наглядно проиллюстрировано на рисунке ниже.


А как же УЗО?


Действительно, при подключении земляного хвоста осциллографа к локальной (силовой) земле на стороне сетевого напряжения возникает дисбаланс токов и это должно отрабатываться УЗО. Возможно, оно и спасет цепи осциллографа от полного выгорания, однако, увы, УЗО срабатывает отнюдь не мгновенно, время его реакции составляет десятки миллисекунд. За это время вполне успеет проскочить хотя бы одна полуволна синусоиды сетевого напряжения, которая если не выжжет прибор совсем, скорее всего, все равно повредит чувствительные входные цепи осциллографа. Кроме того, в электрическом щитке УЗО присутствует далеко не всегда. Поэтому, не смотря на то, что УЗО, безусловно, полезный компонент электропроводки, в данном случае неразумно полагаться на защиту прибора с его помощью. Но как же быть, если все-таки необходимо посмотреть какие-то сигналы у прибора, работающего от сети 230 В? На самом деле, есть несколько способов, как это можно сделать относительно безопасно, об этом в следующем разделе

Как посмотреть сигналы на стороне сетевого напряжения и не спалить приборы?


1. Использовать осциллограф с гальванически развязанными каналами
У осциллографа с гальванически развязанными каналами все каналы имеют изоляцию как друг относительно друга, так и относительно земли. Таким образом, при подключении прибора к схеме, у нас не будет образовано контура, через который может произойти короткое замыкание и выгорание схемы. Однако будьте все равно предельно внимательны, даже если у вас осциллограф с развязанными каналами. Внимательно изучите документацию на свой прибор и обратите внимание на конкретные цифры по максимально допустимому напряжению относительно земли. Если вы будете анализировать сигналы на стороне сетевого напряжения, то, скорее всего, вам понадобятся специальные высоковольтные щупы, которые позволяют проводить измерения под большим потенциалом. Использование осциллографа с развязанными каналами имеет один большой недостаток цена. Такие осциллографы заметно дороже осциллографов с аналогичными характеристиками, земли каналов которых соединены на общем шасси. Кроме того, модельный ряд таких осциллографов довольно-таки скудный, по сравнению с классическими осциллографами, конечно же. В общем, если у вас есть осциллограф с изолированными каналами и вы умеете с ним работать, скорее всего, вы мало что нового узнали из этой статьи :).

2. Использовать дифференциальный пробник
Если у вас нет осциллографа с галиванически развязанными каналами, но есть обычный, то можно развязать какой-либо его канал с использованием специального устройства, которое называется дифференциальный пробник. Пример такого устройства приведен на рисунке ниже.


С помощью данного устройства возможно относительно безопасно смотреть сигналы на стороне сетевого напряжения. Существует достаточно большое число видов подобных устройств на разные входные напряжения и частот с разными коэффициентами деления входного напряжения. Как правило это активные устройства, требующие дополнительного питания, например, устройство с рисунка выше требует адаптер 9 В. Цена подобных устройств обычно тоже не очень демократична и составляет десятки, а иногда и сотни тысяч рублей (по курсу на момент написания статьи).

3. Использовать развязывающий трансформатор
Вполне рабочий способ защитить осциллограф и посмотреть при этом сигналы на стороне сетевого напряжения использование развязывающего трансформатора с коэффициентом трансформации 1:1 (т.е. величина напряжения на выходе трансформатора равна величине напряжения на его входе). Через такой трансформатор необходимо подключить объект исследования (например, все тот же анализируемый нами источник питания). Поясняющий рисунок с результатами моделирования приведен ниже (картинка кликабельна).


Как видим, не смотря на то, что к схеме точно таким же образом подключен заземленный хвост щупа осциллографа, на графиках тока нет никаких запредельных величин. Ток через внутренности осциллографа (через сопротивление R3) равен нулю, а амплитуда тока источника питания и нагрузки составляет несколько миллиампер, как было у нас при не подключенном осциллографе. Это происходит потому, что теперь у нас земля PGND гальванически развязана от сетевого напряжения. Однако это вовсе не значит, что теперь все безопасно для человека: на выходе трансформатора по-прежнему 230 В действующего напряжения, которые могут представлять смертельную опасность.
При использовании развязывающего трансформатора помимо коэффициента трансформации необходимо также обязательно посмотреть на такой параметр, как максимально допустимая мощность. Очевидно, что потребляемая вашей нагрузкой мощность не должна превышать максимально допустимая мощность, на которую рассчитан трансформатор. Таким образом, этот способ вряд ли подойдет для анализа установок на несколько киловатт: габариты и масса требуемого трансформатора будут слишком велики.

4. Использовать лабораторный источник питания
Если ваш объект исследования импульсный источник питания, то безопасно посмотреть его первичные цепи можно запитав его не от сети 230 В, а через лабораторный источник питания постоянного тока. Внутри такого источника питания всегда стоит трансформатор, таким образом достигается гальваническая развязка, и осциллограф можно безбоязненно подключать к анализируемой схеме. Поскольку на входе импульсного источника питания стоит выпрямитель, то для его работы нет большой разницы, подадите вы на вход синусоиду или же постоянное напряжение. Разумеется, величина этого постоянного напряжения должна соответствовать выпрямленному сетевому напряжению с каким-либо допуском. На прошлой работе в качестве такого источника питания мы использовали источник Б5-50, он изображен на рисунке ниже.


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

5. Использовать розетку без заземления
Внимание! Данный способ относится к категории опасных, поэтому я не могу рекомендовать использовать его. Однако все-таки для полноты картины я должен про него рассказать, хотя бы для того, чтобы сообщить о возможных опасностях. Более того, бывает, что зачастую он оказывается единственным возможным способом посмотреть сигнал на стороне сетевого напряжения без привлечения какого-либо специального оборудования типа развязывающего трансформатора или осциллографа с изолированными каналами. Данный способ заключается в том, что осциллограф включается в розетку без клеммы заземления (см. рисунок ниже).


Таким образом разрушается контур протекания тока, однако это приводит к одной большой проблеме. Теперь земля осциллографа оказывается под смертельно опасным потенциалом. Это значит, что опасное для жизни напряжение будет присутствовать на всех BNC-разъемах осциллографа, на земляных хвостах всех подключенных щупов, а также, возможно, и на корпусах всех других приборов, включенных в ту же розетку (в случае, если в розетке все же есть контакты заземления, но к ней не подведен заземляющий провод). И если теперь одной рукой просто задеть коаксиальный разъем на корпусе осциллографа, а другой при этом, условно, схватиться за батарею в общем, вы понимаете. Совершенно недопустимо использовать этот способ, если у вас осциллограф в металлическом корпусе. Если все-таки используете этот способ, то отключите все лишние щупы, а также другие провода (USB, RS-232 и др.), убедитесь, что в розетку включен только один осциллограф, выполните все подключения, настройте заранее все крутилки на осциллографе, убедитесь, что не заденете случайно BNC разъемы и только потом подавайте сетевое напряжение.
Тем не менее, при соблюдении всех мер предосторожностей, этот способ в целом рабочий. Под спойлером ниже приведена осциллограмма напряжения из розетки, снятая мной еще в студенческие годы как раз с использованием этого самого способа. Поскольку сетевое напряжение имеет размах, превышающий количество клеток на экране осицллографа, измерение происходило через резистивный делитель напряжения 1:5.

Напряжение в розетке



6. Использовать осциллограф с питанием от аккумуляторной батареи
Некоторые осциллографы могут работать от встроенных аккумуляторных батарей. Сетевой шнур при этом не подключается, соответственно, осциллограф оказывается не заземленным. По сути этот способ является полным аналогом предыдущего, только вместо розетки без заземлена используется питание осциллографа от встроенной батареи. Этот способ абсолютно точно также опасен, как и предыдущий: на всех разъемах осциллографа будет присутствовать все тот же смертельно опасный потенциал, поэтому все меры безопасности, описанные в предыдущем пункте статьи, в равной степени справедливы и для этого способа.

7. Запитать управляющие микросхемы низким напряжением от лабораторного источника
Иногда бывают ситуации, когда для отладки не обязательно наличие высокого сетевого напряжения. В таком случае лучше просто запитать управляющие цепи с помощью низковольного лабораторного источника питания. Величина требуемого напряжения всегда прописана в документации на конкретные микросхемы (например, в случае исследования ШИМ-контроллера оно обычно не превышает 20 В). Сетевое напряжение 230 В при этом, само собой, не подается, поэтому можно абсолютно безопасно исследовать осциллографом импульсы на выходе контроллера, работу осциллятора, величину опорных напряжений и другие критические сигналы. Конечно, без наличия сетевого напряжения все проверить не получиться, но откровенно мертвый контроллер без проблем можно продиагностировать.

Общие рекомендации по работе с сетевым напряжением


1. При работе с сетевым напряжением всегда соблюдайте технику безопасности
Да, сто раз про это везде уже писали, но, тем не менее, почему-то часто то, как делать не надо, выясняется только на своей шкуре своем опыте. Не стоит лезть в приборы под напряжением во время работы, лучше выполните все подключения до включения питания. Не забывайте про накопительные конденсаторы: на их разряд нужно некоторое время, которое может стремиться к бесконечности (условно, конечно же), если разработчик не поставил разрядных резисторов.

2. Изучите инструкцию на ваш прибор
Конечно, жизнь слишком коротка, чтобы читать инструкции, поэтому их обычно открывают только когда что-то не работает или сломано. Но если вы работаете с сетевым напряжением, все-таки стоит заранее посмотреть, а какие, собственно, предельные цифры у вашего прибора. Небрежность в этом вопросе может стоить очень дорого.

3. Используйте недорогие приборы
Если вы исследуете сетевое напряжение, то отложите в сторону ваш крутой Tectronix DPO 7254 ценою в несколько миллионов и возьмите какой-нибудь Наntек DSO 5102 за пару десятков тысяч рублей. На стороне сетевого напряжения вам не нужны гигасемплы и крутая математика, зато если что-то пойдет не так, ошибка не будет стоить настолько дорого.

4. По возможности всегда работайте с гальванической развязкой от сети
Из-за несоблюдения этого правила в этом мире погорело уже куча электроники. В моей практике был случай, который стоил мне ноутбука и JTAG-отладчика. Я проводил отладку одного устройства и вроде бы ничего не предвещало беды. Устройство имело металлический корпус и на корпусе была установлена неоновая лампочка, которая светилась от сети 230 В. Корпус, естественно, был заземлен. Сама плата с микроконтроллером была запитана от отдельного изолированного источника питания. И в один прекрасный момент эта лампочка пробилась на корпус устройства. В этот момент к плате был подключен JTAG-отладчик, который был воткнут в ноутбук. Ноутбук же в свою очередь был включен в розетку с заземлением. Таким образом, ток пошел по цепочке неоновая лампочка корпус плата JTAG-отладчик ноутбук источник питания ноутбука заземление. Разумеется, ноутбук и программатор при этом выгорели без возможности восстановления. Этого можно было бы избежать, если бы применялся JTAG-отладчик с гальванической развязкой. Ну и использовать топовый MacBook Pro в качестве рабочей машины при отладке силовой электроники, конечно же, тоже не стоит (см. предыдущий пункт).

Заключение


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

Перевод Bluetooth Low Energy подробный гайд для начинающих. Часть 2

17.12.2020 16:16:33 | Автор: admin

Это вторая часть перевода книги Мохаммада Афане Intro to Bluetooth Low Energy. В представленных главах мы поговорим о типах устройств и об адвертайзинге, методе, с помощью которого периферийные устройства сообщают о своем присутствии.Первая часть здесь.

Хочу сразу отметить, что адвертайзинг может использоваться не только для обнаружения устройств, но и для отправки кастомных данных. Например, в портативном мониторе качества воздуха Atmotube, пакеты адвертайзинга и ответа на сканирование используются для передачи сведений о текущих показаниях сенсоров. Это удобно для контроля показаний сенсоров на этапе производства и при сборе данных несколькими устройствами.

2. Периферийные и центральные устройства BLE

Существуют несколько важных определений, с которыми вы будете постоянно сталкиваться при изучении BLE. Два наиболее важных касаются ролей устройства: BLE central и BLE peripheral.

Рассмотрим их более детально.

2.1 Периферийные устройства

Периферийное устройство устройство, которое объявляет о своем присутствии путем адвертайзинга, т.е.рассылки широковещательных пакетов, и принимает запросы на соединение от центральных устройств.

Другой связанный термин BLE-передатчик, устройство, которое также рассылает широковещательные пакеты, но имеет одно отличие от периферийного устройства:оно не разрешает другим устройствам устанавливать с ним соединение. С другой стороны, устройство-наблюдатель только обнаруживает устройства, производящие процедуру адвертайзинга, но не имеет возможности инициировать соединение с ними.

Типичный пример устройства, реализующего роль передатчика маячок (beacon). Маячки это устройства, которые передают информацию без возможности установить с ними соединение. Они очень популярны в двух сферах: розничная торговля и определение местоположения внутри помещений.

Например, некоторая сеть магазинов использует мобильное приложение, которое может обнаруживать маячки на территории магазина. Если покупатель, имеющий на своем смартфоне это же приложение, приблизится к маячку, то в приложении отобразится специальная скидка на группу товаров, связанную с маячком.

Отличить маячок от периферийного устройства можно по типу широковещательных пакетов, которые он передает. Существуют различные типы пакетов: некоторые указывают на возможность установить соединение, а другие просто указывают на наличие маячка в этом месте. Когда центральное BLE-устройство обнаруживает широковещательные пакеты другого устройства с BLE (будь оно маячком или периферийным), оно знает, может ли оно начинать процедуру установки соединения или нет в зависимости от типа принятых широковещательных пакетов.

Как только периферийное устройство подключается к центральному, оно принимает на себя роль ведомого. Центральное устройство в таком случае называется ведущим. Это роли, определенные на канальном уровне, тогда как роли периферийного и центрального устройства определены на уровне GAP.

2.2 Центральные устройства

Центральное устройство устройство, которое обнаруживает периферийные устройства и считывает передаваемую ими информацию. Оно также может устанавливать соединение с одним или несколькими устройствами одновременно.

Наблюдатель устройство, схожее по функционалу с центральным, но не имеющее возможности устанавливать соединение с другим устройством.

2.3 Сравнение типов устройств

Рассмотрим возможности и ограничения четырех типов устройств: передатчик, наблюдатель, периферийное и центральное устройство.

Передатчик

Периферийное устройство

Наблюдатель

Центральное устройство

Не требует наличия приемника

Требует наличия как приемника, так и передатчика

Не требует наличия передатчика

Требует наличия как приемника, так и передатчика

Не поддерживает двунаправленный обмен данными

Поддерживает двунаправленный обмен данными

Не поддерживает двунаправленный обмен данными

Поддерживает двунаправленный обмен данными

Упрощенная схема, уменьшенный размер программного стека BLE

Требует полного программного стека BLE

Упрощенная схема, уменьшенный размер программного стека BLE

Требует полного программного стека BLE

Табл. 1: Сравнение типов устройств

2.4 Энергопотребление и требования к вычислительной мощности

Протокол BLE асимметричен. Большая часть тяжелой работы, связанной с управлением соединениями, управлением временем и обработкой информации, лежит на центральном устройстве. Это помогает снизить энергопотребление и требования к вычислительной мощности периферийного устройства, что позволяет интегрировать BLE в компактные устройства с ограниченными ресурсами, например, устройства с батарейным или аккумуляторным питанием.

Центральное устройство BLE также может иметь батарейное питание, но обычно имеет перезаряжаемый аккумулятор большой емкости. Как правило, роль центрального устройства на себя берет смартфон, компьютер или планшет.

Центральное устройство может быть подключено к нескольким периферийным одновременно. Характерный пример смартфон, подключенный к умным часам, термостату умного дома и фитнес-трекеру одновременно.

2.5 Многоролевые устройства BLE

В некоторых случаях поддержка BLE-устройством центральной и периферийной роли одновременно приносит заметную пользу. Например, устройство может контролировать несколько датчиков (периферийных устройств) и в то же время иметь возможность передавать данные с этих датчиков на смартфон, обеспечивая доступ к ним из интерфейса мобильного приложения.

Рис. 1: Смартфон в качестве многоролевого устройстваРис. 1: Смартфон в качестве многоролевого устройства

2.6 Роль смартфонов в BLE

Одним из наиболее значимых преимуществ BLE перед другими похожими малопотребляющими технологиями, такими как ZigBee, Z-Wave, Thread и др.,) является его наличие в большинстве смартфонов, представленных на рынке. Практически все смартфоны уже имели на борту Bluetooth Classic с самых ранних дней, и большинство производителей чипсетов Bluetooth теперь внедряют в свои чипы поддержку и BLE, и Bluetooth Classic. В результате в настоящее время подавляющее большинство смартфонов поддерживает BLE.

Для смартфона возможность взаимодействовать с устройствами BLE дает пару существенных преимуществ:

  • Смартфоны предоставляют пользователям привычный интерфейс. Использование мобильного приложения для взаимодействия с BLE-устройством зачастую оказывается удобнее непосредственного взаимодействия с этим устройством.

  • Смартфоны, как правило, постоянно подключены к Интернету. Это означает, что данные, полученные с BLE-устройства, могут быть переданы в облако и сохранены для последующего анализа и обработки.

Сложности, связанные с BLE на смартфонах

В настоящий момент существуют две основные мобильные операционные системы: Android и iOS. Android представил встроенную поддержку BLE API в версии Android 4.3 (выпущена в июле 2012 года), в то время как iOS сделал то же самое немного раньше в октябре 2011 года.

Важно отметить, что многое зависит от возможностей аппаратного обеспечения операционной системы. В случае с iOS, поддержку BLE имеют все устройства, начиная с iPhone 4s. Ситуация с Android гораздо сложнее. Эта операционная система работает на устройствах разных производителей с разной аппаратной конфигурацией, поэтому нет простого способа определить, какие устройства первыми начали поддерживать BLE. Эта проблема фрагментации Android представляет большую проблему при разработке приложений, использующих BLE, которые должны работать одинаково на всех существующих Android-устройствах.

3. Рассылка и сканирование пакетов адвертайзинга

3.1 Общий профиль доступа (GAP)

Общий профиль доступа предоставляет фреймворк, который определяет способы взаимодействия BLE-устройств друг с другом. Он включает в себя следующие аспекты:

  • Режимы и роли устройств;

  • Обнаружение устройств: рассылка пакетов адвертайзинга, сканирование, параметры рассылки и сканирования, содержимое пакетов;

  • Установка соединения: инициация, подтверждение, параметры соединения;

  • Обеспечение безопасности

Реализация этого фреймворка является обязательной согласно официальной спецификации, и это то, что позволяет устройствам BLE обмениваться данными и взаимодействовать друг с другом.

Мы кратко осветили состояния сканирования и рассылки пакетов адвертайзинга BLE-устройств и упомянули, что периферийное устройство всегда запускается в состоянии рассылки пакетов адвертайзинга, даже если оно предназначено для работы в подключенном состоянии большую часть времени. Чтобы два устройства могли обнаружить друг друга, одно из них должно рассылать пакеты адвертайзинга, а другое сканировать первичные широковещательные каналы (радиоканалы 37, 38, 39) в поисках пакетов адвертайзинга, отправленных периферийным устройством.

Если периферийное устройство поддерживает возможность подключения и центральное устройство обнаружило его, они могут установить соединение. В этой главе мы сфокусируемся на начальных состояниях периферийного и центрального устройства: адвертайзинг и сканирование.

3.2 Рассылка пакетов адвертайзинга

В состоянии адвертайзинга устройство рассылает пакеты, содержащие полезную информацию для других устройств, чтобы они приняли и обработали её. Пакеты посылаются через определенные интервалы времени, которые называются интервалы адвертайзинга.

В BLE существуют 40 радиоканалов, разнесенных на 2 МГц (от центра до центра), как показано на рисунке ниже. Три канала называются каналами первичного адвертайзинга, в то время как оставшиеся 37 каналов используются для вторичного адвертайзинга, а также для передачи пакетов данных во время соединения.

Рис. 8: Радиоканалы в BLEРис. 8: Радиоканалы в BLE

Замечание: Так как устройство посылает пакеты адвертайзинга на одном из этих каналов и, как правило, постоянно переключается между ними, они (каналы) разнесены далеко по спектру друг от друга для того, чтобы избежать перекрестных помех между устройствами, вещающими на разных каналах. Также, расположение этих каналов на спектре выбрано таким, чтобы избежать помех от наиболее часто используемых Wi-Fi каналов.

Процесс адвертайзинга всегда начинается с посылки широковещательного пакета по трем первичным каналам адвертайзинга или части из них. Это позволяет центральным устройствам найти периферийные и прочитать и пакеты адвертайзинга. Затем центральное устройство может запустить процесс подключения, если периферийное устройство поддерживает такую возможность.

Также центральное устройство может послать запрос на сканирование и, если периферийное поддерживает такую возможность, оно пошлет пакет, содержащий ответ на сканирование. Запросы на сканирование и ответы позволяют периферийному устройству отправить дополнительные данные, которые не поместились в основной пакет адвертайзинга без установки соединения.

Примечание: длина первичного пакета адвертайзинга ограничена 31 байтами. Длина вторичного пакета адвертайзинга может составлять до 254 байт.

Как мы упоминали ранее, некоторые устройства (маячки) всегда остаются в состоянии адвертайзинга и не принимают запросы на подключение, в то время как другие (периферийные устройства) позволяют переход в подключенное состояние, если центральное устройство инициирует соединение.

Главное преимущество нахождения в состоянии адвертайзинга состоит в том, что множество центральных устройств могут получать данные с одного периферийного без необходимости в подключении. В то же время есть существенные недостатки, такие как отсутствие защиты данных и невозможность для периферийного устройства получать данные от центрального устройства (передача данных является однонаправленной).

Рис. 9: Устройства, имеющие и не имеющие возможность подключенияРис. 9: Устройства, имеющие и не имеющие возможность подключения

3.3 Состояние сканирования

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

Устройство, которое прослушивает каналы адвертайзинга в поисках пакетов адвертайзинга а затем посылает запросы сканирования, находится в режиме активного сканирования, а устройство, которое только принимает пакеты адвертайзинга, и не посылает запросов на сканирование, соответственно находится в режиме пассивного сканирования.

Рис. 10: Пассивное и активное сканированиеРис. 10: Пассивное и активное сканирование

3.4 События адвертайзинга

Событие адвертайзинга состоит из нескольких пакетов, отправленных по всем или нескольким из трех каналов первичного адвертайзинга (37, 38 и 39). Существует семь типов событий адвертайзинга (их можно рассматривать как различные типы пакетов):

  • Подключаемое и сканируемое ненаправленное событие.

Этот тип позволяет другим устройствам принимать пакеты, посылать запросы сканирования отправителю и устанавливать с ним соединение.

  • Подключаемое ненаправленное событие.

Позволяет другим устройствам принимать пакеты и устанавливать соединение с их отправителем.

  • Подключаемое направленное событие.

Позволяет определенному устройству принимать пакеты и устанавливать соединение с отправителем

  • Неподключаемое и несканируемое ненаправленное событие.

Позволяет всем устройствам принимать пакеты. В то же время отклоняет все запросы сканирования и попытки установить соединение.

  • Неподключаемое и несканируемое направленное событие.

Позволяет определенному устройству принимать пакеты без возможности установить соединение или послать запрос сканирования.

  • Сканируемое ненаправленное событие.

Дает возможность другим устройствам посылать запросы сканирования отправителю для получения дополнительного пакета данных.

  • Сканируемое направленное событие.

Позволяет определенному устройству посылать запросы сканирования отправителю пакета адвертайзинга для получения дополнительного пакета данных.

3.5 Параметры адвертайзинга

Под параметрами адвертайзинга понимают:

  • Интервал адвертайзинга.

Наиболее важный параметр из относящихся к адвертайзингу это интервал адвертайзинга. Значение этого параметра может дискретно изменяться в пределах от 20 миллисекунд до 10.24 секунд, с шагом в 625 микросекунд. Интервал адвертайзинга оказывает большое влияние на продолжительность работы от батареи, поэтому выбору его значения следует уделить самое пристальное внимание. Рекомендуется выбирать наибольший интервал адвертайзинга, позволяющий соблюсти баланс между скоростью обнаружения и энергопотреблением.

  • Данные адвертайзинга и ответа на сканирование.

Давайте посмотрим на формат пакета адвертайзинга и составляющие его поля. Стоит отметить, что пакет ответа на сканирование использует такой же формат.

Рис. 11: Формат пакета адвертайзинга (из спецификации стандарта Bluetooth 5)Рис. 11: Формат пакета адвертайзинга (из спецификации стандарта Bluetooth 5)

Данные адвертайзинга используют формат, аналогичный формату TLV (Type-Length-Value, Тип-Длина-Значение), используемому для передачи данных. Отличие состоит в том, что в пакетах адвертайзинга длина данных следует перед их типом. Данные адвертайзинга входят в состав протокольных данных (PDU, Protocol Data Unit) BLE-пакета и включает в себя:

  • Длину: длину данных, которые следуют за самим значением длины, включая тип данных и непосредственно данные.

  • Тип данных адвертайзинга: тип данных адвертайзинга, содержащихся в этой структуре TLV.

  • Данные адвертайзинга: непосредственно данные.

Типы данных адвертайзинга определены в дополнении спецификации Bluetooth (не в основном документе).

Ниже приведены одни из наиболее часто встречающихся типов данных:

  • Local Name: имя устройства, считываемое при его обнаружении другими устройствами, производящими процедуру сканирования.

  • Tx Power Level: Мощность передачи, измеряемая в дБм.

  • Flags: множество однобитных логических флагов (переменные, которые могут принимать одно из двух значений, истина [1] или ложь [0], включающее в себя:

    • Limited Discoverable Mode (ограниченный режим обнаружения);

    • General Discoverable Mode (общий режим обнаружения);

    • BR/EDR Not Supported (возможность поддержки классического протокола Bluetooth);

    • Возможность одновременной поддержки классического и Low Energy Bluetooth на одном устройстве со стороны контроллера;

    • Возможность одновременной поддержки классического и Low Energy Bluetooth на одном устройстве со стороны хоста.

Примечание: понятия BR (Basic Rate, базовая пропускная способность) и EDR (Enhanced Data Rate, расширенная пропускная способность) относятся к Bluetooth Classic.

  • Service Solicitation: список из одного или нескольких UUID, показывающий, какие сервисы поддерживаются и представлены GATT-сервером устройства. Это помогает центральному устройству узнать о поддерживаемых периферийным устройством сервисах до установления соединения.

  • Appearance: вид, определяет тип устройства в соответствии со спецификацией стандарта. Включает в себя такие виды как телефон, измеритель сердечного ритма, брелок для ключей и множество других.

Если вы не можете найти вид, к которому можно было бы отнести ваше устройство, вы всегда можете оставить ему значение по умолчанию Неопределенный.

3.6. Параметры сканирования

Существует три основных параметра сканирования:

  • Scan Type (тип сканирования): пассивное или активное.

  • Scan Window (окно сканирования): определяет, длительность сканирования.

  • Scan Interval (интервал сканирования): определяет частоту повторения сканирования.

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

Рис. 12: Параметры сканированияРис. 12: Параметры сканирования

__________________________________

А что дальше?

В следующей статье мы рассмотрим вопросы, связанные с соединениями, а также разберемся с сервисами, характеристиками и способами работы с ними.

Подробнее..

Под капотом OpenVINO (Intel Neural Stick)

14.01.2021 20:16:39 | Автор: admin

Введение

Привет, Habr! Сегодня я хочу рассказать немного об аппаратном ускорителе Neural Compute Stick. Расскажу с точки зрения hardware-разработчика.

Что внутри OpenVINO

Известно, что OpenVINO взаимодействует с Intel Neural Compute Stick, а сердцем самого стика является чип Movidius Myriad X. Некоторые характеристики данного чипа можно найти в блоге компании Intel. В частности из статьи мы узнаем следующие характеристики Myriad X:

  • Векторные процессоры: 16

  • Основные интерфейсы: 16x MIPI lanes, USB 3.1, PCIe 3.0

  • 20+ ускорителей обработки медиа

Я попытался найти более подробную информацию о чипе в открытых источниках.

В частности, ресурс wikichip.org повествует о том, что у старых версий чипа есть еще и такие интерфейсы: SDIO, SPI, I2C, I2S, UART, JTAG и датчик температуры. В репозитории OpenVINO, в файле ie_plugin_config.hpp находим крохотное подтверждение информации с wikichip.org, что датчик температуры действительно есть: Metric to get a float of device thermal. String value is "DEVICE_THERMAL". Кроме того, SHAVE (Streaming Hybrid Architecture Vector Engine) имеют возможность отключать тактирование, что в целом интересно для LowPower устройств. Это говорит о том, что возможности чипа куда шире, чем просто ускоритель Deep Neural Network (DNN).

В качестве протокола коммуникации выступает фирменный XLink, который кроме всего прочего имеет интересную функцию XLinkBoot(deviceDesc_t deviceDesc, const char* binaryPath)*: Boots specified firmware binary to the remote device, binaryPath - path to the *.mvcmd file.

*.mvcmd - по сути является модифицированным elf-файлом, содержащим дополнительные инструкции для внутреннего загрузчика Myriad.

Пожалуй, на этом информация, которая имеет хоть какое-то отношение к hardware, заканчивается.

Интерфейсы

MIPI-CSI Как указано выше, Myriad X действительно имеет 16 MIPI-CSI lanes, если быть точнее, то 8 MIPI-CSI интерфейсов, которые работают в 2-lane режиме. Так же они могут работать в паре, в 4-lane режиме. Работа с несколькими сенсорами позволяет реализовать стерео зрение. Для его реализации на чипе присутствуют аппаратные ускорители.

MIPI-DSI Кроме того, чип имеет MIPI-DSI интерфейсы, что позволяет использовать Myriad X в проектировании автономных интерактивных устройств с дисплеем. Как пример, первое что приходит в голову: ATM, фотобудка (с поиском лица на фото и т.п.).

I2C Было бы странно, если бы в чипе была реализация MIPI, но не было бы I2C. С этим всё понятно.

I2S Действительно, Myriad X имеет возможность подключения аудио-устройств, что в симбиозе с DNN ускорителем делает его весьма интересным для применения в умных колонках, как например "Яндекс.Станция"

Пример применения (капля пиара)

Мы использовали аппаратные возможности Intel Myriad X в проекте камеры аналитики для ритейла под кодовым названием Jachin.

Камера представляет из себя аппаратную реализацию на базе чипа MA2085 с двумя цветными сенсорами и Ethernet. По своей задумке, камера вешается над входом в магазин или какой-либо другой интересующий нас объект. Один из сенсоров смотрит вниз и один в торговый зал.

С помощью сенсора, направленного на вход, и алгоритма обработки данных на выходе нейронной сети производится вычисление следующих метрик:

  1. Сколько человек вошло/вышло из магазина

  2. Сколько времени провел человек в магазине

По косвенным данным производится вывод о посещаемости магазина в зависимости от

  1. Времени суток

  2. Погоды

  3. Праздничный или будний день

  4. и т.д

Второй сенсор смотрит в сторону торгового зала. Через него, не без помощи нейросетей, производится построение "тепловой карты" - мест, наиболее популярных у посетителей магазина. Оценивается взаимодействие покупателей с товаром и проводится детальная аналитика розничного магазина подобно аналитике сайтов и их посетителей.

Благодаря встроенному JPEG энкодеру, в устройстве реализован проброс легковесного стрима на сервер: пользователь имеет возможность через личный кабинет посмотреть в режиме реального времени, что у него происходит в торговом зале.

Мы не стали использовать H.264/H.265 только по той причине, что видеонаблюдение не является основным функционалом камеры.

Это краткое описание функционала, которое я могу рассказать как firmware разработчик. Бизнес, бэкэнд, фронтэнд и прочие составные части проекта в данной статье рассматриваться не будут. Если вам интересно взглянуть на описанную камеру, то вы можете увидеть её в разборе на анимации главной страницы https://smass.tech

Вернемся к процессу разработки на Myriad X.

Firmware

Очевидно, что поддержка работы периферии такого кристалла требует ОС. Когда OpenVINO загружает mvcmd файл внутрь Neural Computer Stick, на этом стике запускается RTEMS. Эта информация подтверждается и в открытых источниках от пользователя walts.

Философия разработки автономных решений на базе Myriad X практически наследует уже знакомую пользователям OpenVINO идею Pipeline'ов. Каждый элемент Pipeline работает в отдельном потоке, обрабатывает информацию, преобразует ее и передает следующему звену через очередь сообщений операционной системы.

Для реализации своих идей в распоряжении разработчика есть стандартные библиотеки C:

  • limits.h

  • math.h

  • stdarg.h

  • stdbool.h

  • stddef.h

  • stdint.h

  • stdio.h

  • stdlib.h

  • string.h

  • types.h

  • assert.h

  • ctype.h

И стандартные библиотеки С++:
  • algorithm

  • array

  • bitset

  • cassert

  • cctype

  • cerrno

  • cfenv

  • cfloat

  • ciso646

  • climits

  • cmath

  • cstdarg

  • cstdbool

  • cstddef

  • cstdint

  • cstdio

  • cstdlib

  • cstring

  • ctime

  • cwchar

  • cwctype

  • deque

  • exception

  • forward_list

  • functional

  • initializer_list

  • iterator

  • limits

  • list

  • map

  • numeric

  • queue

  • ratio

  • stack

  • stdexcept

  • string

  • tuple

  • type_traits

  • typeindex

  • typeinfo

  • unordered_map

  • unordered_set

  • utility

  • valarray

  • vector

  • ext/hash_map

  • ext/hash_set

Конечно, ресурсы чипа ограничены, поэтому разработчикам крайне необходимо знать азы написания эффективного кода: как ведут себя контейнеры в C++, как работать с указателями и т.п.

Из информации на официальном сайте Intel, SDK также включает специализированную инфраструктуру FLIC в разработке конвейеров обработки изображений. FLIC (Frame Level Isp Cv) представляет из себя плагин с конкретным функциональным назначением, который работает в отдельном потоке операционной системы.

Плагины включают в себя порты коммуникации между собой.

Передатчик (Sender) - шаблонный компонент, передающий указатель на объект. Приемник (Receiver) - очевидно, шаблонный компонент, принимающий указатель на тип данных, указанный в качестве параметра шаблона. По сути, внутри себя оба компонента реализуют функционал через mqsend, mqreceive.

Оба компонента имеют механизмы связывания между собой.

Камера на Myriad X

Рассмотрим упрощенный пример того, как сделать USB камеру на Myriad X.

  1. У нас есть сенсор, подключенный по MIPI к Myriad X. Для того, чтобы сохранить кадр с сенсора нам нужно сначала выделить для него память. Для этого используется FLIC плагин, который выделяет область памяти фиксированного размера из статического массива.

  2. Подключаем плагин, реализующий работу с MIPI. Упрощенно, у него используется два основных порта. Первый, receiver, связывается с sender плагина из п.1, чтобы получить пустой фрейм. Полученные по MIPI данные заполняют пустой фрейм. Когда будет получен сигнал End Of Frame, во второй порт, sender, будет передан указатель на область памяти, где уже содержатся полезные данные в формате RGRB.

  3. Подключаем третий плагин, в котором производится дебаеризация данных. Receiver плагина подключается к sender из п.2. Полученный фрейм из п.2 переводится в формат YUV и передается в sender.

На практике, нам необходим еще один плагин, который выделит память под дебаеризованный фрейм (тоже самое, что в п.1). По большому счету, всегда, когда происходит преобразование данных, нам необходимо выделять новые пустые фреймы: вычитываем из области памяти данные в формате RGRB, преобразуем, записываем в другую область памяти результат в YUV формате. Но для упрощения статьи такие детали далее будут опускаться.

  1. Подключаем плагин H.264 энкодера. Он принимает данные в формате YUV от sender в плагине п.3, производит кодирование и отправляет указатель на закодированные данные в sender.

  2. Подключаем плагин вывода данных по USB. Как уже говорилось в начале статьи, в SDK реализован протокол коммуникации XLink, что используется в OpenVINO. Хорошо, берем плагин XLink. Он не имеет порта sender, но имеет receiver. Его мы подключаем к sender плагина H.264 энкодера. Как только от энкодера придут данные в плагин XLink, они будут переданы по USB хосту.

Когда на указатель перестает кто-либо ссылаться, он "возвращается" обратно в пул памяти и тогда плагин п.1 может вновь использовать эту область для новых данных.

MIPI генерирует фреймы с фиксированным FPS, пусть для примера он будет равен 20, то есть период следования фреймов 50мс. За 50мс программа должна успеть принять данные, передать их в энкодер и далее по USB. Предположим, возникли проблемы с USB, и весь цикл обработки одного фрейма занял 62мс. В такой ситуации фрейм, выделенный в п.1, не успеет вовремя вернуться обратно в пул, и тогда новый кадр с сенсора будет пропущен. Как правило, плагин из п.1 использует статический массив, в котором умещается сразу несколько пустых фреймов.

DEBUG

Стоит отметить, что отладка кода представляет из себя не менее увлекательный процесс, чем его написание. К счастью или нет, но мне очень нравится среда разработки Visual Studio, ну вот нравится и всё, что бы мне не говорили про VIM, Sublime, gedit и прочее. Соответственно, после Visual Studio, со всеми ее брейкпоинтами и пошаговой отладкой было довольно непривычно отлаживать код через CLI интерфейс:

  • Запуск отладки через консольную команду для утилиты, работающей через JTAG (тут ничего удивительного)

  • Установка breakpoint через консольную команду для утилиты, работающей через JTAG. В качестве аргумента указывается номер строки конкретного файла проекта.

  • Пошаговая отладка тоже через консоль

В целом, здесь всё делается через консоль. Хочешь посмотреть состояние аппаратного блока - вводи команду. Проверить стек вызовов - вводим команду. Наверное, это единственное, что может слегка расстроить с непривычки: вместо пары кликов в IDE нужно сделать 15-30 кликов по клавиатуре.

Заключение

Я не планировал в рамках данной статьи давать исчерпывающие ответы на аппаратные и программные возможности Myriad X, а лишь хотел рассказать разработчикам, что Intel Myriad X может найти более широкое применение, нежели просто USB ускоритель DNN.

Подводя промежуточные итоги, хотел бы сказать, что Myriad X довольно интересный чип при своем энергопотреблении. Огромное количество документации поражает воображение. Но, если изучить эту документацию, то с Myriad X перед разработчиками открываются довольно мощные возможности в проектировании AI устройств: от интеллектуальных беспилотников на аккумуляторном питании, до банкоматов с распознаванием лиц.

P.S. В данной статье изложена малая часть информации по чипу. Сделано это для знакомства читателя с ним. Если вдруг статья вызовет интерес по каким-то конкретным вопросам, то я с радостью отвечу на них в комментариях, либо в виде отдельной статьи. В рамках определённых договоренностей, некоторые детали работы с чипом разглашению не подлежат. По этой причине на некоторые вопросы я не смогу ответить или ответы могут задерживаться из-за согласования с руководством.

Подробнее..

Перевод Ковыряемся в чипе M1 от Apple

20.12.2020 00:20:11 | Автор: admin
image

Apple M1, первый чип, созданный инженерами Apple и предназначенный для их собственной линейки компьютеров, превзошел многие конкурирующие микропроцессоры и почти все компоненты, используемые в других устройствах от Apple (особенно в тестах производительности на одно ядро и графических бенчмарках).

Apple была достаточно любезна, чтобы опубликовать фотографию кристалла (это еще одна небольшая деталь, которая приблизила компанию к AMD и Intel, поскольку теперь это традиционная стратегия анонса новых процессоров), и они были быстро разобраны супер-компьютерщиками такими как Андрей Фрумусану из Anandtech.

Мы знаем из самых ранних анонсов, что M1 на базе ARM будет крепким представителем категории SoC.

Вероятно, аналитикам будет проще анализировать процессоры, собранные из чиплетов (ожидается, что такая архитектура ЦП будет вымещать традиционную). Поскольку каждый чиплет, по сути, является отдельным куском кремния. Чтобы разобраться в архитектуре SoC, нужно немного (возможно, много) присмотреться.

image

Выделение отдельных блоков (на изначально неразмеченной карте) Apple M1

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

Особенности M1


У М1 есть ряд отличительных особенностей.

Во-первых, места под кэш-память на кристалле выделено весьма немного. Инженеры Apple сосредоточились на функциональности, а не на объеме памяти. Архитектура UMA, используемая в M1 освобождает пространство на кристалле, при этом обеспечивает быстрый доступ к LPDDR4X-памяти. UMA позволяет разделять отдельные компоненты памяти как между ядрами ЦП, так и графическим процессором, чтобы оптимизировать структуру чипа. Сохранение физической близости модулей памяти это концепция, заимствованная у мобильных процессоров, в которых память размещается поверх процессоров как в архитектуре упакованных систем. Об этом много говорили ранее если вкратце, то подобный подход в компьютерах применяется для повышения производительности и эффективного рассеивания тепла, а архитектура, взятая из мобильных устройств, обеспечивает компактность и энергоэффективность.

Значительная часть чипа M1 выделена под графический модуль. Вы можете себе сказать, что это неудивительно. И это так. Никто и не ожидал, что Apple пожертвует производительностью графики. В какой-то мере, этот подход также взят из мобильной архитектуры.

Еще один важный аспект устройства чипа M1 заключается в том, что Apple предпочла увеличить количество логических ячеек (а не физических ядер). Таково преимущество разработки процессоров под собственную ОС некоторые функции можно встраивать в прошивку и разгружать ЦП для выполнения более сложных задач. Мой хороший друг и отличный технологический аналитик Пол Болдт неоднократно говорил об этом. В одной из его статей приводится цитата Алана Кея, которую я вставлю и в этот текст: Люди, которые действительно серьезно занимаются ПО, должны производить и свое железо.

image

Стив Джобс цитирует Алана Кея

Интересную возможность представляет технология flip-chip, используемая для сборки самых передовых микросхем. О ней я писал в одном из своих предыдущих текстов она позволяет быстро получать изображения с устройством чипа за счет прозрачности кремния для инфракрасного излучения. Такой подход экономит время и деньги.

Простота доступа к M1 в Mac Mini также позволила наблюдать за чипом во время тестирования в бенчмарках.

Используя тепловизор, можно отслеживать активные области чипа по их температуре. На изображении, приведенном ниже в качестве примера, есть ярко-желтое пятно это высокопроизводительное ядро, активное во время работы компьютера. Благодаря раннему доступу к бенчмаркам (таким как Geekbench 5), созданным специально для процессора M1, температурный анализ позволил выявить расположение ядер Firestorm и Icestorm, графического и нейронного процессоров и многих других компонентов.

Температурный анализ был очень полезен и открыл двери для других методов тестирования. Впрочем, другие вычислительные платформы (особенно мобильные) затрудняют проведение анализа. Но если есть желание, то найдется и решение. Что еще более важно (и очевидно на рынке полупроводников), если есть достаточный бюджет, то все получится.

image

Снимок M1 с тепловизора в режиме работы одного ядра (Источник: MuAnalysis)

Хотя большая часть внимания к M1 связана с его архитектурой (и так и должно быть), в дизайне и структуре процессора интересны не только технические детали. Подложки M1 BGA с двумя установленными бок о бок модулями памяти LPDDR4X и полностью инкапсулированными пакетами BGA DRAM идентичны (или очень похожи) мобильным процессорам серии A, используемыем в iPad A12X и A12Z.

Вероятно, лучший инструмент для получения общего представления о сложной структуре устройства, при этом обеспечивающий детальность изображения это рентгеновская компьютерная томография. Компания System Plus Consulting опубликовала обзор результатов компьютерной томографии и проанализировала интеграцию как поверхностных, так и встроенных в подложку кремниевых развязывающих конденсаторов в M1. Эта информация о чипе является частью стандартного анализа затрат от System Plus Consulting.

image

Перспективный рентгеновский снимок КТ пакета M1

System Plus недавно обновила свои доклады о затратах включив туда сведения, отсутствующие в их предыдущих отчетах. По словам генерального директора System Plus Ромена Фро, Новый чип M1 от Apple позволил System Plus воспользоваться двумя новыми методами анализа. Мы составили отчет об архитектуре чипа и провели анализ его поверхности с помощью просвечивающего электронного микроскопа (в дополнение к нашему стандартному отчету о стоимости, в котором анализируются сами кристалл и корпус). Новая методика формирования отчетов значительно повысит ценность наших услуг в области сравнительного анализа.

Какую роль сыграл iPad Pro?


В течение нескольких лет вокруг iPad Pro и его значения для Apple, было много дискуссий и предположений. Будет ли iPad Pro заменой ноутбуку? Это мнение также вызвало обсуждение возможного перехода тандема мобильных процессоров и iOS на компоненты для персональных компьютеров.

Несомненно, iPad Pro был частью этого пути Apple. Повторение архитектуры чипа на iPad, Macbook Air и Pro, а также на Mac mini, безусловно, указывает на стремление к обобщению.

image

M1 и A12X внешне идентичны

Основным параметром сравнительного анализа продуктов является стоимость. Группам конкурентной разведки, работающим в компаниях-производителях микросхем, вероятно, не придется далеко ходить, чтобы сравнить характеристики других продуктов со своими собственными разработками. Заметное конкурентное преимущество может быть получено за счет оптимизации структуры затрат по сравнению с конкурентами. Разделение устройств на уровне голых кристаллов позволит раскрыть эти аспекты с разумной степенью детализации с учетом правильного опыта, понимания отрасли и моделирования.

Что делает эту работу действительно увлекательной, так это возможность раскрыть инновации, которые помогают отрасли полупроводникового развиваться и двигают этот рынок вперед.




image

Вакансии
НПП ИТЭЛМА всегда рада молодым специалистам, выпускникам автомобильных, технических вузов, а также физико-математических факультетов любых других высших учебных заведений.

У вас будет возможность разрабатывать софт разного уровня, тестировать, запускать в производство и видеть в действии готовые автомобильные изделия, к созданию которых вы приложили руку.

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

Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.



О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

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

Подробнее..

Вспомнить всё. Разбираемся в полупроводниковой памяти

29.12.2020 18:11:47 | Автор: admin

Когда я писал в начале года статью Кто есть кто в мировой микроэлектронике, меня удивило, что в десятке самых больших полупроводниковых компаний пять занимаются производством памяти, в том числе две только производством памяти. Общий объем мирового рынка полупроводниковой памяти оценивается в 110 миллиардов долларов и является постоянной головной болью участников и инвесторов, потому что, несмотря на долгосрочный рост вместе со всей индустрией микроэлектроники, локально рынок памяти очень сильно лихорадит 130 миллиардов в 2017 году, 163 в 2018, 110 в 2019 и 110 же ожидается по итогам 2020 года.

Топ-10 мировых микроэлектронных компаний, производители памяти выделены красным.Топ-10 мировых микроэлектронных компаний, производители памяти выделены красным.

Объем рынка памяти близок к трети всей микроэлектроники, а в десятке самых больших компаний памятью занимается половина. Так чем же полупроводниковая память такая особенная? Давайте разбираться.

Особую важность памяти придает то, что ее всегда нужно много. Я бы даже сказал, что ее всегда нужно больше, чем есть. Билл Гейтс, которого вы наверняка сейчас вспомнили, на самом деле никогда ничего не говорил про 640 Кб, примерно как Мария-Антуанетта ничего не говорила про пирожные. Впрочем, в начале восьмидесятых 640 КБ были огромной цифрой. И что с того, что памяти нужно много? спросите вы. Очень просто большие тиражи позволяют разработчикам концентрироваться на одном продукте и оптимизировать не только дизайн, но и технологию производства. Сейчас в большинстве случаев чипы памяти производятся на фабриках, специально предназначенных для чипов памяти и принадлежащих производителям памяти. Это принципиальное отличие от всех остальных типов микросхем, где пути разработчиков и производителей давным-давно разошлись, и бал правят контрактные фабрики типа TSMC.

Начнем, собственно, с определения и классификации. Точнее, с классификаций, потому что типов памяти очень много, и различных применений тоже. Классическое разделение памяти по применению на кэш-память, оперативную память и память хранения данных. Оно же примерно соответствует делению на статическую (SRAM), динамическую память (DRAM) и диски (HDD и SSD).

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

Диаграмма иерархии памяти в вычислительных системах, с относительными объемами памяти и задержками обращения.Диаграмма иерархии памяти в вычислительных системах, с относительными объемами памяти и задержками обращения.

Кэш-память

Самый первый уровень памяти в вычислительной системе это регистровый файл и кэш-память. Для них определяющее значение имеет скорость доступа, а вот объем может быть небольшим, особенно если его вдумчиво наполнять. Кэш обычно делается на основе статической памяти. Ячейка статической памяти может быть выполнена по-разному, но обязательно содержит в себе положительную обратную связь, которая позволяет хранить информацию и не терять ее (в отличие от динамической памяти, которой требуется периодическая перезапись). В КМОП-технологии ячейка статической памяти состоит из четырех транзисторов собственно запоминающего элемента и одного и более транзисторов, обеспечивающих чтение и запись информации. Промышленный стандарт так называемая 6T-ячейка.

Электрическая схема 6T-ячейки SRAMЭлектрическая схема 6T-ячейки SRAM

Шесть транзисторов это очень много, особенно в сравнении с DRAM или флэш-памятью, где для хранения одного бита информации требуется два, а то и всего один элемент. Тем не менее, скорость работы сделала свое дело, и в большинстве современных цифровых микросхем статическая память занимает десятки процентов площади. Этот факт, кстати, сделал ячейку SRAM точкой опоры в определении проектных норм производства чипов: когда маркетинговые цифры те самые пресловутые 28, 7 или 5 нм отвязались от физических размеров элементов на кристалле, улучшение плотности упаковки стали считать как соотношение площади ячейки SRAM на старом и новом техпроцессах. Если в новой технологии ячейка стала в два раза меньше, значит проектные нормы уменьшились в корень из двух раз.

Разные варианты топологии шеститранзисторной ячейки статической памяти. Источник G. Apostolidis et. al., Design and Simulation of 6T SRAM Cell Architectures in 32nm Technology, Journal of Engineering Science and Technology Review, 2016Разные варианты топологии шеститранзисторной ячейки статической памяти. Источник G. Apostolidis et. al., Design and Simulation of 6T SRAM Cell Architectures in 32nm Technology, Journal of Engineering Science and Technology Review, 2016

Отдельные чипы SRAM были популярны в составе многокристалльных микропроцессоров, таких как девайсы, построенные на базе серии Am2900 или советской 581 серии. При этом, как только появилась возможность поместить достаточно транзисторов на один чип, кэш-память стали размещать на том же кристалле, что и вычислитель, чтобы сэкономить мощность и увеличив скорость работы, избавившись от медленных и громоздких соединений между чипами. В современных микропроцессорах на одном кристалле помещается многоуровневый набор блоков кэш-памяти объемом в несколько Мегабайт. Это, кстати, привело к тому, что рынок SRAM как отдельного продукта практически перестал существовать: его объем оценивается всего в 420 миллионов долларов, то есть в 0.3% от всего рынка полупроводниковой памяти, и продолжает сокращаться. Последние из остающихся могикан чипы для тяжелых условий эксплуатации, вроде космоса, высокотемпературных промышленных установок или медицинской техники, где нельзя свободно применять обычные коммерческие микросхемы и где из-за этого микроэлектронный прогресс несколько отстает. Есть некоторые перспективы роста в автомобильной электронике и в интернете вещей, где для постоянно включенных устройств не играет роли главный недостаток SRAM неспособность хранить информацию после отключения питания. Только хранить, а не обрабатывать SRAM может с минимальным энергопотреблением, так что это может быть интересным вариантов. Впрочем, в этой конкретной нише, кроме флэш-памяти, есть еще активно развивающиеся новые виды памяти, такие как MRAM, так что перспективы на самом деле весьма туманны, а производители один за одним уходят из стагнирующего сегмента, что позволило Cypress получить больше половины рынка повторюсь, крошечного по мировым меркам.

Оперативная память и динамическая память

Главный недостаток статической памяти большое количество элементов в каждой ячейке, прямо транслирующееся в высокую стоимость, а также в большие габариты. Для того, чтобы преодолеть этот недостаток (а на самом деле еще и огромные габариты повсеместно использовавшейся в шестидесятых и начале семидесятых памяти на магнитных сердечниках) была придумана динамическая память.

Схемы ячейки динамической и статической памятиСхемы ячейки динамической и статической памяти

Намного более простая ячейка позволяет существенно увеличить количество памяти на кристалле. Уже самый первый серийный кристалл DRAM (Intel 1103) в 1970 году содержал 1024 бита, а современные чипы умещают уже 16 Гигабит! Это стало возможным благодаря постоянному прогрессу технологии производства, а именно разнообразным улучшениям конструкции интегрального конденсатора. Если в самых первых чипах использовалась просто МОП-емкость, крайне похожая по конструкции на транзистор, в современных чипах DRAM конденсатор для экономии площади располагается не горизонтально, а вертикально, под или над транзистором.

Условная схема прогресса технологии производства DRAM.Условная схема прогресса технологии производства DRAM.

То, что технологический прогресс в области DRAM сосредоточен на конденсаторе, и обусловило обособление отрасли и появление компаний, специализирующихся на разработке памяти и больше ни на чем.

Небольшой исторический экскурс, про Intel

Компания Intel была основана в 1968 году с прицелом на рынок памяти. Основатели фирмы считали, что относительно новые тогда интегральные схемы имеют потенциал вытеснить с рынка вычислительных машин память на магнитных сердечниках. Первыми продуктами Intel были чипы биполярной статической памяти, почти сразу же за ними последовала серия крайне успешных чипов DRAM, а вот заказы на разработку микропроцессоров очень долго рассматривались как что-то временное и побочное до середины восьмидесятых, когда серьезная конкуренция со стороны японских производителей DRAM, таких как Toshiba, вынудила компанию уйти с рынка памяти.

Позднее, Intel развивал бизнес по производству флэш-памяти, совместно с другой американской компанией, Micron, но буквально на днях продал эти активы ей же, и в ближайшем будущем под маркой Intel будет выпускаться только память Optane, основанная на фазовых эффектах.

Общий объем мирового рынка DRAM оценивается в 60-80 миллиардов долларов и составляет чуть больше половины мирового рынка памяти. Оставшуюся часть почти целиком занимает NAND Flash, а на долю всего остального разнообразия приходится не более трех процентов рынка. Производство чипов DRAM держится на трех китах корейских Samsung и SK Hynix, а также американской компании Micron. Все три в пятерке крупнейших полупроводниковых компаний мира, причем если Samsung чем только не занимается, то Micron и SK Hynix производят только памяти, DRAM и Flash. Три гиганта занимают без малого 95% рынка, а остатки рынка почти полностью разделены между несколькими тайваньскими компаниями.

Основные рыночные ниши это потребительская электроника, включая смартфоны (40-50%), а также персональные компьютеры (15-20% ), серверное и телекоммуникационное оборудование (20-25%). Самые большие перспективы роста при этом ожидаются в автомобильном секторе, благодаря разного рода автопилотам и другим системам помощи водителю, а также в вычислениях, связанных с искусственным интеллектом.

Стоит отметить, что все чаще речь идет не о привычных нам планках памяти, а об аккуратной интеграции чипов на плату телефона или даже непосредственно в корпус процессора, в виде так называемой HBM high bandwidth memory. Такая конфигурация позволяет увеличить пропускную способность памяти за счет использования многоразрядных шин, которые нет возможности реализовать при соединении корпусов на печатной плате, уменьшить задержки и потребление, а также эффективно разместить кристаллы памяти в несколько слоев, разместить большую емкость на меньшей площади.

Внутренности корпуса графического ускорителя AMD Fiji. Центральный кристалл собственно вычислитель, по обеим сторонам упакованные в несколько слоев чипы HBM DRAM.Внутренности корпуса графического ускорителя AMD Fiji. Центральный кристалл собственно вычислитель, по обеим сторонам упакованные в несколько слоев чипы HBM DRAM.

Впрочем, и планки памяти тоже никуда не денутся в обозримом будущем, и спрос на них стабильно растет стараниями не только геймеров, но и производителей серверов. Объем рынка модулей памяти составляет приблизительно 16 миллиардов долларов, и он выглядит как Гулливер в окружении лилипутов рыночная доля Kingston Technology превышает 80%, против 2-3% у ближайших конкурентов. При этом сами чипы Kingston закупают у двух из трех больших производителей Micron и SK Hynix. Samsung не привлекается, видимо, в силу того, что большинство их чипов DRAM предназначено для мобильных телефонов.

Еще один небольшой исторический экскурс, про Kingston

Kingston американская компания, основанная в 1987 году, стала одним из пионеров внедрения SIMM-модулей как удобной альтернативы прямому поверхностному монтажу микросхем памяти. Быстро развиваясь на фоне роста рынка персональных компьютеров, Kingston стали единорогом с миллиардной капитализацией уже к 1995 году, и с тех пор выросли еще на порядок, увеличив долю на рынке модулей DRAM c 25% до 80% и расширившись на производство других продуктов, таких как SSD, где Kingston тоже является мировым лидером, правда с более скромными 26% мирового рынка против 8% и 6% у ближайших конкурентов.

Модуль оперативной памяти Kingston. Обратите внимание на плотность упаковки чипов на плате.Модуль оперативной памяти Kingston. Обратите внимание на плотность упаковки чипов на плате.

Kingston - интересный пример того, как можно быть успешной электронной компанией без собственной разработки микросхем и без полной вертикальной интеграции, популярной в последнее время. Добавленную стоимость и уникальные характеристики можно обеспечить на разных этапах создания продукта, и как раз Kingston как успешная электронная компания без собственного производства микросхем может быть хорошим примером для отечественных разработчиков.

А что же японцы, правившие бал в восьмидесятых и вытеснившие с рынка DRAM Intel? В 1999 году профильные подразделения Hitachi и NEC объединились в компанию Elpida, которая позже поглотила DRAM-бизнес Mitshibishi. В двухтысячных компания активно развивалась, много вкладывала в перспективные производства и была поставщиком, например, для Apple.Но финансовый кризис 2009 года очень сильно подкосил Elpida, и в 2012 году она была вынуждена подать на банкротство, после чего была куплена Micron.

На этой печальной ноте давайте заканчивать с DRAM и переходить к flash-памяти, где все еще есть по крайней мере одна успешная японская компания.

Флэш-память и системы хранения данных

Главный недостаток как SRAM, так и DRAM то, что информация в них пропадает в случае, если им отключить питание. Но, сами понимаете, никогда не отключать питание довольно затруднительно, поэтому всю историю вычислительной техники использовались какие-нибудь системы для постоянного хранения данных начиная от перфокарт. Большую часть времени в качестве систем постоянного хранения данных использовались магнитные носители лента или жесткий диск. Жесткие диски сложные электромеханические системы, которые прошли огромный путь от первого образца IBM размером с небольшой холодильник, до 2.5-дюймовых HDD для ноутбуков. Тем не менее, прогресс в микроэлектронной технологии был быстрее, и сейчас мы с вами наблюдаем процесс практически полного замещения жестких дисков полупроводниковыми SSD. Последним годом денежного роста для рынка HDD был 2012, и сейчас он составляет уже не более трети от рынка флэш-памяти.

Разные поколения жестких дисков.Разные поколения жестких дисков.

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

Структура ячейки флэш-памятиСтруктура ячейки флэш-памяти

Чтение из флэш-памяти происходит следующим образом: на сток транзистора подается напряжение, после чего измеряется ток через транзистор. Если ток есть, значит на одном из двух затворов есть напряжение, если тока нет на обоих затворах ноль.

На практике структура чипов флэш-памяти несколько сложнее, потому что, кроме самого транзистора, есть еще металлизация управляющих линий, и инженерам пришлось пойти на некоторые ухищрения, чтобы уменьшить ее площадь. Изначально типов флэш-памяти было два NOR Flash и NAND Flash, различающихся как раз способом доступа к ячейкам. Названы они так по подобию соединения ячеек с соответствующими логическими элементами в NAND последовательно, в NOR параллельно.

Сравнение архитектур NOR Flash и NAND FlashСравнение архитектур NOR Flash и NAND Flash

Чтение из NOR Flash происходит ровно так, как описано выше, и позволяет удобно добраться до любого интересующего нас куска памяти. Чтение из NAND Flash несколько более занятно: для того, чтобы узнать значение интересующего нас бита в последовательно включенном стеке, нужно открыть управляющие затворы всех остальных транзисторов тогда на состояние выхода будет влиять только интересующий нас бит. Согласитесь, заряжать-разряжать множество управляющих затворов ради того, чтобы узнать значение только одного бита это как-то чересчур расточительно? Особенно с учетом того, что мы должны открыть управляющие затворы всех транзисторов не только в интересующем нас стеке, но и во всех соседних стеках, подключенных к тем же word line. Именно поэтому на практике NAND Flash читается не побитно, а целыми страницами. Это может показаться неудобным, ведь мы, по сути, делаем нашу память не совсем random-access.

Любые рассуждения на тему того, что лучше NAND Flash или NOR Flash, неизбежно натыкаются на мнение рынка, сделавшего однозначный выбор: объем рынка NAND 40-60 миллиардов долларов, а NOR около четырех. Почему же побеждает менее удобная память? Дело на самом деле не в удобстве или неудобстве, а в целевых приложениях и в стоимости. NOR Flash удобнее и быстрее читается, но очень медленно записывается, зато ячейка NAND Flash в два с лишним раза меньше, что, разумеется, критично в ситуации, когда вам нужно БОЛЬШЕ ПАМЯТИ.

Кроме того, если немного подумать над главным недостатком NAND Flash чтением только большими кусками, то в обычной вычислительной системе чтение из долгосрочной памяти в любом случае происходит большими кусками чтобы оптимизировать работу кэш-памяти и минимизировать число кэш-промахов. То есть этот недостаток на самом деле и не недостаток вовсе. Так что по факту единственное настоящее преимущество NOR Flash быстрота чтения, и ее основные применения так раз те, где требуется быстрое чтение, но не нужна частая и быстрая запись. Например, прошивки разнообразных embedded девайсов, где NOR Flash активно заменяет другие виды EEPROM.

Небольшое отступление: PROM

И, раз уж я упомянул EEPROM, нелишне обсудить и экстремальный случай когда память только читается, но не перезаписывается то есть Read-Only Memory или ROM. Такая память гораздо чаще используется в промышленных применениях и для разнообразных прошивок. Такая память может быть запрограммирована на этапе производства с помощью наличия или отсутствия металлических соединений (или транзисторов, как это было сделано в Intel 8086. Но что, если раз-другой записать память все-таки нужно, причем уже после того, как чип произведен? На этот случай существует довольно много разновидностей PROM (P programmable), довольно часто встраиваемых на кристалл вычислительной системы, например, микроконтроллера, но продолжающих активно использоваться и в качестве отдельных чипов.

Самый простой вариант это однократно программируемая память типа Antifuse, она же память на пережигаемых перемычках. Идея очень проста: у нас есть структура (транзистор или резистор), которая может быть необратимо разрушена, превратившись в короткое замыкание или разрыв цепи. Чтение такой памяти выглядит как проверка на наличие замыкания или разрыва, а запись возможна только один раз, потому что изменение структуры необратимо.

Внешний вид памяти на пережигаемых перемычкахВнешний вид памяти на пережигаемых перемычках

В случае, если может быть нужно записывать память несколько раз, например изредка обновлять прошивку, в дело вступают разные варианты EPROM (E erasable) и EEPROM (EE electrically erasable). Технологически они базируются на транзисторах с плавающим затвором и являются примитивной разновидностью флэш-памяти. Сейчас под термином EEPROM обычно подразумевают NOR Flash c возможностью побайтной записи и удаления данных.

NAND Flash

Что же касается NAND Flash, то ее стоимость за бит уже давно снизилась настолько, что этот вид памяти стремительно завоевывает рынок памяти для хранения информации, один за одним забивая гвозди в крышку гроба HDD и, например, дав на возможность иметь много памяти в крошечных мобильных телефонах. Ключевые производители чипов NAND Flash Samsung (33% и почти половина накопителей для телефонов), Kioxia (бывшая Toshiba, 20% рынка), Western Digital (14%), SK Hynix (11%), Micron (10%), Intel (8%).

Из этого списка, впрочем, надо исключить Intel, которые недавно объявили о переходе своей доли в совместном с Micron производстве к последним и об уходе с рынка флэш-памяти. Еще один интересный игрок Western Digital, один из гигантов HDD, ныне стремительно переориентирующийся на твердотельные диски и ставший для этго уникальным зверем fabless-производителем памяти. WD выкупили для этого больше трети производственных мощностей Kioxia, которые делают одни и те же чипы для себя и для клиента. Еще одно неожиданное последствие переориентации WD они стали одним из наиболее заметных участников коммьюнити RISC-V, активно внедряя эту систему команд в свои контроллеры накопителей.

И в завершение рассказа про NAND Flash, надо непременно рассказать о произошедшей в последние годы технологической революции. Флэш-память, как и обычная микроэлектроника, уже уперлась в технологический предел миниатюризации транзисторов, и если в вычислительных системах можно хотя попробовать отыграть что-то за счет архитектуры, то в памяти плотность упаковки это главное и единственное, что по-настоящему волнует. Поэтому, пока разговоры о переходе обычных КМОП-микросхем в третье измерение все еще остаются разговорами, 3D NAND уже четыре года как массово присутствует на рынке, позволяя разместить на кристалле в десятки, а то и в сотни раз больше ячеек памяти, чем обычное планарное решение.

Схематичный разрез двухмерной и трехмерной NAND Flash памятиСхематичный разрез двухмерной и трехмерной NAND Flash памяти

На электрической схеме выше транзисторы размещены последовательно, сверху вниз, тогда как в планарном варианте изготовления они расположены на плоскости, занимая ценную площадь на кристалле. Однако простая и монотонная структура позволила реализовать самое логичное, что можно сделать сквозной вертикальный канал транзистора, выглядящий примерно так же, как и электрическая схема (и показанный на схеме справ желтым, идущим сквозь зеленые затворы). Разумеется, оно только звучит логично и просто, а на практике создание глубокого отверстия с вертикальными стенками это одна из самых сложных операций, возможных в микроэлектронной технологии. Тем не менее, инженерные задачи были решены, и сейчас такие этажерки, как на рисунке выше, включают в себя уже до 128 транзисторов в серийно производимых чипах и до 192 слоев в девайсах, ожидаемых через год-два. Проектные нормы производства современной флэш-памяти примерно соответствуют уровню 15-20 нм, так что такая плотность упаковки это эквивалент норм 0.1-0.2 нм! В обычном КМОП повторить этот фокус в точности не удастся, но свежие исследования по GAAFET предполагают упаковку нескольких горизонтальных каналов друг поверх друга. Samsung рассчитывают таким образом выйти на уровень 1 нм, а то и чуть меньше.

На этом мы прошли полный путь от кэша микропроцессора до памяти долговременного хранения и посмотрели на технологии, занимающие больше 97% рынка полупроводниковой памяти. Однако в оставшихся небольших процентах, в числе прочего скрываются и новые перспективные типы памяти, на которые тоже было бы неплохо взглянуть.

Новые типы энергонезависимой памяти

Читая научные исследования новых видов полупроводниковой памяти, я в какой-то момент перестал воспринимать их всерьез, потому что обещания златых гор можно было лицезреть ежегодно, а вот с готовыми к серийному производству продуктами вечно была напряженка. В основном исследования концентрировались и концентрируются на том, чтобы преодолеть разрыв между DRAM и флэш-памятью, создав нечто одновременно быстрое, энергонезависимое и дешевое. Никаких серьезных достижений на этом поприще пока не достигнуто, и те разработки, которые все же дошли до стадии коммерциализации, в основном составляют небольшую долю от рынка EEPROM, как в виде отдельных чипов, так и дополнительных опций в КМОП-технологии.

Три наиболее зрелых технологии такого рода это MRAM (магнитная RAM), FRAM (ферроэлектрическая или сегнетоэлектрическая RAM) и PCM (phase-change memory).

FRAM основана на сегнетоэлектрическом эффекте свойстве некоторых материалов менять свои свойства под действием высокого напряжения. В частности, в FRAM используется изменение емкости конденсатора. Эта память появилась в серийных продуктах, например в микроконтроллерах MSP430, еще двадцать лет назад, то почти тогда же проявился ее главный недостаток пленки сегнетоэлектрических слоев оказались плохо масштабируемыми, и развитие технологии остановилось на уровне 130 нм, а существующие до сих пор продукты в основном довольно старые радиационностойкие микросхемы. Впрочем, в последние годы работы по сегнетоэлектрикам снова активизировались, и возможно нас ждет новое пришествие FRAM, на этот раз в виде FeFET, где из сегнетоэлектрика будет делать затвор транзистора.

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

PCM класс памяти, основанной на изменении фазового состояния некоторых веществ, например с кристаллического в аморфное, под действием внешних факторов типа высокого напряжения или кратковременного нагрева (обычно проводимого при помощи пропускания большого тока через запоминающий элемент). Потенциальные преимущества PCM примерно такие же, как у MRAM быстрое чтение и большое количество циклов перезаписи, что в теории может позволить заменить даже все три типа памяти одним унифицированным решением. На практике же изначальное внедрение PCM обернулось грандиозным провалом: в 2012 году Micron с помпой представили серийную линейку для применения в мобильных телефонах, однако уже к 2014 году все эти продукты были отозваны с рынка. Их вторая попытка стала более успешной совместно с Intel в 2017 году была представлена память 3D Xpoint и линейка SSD Optane (Intel) X100 (Micron). Продажи пока что невелики, но отзывы потребителей довольно хорошие. Посмотрим, выдержит ли новая технология проверку времени и сможет ли действительно потеснить традиционные SSD на основе NAND Flash.

Традиционная невеселая рубрика А что в России?

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

Во-первых, есть какое-то количество микросхем SRAM. Самый технологически продвинутый продукт микросхема 1663РУ1, представляющая собой 16 Мбит статической памяти по нормам 90 нм, производства завода Микрон. Кроме этого чипа, есть и другие, в основном предназначенные для аэрокосмических применений.

Кроме статической памяти, есть еще одно производство Крокус-наноэлектроника, производящая MRAM. Расположенная в Москве фабрика КНЭ единственная в России, умеющая работать с пластинами диаметром 300 мм. Правда, Крокус-нано не обладает полным циклом производства, а может делать только металлизацию и совмещенные с ней магнитные слои, формирующие ячейку MRAM. Транзисторная часть при этом должна быть изготовлена на другой фабрике (иностранной, потому что в России с пластинами 300 мм работать некому). На сайте КНЭ заявлена доступность микросхем объемом от 1 до 4 Мбит, скоростью считывания 35 нс и записи 35/90/120/150 нс. Еще немного света на функционирование и происхождение этих чипов проливают также заявленные в качестве продуктов на официальном сайте сложнофункциональные блоки MRAM, совместимые с техпроцессами китайской фабрики SMIC и израильской TowerJazz. Вероятно, именно эти производители являются технологическими партнерами и при производстве собственных чипов КНЭ.

Последнее, о чем стоит упомянуть в контексте производства памяти в России это твердотельные системы хранения данных, являющиеся одним из важных драйверов импортозамещения в российской электронике. Российский рынок подобных систем оценивается в 122 миллиона долларов, доля отечественной продукции растет, идут жаркие споры насчет протекционистского законодательства и сравнения качества отечественных и импортных решений в общем, настоящая жизнь. К сожалению, как уже было сказано выше, о собственном производстве чипов NAND flash речи не идет, и под импортозамещением понимается сборка импортных чипов в корпус и на плату, а также разработка или адаптация встроенного ПО. Из хороших новостей в России ведутся разработки микросхем контроллеров флэш-памяти. Собственные контроллеры, хоть и не смогут решить проблему технологического отставания и зависимости от импорта, позволяют обеспечить контроль за функционированием импортных кристаллов памяти и безопасность решений на их основе. На этой позитивной ноте, я пожалуй, и закончу на сегодня.

Подробнее..

24x01 I2C на ATTINY13 без TWI

19.12.2020 14:20:36 | Автор: admin

Казалось бы что тут такого сложного, ну I2C ну без TWI.

Моя реальная задача обстояла чуть шире, в устройстве устанавливался чип в режиме "Reset" контроллера, для экономии места в программируемой логике, задача этого чипа состояла в том чтобы получив на входе короткий импульс как сигнал к началу генерации "длинного" сброса, чип удерживал одну из линий в течении довольно длительного промежутка времени в низком уровне (в программируемой логике можно было сделать цепочку из триггеров в качестве счетчика, но линейка триггеров занимала почти 80 ячеек в CPLD EPM240T100 и место там ой как нужно) к тому же этот чип должен был хранить данные полученный от внешнего устройства по шине I2C в режиме 1 (mode1).

Вообще существует три режима I2C, 2-ой и 3-ий режимы рассчитаны на то что на шине I2C висит гирлянда из устройств, таким образом прежде чем начать работать с устройством на шине в режиме 2 и 3 нужно сначала выбрать устройство, затем уже отправлять в него адреса и данные. Режим 1 это простейший режим работы I2C, пользователь сразу отправляет в чип адрес по которому необходимо записать или прочитать данные и работает с данными.

Вот собственно о чем я говорю (MODE1):

А это MODE2:

В общем-то тут всё итак понятно, но! Здесь есть три задачи:

  1. В ATTINY13 нет аппаратного I2C.

  2. Чип должен выполнять ещё и сброс (хотя для данной статьи это не особо важно).

  3. И финальная проблема 24x01 предполагает объем EEP 128 байт, а в данном чипе EEPROM объемом только 64 байта.

Первая проблема ставит задачу реализации протокола, в том числе отслеживание ошибок на шине, кодом, - тут для нас ассемблер, вторая задача это не особо сложная реализация алгоритма сброса, а вот третья задача выглядит чуть сложнее. Теоретически мы можем задействовать часть памяти FLASH не занятой нашей реализацией, но EEPROM можно писать побайтно, а FLASH только страницами, поэтому прежде чем записать во FLASH полученные данные я обязан сохранить состав всей страницы в памяти микроконтроллера, "подменить" полученные данные внутри страничного буфера, стереть страницу, записать новый состав страницы. При этом запись может попасться в смежные страницы, то есть на стыках. Таким образом я должен произвести запись в два этапа:

В общем я так понимаю зачастую лирика мало кого интересует, тут CTRC+C и CTRL+V чаще применяется, поэтому выкладываю уже код.

Только сперва Коментарии:

  1. CHIP_PINOUTS - Как расположить выводы на чипе (FT24Cxx - стандартная раскладка чипа I2C, InDRIVE_v4 - раскладка под реализацию с контроллером сброса).

  2. I2C_MODE - Режим работы I2C (MODE_1 и MODE_2).

  3. I2CPAGESIZE - размер страницы I2C при страничном режиме записи.

  4. I2CEEPSIZE - общий объем памяти чипа (реализация в коде сначала использует 64 байта EEPROM, затем растягивает "остатки" во FLASH).

  5. RESET_CNT - наличие контроллера сброса (ON - присутствует, OFF - отсутствует).

Собственно перейдем к проверке, достаем TLL866

Загружаем откомпилированную программу (AVR Studio v4), я пролистал в конец чтобы показать состав "псевдо EEP":

Ставим правильные конфигурационные биты и записываем микропрограмму в нашу ATTINY13:

Ага, а теперь не извлекая чип пишем его в режиме I2C EEPROM Mode1 с проверкой:

Работает. Что и требовалось.

Код I2C EEP для ATTINY13
/*InDRIVE v4 Application (chip like: FT24C01, Selfprg Must Be Enabled!!! )Fuse BYTESLow(0x7A) : High(0xEE) :SPIEN = 1SELFPRGEN = 1EESAVE = 0DWEN = 0WDTON = 0BODLEVEL1 = 0CKDIV8 = 0BODLEVEL0 = 0SUT1 = 0RSTDISBL = 1SUT0 = 1CKSEL1 = 0CKSEL0 = 1*/.include "tn13def.inc"/* On/Off Defines */.equOFF=0.equON=1/* Chip Pinouts */.equFT24Cxx=0.equInDRIVE_v4=1/* Reset Controller Enable/Disable */.equRESET_CNT=OFF/* Chip Pinouts Define: InDrivev4/Regular I2C Chip */.equCHIP_PINOUTS=FT24Cxx.equDEBUG=OFF/* I2C Mode Define MODE 1/MODE 2 */.equMODE_1=1.equMODE_2=2.EQUI2C_MODE=MODE_1/* Define I2C Parameters *//* Page Size for Write in BYTES 4/8/16 *//* 128/256 Size in MODE 1 Protocol can't receive more than 128 Bytes */.IF I2C_MODE == MODE_2.MESSAGE "Compile for I2C Mode 2".equI2C_PAGE_SIZE=8.equI2C_EEP_SIZE=256.ELSE.MESSAGE "Compile for I2C Mode 1".equI2C_PAGE_SIZE=4.equI2C_EEP_SIZE=128.ENDIF/* Modes DefineA - AddressiD - Data From MasteroD - Data To MasterMODE 1Write - [START][AAAAAAA0][iD + 0]...[iD + I2C_PAGE_SIZE - 1][STOP]Read -  [START][AAAAAAA1][oD + 0]...[oD + I2C_EEP_SIZE - 1][STOP]MODE 2 Write - [START][10100000][AAAAAAAA][iD + 0]...[iD + I2C_PAGE_SIZE - 1][STOP]Read -  [START][10100001][oD + 0]...[oD + I2C_EEP_SIZE - 1][STOP]*//*I2C slave, fSCL = 400kHzFULLY Implemented I2C Protocol for 24xx01/24xx02And RESET Controller FOR InDRIVE(v4)**************************************************************   ATTINY13A I2C Configuration**************************************************************      pin configuration InDRIVE v4:                       ,---_---.    (RESET/PB5)     nc |1     8| VCC          (PB3)  inRST |2     7| SCL  (PB2)          (PB4) outRST |3     6| EMU24X (PB1) SDA pin from CORE                   GND |4     5| nc (PB0) unused SDA pin                       `-------'   pin configuration FT24C01:                       ,---_---.    (RESET/PB5)     nc |1     8| VCC          (PB3)  nc |2     7| nc  (PB2)          (PB4) nc |3     6| SCL (PB1) SCL pin I2C                   GND |4     5| SDA (PB0) SDA pin I2C                       `-------'   pin configuration FT24C02:                       ,---_---.    (RESET/PB5)     A0 |1     8| VCC          (PB3)  A1 |2     7| nc  (PB2)          (PB4) A2 |3     6| SCL (PB1) SCL pin I2C                   GND |4     5| SDA (PB0) SDA pin I2C                       `-------'*//* Pins Define */.IF CHIP_PINOUTS == InDRIVE_v4.MESSAGE "Chip Pinouts: InDRIVE v4".equEMU24X= 1.equ SCL = 2.ELSE.equEMU24X= 0.equ SCL = 1.MESSAGE "Chip Pinouts: Regular 24Cxx".ENDIF.equ SDA = EMU24X.equ ACK = SDA.equinRST= 3.equoutRST= 4.defTMPnoINT=R19.defCounter=R3.defCounterInWrite=R4.defSREGST=R5/* Real ATTINY13A FLASH Page SIZE In Bytes */.equPAGESIZEB=(PAGESIZE*2)/* SRAM Mapping */.DSEG.IF I2C_MODE == MODE_2_I2c_device_inaddr:  .BYTE 1/* MODE 2 Region */_I2c_device_myaddr:  .BYTE 1.ENDIF_valSPMCSR: .BYTE 1_I2c_data_buffer:.BYTE I2C_PAGE_SIZE_I2c_FLASH_buffer:.BYTE PAGESIZEB.cseg/* Read/Write Pointers */.defI2c_start_addr=R16.defI2c_wr_counter=R17.defI2c_wr_pointer=R18.defI2c_rd_pointer=R21.def_PINB=R20.IF I2C_MODE != MODE_2.IF I2C_MODE != MODE_1.error "Invalid mode for I2C Selected, please correct I2C_MODE define".ENDIF.ENDIF.cseg.org 0//Reset.IF RESET_CNT == ONrjmpWaitinRSTHI;RESETreti;INT0addr= 0x0001; External Interrupt 0rjmpResetInProcess;PCI0addr= 0x0002; External Interrupt Request 0.ELSErjmpmain;RESETreti;INT0addr= 0x0001; External Interrupt 0reti;PCI0addr= 0x0002; External Interrupt Request 0.ENDIFreti;OVF0addr= 0x0003; Timer/Counter0 Overflowreti;ERDYaddr= 0x0004; EEPROM Readyreti;ACIaddr= 0x0005; Analog Comparatorreti;OC0Aaddr= 0x0006; Timer/Counter Compare Match Areti;OC0Baddr= 0x0007; Timer/Counter Compare Match Breti;WDTaddr= 0x0008; Watchdog Time-outreti;ADCCaddr= 0x0009; ADC Conversion Complete// *******************************************************************************************// **   Reset Processor                                                       **// *******************************************************************************************.IF RESET_CNT == ON.MESSAGE "Reset Controller Function is: ON"ResetInProcess:;Proccess resetsbicpinb,inRST;Process reset on falling edgeretiWaitinRSTHI:cli;Wait ~80 mS 0x04E360 on 9.6MHzldiR16,0x10ldiR17,0xE3ldiR18,0x60;Set RESET EnablecbiPORTB,outRST_CntLO:decR18BRNE_CntLO_CntME:decR17BRNE_CntLO_CntHI:decR16BRNE_CntLO; And Clear Iterrupt flag for normal exitldiR16,(1 << PCIF)outGIFR,R16.ELSE.MESSAGE "Reset Controller Function is: OFF".ENDIF// RESET_CNT == ON// *******************************************************************************************************// **   Main Programm                                                         **// *******************************************************************************************************main:;init STACKldiTMPnoINT,low(RAMEND)outSPL,TMPnoINT;init IOldiTMPnoINT,0x00outMCUCR,TMPnoINT;Outputs to HI (Pull UP)ldiTMPnoINT,0xFFoutPORTB,TMPnoINT.IF RESET_CNT == ON;Output enable for outRST, all other for inputsbiPORTB, outRSTsbiPINB, inRSTsbiDDRB,outRST; Output Enable;Init Interrupt    ldi TMPnoINT, (1 << inRST); set pin change interrupt for inRST    out PCMSK, TMPnoINTldiTMPnoINT, (1<<PCIE); unmask interrupt PCIEoutGIMSK,TMPnoINTSEI;Enable PCIE Int Processing.ELSECLI; Disable Reset Controller.ENDIF.IF I2C_MODE == MODE_2/* Set I2C Device Address */ldiTMPnoINT, 0xA0sts_I2c_device_myaddr,TMPnoINT.ENDIF/* Clear Buffer Pointers */clrI2c_wr_counterclrI2c_wr_pointerclrI2c_start_addrclrI2c_rd_pointermain_loop:lI2c_get:sbi portb,acksbis pinb,scl                                            ;wait for SCL&SDA=1rjmp lI2c_getsbis pinb,sdarjmp lI2c_getlI2c_wait_for_start:sbis pinb,scl                                            ;wait for SCL=1,SDA=0 (START)rjmp lI2c_getsbic pinb,sdarjmp lI2c_wait_for_startlI2c_get_0:                                                  ;clear receive area.IF I2C_MODE == MODE_2clr r22sts _I2c_device_inaddr,r22.ENDIFlI2c_get_1:                                                  ;get 1st bytesbi portb,acklI2c_10:                                                     ;wait for SCL=0sbic pinb,sclrjmp lI2c_10ldi r22,8                                                ;bits to receive=8.IF I2C_MODE == MODE_2lds r23,_I2c_device_myaddr                               ;I2C address->R23.ENDIFlI2c_11:in_PINB, pinbsbrs _PINB,scl                                            ;wait for SCL=1rjmp lI2c_11sbrc _PINB,sdarjmp lI2c_13lI2c_12:                                                     ;if SDA=0sbic pinb,sdarjmp lI2c_wait_for_start                                  ;  SDA 0->1? I2CSTOP! (unexpected: wait for next start)sbic pinb,sclrjmp lI2c_12                                              ;  loop while SCL=1clc                                                      ;  SDA=0->Crjmp lI2c_15lI2c_13:                                                     ;if SDA=1sbis pinb,sdarjmp lI2c_get_1                                           ;  SDA 1->0? I2CSTART! (repeated start)sbic pinb,sclrjmp lI2c_13                                              ;  loop while SCL=1sec                                                      ;  SDA=1->ClI2c_15:rol r24dec r22brne lI2c_11                                              ;loop to next bit.IF I2C_MODE == MODE_2sts _I2c_device_inaddr,r24SUB r24,r23                                              ;my address?cpi r24,2brlo lI2c_ack_1rjmp lI2c_exit                                            ;  no: exit and wait for next start.ENDIFlI2c_ack_1:                                                  ;  yes: generate ackclrI2c_wr_counter; Clear Write Buffer PointersclrI2c_wr_pointerclrI2c_start_addrcbi portb,acksbi ddrb,ack                                             ;pinb.ack = output (ACK)lI2c_ack_10:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_ack_10lI2c_ack_11:sbic pinb,scl                                            ;wait for SCL=0rjmp lI2c_ack_11/**************************************************************************Select Read/Write**************************************************************************/.IF I2C_MODE == MODE_2cpi r24,0breq lI2c_get_2.ELSEmovI2c_start_addr,r24; Extract Received Addresslsr I2c_start_addr; And Read/Write BITmov I2c_rd_pointer,I2c_start_addr; Upadate Read Addressbrcs lI2c_send_new_byte rjmplI2c_ack_25.ENDIF/**************************************************************************Sending Data to Master**************************************************************************/lI2c_send_new_byte:                                             ;read address receivedsbi ddrb,sda                                             ;pinb.sda = output (will send data)/* Read From Flash */andi I2c_rd_pointer, (I2C_EEP_SIZE - 1)LDIZH,high(MemoryBlockFLASH<<1)LDIZL,low(MemoryBlockFLASH<<1)add ZL,I2c_rd_pointerinc I2c_rd_pointerlpmR24, Zldi r22,8.IF DEBUG == 1rjmp lI2c_s1/* Read From SRAM */ReadFromSram:andi I2c_rd_pointer, (I2C_EEP_SIZE - 1)LDIZH,high(_I2c_device_inaddr)LDIZL,low(_I2c_device_inaddr)add ZL,I2c_rd_pointerinc I2c_rd_pointerldR24, Zldi r22,8.ENDIFlI2c_s1:cbi portb,sdasbrc r24,7sbi portb,sdalI2c_s2:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_s2lsl r24lI2c_s3:sbic pinb,scl                                            ;wait for SCL=0rjmp lI2c_s3dec r22brne lI2c_s1sbi portb,sda                                            ;pinb.sda = 0 (will generate ACK)cbi ddrb,sda                                             ;pinb.sda = input (will receive data)lI2c_s4:                                            ;wait acknowloge receivesbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_s4lI2c_s5:sbic pinb,scl                                            ;wait for SCL=0rjmp lI2c_s5sbis pinb,sda;if answer received, - continuerjmplI2c_send_new_byterjmp lI2c_wait_for_start_stop                             ;wait for next start/stop/**************************************************************************Receiving Data from Master**************************************************************************/.IF I2C_MODE == MODE_2lI2c_get_2:                                                  ;write address received: get 2nd bytecbi ddrb,ack                                             ;pinb.ack = output (ACK)lI2c_20:                                                     ;wait for SCL=0sbic pinb,sclrjmp lI2c_20ldi r22,8                                                ;bits to receive=8lI2c_21:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_21sbic pinb,sdarjmp lI2c_23lI2c_22:                                                     ;if SDA=0sbic pinb,sdarjmp lI2c_stop                                            ;  SDA 0->1? I2CSTOP! (finish this sequence)sbic pinb,sclrjmp lI2c_22                                              ;  loop while SCL=1clc                                                      ;  SDA=0->Crjmp lI2c_25lI2c_23:                                                     ;if SDA=1sbis pinb,sdarjmp lI2c_get_1                                           ;  SDA 1->0? I2CSTART! (repeated start)sbic pinb,sclrjmp lI2c_23                                              ;  loop while SCL=1sec                                                      ;  SDA=1->ClI2c_25:rol r24dec r22brne lI2c_21                                              ;loop to next bitmov I2c_start_addr,r24                                         ;store received I2C addressmov I2c_rd_pointer,I2c_start_addr; Upadate Read Address.ENDIFReceiveAcknowloge:cbiportb,sdasbiddrb,sdalI2c_ack_21:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_ack_21sbic pinb,sdarjmp lI2c_ack_23lI2c_ack_22:                                                     ;if SDA=0sbic pinb,sdarjmp lI2c_stop                                            ;  SDA 0->1? I2CSTOP! (finish this sequence)sbic pinb,sclrjmp lI2c_ack_22                                              ;  loop while SCL=1rjmp lI2c_ack_25lI2c_ack_23:                                                     ;if SDA=1sbis pinb,sdarjmp lI2c_get_1                                           ;  SDA 1->0? I2CSTART! (repeated start)sbic pinb,sclrjmp lI2c_ack_23                                              ;  loop while SCL=1lI2c_ack_25:cbi ddrb,ack                                             ;pinb.ack = inputLDIZH,high(_I2c_data_buffer)LDIZL,low(_I2c_data_buffer)lI2c_get_3:                                                  ;get 3rd bytelI2c_30:                                                     ;wait for SCL=0sbic pinb,sclrjmp lI2c_30ldi r22,8                                                ;bits to receive=8movTMPnoINT, I2c_wr_pointerandi TMPnoINT, (I2C_PAGE_SIZE - 1)add ZL,TMPnoINTlI2c_31:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_31sbic pinb,sdarjmp lI2c_33_lI2c_32:                                                     ;if SDA=0sbic pinb,sdarjmp lI2c_stop_                                            ;  SDA 0->1? I2CSTOP! (finish this sequence)sbic pinb,sclrjmp lI2c_32                                              ;  loop while SCL=1clc                                                      ;  SDA=0->Crjmp lI2c_35lI2c_33_:lI2c_33:                                                     ;if SDA=1sbis pinb,sdarjmp lI2c_start_                                           ;  SDA 1->0? I2CSTART! (repeated start)sbic pinb,sclrjmp lI2c_33                                              ;  loop while SCL=1sec                                                      ;  SDA=1->ClI2c_35:rol r24dec r22brne lI2c_31                                              ;loop to next bitinc I2c_wr_counterinc I2c_wr_pointerinc I2c_rd_pointerstZ,R24rjmp ReceiveAcknowlogelI2c_wait_for_start_stop:                                    ;wait for start/stoplI2c_ss_1:sbis pinb,scl                                            ;wait for SCL=1rjmp lI2c_ss_1sbic pinb,sdarjmp lI2c_ss_3lI2c_ss_2:                                                   ;if SDA=0sbic pinb,sdarjmp lI2c_stop                                            ;  SDA 0->1? I2CSTOP! (finish this sequence)sbic pinb,sclrjmp lI2c_ss_2                                            ;  loop while SCL=1rjmp lI2c_ss_1lI2c_ss_3:                                                   ;if SDA=1sbis pinb,sdarjmp lI2c_get_1                                           ;  SDA 1->0? I2CSTART! (repeated start)sbic pinb,sclrjmp lI2c_ss_3                                            ;  loop while SCL=1rjmp lI2c_ss_1                                            ;  SDA=1->ClI2c_stop_:lI2c_stop:                                                   ;if stop,cbiddrb, sdacpiI2c_wr_counter,0x00brne WriteFlashRomlI2c_exit:rjmp lI2c_getlI2c_start_:rjmp lI2c_get_1WriteFlashRom:cli; Disable INTERRUPTSrcall WriteReceivedDataclrI2c_wr_counter; Clear Write Buffer PointersclrI2c_wr_pointersei; Enable INTERRUPTSrjmp lI2c_get/************************************************************ Write internal FLASH by page************************************************************///--------- Erase/Program Page FROM FLASH to SRAMBackupFlashPage:ldiYH,high(_I2c_FLASH_buffer) ; Load SRAM Buffer ldiYL,low(_I2c_FLASH_buffer)movTMPnoINT, I2c_start_addrandiTMPnoINT, ((I2C_EEP_SIZE - 1) & ~(PAGESIZEB - 1))ldiZH,high(MemoryBlockFLASH << 1)ldiZL,low(MemoryBlockFLASH << 1)adcZL,TMPnoINTbrccNoIncBackupPageincZHNoIncBackupPage:ldiR22, PAGESIZEBBackupPageLoop:lpmTMPnoINT,Z+stY+,TMPnoINTdecR22brneBackupPageLoopret//--------- Add received data to SRAM PageWriteReceivedData:/* Have Data For Write ? */cpiI2c_wr_counter,0x00brneDataForWritePresentretDataForWritePresent:rcall BackupFlashPageldiYH,high(_I2c_FLASH_buffer) ; Load SRAM Backup Buffer AddressldiYL,low(_I2c_FLASH_buffer)ldiXH,high(_I2c_data_buffer) ; Load SRAM Receive Buffer AddressldiXL,low(_I2c_data_buffer)movTMPnoINT, I2c_start_addrandiTMPnoINT, (PAGESIZEB - 1)adcYL,TMPnoINTbrccNoIncPreparePageincYHNoIncPreparePage:movCounterInWrite,TMPnoINT/* Make PAGE SIZE Window */cpiI2c_wr_counter, I2C_PAGE_SIZEbrloPreparePageLoopldiI2c_wr_counter, I2C_PAGE_SIZEPreparePageLoop:ldR22,X+stY+,R22decI2c_wr_counterbreqNormalPageWritemovTMPnoINT,CounterInWritecpiTMPnoINT, (PAGESIZEB - 1)brneNoWritePageSizeExceededrcallErase_page_by_SPMrcallWrite_Current_PageincCounterInWriteincI2c_start_addrdecI2c_wr_pointerrjmpWriteReceivedDataNoWritePageSizeExceeded:incCounterInWriteincI2c_start_addrdecI2c_wr_pointerrjmpPreparePageLoopNormalPageWrite:rcallErase_page_by_SPMrcallWrite_Current_PageincI2c_start_addrdecI2c_wr_pointerret//--------- Erase pageErase_page_by_SPM:ldiZH,high(MemoryBlockFLASH << 1)ldiZL,low(MemoryBlockFLASH << 1)movTMPnoINT,I2c_start_addrandi TMPnoINT, ((I2C_EEP_SIZE - 1) & ~(PAGESIZEB - 1)) /* Mask Maximum Data Size and Mask Out Real Flash Page Size */adcZL,TMPnoINTbrccNoIncErasePageincZHNoIncErasePage:/* Load Erase Instruction */ldiTMPnoINT, (1<<PGERS) | (1<<SPMEN)sts_valSPMCSR, TMPnoINTrcallWait_spm;CPU Halted while eraseret//Wite pageWrite_Current_Page:ldiXH,high(_I2c_FLASH_buffer) ; Load SRAM Backup Buffer AddressldiXL,low(_I2c_FLASH_buffer)ldiZH,high(MemoryBlockFLASH << 1)ldiZL,low(MemoryBlockFLASH << 1)movTMPnoINT,I2c_start_addrandi TMPnoINT, ((I2C_EEP_SIZE - 1) & ~(PAGESIZEB - 1)) /* Mask Maximum Data Size and Mask Out Real Flash Page Size */adcZL,TMPnoINTbrccNoIncWritePageincZHNoIncWritePage:ldiTMPnoINT, (PAGESIZE)movCounter, TMPnoINTmovwY,Z; Store Z in Y regclrZL;Clear ZclrZHFill_Page_Buffer_loop:ldR0, X+ldR1, X+ldiTMPnoINT, (1<<SPMEN);Write word into page buffersts_valSPMCSR, TMPnoINTrcallWait_spm;CPU Halted while eraseadiwZ, 2decCounterbrneFill_Page_Buffer_loopmovwZ,Y; Restore Z from Y regldi TMPnoINT, (1<<PGWRT) | (1<<SPMEN)sts_valSPMCSR, TMPnoINTrcallWait_spm;CPU Halted while eraseretDo_spm:; check for previous SPM completeWait_spm:inTMPnoINT, SPMCSRsbrc TMPnoINT, SPMENrjmp Wait_spmWait_ee:sbic EECR, EEWErjmp Wait_ee; SPM timed sequenceldsTMPnoINT, _valSPMCSRout SPMCSR, TMPnoINTspmret.cseg.org(0x200 - (I2C_EEP_SIZE/2))MemoryBlockFLASH:          ; Bytes in Flash   .DB 0x55, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F   .DB 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F   .DB 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F   .DB 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F   .DB 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F   .DB 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F   .DB 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F   .DB 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D   ; Mark End of EEP DATA.org(0x1FF).db 0x7E,0x7F.MESSAGE "I2C For Read/Write Processing SELFPRGEN FUSE Must Be Enabled!!!".esegMemoryBlockEEP:          ; Bytes in EEP   .DB 0x55, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F   .DB 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F   .DB 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F   .DB 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F

Всем добра и успехов!!!

Спасибо за внимание.

Подробнее..

Анализ целостности сигналов в PADS Professional (46)

16.12.2020 20:13:35 | Автор: admin


Продолжаем осваивать основные возможности анализа целостности сигналов встроенными инструментами PADS Professional.

В третьем уроке мы изучили как запускать моделирование для выбранной цепи и проводить измерения с помощью цифрового осциллографа.

Сегодня вы узнаете как импортировать плату в HyperLynx BoardSim для пост топологического анализа.

Урок 4 Экспорт проекта платы в BoardSim


  1. В меню ПУСК выберите PADS Pro Tools VX.2.x > PADS Pro Designer VX.2.x
  2. На стартовой странице PADS Professional Designer выберите File > Open и откройте:
    C:\SI_Analysis\Lesson4\PCB\HandDrillAll.pcb
  3. Сейчас вы откроете PADS Professional HyperLynx BoardSim инструмент для пост топологического анализа. Перейдите в меню Analysis > Export to HyperLynx SI/PI/Thermal

  4. Выберите цепь, которую вы анализировали ранее $1N1808 кликните по иконке Select Nets by Name for SI Analysis на панели инструментов.



    Примечание: Специальные символы подстановки, такие как * и %, могут быть использованы для помощи в разных полях поиска, когда вы не уверены в точном значении вашего поискового запроса. % заменяет один символ (например, U123 можно найти по U%%3). * используется для подстановки неизвестных символов (например, U123 можно найти с помощью *3).
    1. пролистайте список и найдите цепь $1N1808_Battery_Protection или введите в поле Filter значение *1808*.

    2. выберите цепь и нажмите OK, чтобы выйти из окна Net Selection. Теперь вы должны увидеть, что эта цепь выделена на плате.
  5. Вы можете назначить модели для этой цепи, как вы делали это в LineSim. Нажмите на иконку Assign Models or Edit Values for Components на панели инструментов.

  6. В секции Pins выберите P16.1: нажмите Select для назначения модели


    • Libraries: Generic_mod.ibs
    • Devices: generic
    • Signal: 74AC11X:LINE-DRV

  7. Нажмите OK для выхода из диалога Select IC Model
  8. В секции Buffer settings, выберите Output. Нажмите Close для выхода из диалога Assign Models.
  9. Для начала моделирования выберите Simulate SI > Run Interactive Simulation откроется окно Digital Oscilloscope.
  10. Установите настройки для моделирования на частоте 400 МГц.

  11. Нажмите Start Simulation
  12. Обратите внимание на форму сигнала. Выйдите из цифрового осциллографа и вернитесь к плате в BoardSim

  13. Чтобы попытаться улучшить сигнал, вы добавите терминирование. На панели инструментов выберите Add Quick Terminator

  14. Добавьте capacitor in parallel для P16.1, выбрав соответствующий переключатель. Установите значение равное 20 pF. Выберите Close и нажмите Run Interactive Simulation еще раз, для запуска Digital Oscilliscope.

  15. Обратите внимание, форма сигнала заметно улучшилась. Вы можете сравнить этот результат с предыдущими, установив флажок Previous results справа.



  16. На этом урок окончен. Закройте HyperLynx и сохраните результаты

Материалы для этого и последующих уроков можете скачать ЗДЕСЬ

Вы также можете посмотреть видеоверсию этого урока:


Предыдущие уроки:
Урок 1 Назначение моделей в LineSim
Урок 2 Основы LineSim
Урок 3 Моделирование с помощью цифрового осциллографа

Присоединяйтесь к нам в соц. сетях:
Telegram-канал
Telegram-чат
YouTube

Филипов Богдан pbo, Product Manager по решениям PADS в компании Нанософт.
Подробнее..

Как влияют помехи на ИК приемник

18.12.2020 08:10:10 | Автор: admin

Приветствую всех, эта короткая статья о влиянии помех на работу ИК приемника. В данном исследовании в качестве такого устройства используется TSOP4856. В этой статье вы узнаете: какие помехи бывают для данного типа устройств, и какое влияние они оказывают.

Следует сразу отметить, что дання статья не претендует на истину в последней инстанции, а только предоставляет читателю оценку возможного влияния помех на ИК приемник. Приятного чтения. Начинаем!

Оглавление:

Описание ИК диода TSAL6200 и ИК приемника TSOP4856

Работа ИК диода и ИК приемника

Помехи для ИК приемника

Исследование влияния солнечного света и люминесцентного излучения на работу ИК приемника

Заключение

Описание ИК диода TSAL6200 и ИК приемника TSOP4856

ИК диод TSAL6200 полупроводниковый диод, излучающий волны инфракрасного спектра.

Внешний вид ИК диода представлен ниже на картинке.

TSAL6200TSAL6200

Некоторые его характеристики: длина волны, излучаемой ИК диодом, равна 940 нм. Максимальный прямой постоянный ток не более 100 мА. Импульсный ток не более 1.5 А. Мощность излучения до 40 мВ. Ширина ДН равна 34 градусам.

ИК приемник TSOP4865 миниатюрный ИК приемный модуль, у которого PIN диод и усилитель собраны в свинцовом каркасе, эпоксидный корпус содержит ИК фильтр. Внешний вид ИК приемника представлен ниже на картинке.

TSOP4856TSOP4856

Некоторые его характеристики: длина волны принимаемого ИК сигнала 940 нм. Необходимая частота модуляции 56 кГц. Минимальная освещенность 0.12 мВт/м2. Максимальная 50 Вт/м2. Ширина ДН 90 градусов. Эти устройства работают в паре.

Работа ИК диода и ИК приемника

При протекании тока через диод TSAL6200 излучается ИК сигнал с длиной волны 940 нм. Это излучение модулируется меандром с частотой 56 кГц. Передаются пачки таких импульсов со скважностью равное не менее 4.

Эти пачки принимается устройством TSOP4856. Его функциональная схема представлена на слайде.

Функциональная схема ИК приемника TSOP4856Функциональная схема ИК приемника TSOP4856

где 1 - OUT; 2 - GND; 3 - +Vпит; ВФ входной фильтр; АРУ автоматическая регулировка усиления; ПФ полосовой фильтр.

Через PIN диод начинает протекать ток, соответствующий интенсивности принимаемого ИК сигнала. Схема автоматической регулировки усиления (АРУ) усиливает этот ток. Далее принимаемый сигнал фильтруется полосовым фильтром (ПФ) и демодулируется. Пока принимается одна пачка, на выходном выводе OUT приемника низкое значение напряжения, как только на входе нет импульсов, приемник поднимает выходной вывод к напряжению питания.

Далее представлены временные диаграммы данного процесса.

Временные диаграммы примо-передачи ИК сигналаВременные диаграммы примо-передачи ИК сигнала

Сверху показан процесс происходящий на ИК диоде, снизу - на ИК приемнике. Слева рассматривается процесс приемо-передачи в масштабе одной пачки, а справа - в масштабе нескольких пачек.

Стоит заметить, что просто передавать ИК сигнал без модуляции 56 кГц не получится, т.к. полосовой фильтр ИК приемника настроен как раз на эту частоту. Также не получится передавать непрерывный меандр с этой частотой в 56 кГц, так как система АРУ будет занижать в таком случае коэффициент усиления (это сделано для устранения постоянных помех). Т.е. обязательно нужно передавать пачки импульсов, а с какой частотой будут передаваться эти пачки не важно, главное, чтоб скважность между ними была не менее 4.

Помехи для ИК приемника

Помехами для TSOP4856 являются:

- солнечный свет;

- свет от вольфрамовых ламп;

- излучение от люминесцентных ламп с электронными балластами;

- Wi-Fi 2,4 ГГц и 5 ГГц.

В данной работе рассматривается влияние солнечного света и излучение люминесцентных ламп.

Рассмотрим график чувствительности в зависимости от окружающей освещенности, взятый из документации на TSOP4856.

График зависимости чувствительности ИК приемника TSOP4856График зависимости чувствительности ИК приемника TSOP4856

На графике видно, что при увеличении окружающей помеховой освещенности увеличивается порог чувствительности, следовательно, будет уменьшаться дальность приемо-передачи. Таким образом, когда присутствуют помехи, чувствительность приемника снижается схемой АРУ для обеспечения отсутствия ложных импульсов на выходе.

Следует добавить, что чувствительность ИК приемника также зависит от амплитуды пульсаций источника питания, от величины напряжения питания, от температуры и от длины волны ИК сигнала. Более подробно с этими параметрами можно ознакомиться в технической документации.

В нашем случае все эти параметры имеют рабочие значения: пульсация источника питания минимальна, напряжение питания 3.3 В, температура 25 градусов по Цельсию, длина волны 940 нм.

Исследование влияния солнечного света и люминесцентного излучения на работу ИК приемника

Экспериментальная установка состоит из следующих элементов:

- передатчик ИК сигнала;

- приемник ИК сигнала;

- измерительная рулетка;

- фотодиод ФД-24К;

- квадрантный фотодиод QPD150;

- мультиметр;

- переходник USB-UART;

- ноутбук.

У квадрантного фотодиода QPD150 все фазовые выводы соединены. Измеряется суммарное напряжение, вырабатываемое фотодиодом при его освещении.

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

Передатчик ИК сигнала формирует пачку из 20 импульсов, частота импульсов 56 кГц. Амплитуда импульсов тока, проходящих через ИК диод TSAL6200, составляет 20 мА, что соответствует, примерно, 8 мВт мощности излучения.

Излучение пачки происходит раз в секунду. Если пачка принята, то приемник ИК сигнала выдает сообщение на ноутбук о регистрации этой пачки импульсов.

Порядок проведения эксперимента: измеряется дальность приемо-передачи ИК сигнала для двух случаев: принятие 10 из 10 импульсов подряд и 0 из 10 импульсов, а также измеряются напряжения на ФД-24К и QPD150.

Варианты экспериментов:

- в полной темноте;

- при освещении люминесцентной лампой сверху на потолке в помещении;

- при освещении люминесцентной лампой прямо перед приемником в помещении;

- при освещении солнечным светом ИК приемник сзади сверху;

- при освещении солнечным светом ИК приемник спереди сверху.

В таблице ниже приведены результаты исследования влияния помех на работу ИК приемника TSOP4856.

Ниже представлен график зависимости дальности приемо-передачи от мощности помехи для различных типов помех. По вертикали средняя мощность помех в относительных единицах, так как измерить или вычислить реальную принимаемую мощность ИК приемником TSOP4856 проблематично. По горизонтали дальность приемо-передачи в метрах. Левая крайняя точка отрезков значение дальности при приеме 10 из 10 импульсов, а правая крайняя точка значение дальности при приеме 0 из 19 импульсов, т.е. данные отрезки дистанции ухудшения качества приема сигнала от 100 до 0 %. В таблице представлены относительные ухудшения характеристик относительно эксперимента "в полной темноте" в процентах,

Из графика видно, то с увеличением мощности помехи не только уменьшается дальность приемо-передачи, но и дистанция ухудшения качества приема сигнала от 100% до 0% становится короче.

Из таблицы видно, что в присутствии такой помехи, как солнце, дальность приемо-передачи ИК сигнала может уменьшиться почти на 70%, что может оказаться критическим, если не учесть влияние такой помехи при разработки системы с ИК. Влияние люминесцентного излучения тоже немаленькое и может уменьшить дальность, примерно, на 40%.

Заключение

Из полученных данных можно сделать следующий выводы:

1) чем сильнее помеха по мощности, тем меньше дальность приемо-передачи ИК сигнала;

2) влияние помехи на качество приема пропорционально мощности помехи (чем меньше помеха по мощности, тем длиннее отрезки, т.е. качество приема ИК сигнала медленнее ухудшается с увеличением расстояния);

3) разные типы помехи имеют разное влияние на работу TSOP4856.

В итоге, следует учитывать возможное влияние помех на ИК приемник при разработке систем с ИК, чтобы избежать проблем с внезапным отказом работы в присутствии таких помех.

Надеюсь статья оказалась полезной. Спасибо за внимание!

Подробнее..

Анализ целостности сигналов в PADS Professional (56)

23.12.2020 14:04:12 | Автор: admin


И так коллеги, мы уже на финишной прямой.
На предыдущем уроке вы узнали как импортировать плату в HyperLynx BoardSim для пост топологического анализа и улучшить качество сигнала, используя терминирование.

Сегодня мы с вами поговорим о sweep-анализе в BoardSim. Этот вид анализа применяется для оценки работоспособности системы в широком диапазоне параметров.

Урок 5 Sweep-анализ в BoardSim


  1. В меню ПУСК выберите PADS Pro Tools VX.2.x > PADS Pro Designer VX.2.x
  2. На стартовой странице PADS Professional Designer выберите File > Open и откройте:
    C:\SI_Analysis\Lesson5\PCB\HandDrillAll.pcb
  3. Запустите HyperLynx, следуя шагу 3 из четвертого урока.
  4. Убедитесь, что выбрана цепь, которую вы анализировали ранее- $1N1808. Если нет, повторите шаг 4 из четвертого урока.
  5. Сейчас вы запустите sweep-анализ, чтобы посмотреть, как ваша трассировка ведет себя при различных скоростях моделирования ИМС. Выберите в меню Simulate SI > Run Interactive Sweep

  6. На вкладке Setup, кликните на + слева от IC modeling для раскрытия списка. Кликните + рядом с IC operating parameters. В завершении кликните по Proсess corner = default для его выделения и нажмите кнопку Add Range

  7. В окне Sweeping выберите все доступные варианты. Нажмите OK для выхода.

  8. Выберите Run Sweeps в окне Sweep Manager
  9. В цифровом осциллографе настройте параметры для моделирования на частоте 400 МГц.

  10. Нажмите Start Sweeps, чтобы проанализировать поведение этой цепи для каждой скорости микросхемы.

  11. Вы можете анализировать результаты и соответствующим образом корректировать проект. Когда закончите, выйдите из цифрового осциллографа.
  12. На этом урок окончен. Закройте HyperLynx и сохраните результаты.

Материалы для этого и последующих уроков можете скачать ЗДЕСЬ

Вы также можете посмотреть видеоверсию этого урока:


Предыдущие уроки:
Урок 1 Назначение моделей в LineSim
Урок 2 Основы LineSim
Урок 3 Моделирование с помощью цифрового осциллографа
Урок 4 Экспорт проекта платы в BoardSim

Присоединяйтесь к нам в соц. сетях:
Telegram-канал
Telegram-чат
YouTube

Филипов Богдан pbo, Product Manager по решениям PADS в компании Нанософт.
Подробнее..

Open-source ПК Dragonbox Pyra начали отгружать покупателям после четырех лет разработки

04.01.2021 20:12:47 | Автор: admin

DragonBox Pyra карманный (в буквальном смысле слова) компьютер с 5-дюймовым дисплеем, процессором TI OMAP 5 и QWERTY-клавиатурой. В нее же встроены два стика и D-pad.

Устройство разрабатывалось в качестве легко модифицируемой открытой платформы. Поставляется гаджет с Debian Linux, но поддерживаются и многие другие ОС, так что ПК можно использовать в качестве десктопного или игрового. О DragonBox Pyra известно уже давно, но только сейчас его начали отгружать покупателям. К слову, предзаказы на девайс стали принимать еще четыре года назад.


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

Ряд компонентов системы далеко не самые производительные и новые в своем классе. Например, прцессор OMAP 5432. Это двухъядерный чип ARM Cortex-A15 с графической системой PowerVR SGX544-MP2. Чип появился в продаже еще в 2013 году, т.е. 8 лет назад.

Но другого такого ПК в продаже просто нет.

Внешне он похож на некоторые портативные игровые ПК, вроде GPD Win 2. Но проектировали его все же в качестве профессионального инструмента для специалистов по информационной безопасности, сотрудников дата-центров и прочих представителей IT. Чертежи и схемы выложены разработчиками в открытый доступ, так что аппаратную платформу можно изменять как угодно. Работать с гаджетом можно как от сети, так и автономно для этого предусмотрен съемный аккумулятор емкостью в 6000 мА/ч.

Что касается разъемов, то вот полный их список:
  • 1 x micro HDMI
  • 1 x headset jack
  • 1 x micro USB 3.0 OTG
  • 2 x USB 2.0 Type-A
  • 1 x micro USB for charging & debugging
  • 2 x SDXC card slots (external)
  • 1 x microSDXC card reader (internal)

Системное ПО может грузиться с карты памяти или eMMC, так что при желании есть возможность работать одновременно с несколькими операционными системами.


Что касается других характеристик, то у Dragonbox Pyra 4 ГБ ОЗУ, 32 ГБ внутренней памяти. Есть адаптер, позволяющий подключить SATA к USB-порту. Клавиатура оснащена подсветкой. В дополнение к стикам и D-pad идет еще 10 кнопок, некоторые из которых программируемые. Подсветку клавиатуры тоже можно настраивать. Есть микрофон, но нет веб-камеры. Плюс ко всему, добавлен вибромотор и стереодинамики.

Беспроводные модули связи 802.11a/b/g/n WiFi и Bluetooth 4.1. Есть опциональная поддержка 3G и 4G.

Что касается дисплея, то его разрешение составляет 1280*720 пикселей. Экран сенсорный, поддерживает работу как со стилусом, так и с пальцем. Но сенсор здесь резистивный, а не емкостный, так что отклик не такой, как у экранов телефонов.


Разработчик устройства Michael Mrozek (EvilDragon). Его девайс можно назвать наследником портативного Linux-компьютера Pandora. Но у новой модели есть многое из того, чего не было у предшественника. Так, у Pandora было всего 256 МБ ОЗУ, 512 МБ внутренней памяти, процессор TI OMAP3530.


Несмотря на то, что Pyra может использоваться в качестве десктопного ПК, это все же нишевое устройство, предназначенное для IT-энтузиастов. В продаже несколько разных версий, стоимость младшей модели 595 евро, старшей 745.

Подробнее..

Flipper Zero план по производству и доставке

21.01.2021 16:23:47 | Автор: admin

Видеообзор свежей версии Flipper Zero

Flipper Zero проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10]

На видео показан свежий образец Флиппера. Это фрезерованный корпус, то есть вырезанный из куска пластика и потом покрашенный. Финальный вариант будет отливаться под давлением с покраской в массе, то есть колер будет замешан внутрь пластика. Но финальное устройство внешне будет выглядеть именно так. Флиппер стал немного больше из-за двух дополнительных плат внутри.

В посте расскажем о текущем статусе проекта, задачах и проблемах, грядущем производстве и доступе в pledge manager.


План производства


Будем честны:мы не сможем отправить Флипперы всем бэкерам в феврале. Устройства будут производиться постепенно, начиная с очень маленьких партий, постепенно наращивая объемы. Это сделано, чтобы снизить риски брака. Мы очень хотим сделать крутой продукт, который будет идеальным во всех вопросах, от механики до электроники. Любая ошибка в большой партии будет фатальной, отозвать такую партию будет невозможно.

Учитывая огромные ожидания наших бэкеров, мы просто не можем позволить себе выпустить кривое устройство. Мы будем постпенно производить и отправлять мелкие партии приближенным разработчикам и тем, кто подпишется на программу early adopters. Эти люди будут в роли бета-тестеров, будут устанавливать новые версии прошивки, проводить тесты в полях и присылать баг-репорты. Но прежде чем вписаться в early adopters имейте в виду, вы можете получить устройство, которое будет иметь серьезные баги.



План постепенного производства Флипперов

Мы ожидаем, что первые маленькие партии будут содержать недоработки в механике и электронике, которые проявятся спустя время использования. Например, условно, через месяц использования могут начать залипать кнопки на джойстике, выламываться USB-порт или, например, пого-пины от iButton. Разумеется мы будем выполнять автоматические тесты, но они не покрывают всех потенциальных проблем, которые могут возникнуть. Поэтому мы помечаем такие партии как высокорискованные. К концу весны мы ожидаем получить стабильное массовое производство.

Программа раннего доступа


Если вы готовы рискнуть, чтобы получить Флиппер раньше, записывайтесь в программу раннего доступа. Но вы должны осознавать, что можете столкнуться с браком, механическими недоработками и прочими проблемами. Подать заявку на ранний доступ можно здесь (доступно только бэкерам с Kickstarter).

Имейте в виду, что сейчас прошивка очень сырая: в ней много ошибок, многое не доделано, графический интерфейс для некоторых функций не готов, и их нужно запускать из консоли, без вывода на экран. Каждый день мы выпускаем новые версии прошивки и все бета-тестеры должны будут постоянно обновляться и проводить тестирование.


Ранние Флипперы будут отправляться с сырой прошивкой

Репозиторий с прошивкой на Github будет открыт к моменту, когда появится достаточно много разработчиков с Флипперами на руках, чтобы они могли вносить свой вклад в код прошивки. Мы планируем интенсивно поддерживать прошивку в течение минимум 2 лет после выпуска Флиппера, поэтому заранее готовим всех бэкеров, что в момент, когда вы получите устройство, там могут работать не все функции, и они будут допилены со временем в обновлениях прошивки.

Запуск пледж менеджера


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


Скриншот страницы пледж-менеджера

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

Текущий статус


Разработка аппаратной части была нашим главным приоритетом, потому что железо, в отличие от прошивки, нельзя обновить после релиза и отправки пользователям. Любая недоработка здесь будет фатальной.



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

Допиливание широкополосной антенны Sub-1 GHz


Больше всего трудностей сейчас с этой подсистемой. Одновременная поддержка диапазонов от 300 MHz до 900 MHz на одном приемо-передающем тракте очень сложная задача. Мы используем схему с тремя (!) переключающимися радиотрактами и своим дизайном антенны. Трудности такой схемы в том, что она должна проходить по всем нормам сертификации (FCC, EC и прочие), таким как паразитные гармоники, отклонения от частоты и т.д.

Сейчас мы подгоняем характеристики передающего тракта под нормы и стандарты сертификационной лаборатории. Это непростой процесс, который отнимает время.


Элементы Sub-1 GHz модуля

Сертификация

Для того чтобы официально ввозить устройства в страны ЕС и США и продавать его в магазинах вроде Amazon, нам нужно получить сертификат соответствия радиочастотным нормам в этих странах. Дело в том, что для разных стран эти нормы отличаются, и нам нужно сделать несколько разных версий устройств, соответствующих разным нормам. Это юридические задачи, которые сильно далеки от разработки и производства, но которые мы не можем избежать. Они также усложняют логистику, так как порождают несколько разных версий устройства, имеющие разные SKU.

Страна Разрешенные частоты (MHz) Мощность
ЕС/Англия 433.040 434.790 MHz 10 mW
865 868 MHz 25 mW
США 315 MHz 75.62 dBuV/m
433 MHz 80.79 dBuV/m
Япония 312 315.25 MHz 25 uW
Россия 433.075 434.79 MHz
866 868, 868.15 868.55, 868.7 869.2 MHz
10 mW

Механика


Подготовка к отливке корпуса и сборке состоит из десятков очень маленьких исправлений. Сейчас мы находимся в состоянии согласования с фабрикой всех деталей производства. Нужно учитывать, как деталь будет выниматься из формы для литья, где будут точки впрыска пластика и какой тип литья оптимальный для каждой детали.

Пример исправлений, которые присылает литейвая фабрика

Фабрика вносит корректировки, рассчитывает напряжения, скорость остывания, положение литников и т.д. Трудности этого процесса в том, что любая переделка механики затрагивает пересмотр положения электроники внутри и влияет на процесс сборки. Поэтому даже сдвиг ребер жесткости на 0.1мм часто может пораждать изменения контуров платы. Это процесс который занимает много времени, так как требует участия сразу всех команд.



В производстве участвуют три фабрики, и каждая из них выставляет свои требования. Сейчас мы налаживаем процесс сборки и тестирования на каждом этапе.

Процесс сборки


Весь цикл от предварительной сборки каждой детали до тестирования должен укладываться в строгие временные отрезки. Если будет отклонение от этого времени, управляемо произвести десятки тысяч устройств не получится. Сейчас сборка одного Флиппера вместе с тестированием и прошивкой должна укладываться в 420 секунд!

Мы готовим процесс и предсобранные части устройства чтобы уложиться в это время. Так выглядят инструкции по сборке.


Сперва происходит промежуточная сборка отдельных модулей, вот например инфракрасное окошко спаивается с верхней крышкой корпуса, для это специальным паяльником расплавляется пластиковый пин.


В экранную накладку устанавливаются пружины и кнопки джойстика. Этот элемент состоит из 8 деталей: оснастка, 3 пружины, 3 кнопки (центральная, большой круг, кнопка назад), световод статусного светодиода.


Мэйн плата соединяется с оснасткой и джойстиком. Пластиковая накладка фиксируется защелками за плату и образует готовый модуль, который передается для финальной сборки.



В каркас устанавливается плата ibutton, батарея, вибромоторор.


На каркас фиксируется NFC плата и закрепляется защелками.



В целом сборка состоит из 20 шагов, которые в финале завершаются установкой нижней крышки. Дальше устройство отправляется на прошивку и тестирование.

Уникальные компоненты


Большинство деталей из которых сделан Флиппер это серийные компоненты, которые заказываются у поставщиков. Но есть несколько электронных компонентов которые изготавливаются специально под заказ именно для Флиппера. Это требует размещения заказа на производство каждого компонента у нужного производителя и согласования всех деталей.

Многополосная Sub-1 GHz антенна


Нужную нам антенну нельзя просто купить, поэтому мы заказываем намотку этой проволочной антенны специально по нашим чертежам. Она должна одновременно хорошо работать на диапазонах от 300 до 900 MHz и при этом умещаться в наш корпус. Сейчас мы проверяем, что изготавливаемые антенны действительно соответствуют нашим требованиям.



Пого-пин iButton


Для iButton pad мы используем пин нестандартной длины, поэтому и его производство нам пришлось заказывать отдельно.



10-пиновая GPIO гребёнка


Этот компонент тоже нестандартный и производится для нас. Для прототипов мы использовали сборку из двух гребёнок на 8 пинов и 2 пина, что для финального устройства не годится. Найти производителя качественных гребенок оказалось не так просто.


Гребёнка из двух частей костыль для прототипа

P.S.


Мы очень переживаем из-за переноса даты отправки, но надеемся на ваше понимание. Для многих из нас это важнейший проект за всю жизнь, поэтому мы стараемся изо всех сил, чтобы оправдать ваши ожидания. Страх выпустить плохой продукт и разочаровать вас наш главный двигатель сейчас.



Наши соц.сети




Все характеристики Flipper Zero на официальном сайте.
Наш англоязычный блог.
Подробнее..

Эволюция системы обновления Android

17.12.2020 06:12:58 | Автор: admin
Индиана устанавливает новый активный раздел: меняет золотого идола на мешок с песком в легендарной сцене из фильма Индиана Джонс: В поисках утраченного ковчегаИндиана устанавливает новый активный раздел: меняет золотого идола на мешок с песком в легендарной сцене из фильма Индиана Джонс: В поисках утраченного ковчега

В этой статье мы рассмотрим все возможные варианты обновления прошивки на устройствах под управлением Fuchsia Android. Особое внимание уделим самому популярному способу обновлению по воздуху или OTA (over-the-air) и расскажем об этапах его развития.

Итак, как можно обновить Android на мобильных устройствах? Занимаясь разработкой ТВ-приставок под управлением этой ОС, мы определили для себя 4 способа, отбросив совсем уж экзотические варианты:

  1. перепрошивка flash-памяти через аппаратный интерфейс JTAG (если есть);

  2. перепрошивка flash-памяти с использованием загрузчика (bootloader);

  3. обновление через Recovery Mode;

  4. OTA (over-the-air).

Рассмотрим подробнее каждый из вариантов.

1. Обновление Android через JTAG-интерфейс

Вариант с JTAG позволяет обновлять устройство только локально и требует подключения девайса с Android к хосту, например, по USB-интерфейсу. Так как перепрошивается flash-память, новую версию Android можно поставить на прошивку с другими ключами безопасности, да и в целом не сильно стесняться в выборе версий самой Android, версии собранной прошивки или переконфигурации разделов flash-памяти.

Однако обычно JTAG-интерфейс присутствует только на отладочных платах, что сильно сужает область применения этого варианта обновится.

2. Обновление Android через Recovery Mode

Обычно загрузчик является проприетарным, его разрабатывает производитель чипа. Именно bootloader инициализирует доверенную среду выполнения (TEE, trusted execution environment) и проверяет целостность разделов boot и recovery перед переносом выполнения в ядро Linux. Сам загрузчик часто является составным, часть его уровней может быть открытой (например, на базе U-boot), а часть проприетарной.

Bootloader Android позволяет перепрошивать flash-память устройства подготовленными образами разделов. Для этого используется протокол fastboot либо его аналог (в случае Amlogic это будет протокол WorldCup Device). Fastboot,как и его аналог WorldCup Device, это протокол взаимодействия с bootloader через USB-интерфейс или локальную сеть Ethernet.

Для перепрошивки необходимо подключить устройство через USB к хосту (есть вариант использовать LAN Ethernet), перевести загрузчик (bootloader) в специальный update-режим и в этом режиме перепрошить flash-память устройства.

Плюсы и минусы данного метода всё те же, что и для JTAG: так как обновление проходит без участия самой системы Android, при перепрошивке нет ограничений, связанных с версией системы/сборки или ключами безопасности.

Но, как всегда, есть одно НО. :-) Bootloader должен быть разблокирован, а это значит, что мы можем перепрошить сам загрузчик или разделы устройства. Блокировка/разблокировка производится командой fastboot flashing lock/unlock, но для выполнения этой команды может понадобится пароль, установленный тем, кто добрался до этого устройства раньше вас (обычно это производитель).

3. Обновление Android через Recovery Mode и OTA

Если первые два варианта обновления оставались неизменными на протяжении всего времени развития Android, то следующие два варианта обновление через Recovery Mode и OTA реализуются средствами самой Android и эволюционировали вместе со всей ОС.

Стоит упомянуть, что Recovery Mode и OTA это два различных варианта вызова движка обновления Android.

Recovery или non-A/B System Updates

Recovery и движок обновления updater (bootable/recovery/updater) это как раз то, с чего началась система обновления Android (располагается в bootable/recovery в дереве исходников AOSP).

Схема обновления Recovery (или non-A/B System Updates) задействует специальный раздел восстановления (Recovery), где содержится специальная ОС на основе ядра Linux. Эта ОС на базе Linux содержит программное обеспечение для распаковки загруженного образа обновления и его применения к другим разделам. Так и проходит обновление Android.

Пример разметки flash-памяти на устройстве с Android 6.0:

Карта разделов Android 6.0.1

[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000

[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000

[mmcblk0p03] cache offset 0x000006c00000, size 0x000020000000

[mmcblk0p04] env offset 0x000027400000, size 0x000000800000

[mmcblk0p05] logo offset 0x000028400000, size 0x000002000000

[mmcblk0p06] recovery offset 0x00002ac00000, size 0x000002000000

[mmcblk0p07] rsv offset 0x00002d400000, size 0x000000800000

[mmcblk0p08] tee offset 0x00002e400000, size 0x000000800000

[mmcblk0p09] crypt offset 0x00002f400000, size 0x000002000000

[mmcblk0p10] misc offset 0x000031c00000, size 0x000002000000

[mmcblk0p11] instaboot offset 0x000034400000, size 0x000020000000

[mmcblk0p12] boot offset 0x000054c00000, size 0x000002000000

[mmcblk0p13] system offset 0x000057400000, size 0x000060000000

[mmcblk0p14] data offset 0x0000b7c00000, size 0x0002ec200000

Сам процесс обновления происходит в два этапа:

  1. после загрузки с раздела Recovery происходит обновления всех остальных разделов Android;

  2. и уже после перезагрузки и запуска новой версии Android происходит обновление раздела Recovery.

При обновлении с использованием движка updater на первом этапе проверяется версия и цифровая подпись образа, поэтому откатить на старую версию ОС уже не получится.

Обновиться по схеме Recovery можно как локально, выбрав в bootloader режим Recovery Mode и запустив движок обновления updater через меню Recovery Mode, либо удаленно, через OTA, когда приложение, работающее в Android, вызывает тот же updater из Java. И как раз при таком удаленном запуске можно организовать массовое обновление целой серии устройств. Этот вариант используют операторы цифрового ТВ при обновлении своих абонентских ТВ-приставок.

Сам раздел Recovery при non-A/B-схеме обновления является физическим разделом во flash-памяти. С появлением A/B-схемы раздел Recovery переместился на RAM-диск в оперативной памяти устройства, но возможность сделать его отдельным физическим разделом так же осталась.

Нужно сказать, что в системе Android нет четкого разделения на старое и новое, скорее добавляются дополнительные возможности в конфигурации сборки Android с сохранением по возможности совместимости со старыми решениями. Однако не все варианты конфигураций работают.

Одним из важных недостатков схемы Recovery или non-A/B System Updates является то, что при любом сбое во время обновления или битой прошивке мы получаем пусть и не кирпич (с раздела Recovery всё еще можно запустить устройство в Recovery Mode), но всё же не полнофункциональное и требующее восстановления устройство.

С этим, видимо, решено было что-то делать, потому что следующим этапом эволюции системы обновления стало бесшовное обновление (seamless updates) или A/B-схема обновления.

Бесшовное обновление или A/B-схема

Эта возможность появилась в Android 7.0, она реализована в новом движке update_engine, который располагается в system/update_engine в дереве исходников AOSP.

Главной особенностью A/B-схемы стало то, что в случае сбоев при обновлении можно загрузится с предыдущей рабочей версии системы Android. Flash-память устройства содержит дублирующиеся системные разделы или слоты (slot A и B), отсюда и название A/B system updates (вечная проблема с выбором названий). За выбор слота для загрузки (A или B) отвечает bootloader, анализируя состояние слотов.

Принцип бесшовного обновления Android по A/B-схеме (активный раздел отмечен птичкой)Принцип бесшовного обновления Android по A/B-схеме (активный раздел отмечен птичкой)

Итак, как же происходит обновление:

1) Загружая систему, например, со слотов A, мы скачиваем и прошиваем обновления на слоты B.

2) После перезагрузки со слотов B мы проверяем работоспособность системы, и, если все ОК, сообщаем bootloader, что обновление прошло успешно.

В случае проблем с обновлением bootloader вернется на старую версию прошивки после нескольких неудачных попыток загрузиться с новой системы.

На официальном сайте для разработчиков Android Source этот процесс расписан более детально в 9 шагах, также там объясняется, как все работает после перезагрузки.

Особенность бесшовной A/B-схемы обновление это съедение большего объема flash- памяти. Насколько большего? Это можно оценить по приведенным ниже схемам разделов для Android 9.0. Как уже упоминалось ранее, разработчик может выбирать, какую из схем A/B или non-A/B применять в конфигурации системы.

Карта разделов Android P (recovery)

[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000

[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000

[mmcblk0p03] cache offset 0x000006c00000, size 0x000046000000

[mmcblk0p04] env offset 0x00004d400000, size 0x000000800000

[mmcblk0p05] logo offset 0x00004e400000, size 0x000000800000

[mmcblk0p06] recovery offset 0x00004f400000, size 0x000001800000

[mmcblk0p07] misc offset 0x000051400000, size 0x000000800000

[mmcblk0p08] dtbo offset 0x000052400000, size 0x000000800000

[mmcblk0p09] cri_data offset 0x000053400000, size 0x000000800000

[mmcblk0p10] param offset 0x000054400000, size 0x000001000000

[mmcblk0p11] boot offset 0x000055c00000, size 0x000001000000

[mmcblk0p12] rsv offset 0x000057400000, size 0x000001000000

[mmcblk0p13] metadata offset 0x000058c00000, size 0x000001000000

[mmcblk0p14] vbmeta offset 0x00005a400000, size 0x000000200000

[mmcblk0p15] tee offset 0x00005ae00000, size 0x000002000000

[mmcblk0p16] vendor offset 0x00005d600000, size 0x000040000000

[mmcblk0p17] odm offset 0x00009de00000, size 0x000008000000

[mmcblk0p18] system offset 0x0000a6600000, size 0x000050000000

[mmcblk0p19] product offset 0x0000f6e00000, size 0x00000800000

Карта разделов Android P (A/B-схема)

[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000

[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000

[mmcblk0p03] cache offset 0x000006c00000, size 0x000000000000

[mmcblk0p04] env offset 0x000007400000, size 0x000000800000

[mmcblk0p05] logo offset 0x000008400000, size 0x000000800000

[mmcblk0p06] boot_a offset 0x000009400000, size 0x000001000000

[mmcblk0p07] misc offset 0x00000ac00000, size 0x000000800000

[mmcblk0p08] dtbo_a offset 0x00000bc00000, size 0x000000800000

[mmcblk0p09] dtbo_b offset 0x00000cc00000, size 0x000000800000

[mmcblk0p10] cri_data offset 0x00000dc00000, size 0x000000800000

[mmcblk0p11] param offset 0x00000ec00000, size 0x000001000000

[mmcblk0p12] boot_b offset 0x000010400000, size 0x000001000000

[mmcblk0p13] rsv offset 0x000011c00000, size 0x000001000000

[mmcblk0p14] metadata_a offset 0x000013400000, size 0x000001000000

[mmcblk0p15] metadata_b offset 0x000014c00000, size 0x000001000000

[mmcblk0p16] vbmeta_a offset 0x000016400000, size 0x000000200000

[mmcblk0p17] vbmeta_b offset 0x000016e00000, size 0x000000200000

[mmcblk0p18] tee offset 0x000017800000, size 0x000002000000

[mmcblk0p19] vendor_a offset 0x00001a000000, size 0x000040000000

[mmcblk0p20] vendor_b offset 0x00005a800000, size 0x000040000000

[mmcblk0p21] odm_a offset 0x00009b000000, size 0x000008000000

[mmcblk0p22] odm_b offset 0x0000a3800000, size 0x000008000000

[mmcblk0p23] system_a offset 0x0000ac000000, size 0x000050000000

[mmcblk0p24] system_b offset 0x0000fc800000, size 0x000050000000

[mmcblk0p25] product_a offset 0x00014d000000, size 0x000008000000

[mmcblk0p26] product_b offset 0x000155800000, size 0x000008000000

[mmcblk0p27] data offset 0x00015e000000, size 0x000245e00000

Если сравнить эти две конфигурации, то можно заметить, что раздел data при A/B-схеме меньше на 1,6 ГБ, и это цена дублирующихся системных разделов. Много это или мало каждый решает сам, ориентируясь на характеристики своего устройства/проекта.

Проект Treble

Следующие изменения в системе обновления произошли в Android 8.0. Начиная с Android O (8.0) и продолжая в Android P (9.0), Google реализует свой проект Treble. Идея проекта состоит в том, чтобы упростить технологический процесс создания обновления для андроид-устройства. Google предложил разделить с помощью неизменных интерфейсов части прошивки, созданием которых занимаются разные компании. Процесс разработки прошивки для конкретного девайса можно упрощенно разделить на следующие шаги:

  1. команда Android создает новую версию своей OC;

  2. разработчик чипа или системы на кристалле (Silicon Manufacturer) создает аппаратно-зависимые патчи для запуска этой версии Android на своих платах;

  3. и уже разработчики конечного устройства (Vendors) делают свою часть для реализации всех функций конкретного продукта для рынка электроники.

Проект Treble разделяет ОС Android с дополнениями от производителей чипов/СнК и код разработчика конечного устройства, так что теперь операционная система может получать обновления без реализации изменений от производителя устройства.

Разделение происходит как с помощью программного интерфейса (переход с Hardware Abstraction Layer 1.0 на HAL2.0), так и за счет выделения отдельных разделов на flash-памяти для Silicon Manufacturer и Vendor (выше в карте разделов Android 9.0 можно увидеть разделы odm, vendor, product).

Переход с HAL1.0 на HAL2.0 заключается в отказе от прямого связывания с системными библиотеками. Вместо этого, используя IPC Binder, можно подключаться к системным сервисам.

И еще одно небольшое, но полезное изменение: начиная с Android 8.0, в update_engine добавлена поддержка потоковых обновлений по A/B-схеме, в ходе которых идет прямая запись в слот B без необходимости промежуточного хранения данных в /data. Для таких потоковых обновлений практически не требуется временное хранилище, достаточно всего лишь 100 килобайт для сохранения метаданных.

При этом необходимо, чтобы http-сервер, используемый для скачивания обновления, поддерживал HTTP range requests или другими словами докачку.

Проект Mainline

Следующим серьезным этапом в развитии системы обновления Android стал проект Mainline. Реализация этого проекта началась с Android 10.0 и продолжилась в текущем Android 11.0.

Проект Mainline позволяет обновлять отдельные системные компоненты без обновления ОС целиком. Нужные данные загружаются через Google Play отдельно от OTA-обновления прошивки от производителя. Предполагается, что прямая доставка обновлений, не привязанных к оборудованию частей Android, позволит существенно сократить время получения обновлений, увеличить оперативность исправления уязвимостей и снизить зависимость от производителей устройств в поддержке безопасности ОС.

Для реализации проекта Mainline выбранные компонентов системы Android преобразуется в модули. Часть этих модулей имеет старый формат APK, а часть конвертируется в новый APEX-формат, который отличается от APK возможностью применения на раннем этапе загрузки системы. На случай возможных сбоев предусмотрен режим отката изменений.

С APEX-пакетами работает системный сервис APEX manager (apexd). Это нативный сервис, который после проверки распаковывает APEX-пакет в пользовательское пространство на диске и добавляет запись о нем в свою базу данных. При следующей загрузке системы APEX manager проверяет все пакеты из базы данных, создает loop-устройство для ext4-образа каждого APEX-пакета и монтирует его по пути /apex/name@ver.

Модули с обновлениями изначально будут поставляться с открытым кодом, они будут сразу доступны в репозиториях AOSP (Android Open Source Project) и смогут включать улучшения и исправления, подготовленные сторонними участниками.

В рамках проекта Mainline в Android 10 было добавлено 13 обновляемых модулей, а в Android 11 в дополнение к уже существующим прибавилось еще 11 модулей.

Схема Virtual A/B

Также в Android 11 к схемам non-A/B и A/B была добавлена схема Virtual A/B. Этот новый механизм обновления сочетает преимущества обоих предшественников, он обеспечивает устойчивое к сбоям обновление устройства, задействуя при этом минимальный объем flash-памяти. Это стало возможным благодаря созданию снимков файловой системы (snapshot) с использованием технологии Device-mapper (подсистема ядра Linux, позволяющая создавать виртуальные блочные устройства) и Dynamic Partitions.

Dynamic Partitions это система организации динамических разделов для Android. С ее помощью можно создавать, изменять размер или уничтожать разделы прямо в процессе обновления по воздуху (OTA). При использовании динамических разделов разработчикам больше не нужно беспокоиться о размере отдельных разделов, таких как system, vendor и product. Вместо них на устройстве выделяется суперраздел, внутри которого можно динамически изменять размер подразделов. Больше нет необходимости оставлять свободное пространство для будущих OTA-обновлений внутри отдельных образов разделов. Оставшееся свободное место в суперразделе теперь доступно для всех динамических подразделов.

И в заключении последние слухи конца 2020 года вишенка на торте. Google конвертирует Android Runtime в модуль Mainline. Android Runtime или ART это среда выполнения Android-приложений, включающая компиляцию байт-кода приложения в машинные инструкции. Так что есть вероятность, что уже в Android 12 можно будет обновить ART через GooglePlay, установив APEX-пакет.

Также, вероятно, система обновления Android мигрирует в Fuchsia, новую ОС Google, которая сейчас находится в процессе разработки. Они традиционно копируют удачные решения в своих программных продуктах. Так, например, update_engine для A/B-схемы, который применяется сейчас в Android, используется в еще одной ОC Google Chrome OS. Или еще один пример: в Fuchsia предлагается библиотека Machina, которая позволяет запускать Linux-программы в специальной изолированной виртуальной машине по аналогии с тем, как организован запуск Linux-приложений в той же Chrome OS.

Желаем всем успешных обновлений!

P.S. Как там было в Индиане Джонсе?
Как вы меня узнали?
У вас глаза вашего отца.
И уши моей матери. Но все остальное принадлежит вам.

Подробнее..

Проблемы методологии проектирования микропроцессорных систем

24.12.2020 16:21:15 | Автор: admin

Применяемая, в настоящее время, для проектирования СБИС, методология с использованием языков описания аппаратуры, обладает общепризнанными недостатками, а именно:

  • Разработка сложных СБИС требует сотни квалифицированных инженеров, несколько лет работы и затрат в миллиарды долларов.

  • До половины времени разработки, уходит на поиск и устранение ошибок в программной модели проектируемого микропроцессора.

  • Существенные трудозатраты требуются для достижения высоких характеристик по площади, производительности, энергетической эффективности.

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

Программы DARPA

В рамках программы Electronics Resurgence Initiative, объявленной DARPA, поставлена задача преодолеть проблемы применяемой методологии проектирования микропроцессорных систем. С этой целью реализуется следующие подпрограммы:

  • CRAFT предполагает создание средств высокоуровневого синтеза СБИС;

  • IDEA направлена на создание автоматического генератора компоновки SoC, многокристальных микросхем, печатных плат;

  • POSH нацелена на создание жизнеспособной экосистемы проектирования аппаратуры и верификации, с открытым исходным кодом, которая позволит экономически эффективно проектировать ультра-сложные SoC.

В случае успешного выполнения указанных программ полученные результаты должны быть объединены в перспективных САПР. Предполагается достичь 10 кратного роста в скорости разработки над ручным созданием RTL кода. Кроме того, ставится цель принципиально изменить практику разработки микропроцессорных устройств. Итоговая цель преобразования инженерной практики описана так:

  • Разработка СБИС становится частью инструментария разработчика программного обеспечения.

  • Каждая компания разработчик ПО, получает возможность разрабатывать СБИС.

Описывая ситуацию в отрасли разработки микропроцессорных систем, DARPA говорит о следующих проблемах (на основе Electronics Resurgence Initiative Page 3 Investments Design Thrust). Интеллектуальные системы следующего поколения, в областях искусственного интеллекта, автономных транспортных средств, связи, радиоэлектронной борьбы и радиолокации, потребуют на порядок большей эффективности обработки, чем та, которую предлагает современная коммерческая электроника. Достижение требуемых уровней производительности, потребует разработки очень сложных платформ SoC, использующих самые передовые технологии интегральных схем. В последние годы сложность микросхем быстро росла, произошел взрыв затрат и времени, необходимых для разработки усовершенствованных SoC, печатных плат и многокристальных сборок (SiP). Предлагаемая инициатива создаст новые парадигмы для интеллектуального физического проектирования и уменьшит барьеры для проектирования высокопроизводительных, высокоэффективных специализированных интегральных схем.

Исследовательский подход в программе CRAFT (из доклада Khailany Brucek CRAFT Final на ERI Summit 2019):

  1. Поднять уровень абстракции при разработке аппаратуры:

    a. Использовать языки более высокого уровня, например, C ++ вместо Verilog;

    b. Использовать инструменты высокоуровневого синтеза;

    c. Использовать библиотеки и генераторы, например, MatchLib.

  2. Применение методологии AGILE в разработке СБИС:

    a. Небольшие команды, совместно работая над архитектурой, реализацией, VLSI (Very Large Scale Integration);

    b. Непрерывная интеграция и средства автоматической верификации;

    c. AGILE методы управления проектами;

    d. Круглосуточная генерация из С++ в схему.

Предложен высоко продуктивный подход к разработке цифровых СБИС для создания сложных SoC. Маршрут проектирования включает средства высокоуровневого синтеза, объектно-ориентированные библиотеки синтезируемых компонентов на языках SystemC и С++. И модульный подход к физическому проектированию СБИС основанный на мелкозернистом глобально асинхронном и локально синхронном (GALS) тактировании. Методология проектирования была продемонстрирована на 16-нм тестовом чипе FinFET, предназначенном для машинного обучения и компьютерного зрения. (A Modular Digital VLSI Flow for High-Productivity SoC Design, Khailany et al., DAC 2018)

Spoiler

Рисунок 1. Вариант маршрута проектирования предложенный для программы CRAFT [1].

Программа IDEA состоит из двух этапов. На первом этапе будет создан генератор макетов, для создания автоматизированной платформы проектирования печатных плат, SoC и SiP. На втором этапе должна быть создана программная система, которая на основе функционального описание высокого уровня и заданных ограничений, будет создавать печатные платы и микросхемы правильной конструкции на основе обширной библиотеки коммерческих компонентов (COTS). Примеры компонентов COTS включают в себя коммерчески доступные микросхемы для печатных плат, кристаллы для SiP и IP-модули для SoC. Созданный список цепей, будет поступать на вход генератора макетов, разработанного в первой части программы. Таким образом будет создана сквозная автоматизированная платформа проектирования для печатных плат, SoC и SiP.

Spoiler

Рисунок 2. Схема применение искусственного интеллекта для решения задачи проектирования СБИС, по замыслу программы IDEA [5].

При этом признаётся, что для достижения поставленных, программой IDEA, целей потребуется прорыв в алгоритмах машинного обучения и оптимизации. Предполагаемый вид маршрута проектирования программы IDEA показан на рисунке 3.

Spoiler

Рисунок 3. Концепция маршрута проектирования программы IDEA [5].

В программе POSH предлагается использовать практику разработки ПО с открытым кодом, в области разработки микропроцессорных систем. В документах DARPA говорится следующее. Появление экосистемы программного обеспечения с открытым исходным кодом позволило создать глубокую иерархию программного обеспечения со многими уровнями абстракции, что значительно повысило производительность в проектах разработки сложных программных систем. Модель абстрагирования программного обеспечения позволяет программисту сосредоточить свои усилия в одной конкретной области, игнорируя при этом большое количество деталей, которые в противном случае были бы слишком сложными для обработки. Чтобы создать устойчивую экосистему разработки аппаратуры с открытым исходным кодом, программа POSH создаст технологии, методы и стандарты для эффективной разработки SoC с открытым исходным кодом. Предполагается, что критически важным компонентом этих усилий станет разработка технологий проверки, обеспечивающих доверие к строительным блокам (IP блокам) аппаратного обеспечения с открытым исходным кодом.

Одной из причин, по которой не удалось реализовать открытую и совместную экосистему SoC, является высокая стоимость аппаратных сбоев. Аппаратная ошибка, обнаруженная в изготовленном оборудовании, может обойтись коммерческим компаниям в миллионы или миллиарды долларов в виде отзывов и потерянного дохода. Это отличается от индустрии программного обеспечения, где ошибка часто может быть исправлена на месте с помощью недорогого обновления программного обеспечения. Для создания открытой аппаратной экосистемы существует потребность в рентабельной технологии валидации, подходящей для совместных разработок с открытым исходным кодом.

В рамках обширной экосистемы компонентов с открытым исходным кодом неизвестного качества, существует потребность в технологии, которая могла бы объективно оценить и эффективно дифференцировать высококачественные и низкокачественные блоки IP до включения в проекты SoC. Для широкого распространения также важно, чтобы технология обеспечения доверия на этом уровне требовала от пользователя минимальных (или нулевых) инженерных усилий. Технология формальной гарантии, которая позволяет проводить прямой анализ самого исходного кода, может обеспечить точную оценку качества и помочь стимулировать принятие, более рискованных, компонентов с открытым исходным кодом.

Spoiler

Рисунок 4. Экосистема с открытым исходным кодом для разработки SoC по замыслу программы POSH [4].

Программа POSH предполагает создание необходимых компонентов экосистемы для широкого использования в разработке SoC, блоков с открытым исходным кодом. Главными компонентами экосистемы являются программные средства, обеспечивающие моделирование, верификацию, валидацию, отладку отдельных IP блоков и собранных на их основе SoC.

При этом не ожидается полное устранение ошибок: Качество платформы моделирования по своей природе ограничено качеством используемых моделей системы и векторов испытаний, и вполне вероятно, что ряд критических ошибок будет пропущен.

Промежуточные результаты программ, представленные на ERI Summit 2019, подтверждают возможность достижения заявленной цели.

В частности, в рамках программы CRAFT показаны следующие результаты:

  • Снижение трудоёмкости в 8-11 раз для аналоговых и цифровых интегральных схем.

  • Сокращение трудоёмкости в 4.3-5.3 раза при переносе на технологию 16-нм GF, продемонстрированное на цифровых и цифро-аналоговых ASIC.

Однако существует ряд проблем:

  • При обсуждении программы POSH признаётся, что абсолютно безошибочное проектирование невозможно: Качество платформы моделирования, по своей природе, ограничено качеством используемых моделей системы и векторов испытаний, и вполне вероятно, что ряд критических ошибок будет пропущен.

  • Так же отмечается, что для достижения поставленных, программой IDEA, целей потребуется прорыв в алгоритмах машинного обучения и оптимизации. Для чего создаваемая платформа должна использовать прикладные методы машинного обучения для непрерывного развития, по мере появления новых наборов данных (примеров проектирования).

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

  • Кроме того, увеличение уровня абстракции на котором человек описывает проектные решения, создаёт предпосылки для снижение качества проекта по транзисторному бюджету, потребляемой мощности, быстродействию. И в настоящее время нет оснований утверждать, что предлагаемые решения обеспечат незначительное снижение качества, по сравнению с ручным проектированием.

Обратим внимание на методы повышения производительности проектирования, используемые в программах DARPA:

  • При разработке аппаратуры поднять уровень абстракции на котором человек описывает проектируемую систему. Все ниже лежащие уровни абстракции передать автоматическим средствам.

  • Минимизировать участие человека в решении задачи проектирования, за счёт применения средств искусственного интеллекта.

  • Создать условия для повторного использования качественных строительных блоков аппаратного обеспечения.

Парадигма проектирования остаётся прежней использование языков программирования для описания проектируемой аппаратуры.

Описанные программы опираются на базу существующих решений, готовые к использованию компоненты COTS, IP блоки, программные средства с открытым исходным кодом. Однако, опираясь только на готовые компоненты невозможно достичь высшей производительности или минимального энергопотребления. Разработка новых архитектур, максимально сложных SoC и SiP с использованием новых технологий производства, для этих задач остаётся всё та же методология проектирования, которая критикуется в программах DARPA.

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

В декабре 2019 года компания NVIDIA представила перспективную платформу для самоуправляемых автомашин и роботов [6]. Анонсированный процессор NVIDIA Orin появится не ранее 2022 год. Для обеспечения пятого уровня автономности самоуправляемого автомобиля, потребуется сочетать пару процессоров Orin и два не названных, перспективных, дискретных графических процессора NVIDIA [32]. Уровень быстродействия в этом случае составит до 2000 триллионов операций в секунду, при энергопотреблении до 750 Вт.

Очевидно, что для перспективных роботов, которые должны не просто перемещаться в пространстве, но и совершать полезную работу, необходима ещё большая производительность, при существенно меньшем потреблении энергии.

Другим примером могут служить современные программы создания суперкомпьютеров максимальной производительности, которые реализуют Евросоюз, США, Китай, Япония и другие страны. Эти программы, в частности, реализуемые DARPA и DOE, фокусируются на решении следующих задач [25]:

  • Существенный рост производительности при умеренном энергопотреблении;

  • Повышение надежности аппаратуры и программ;

  • Рост продуктивности программирования.

Увеличение реальной производительности на разных типах задач требует создания принципиально новых SoC и SiP с использованием передовых архитектур и технологий производства, не основанных на ранее использовавшихся решениях.

Например, суперкомпьютер Neocortex, создаётся для задач классов DCIGN и RNN это более точное прогнозирование погоды, анализ геномов, поиск новых материалов и разработка новых лекарств. Предположительно, будет введено в эксплуатацию до конца 2020 года [37]. Он объединяет серверы Cerebras CS-1 и HPE SuperDome Flex в единую систему с общей памятью. Сервер Cerebras CS-1 основан на уникальном процессоре Cerebras. На изготовление одного процессора уходит целая 300-мм пластина [2].

Основой для роста сложности микропроцессорных систем, в ближайшем будущем, станет развитие технологии 3D TSV. Например, концепция, предложенная IBM [16], к настоящему моменту, изготовление микроканалов продемонстрировано в кремнии [22].

Spoiler

Рисунок 5. Концепция построения перспективных микропроцессорных систем предложенная IBM [16].

Краткая характеристика современной методологии, ключевые проблемы

К настоящему времени в проектировании сложных микропроцессорных систем сложилась практика, представленная на рисунке 6, в изложении Brucek Khailany (Director of research, ASIC & VLSI NVIDIA Corporation).

Spoiler

Рисунок 6. Использование языков программирования в проектировании СБИС [1].

В процессе проектирования используются различные языки программирования, как специализированные, в частности языки описания аппаратуры (HDL), так и языки высокого уровня общего назначения.

Создаваемое изделие описывается в виде программы на языке описания аппаратуры (HDL). Созданная программа, обычно, представляет собой модель уровня регистровых передач (RTL), которая должна быть преобразована в логическую схему посредством автоматического синтеза (Logic Synthesis). Далее созданную схему необходимо превратить в описание физического изделия. Для чего выполняется последовательность этапов проектирования, которую принято называть физическое проектирование (physical design).

Упрощённая схема маршрута проектирования СБИС, с выделением этапов физического проектирования, представлена на рис. 7.

Spoiler

Рисунок 7. Типовой маршрут проектирования с выделением этапов физического проектирования СБИС [23].

Здесь важно отметить, что инженерная задача разработки вычислительной системы (SiP) разделена на две задачи с разным понятийным аппаратом. Для логического проектирования - математический понятийный аппарат, а для физического проектирования - понятийный аппарат описывающий физические процессы.

Логическое проектирование оперирует абстрактными понятиями и может выполняться без учёта физических особенностей технологии производства. В частности, архитектура может определяться свойствами целевых алгоритмов и языков программирования, а вычислитель быть представлен лишь в виде математической абстракции, т.е. модели вычислений. Однако практика проектирования показывает, что такой подход приводит к низким характеристикам реальных изделий. То есть учёт технологических ограничений необходим уже на этапе разработки архитектуры вычислительной системы.

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

Взаимосвязи понятий отрасли, в виде распространения задаваемых ограничений, на возможные варианты инженерных решений, показаны на рис. 8.

Spoiler

Рисунок 8. Распространение ограничений на варианты реализации, между понятийными компонентами отрасли вычислительной техники.

Практика разработки сложных микропроцессорных систем, в том числе обладающих передовыми характеристиками для своего времени, показывает, что применяемая методология обладает существенными недостатками.

Трудоёмкость проектирования, например, для NVIDIA Xavier оценивается в 8000 человеко-лет [1].

По слова Jensen Huang, на создание NVIDIA V100 потребовалось несколько тысяч инженеров, ушло несколько лет, при примерной стоимости разработки в 3 миллиарда долларов [7].

При этом качество автоматического синтеза остается невысоким, а количество ошибок растет, опережая рост сложности проектируемых систем. На рис. 9 показана одна из оценок сложности верификации, в стоимостном выражении.

Таким образом трудоёмкость и количество ошибок в программной модели изделия создают порог сложности, который станет непреодолимым препятствием для роста сложности разрабатываемых систем.

Spoiler

Рисунок 9. Стоимость разработки СБИС в зависимости от их сложности [7].

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

Мышление человека в инженерной практике

Изложенный выше подход к созданию методологии проектирования принято называть инструментальным. То есть методология строится на возможностях инструментов, к работе с которыми человек должен адаптироваться. Возможен и противоположный инструментальному подход к созданию методологии проектирования [30].

Предполагая, что человек будет решать задачу проектирования, создание методологии возможно с опорой на современные знания, накопленные науками о человеке. То есть сама методология и её инструментарий создаются на основе знаний о том, как человек решает конкретную задачу.

Необходимо отметить, что в настоящее время, общепризнанная теория личности, а значит и мышления человека, не создана. Однако, накоплен большой научно-практический материал, позволяющий выделить психологические требования к методологии проектирования.

На основе современных знаний о психологии мышления, можно построить следующую картину решения человеком инженерных задач.

Любая задача проектирования предполагает поиск решения (достижения требуемых характеристик) средствами доступной, в данной момент, технологии производства. Процесс решение задачи проектирования представляет собой некоторую последовательность этапов со всё более точным описанием создаваемого изделия.

Для каждой отрасли техники (технической системы) исторически сложилась своя последовательность этапов проектирования, т.е. уровней абстракции на каждом из которых рассматривается некоторая часть задачи проектирования. На каждом уровне абстракции (этапе разработки) используется специфичный набор понятий, описывающий решаемую на данном этапе проблему и её решение.

Понятийный аппарат технической отрасли, также, как и декомпозиция задачи, т.е. количество уровней абстракции и содержание решаемой на каждом уровне задачи, обусловлены физической природой создаваемых изделий.

Обучение инженерному делу (решению инженерных задач), в рамках конкретной отрасли техники, требует освоение понятийного аппарата и физической основы этой отрасли. То есть человек учится создавать конкретные технические изделия в контексте конкретных физических явлений и понятийного аппарата, описывающего процессы и взаимосвязи данной технической отрасли.

Методология проектирования и реализующий её инструментарий, определяют порядок проектирования (последовательность этапов) и набор понятий в которых описывается задача и её решение. Таким образом, методология навязывает инженеру способ решения задачи проектирования, набор понятий, форму их представления, а, в итоге, и определённый стиль мышления. Однако, чрезмерный отрыв от иерархии абстракций и понятийного аппарата отрасли (замена или исключение понятий и уровней абстракции) может привести к потере качества решения и провоцирует человека совершать ошибки.

Происходит это в силу особенности работы человеческой психики в процессе решения инженерных задач.

Мозг (память и мышление) оперирует комплексами, объединяющими все известные субъекту знания о некотором объекте и его ассоциативные связи с другими объектами [20]. То есть визуальное и вербальное представление понятий взаимосвязаны. Но восприятие вербальных и визуальных объектов имеют разные физиологические механизмы и объединяются только на уровне высших психических процессов.

Установлено, что в силу личных особенностей мышления, некоторые люди легче оперируют вербальными понятиями, а другие визуальными [33].

Изучение человека в процессе трудовой деятельности привело к выделению в психологии отраслей инженерной психологии и психологии труда. Также, с развитием вычислительной техники, сформировалась область психология программирования [34].

В частности, в рамках психологии программирования, установлено, что профессиональные программисты обладают, отличными от представителей других профессий, особенностями мышления. В том числе, развитыми вербальными способностями. То есть быстрее и с меньшей умственной нагрузкой осваивают новые языки, в том числе искусственные, и работают с текстами [17, 27].

Длительная профессиональная деятельность может приводить к психологической профессиональной деформации личности, которая выражается, в частности, в формировании стереотипного мышления о проблематике отрасли и методах работы, используемых при решении задач отрасли [15].

Ошибка - неизбежный результат деятельности человека. Вероятность совершения ошибки определяется многими факторами среди которых сам человек, его физическое и психоэмоциональное состояние, уровень знаний и навыков, а также факторы условий, в которых совершается деятельность [30].

Любая работа ума создаёт умственную нагрузку, которая постепенно утомляет нервную систему, что снижает концентрацию и повышает вероятность ошибки. Умственная нагрузка, при решении одной и той же задачи, может различаться в зависимости от условий в которых человек должен эту задачу решать. Например, слепая игра в шахматы (не глядя на доску) или решение ханойской головоломки в уме (без физического перемещения дисков) создают большую умственную нагрузку, чем те же задачи находящиеся в поле зрения [10, 12].

Мышление в процессе решения задачи проектирования представляет собой последовательность интеллектуальных действий.

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

Все эти действия есть работа с информацией восприятие и создание информации в предложенных методологией условиях. Методология устанавливает формы представления информации, а именно понятийного аппарата, и формы описания решения задачи проектирования. А условия восприятия и создания информации определяются инструментарием, предложенным человеку для работы.

Восприятие информации предполагает установление соответствия между формами представления информации (установлены методологией) и известным человеку понятийным аппаратом отрасли. Тогда возникает понимание условий задачи и выполняется поиск решения.

Поиск решения выполнятся с помощью предложенных методологией инструментов, в виде последовательного описания частного решения (решения задачи на данном уровне абстракции).

Решение формируется как последовательное описание взаимодействия компонентов присущих данной отрасли техники. То есть, решение задачи является протяжённым во времени процессом в течении которого создаётся описание решения.

Именно в этом процессе и происходит создание информации, когда понятия отрасли, в которых человек мыслит о задаче, преобразуются в описание решения, в установленной методологией форме.

Таким образом, в процессе решения задачи проектирования, восприятие и создание информации повторяются многократно. Что требует от человека преобразования понятий отрасли, в которых он мыслит о задаче, в установленные методологией формы представления информации и обратно.

Все эти интеллектуальные действия создают умственную нагрузку, уровень которой зависит от личных особенностей и условий в которых выполняется интеллектуальная работа.

Основной уровень умственной нагрузки, в процессе решения инженерной задачи определяется простотой восприятия и создания информации, поскольку эти интеллектуальные действия чаще всего выполняются в процессе решения инженерной задачи.

Дополнительная умственная нагрузка определяется особенностями методологии и реализующих её инструментов (т.е. САПР и др.). Например, необходимость учитывать, в процессе проектирования, понятия отрасли, которые в методологии отсутствуют, создаёт дополнительную умственную нагрузку и повышает вероятность ошибок.

Связь между формой представления понятий и скоростью восприятия понятий (условий задачи), установлена экспериментально. Следствием этого стало введение терминов образный интерфейс, когнитивная графика, экологический интерфейс. Создание таких интерфейсов внедрено в инженерной практике, прежде всего в операторской работе по управлению сложными промышленными объектами [29].

В некоторых отраслях исторически сложилось и внедрено в САПР введение процесса решения в поле зрения, что упрощает восприятие понятий (т.е. процессов и взаимосвязей) и поиск решения.

В качестве примера можно привести отрасль авиастроения. Для примера рассмотрим, выполненный не профессионалом, проект тяжёлого конвертоплана созданный в САПР T-FLEX CAD 16 (см. рис. 10). Проект состоящий из более чем 60000 тел был создан одним инженером, исключительно на основе информации из открытых источников и собственного опыта проектирования. На исследование предметной области ушло около 2-х месяцев и ещё примерно 6 месяцев периодической работы на реальное проектирование [31].

Spoiler

Рисунок 10. Проект летательного аппарата в САПР T-FLEX CAD 16.

Высокая производительность проектирования, в данном случае, может быть объяснена, с психологической точки зрения, следующим.

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

Spoiler

Рисунок 11. Визуализация обтекания модели самолёта в виртуальной аэродинамической трубе.

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

В проектировании СБИС точным решением является описание физической структуры изделия, которая будет создана в процессе изготовления СБИС.

В отличии от приведённого примера отрасли авиастроения, отрасль вычислительной техники, имеет существенно иные физические основания и сложно организованную структуру понятийного аппарата (см. рис. 8), который носит более абстрактный характер.

Источники проблем методологии проектирования

Анализ методологии на предмет поиска источников проблем проведён с точки зрения условий, создаваемых методологией, для работы мышления человека.

Конфликт формы представления понятий

Используемая методология проектирования требует от разработчика представить физическое изделие в форме программы. На всех этапах разработки создаваемое изделие описывается средствами языков программирования, то есть алгоритмическими понятиями, в форме программ (см. рис. 6).

Человек мыслит о задаче в пространстве понятий отрасли, которые имеют определённую форму представления, обычно сложившуюся исторически. Но при использовании этих понятий в описании изделия их необходимо представить в форме установленной методологией.

Требуется всё многообразие не алгоритмических понятий отрасли, представить их алгоритмическим выражением (средствами используемых языков программирования). В то время, как разработка вычислительных систем и СБИС не тождественна программированию, на уровне понятийного аппарата. Понятийный аппарат программирования лишь подмножество понятийного аппарата отрасли вычислительной техники.

Такая ситуация создаёт конфликт формы представления понятий, а значит и дополнительную умственную нагрузку.

На практике установлено, что текст, далеко не всегда, лучшая форма представления понятий, в том числе алгоритмических. Примером могут служить медицинские алгоритмы. Практика показала, что их текстовое описание не лучший способ представления, потому, в настоящее время, используются схемы алгоритмов, в частности визуальный язык ДРАКОН [21].

Разрыв целостности маршрута и понятийного аппарата

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

Применительно к существующей технологии производства СБИС выделяют следующие проблемы логического синтеза [23]:

  • Задержка на межсоединениях становится доминирующей, что требует совмещения этапов sizing/physical/logic synthesis. Логический синтез без учета реализации схемы в кремнии неэффективен.

  • Изготовление транзисторов усложняется, что делает критическим методы проверки, рассеиваемая мощность становится определяющим фактором.

Многие задачи физического проектирования NP-трудны решаются при помощи эвристик, которые, обычно, находят почти оптимальные решения [24]. Необходимо заметить, что при использовании эвристик, важным является наличие на выходе фильтра здравого смысла оценки результата человеком. Без развитых средств визуализации, эффективный контроль качества синтеза человеком не возможен.

Для решения этой проблемы, в программе IDEA, предлагается использовать, на этапе логического синтеза и физического проектирования СБИС, обученные модели искусственного интеллекта (см. рис. 2). При этом результаты должны контролироваться человеком (см. рис. 3).

Любой из HDL является, прежде всего, языком программирования и, как следствие, инструментом более высокого уровня абстракции, чем понятийный аппарат этапа схемотехнического проектирования. Кроме того, языки программирования применяются на всех этапах проектирования, как средство описания решения (см. рис. 6). Тем самым подталкивая человека мыслить лишь об алгоритмах.

Ранее основным средством решения задачи на этапе схемотехнического проектирования являлось схемное проектирование. Не только как способ описания решения, но как метод мышления в понятиях этапа схемотехнического проектирования.

В рамках применяемой методологии логический синтез и схемотехническое проектирования становятся частью этапа физического проектирования СБИС. Понятийный аппарат этапа схемотехнического проектирования вытесняется на этап физического проектирования, а на ранних этапах разработки человек мыслит на уровне алгоритмов. Как следствие, навыки схемотехнического проектирования становятся частью этапа физического проектирования СБИС.

Это нарушает целостность маршрута проектирования, как последовательности шагов, уточняющих решения задачи проектирования, затрудняя учёт технологических ограничений на ранних этапах разработки. Поскольку, учёт технологических ограничений необходим уже на этапе разработки архитектуры, иначе может оказаться, что выбранная модель вычислений или выбранные архитектурные решения (алгоритмы функционирования, пути команд и данных, особенности внутреннего языка), не могут быть эффективно реализованы на имеющейся технологии производства.

Разрыв маршрута проектирования (последовательного уточнения решения) выражается, в том числе, в трудностях понимания между разными специалистами. Люди, выполняющие решение задачи на разных её этапах, разделены на уровне навыков, то есть им труднее понять друг друга, в силу владения разным понятийным аппаратом.

Требования к личным навыкам

В силу применения языков программирования для описания создаваемого устройства, основная форма представления информации, с которой работает человек тексты на искусственных языках (см. рис. 12).

Spoiler

Рисунок 12. Описание двухвходового мультиплексора на языке SystemVerilog [13].

Как следствие, основная часть умственно работы, т.е. восприятие и создание информации, связанна с восприятием и созданием текстов на искусственных языках (текстов программ).

Работа с текстом с минимальной умственной нагрузкой требует развитых вербальных навыков, которые формируются далеко не у всех взрослых людей [33].

Для формирования развитых вербальных навыков (навыков работы с текстами), необходимо соответствующее обучение. Установлено, что такие навыки формируются у профессиональных программистов [17, 27]. Но далеко не у всех людей, прошедших профессиональное обучение по специальностям программная инженерия (software engineer) или прикладная математика.

Применяемая методология требует, чтобы разработчики микропроцессорных систем обладали навыками программистов. Фактически методология превращает разработку СБИС в программирование. Однако, микропроцессорная система является физическим объектом, создание которого требует существенно больших знаний, чем приобретают программисты в процессе обучения. В разработке сложных микропроцессорных систем должны принимать участие инженеры разной специализации, то есть люди с разными знаниями и навыками. И далеко не все из них будут обладать развитыми вербальными навыками. А значит, при работе с текстами, они будут неизбежно испытывать повышенную умственную нагрузку и допускать большое количество ошибок.

Вывод

Все выше описанные особенности методологии с применением HDL, ставят человека в такие условия труда, что в процессе решения инженерной задачи существенно повышается вероятность ошибки. Кроме того, создаётся повышенная умственная нагрузка, ведущая к увеличению трудоёмкости инженерной задачи. А значит растёт требуемое количество инженеров и времени на решение задачи. Тем более при необходимости достижения предельных параметров разрабатываемого изделия.

Проблема и предлагаемое решение

Ключевую проблему применяемой методологии можно описать так - высокая трудоёмкость решения инженерной задачи при большом количестве ошибок допускаемых при описании решения.

Известно лишь два подхода к построению методологии проектирования инструментальный и человеко-ориентированный (антропоцентрический).

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

Во-первых, инженерное дело изменчиво, как по условиям задачи, так и по способам её решения. Например, в процессе развития технологий полупроводникового производства изменились характеристики технологии производства СБИС (соотношение задержек на вентилях и проводниках, существенно снизились размеры транзисторов и уровень рассеиваемой мощности), что изменило способы решения задачи проектирования. И в ближайшем будущем, технология производства микропроцессорных систем, неизбежно, претерпит существенные изменения.

Во-вторых, прогресс ИИ (машинного и глубокого обучения) достигнут в условиях постоянного контекста задачи, т.е. компоненты задачи и критерии качества решения со временем не меняются. Но в инженерном деле, в частности в проектировании СБИС контекст задачи изменчив. При том, что качество решения задачи проектирования СБИС оценивается по нескольким критериям, и в разных областях применения СБИС значимость критериев различна. И кроме того, для обучения ИИ требуется большое количество примеров, но в области проектирования СБИС таких примеров может оказаться недостаточно.

В связи с этим, некоторые успехи в достижении поставленных в программах DARPA целей, не дают гарантии дальнейшего роста производительности проектирования на основе предлагаемой парадигмы. Прежде всего, применительно к микропроцессорным системам (SoC & SiP) предельных параметров.

Второй подход для создания методологии проектирования, в отрасли вычислительной техники, ранее не применялся.

Однако, инженерная практики в других отраслях техники и личный опыт автора говорят о том, что человеко-ориентированный подход может дать хороший результат в повышении производительности труда при решении инженерных задач.

Автор предлагаемого проекта, наблюдал на практике эффективность схемного проектирования при разработке микроархитектуры микропроцессора. В рамках проекта суперкомпьютера Ангара, под руководством Эйсымонта Л.К., автор участвовал в разработке микропроцессора с массовым параллелизмом, где применялся метод схемного проектирования. Разработка микроархитектуры выполнялась одним человеком, обладавшим большим опытом схемотехнического проектирования. Применение схемного проектирования показало существенно меньшее количество ошибок, допускаемых человеком, при разработке микроархитектуры и схемотехнической реализации функций блоков. При этом, описание уже готовых схем, на языке Verilog, приводило к появлению ошибок, отсутствовавших в схемном описании. Для сравнения, работая в INTEL Corp., автор участвовал в разработке микропроцессора Kevet (проект закрыт). В проектировании RTL модели микроархитектуры, относительно простого микропроцессора, участвовало 6 инженеров. Для верификации RTL кода, только на микроархитектурном уровне, было задействовано 20 человек.

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

Ранее упомянутый пример, проект тяжёлого конвертоплана выполненный в САПР T-FLEX CAD 16, интересен тем, что проектирование ведётся в визуальной среде, дающей явную связь между понятиями, в которых мыслит инженер, и объектами, составляющими проектируемую систему.

Другой пример из области ракетостроения. При создании космической системы Энергия-Буран, для повышения производительности программирования, были созданы проблемно-ориентированные языки, основанные на терминах, понятиях и форме представления алгоритмов управления и испытаний, используемых разработчиками корабля. Такой подход позволил повысить производительность программирования и надёжность программного обеспечения. В дальнейшем, на основе когнитивно-эргономического подхода, был создан графический язык ДРАКОН. Применение его для создание различных ракетно-космических систем доказало эффективность идей, положенных в его основу [14, 28, 39].

Эти практические примеры, позволяют говорить о том, что возможности человека, по решению инженерных задач, полностью не раскрыты. При построении методологии проектирования, с применением современных знаний о когнитивной деятельности и подходов инженерной психологии, можно ожидать существенного роста производительности труда.

Литература

1. A modular digital VLSI flow for high-productivity SOC design. Brucek Khailany director of research, ASIC & VLSI NVIDIA CORPORATION. ERI Summit 2018.

2. Cerebras процессор для ИИ невероятных размеров и возможностей. Геннадий Детинич. 20.08.2019. https://3dnews.ru/992698 (дата обращения: 11.11.2020)

3. DARPA мечтает радикально упростить проектирование чипов. 04.07.2018 https://3dnews.ru/972103 (дата обращения 07.05.2019)

4. IDEA & POSH program updates. Andreas Olofsson. DARPA MTO program manager. ERI Summit 2019.

5. Intelligent Design of Electronic Assets (IDEA) & Posh Open Source Hardware (POSH) // Andreas Olofsson Program Manager, DARPA/MTO. Proposers Day Mountain View, CA. 9/22/17.

6. NVIDIA Introduces DRIVE AGX Orin Advanced, Software-Defined Platform for Autonomous Machines. Tuesday, December 17, 2019. https://nvidianews.nvidia.com/news/nvidia-introduces-drive-agx-orin-advanced-software-defined-platform-for-autonomous-machines (дата обращения: 11.11.2020)

7. Silicon Compilers - Version 2.0 // Andreas Olofsson Program Manager, DARPA/MTO. International Symposium on Physical Design. March 25-28, Monterey, CA. 2019.

8. Будылина С.М., Смирнов В.М. Физиология сенсорных систем и высшая нервная деятельность: Учеб. пособие для студ. высш. учеб, заведений. М. 2003.

9. Бухтев А. Методы и средства проектирования систем на кристалле. // Chip News 2003. -4.

10. Гигиена труда : учебник / под ред. Н. Ф. Измерова, В. Ф. Кириллова. -2-е изд., перераб. и доп. -М. : ГЭОТАР-Медиа, 2016.

11. Горбунов В., Елизаров Г., Эйсымонт Л. Экзафлопсные суперкомпьютеры: достижения и перспективы. Открытые системы. СУБД 2013. -07 http://www.osp.ru/os/2013/07/13037342/ (дата обращения 05.11.2013)

12. ГОСТ Р ИСО 10075-2011 Эргономические принципы обеспечения адекватности умственной нагрузки. Основные термины и определения.

13. Дональд Томас. Логическое проектирование и верификация систем на SystemVerilog / пер. с анг. А. А. Слинкина, А. С. Камкина, М. М. Чупилко; науч. ред. А. С. Камкин, М. М. Чупилко. М.: ДМК Пресс, 2019.

14. ДРАКОН [электронный ресурс]: Википедия. Свободная энциклопедия. https://ru.wikipedia.org/wiki/ДРАКОН (дата обращения: 11.11.2020)

15. Ильин Е. П. Дифференциальная психология профессиональной деятельности. СПб.: Питер, 2008. 16. Инновационные суперкомпьютерные технологии и проблемы создания отечественной перспективной элементной базы. / Л.К.Эйсымонт, В.С.Горбунов. Доклад на 5-м Московском суперкомпьютерном форуме. 21 октября 2014 года.

17. Исследование способности к усвоению искусственных языков у программистов. Орел Е. А. ОРГАНИЗАЦИОННАЯ ПСИХОЛОГИЯ. Т. 2. 2. 2012.

18. Как устроена универсальная разумная система? Анохин К.В. Наука о поведении: четыре главных вопроса Школа молодых ученых, 7-13 октября 2015. https://scorcher.ru/articles/images/3678/anokhin.pdf (дата обращения 08.09.2019)

19. Канышев В., Шагурин И. Применение языка SystemC и средств разработки на его основе для проектирования Систем на кристалле. // Chip News 2006. -9.

20. Когнитом: разум как физическая и математическая структура. К.В. Анохин. Семинар Социофизика. 27 сентября, 2016.

21. Космический ДРАКОН. Как заброшенный проект "Роскосмоса" подарил язык литовской медицине. Николай Воронин. BBC NEWS Русская служба. 5 августа 2019. https://www.bbc.com/russian/features-48583773 (дата обращения: 11.11.2020)

22. Кремниевый радиатор с микроканалами с жидкостью в 100 раз лучше металлического. 01.03.2019 https://3dnews.ru/983605 (дата обращения: 05.05.2019)

23. Ложкин С.А., Марченко А.М. Математические вопросы синтеза интегральных схем. [электронный ресурс] http://mk.cs.msu.ru/index.php/Математические_модели_и_методы_синтеза_СБИС (дата обращения: 15.10.2013)

24. Марков И. Проектирование интегральных схем: от разбиения графов до временной оптимизации систем. Лекции на факультете ВМК МГУ. 2013.

25. На пути к экзафлопсному суперкомпьютеру: результаты, направления, тенденции. / Горбунов В.С., Эйсымонт Л.К. Доклад на третьем Московском суперкомпьютерном форуме 01.11.2012

26. Общая психология : учебник для вузов / В. В. Нуркова, Н. Б. Березанская. 3-е изд., перераб. и доп. М. : Издательство Юрайт, 2017.

27. Особенности интеллекта профессиональных программистов. Орел Е. А. BECTH. MOCK. УН-ТА. СЕР. 14. ПСИХОЛОГИЯ. 2007. 2.

28. Параджанов В. Д. Как улучшить работу ума: Алгоритмы без программистов это очень просто! М.: Дело, 2001.

29. Представление информации для поддержки когнитивной деятельности человека-оператора. Анохин А. Н. // Актуальные проблемы психологии труда, инженерной психологии и эргономики. Выпуск 6 / Под ред. А. А. Обознова, А. Л. Журавлева. М.: Издательство Институт психологии РАН, 2014.

30. Применение концепций инженерной психологии к профессиям, традиционно не считающимся операторскими. С.А. Дружилов // Электронный журнал Психологическая наука и образование 1 2011.

31. Проект тяжёлого конвертоплана в T-FLEX CAD 16 (более 60000 тел). T-FLEX CAD. 25.11.2019. https://3dtoday.ru/blogs/topsystems/proekt-tyazhelogo-konvertoplana-v-t-flex-cad-16-bolee-60000-tel (дата обращения: 11.11.2020)

32. Процессор NVIDIA Orin шагнёт за пределы 12-нм технологии с помощью Samsung. Алексей Разин. 19.12.2019. https://3dnews.ru/1000054 (дата обращения: 11.11.2020)

33. Психология мышления. Гурова Л.Л. М.: ПЕР СЭ, 2005.

34. Психология программирования: цели, проблемы, перспективы. Рожников В. А. ОБЩЕСТВО: СОЦИОЛОГИЯ, ПСИХОЛОГИЯ, ПЕДАГОГИКА 3 2014.

35. Стасевич К. Человеческий мозг похудел на 14 миллиардов нейронов. 01.03.2012 года. http://compulenta.computerra.ru/archive/neuroscience/664455/ (дата обращения: 15.10.20013)

36. Стрелков Ю.К. Инженерная и профессиональная психология. 2-е изд. - М.: Издательский центр Академия, 2005.

37. Суперкомпьютер Neocortex: 800 тыс. ядер Cerebras для ИИ. Юрий Поздеев. 09.06.2020. https://servernews.ru/1013005 (дата обращения: 11.11.2020)

38. Финский суперкомпьютер получит 200 тысяч ядер благодаря 7-нм CPU AMD EPYC Rome. 15.12.2018 https://servernews.ru/979696 (дата обращения: 07.06.2019)

39. Энергия Буран [электронный ресурс]: Википедия. Свободная энциклопедия. https://ru.wikipedia.org/wiki/Энергия__Буран (дата обращения: 11.11.2020)

Подробнее..

Qomu полноценная система на кристалле размером с ноготь

18.12.2020 18:13:39 | Автор: admin

Миниатюризация в электронике достигла весьма впечатляющих результатов. На днях была представлена система на кристалле (SoC), Qomu, размером не больше ногтя. Эта плата часть семейства Tomu, миниатюрных плат, предназначенных для подключения к USB-портам ПК и ноутбуков. При этом у разных плат различная специализация.

Qomu, например, представляет собой SoC c FPGA, специализирующуюся на машинном обучении, эмулировании процессоров и создании кастомной схемотехники. FPGA можно запрограммировать на выполнение конкретной задачи, затем модифицировать прошивку для реализации уже другой задачи. Qomu способна на все это, будучи весьма миниатюрной платой.


По словам разработчиков, QuickLogic EOS S3 на Qomu включает MCU Arm Cortex-M4F и встроенную FPGA (eFPGA). Соответственно, из системы можно сформировать, например, классификатор ускоренного машинного обучения или кастомную схему для нового периферийного устройства. Девайс совместим с любыми ПК и ноутбуками с USB Type-A. Благодаря небольшому размеру разработчик может взять плату с собой куда угодно места она не занимает вообще.

Важно отметить, что это open-source инструмент, который можно изменять так, как нужно разработчику.

Характеристики системы:

  • QuickLogic EOS S3 SoC
  • Arm Cortex-M4F MCU вплоть до 80 МГц с 512 КБ системной памяти.
  • eFPGA с 2,400 логическими ячейками и 64 Кб ОЗУ с количеством RAM/FIFO контроллеров вплоть до 8.
  • Два выделенных множителя.
  • 16-канальный DMA для передачи данных в пределах SoC.
  • Конфигурируемый SPI (контроллер и периферия) и I2C интерфейсов контроллеров.
  • Ультранизкое энергопотребление в W.
  • 16 Мбит flash.
  • 4 емкостных тач-пада.
  • Три светодиода (R, G, B).


А еще есть Somu и Tomu


Да, кроме платы, которая описана выше, еще есть ее родственники.

Somu


Somu это ключ безопасности, который можно использовать вместе для входа в аккаунты Google, Twitter, GitHub с двухфакторной аутентификацией. Собственно, использовать этот ключ можно с любыми учетками, где есть двойная аутентификация.

Устройство подключается к USB, где его можно и оставить, если есть другие свободные порты. Таким образом, можно избежать опасности забыть девайс где-либо.


Плата представляет собой надежный FIDO2 ключ, который беспроблемно работает практически со всеми сервисами. Поскольку FIDO2 / WebAuthn сейчас стали веб-стандартами, то проблем с использованием девайса не будет.


Кстати, Somu открытый девайс, как ПО, так и железо. Его при необходимости можно модифицировать. Работает он практически на всех платформах и совместим с большинством браузеров. При необходимости ключ можно закрыть, обезопасив себя от физических атак.

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

  • Поддерживаемые протоколы: FIDO2, U2F
  • Совместимые ОС: Linux, Microsoft Windows, Mac OS X, Chrome OS
  • Совместимые браузеры: Chrome, Firefox, Edge, поддержка Safari вскоре появится (GA in MacOS Catalina)
  • Secure Processor: STM32L432KC (сTRNG, изолирование ключей, два уровня locked flash)
  • Крипто алгоритмы: ECC P256
  • Host Interface: USB-A
  • Обратная связь: RGB LED
  • Размер: 0.5 x 0.5 x 0.1 inches (13 x 13 x 2.4 mm)
  • Вес: 3 г

А еще можно не бояться стирать ключ в машинке разработчики говорят, что он это выдерживает без проблем.

Tomu

Наконец, еще один интересный представитель семейства Tomu, ARM-плата, которая тоже подключается к USB-порту и настолько миниатюрна, что почти полностью умещается внутри него.


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

  • Процессор: Silicon Labs Happy Gecko EFM32HG309
  • Производительность: 25 MHz ARM Cortex-M0+
  • ОЗУ: 8 KB
  • Память: 64 KB Flash
  • Подключение: USB 2.0 FS
  • Кнопки: 2
  • LEDs: 2 (red + green)

Подробнее..

Hackboard 2 одноплатник для разработчиков с x86-процессором за 99

31.12.2020 14:09:18 | Автор: admin

У большинства одноплатных компьютеров самых разных производителей, включая Raspberry Pi, есть одна общая черта. Это ARM-процессор. Но далеко не всем разработчикам и любителям DIY-электроники такие платы подходят.

На днях в продажу поступил одноплатный ПК Hackboard 2, который решает эту проблему. Его создатели оснастили устройство x86-процессором. Чипы ARM позволяют уменьшать платы, делать их недорогими и экономными в плане энергопотребления. Но x86 увеличивает степень совместимости одноплатника с другими системами. Что собой представляет Hackboard 2?


Этот одноплатник разработан в качестве недорогой альтернативы подобным ПК на основе чипов Intel, например, ODYSSEY X86J4105800, который стоит $218.

Стоимость же Hackboard 2 составляет $99. Размеры платы 120*80 мм, ее основа 64-х битный Intel Celeron N4020. Частота работы 2,8 ГГц, кэш 4 МБ. Кроме того, плата оснащена 4 ГБ ОЗУ DDR4, eMMC объемом в 64 ГБ и двумя слотами NVMe M.2, которые дают возможность установить SSD объемом до 4 ТБ.

Что касается аудио и видео, то плата оснащена Intel UHD Graphics 600 с выводом 4K HDMI 2.1 output. Плюс есть стандартный аудиоразъем для наушников. Беспроводные модули тоже есть: плата оснащена Wi-Fi модулем Intel dual-band AC95060, Bluetooth 5.1, гигабитным Ethernet и опциональными модулями 4G и 5G связи.

image

Также у платы есть три USB 3.0 порта, USB 2.0 и 40-пиновой интерфейс для подключения дополнительных модулей.

Разработчики создали для платы несколько дополнительных устройств. Например, в Hackboard 2 Starter Kit входит Hackboard 2 с Windows 10 Pro, блок питания, теплоотвод, веб-камера, беспроводная клавиатура со встроенным тачпадом. В Hackboard 2 Complete Kit входит еще и дисплей 13.3" IPS 1080p HD со встроенными динамиками.


Что еще? Плата поддерживает как Windows, так и Linux. Что касается Windows, то плата идет с предустановленным Python. Есть и вариант платы с Ubuntu Linux. У платы есть традиционное BIOS-меню, позволяющее без проблем сконфигурировать загрузку и настроить некоторые другие параметры.


Пока что плата доступна только на Crowd Supply. За $99 можно приобрести начальный комплект с Linux, за $140 то же самое с Windows 10. Понятно, что можно приобрести самую недорогую версию и установить на нее Windows в случае необходимости. Ну и еще дороже обойдутся разные варианты наборов платы и дополнительных модулей к ней.

Подробнее..

WSN-LTE шлюз на CC1310 и WP8548. Часть 1

04.01.2021 02:04:38 | Автор: admin

Приветствую, Habr! В данной статье рассмотрен процесс разработки Wireless Sensor Network (WSN) шлюза для передачи данных от беспроводных датчиков на сервер через мобильную связь. В качестве начинки будем использовать Sub-1GHz SoC CC1310 и программируемый модуль WP8548 от Sierra Wireless. AirPrime WP8548 - это промышленный модуль LGA-239. Его беспроводной модем обеспечивает передачу данных в сетях HSPA, WCDMA, EDGE и GPRS, а также прием GPS сигнала.

Мотивация. Зачем это всё?

Конечно, данную задачу можно было бы решить путем применения микроконтроллера CC1310 в связке с 3G модемом от SIMCOM или Quectel, но: модуль WP8548 лежит у меня в столе уже несколько лет. Рациональное применение данному модулю из-за его стоимости ($60, DigiKey) я так и не нашел, но зуд попробовать его на деле до сих пор мучает меня. Предупреждаю сразу:

  1. Решение дороже аналогичных с Aliexpress

  2. Я не решаю конкретную задачу, а пытаюсь оценить возможности данного модуля

Шаг 1. Блок-схема питания

Самый скучный этап проектирования схемы будущего устройства. Но отложим все свои вздохи и посмотрим параметры питания основных компонентов схемы. Открываем страницу 26 документации и видим, что диапазон напряжения питания WP8548 от 3.4 до 4.3 вольт (напрашивается питание от литиевого аккумулятора). CC1310 работает при напряжении питания от 1.8 до 3.8 вольт. Давайте предъявим к будущему устройству общие требования:

  1. Работа от литиевого аккумулятора + его зарядка

  2. Повышающий преобразователь на 5В для питания внешних устройств от литиевго аккумулятора.

  3. Возможность отключения питания части схемы при переходе в спящий режим

  4. Размер печатной платы не больше кредитной карты, конечно

Для начала прикинем, что у нас в целом будет на плате. WP8548 имеет возможнсть работы с MicroSD картой, которая требует 2,95В для своего питания. Логический уровень GPIO у модуля 1.8В, что не очень удобно для домашних поделок. Будем использовать микросхемы согласования уровня, которые требуют для своего питания напряжения 1.8В и 3.3В. Кроме того модуль имеет HSIC интерфейс. К нему будем подключать микросхему USB3503 (имеет внутренние LDO) для обеспечения работы с внешними USB устройствами.

Для зарядки используем микросхему BQ24292. С ней мы получаем возможность использовать источник напряжения до 17В на случай, если захотим подключить наш шлюз к солнечной батарее с 12В АКБ. Ток заряда до 4А, что теоретически позволит нам заправлять параллельно два аккумулятора из PowerBank'ов на 20А.

В качестве повышающего преобразователя мне понравилась микросхема TPS63802. Для запуска нужно всего 6 компонентов, а с учетом корпуса микросхемы и частоты преобразования в 2МГц мы получим минимальный по площади (и пригодный для ручной пайки) buck-boost конвертер.

Микроконтроллер CC1310 будет выступать в качестве программируемого PMIC, то есть напряжение 3.3В на него будет подаваться всегда. Все остальные напряжения делаем отключаемыми.

Итого нам надо:

  1. 1.8В для микросхемы согласования (отключаемое)

  2. 3.3В для микросхемы согласования (отключаемое)

  3. 2.95В для MicroSD (отключаемое)

  4. 3.3В для CC1310 (всегда включено)

Будем использовать программируемую (ADJ) микросхему линейного регулятора TPS79301 для всех четырех напряжений, чтобы не увеличивать количество позиций в перечне элементов.

Суммарно имеем следующее:

Шаг 2. Схема электрическая. Принципиальная

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

Схема заряда

Зарядка осуществляется от внешнего адаптера питания напряжением до 17В. При подключении питания по USB (высокий уровень на PSEL от +VBUS), микросхема BQ24292 будет ограничивать ток заряда так, чтобы не перегрузить USB порт ПК.

Часть схемы согласования уровней

Предполагается отключение U5 и U10 при переходе в спящий режим. Для включения WP8548 необходимо кратковременно подать логический 0 на вывод PWR_ON, который имеет внутренний pull-up резистор. По сути, VT1 и VT2 включены по схеме с открытым коллектором для запуска и сброса модуля. Open-drain в CC1310 не используется для этих целей с точки зрения защиты от случайной перегрузки по напряжению.

Питание MicroSD, питание CC1310, USB

USB необходимо для настройки и прошивки WP8548, дополнительно обеспечиваем для него ESD защиту.

Шаг 3: Трассировка и пайка платы

И вот мы добираемся до трассировки платы. По классике жанра, берем кредитку и с линейкой переносим ее контур на слой keep-out. Затем импортируем схему и приступаем к разводке.

Верхний слой. Как видно, корпус модуля довольно неприятный для пайки феном. К счастью, у меня есть домашняя печка для групповой пайки SMD компонентов. Что посоветовать тому, кто собрался паять данный модуль без печки - увы, не знаю.

А вот и сам модуль с сокетом. Паять мы будем сокет.

3D модель платы.

Что касается пайки. Я не заказывал трафарет для паяльной пасты, дабы сэкономить на его стоимости. Поэтому аккуратно наносим припой паяльником, наносим флюс, расставляем компоненты и отправляем плату в печку.

Когда я собираю первую версию платы, то не паяю все компоненты сразу, а начинаю пайку с узлов питания. Например, паяю понижающий DC-DC преобразователь c 12В до 5В. Запускаю и с осциллографом проверяю, что всё работает корректно. Затем продолжаю пайку и собираю понижающий преобразователь с 5В до 2.8В и снова проверяю плату. И так далее, пока не будут собраны и проверены все цепи питания. Если пайка осуществляется на заводе, то на схеме между источниками и потребителями достаточно заложить перемычки.

Делается это для безопасного запуска первой версии устройства и устранения повышенного/пониженного напряжения на цифровых микросхемах в случае неисправности. Возможно, такой подход к отладке спорный, но рабочий.

Отмывочной ванны у меня нет. Всё что смог оттереть щеткой со спиртом - оттёр :) Видим, что горит красный светодиод справа - модуль поймал сеть, синий светодиод слева - идет зарядка аккумулятора. Отлично, подключаем плату к ПК и видим три виртуальных COM-порта.

Кроме того в системе появляется сетевой интерфейс. Пробуем пинговать модуль по адресу 192.168.2.2

Здорово, пробуем подключиться по SSH к модулю. Пользователь root, пароль не требуется.

Видим, что модуль определил SIM-карту на втором слоте, сигнал сети сильный.

Отлично, первый шаг к реализации шлюза сделан. В следующий раз будем писать прошивку для CC1310 и начнем собирать данные от беспроводных устройств.

Ссылка на схему устройства тут.

Подробнее..

Перевод Автомобильный Ethernet Marvell делает ставку на Gbit Ethernet PHY с поддержкой MACsec

21.01.2021 20:07:17 | Автор: admin
image

Для создания платформы сетевой инфраструктуры на развивающемся рынке сетевых транспортных средств, компания Marvell полагается на технологию Ethernet.

На этой неделе компания объявила о создании первой в отрасли PHY-микросхемы, работающей на основе гигабитной Ethernet-сети. В эту микросхему также встроена технология контроля доступа к медиаданным (MACsec), обеспечивающая безопасность на втором уровне.

Технология MACsec обеспечивает защиту всех этапов передачи данных в автомобильных сетях. Новая PHY-микросхема защищена от угроз безопасности на 2 уровне (перехватов, атак посредника и атак повторного воспроизведения).

Marvell может похвастаться своим рядом продуктов, формирующих наиболее полную инфраструктуру для работы с данными. Все продукты в этой линейке специально предназначены для центров обработки данных. В перечень этих продуктов входит широкий спектр устройств: от процессоров каналов прямой передачи и процессоров передающего уровня до PHY-микросхем и коммутаторов для сетевых процессоров и процессоров безопасности.

Уилл Чу, вице-президент и генеральный менеджер автомобильного бизнес-подразделения Marvell, сказал EE Times: Сейчас мы переносим наш опыт в области передовой инфраструктуры для обработки данных на автомобильный рынок.

Marvell твердо намерена занять лидирующие позиции на рынке автомобильных Ethernet-сетей. Компаний первой на рынке представила 1000BASE-T1 PHY защищенный автомобильный коммутатор с поддержкой гигабитного однопарного Ethernet-подключения и мультигигабинтную PHY-микросхему. В мае Marvell также приобрела Aquantia лидера в области мультигигабитных Ethernet-подключений.

Вне всяких сомнений, все с нетерпением ждут распространения мультигигабитных сетей. В частности, в таких сетях нуждаются транспортные средства, у которых есть значительная потребность в увеличении пропускной способности сети, снижении задержек и повышении скорости подключения.

Впрочем, как заметил Иэн Ричс, вице-президент по общей практике в области automotive в Strategy Analytics, суровая реальность такова, что на сегодняшний день интерфейсы для работы с гигабитными Ethernet-сетями слабо распространены. В основном такие интерфейсы встраивают в премиумные или новейшие платформы.

Безопасность и энергоэффективность


image

Новая PHY-микросхема 100/1000 BASE-T1 88Q222xM от Marvell обеспечивает поддержку мультигигабитных подключений, а также в нее встроена технология MACsec.

Эта микросхема также поддерживает стандарт TC10 от Open Alliance, который описывает переход в спящий режим и пробуждение. Эта технология помогает снизить энергопотребление сетевых модулей в автомобиле. Чу утверждает, что энергоэффективность становится все более важной автомобильной характеристикой.

Отвечая на вопрос о новом гигабитном PHY с поддержкой MACsec от Marvell, Ричс из Strategy Analytics сказал EE Times следующее: Чем выше скорость, тем больше данных. Чем больше данных, тем выше вероятность возникновения проблем с безопасностью. Также он объяснил нам, что MACsec зрелый и надежный стандарт, позволяющий обнаруживать подозрительную активность в Ethernet-сетях, что позволяет обеспечивать защиту от перехватов, атак воспроизведения и атак посредников. Наличие подобных легкодоступных методов, основанных на стандартах, позволит OEM-производителями разрабатывать комплексные решения для кибербезопасности, которые нужны как рынку, так и регулирующим органам.

Marvell утверждает, что 88Q22xM это самая экономичная с точки зрения энергии PHY с поддержкой гигабитного Ethernet-подключения. Это значит, что 88Q22xM даст OEM-производителям возможность разрабатывать энергоэффективные автомобильные сетевые архитектуры.

Движущие факторы внедрения гигабитных Ethernet-подключений в транспортные средства


Учитывая все обстоятельства, станут ли электромобили первыми транспортными средствами на рынке, использующими Ethernet-подключение? Рич из Strategy Analytics утверждает, что сам по себе рынок электромобилей не является основной движущей силой внедрения Ethernet в автомобильной отрасли.

В свою очередь, перечень ключевых факторов, побуждающих OEM-производителей внедрять гигабитные Ethernet-сети выглядит следующим образом: создание централизованной архитектуры транспортных средств, контроллеры доменов, расширение сетевой функциональности транспортных средств, системы ADAS и технологии беспилотной езды.

Также Ричс отметил, что в то время как все появляется все больше автомобилей с сетевой функциональностью, системами ADAS и технологиями беспилотной езды, разработчики инфраструктуры должны быть в состоянии справиться с постоянно растущими потоками автомобильных данных. Топовые системы ADAS и технологии беспилотной езды непосредственно повлияют на потребность в высокоcкоростных Ethernet-сетях.

Автомобильный рынок в условиях пандемической экономики


Отраслевые аналитики прекрасно осведомлены о влиянии экономики Covid-19 на автомобильный рынок. Эгиль Юлиуссен, автор колонки Egils Eye в EE Times написал так: Продажи автомобилей по всему миру резко упали и будут держаться ниже недавних показателей в течение примерно пяти лет (а может и больше в зависимости от региона).

Ричс из Strategy Analytics согласен с этой оценкой. Разработка некоторых новых платформ будет замедлена в связи с сокращением бюджета и реструктуризацией, причиной чему стала пандемия Covid-19. В настоящий момент мы даем прогнозы до 2027 года. Мы по-прежнему ожидаем, что полноценная сетевая архитектура на основе контроллеров доменов и гигабитного Ethernet-подключения будет представлена в меньшей доле новых автомобилей.

Впрочем, Ричс добавил: Все это не значит, что рост будет слабым мы просто начинаем с низкого старта. Все дело в том, что сейчас всем приходится работать в худших социально-экономических условиях, с которыми автомобильная промышленность когда-либо сталкивалась в мирное время. Для того, чтобы распространить все эти технологии по разным платформам и модельным линейкам потребуется время.

Чу из Marvell делает более глобальную оценку. Насколько ему известно, 30 OEM-производителей уже изучают способы внедрения Ethernet в автомобили, и 10 ведущих компаний уже начали внедрять Ethernet в свои продукты три года назад. Мы знаем, что для автомобильных OEM-производителей внедрение гигабитных Ethernet-сетей это вопрос времени

Marvell также утверждает, что 88Q222x производится в соответствии с автомобильными системами менеджмента качества и обеспечивает поддержку систем функциональной безопасности, благодаря чему OEM-производители могут реализовывать стандарт ISO 26262 на системном уровне. Микросхема проходит испытания с прошлого месяца. По словам Чу, массовое производство начнется в течение трех лет. 88Q22x будет изготавливаться TSMC с использованием автомобильного техпроцесса 16 нм FinFET.




image

Вакансии
НПП ИТЭЛМА всегда рада молодым специалистам, выпускникам автомобильных, технических вузов, а также физико-математических факультетов любых других высших учебных заведений.

У вас будет возможность разрабатывать софт разного уровня, тестировать, запускать в производство и видеть в действии готовые автомобильные изделия, к созданию которых вы приложили руку.

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

Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.



О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

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

Подробнее..

Новый глава Intel вернул с пенсии ведущего архитектора Nehalem

22.01.2021 14:05:41 | Автор: admin


Новый генеральный директор Пэт Гелсингер до своего ухода из Intel работал в компании 30 лет и поднялся до ранга CTO, потом ушёл. Теперь его возвращение и назначение на должность CEO считают признаком выздоровления Intel. Возможно, компания сможет переломить тренд и вернуться на лидирующие роли в бизнесе. Однако нужен кардинальный технологический прорыв. А кто для него подойдёт лучше, чем бывший технический директор Пэт Гелсингер, главный технарь в компании?

Гелсингер с первых дней оправдывает ожидания, которые на него возлагают. Он начал с того, что возвращает на работу в компанию ведущих инженеров и архитекторов CPU, своих бывших коллег.

Хотя Гелсингер официально вступит в должность только 15 февраля, но его возвращение уже вызвало ажиотаж среди сотрудников научно-исследовательских команд Intel, пишет AnandTech.

Последняя новость возвращение на работу старшего научного сотрудника Гленна Хинтона, который был ведущим архитектором ядра Nehalem, а последние три года провёл на пенсии. Другие ведущие архитекторы Nehalem Ронак Сингал и Пер Хаммерлунд. Первый и сейчас работает в Intel над процессорами следующего поколения, а второй уже пять лет работает в Apple.


Анонс Nehalem на стенде 12-летней давности

Nehalem микроархитектура процессоров компании Intel, представленная в IVкв. 2008года, для ядра Bloomfield в исполнении LGA 1366 и для ядра Lynnfield в исполнении LGA 1156.

Микроархитектура построена на базе Core, но с кардинальными изменениями, включая новый встроенный контроллер памяти, новую шину QPI вместо FSB, возможность встроить графический процессор, кэш 3-го уровня и поддержку Hyper-threading.


Микроархитектура Intel Nehalem в 4-ядерной реализации

Гленн Хинтон тоже ветеран Intel с 35-летним опытом работы (профиль на LinkedIn). Кроме роли архитектора Nehalem, он был ведущим разработчиком микроархитектуры Pentium 4, одним из трёх ведущих архитекторов Intel P6 (из которого вышли Pentium Pro, P2 и P3) и, в конце концов, одним из создателей базовой архитектуры Intel Core, которая до сих пор находится на переднем крае технологий Intel.

Он также ведущий архитектор Intel i960 CA, первого в мире суперскалярного микропроцессора. На Хинтона зарегистрировано более 90 патентов из восьми микропроцессорных проектов, в которых он участвовал. Хинтон ещё более десяти лет работал в Intel после выхода Nehalem, но именно микроархитектура Nehalem везде упоминается как его главное достижение.

На своей страничке в LinkedIn Хинтон пишет, что будет работать над захватывающим проектом высокопроизводительного процессора.



В комментариях также говорится, что если бы проект не был таким интересным, я бы не вернулся как вы знаете, выход на пенсию чертовски приятен.



Гленн сказал, что обдумывал этот шаг с ноября, а финальным фактором, который склонил чашу весов в пользу этого решения стало возвращение в компанию Гелсингера.

Коллеги из компании Intel высказали мнение, что Гленн не единственный бывший архитектор Intel, который может вернуться в компанию. В последние годы несколько архитекторов и ведущих специалистов ушли из Intel к конкурентам, таким как AMD и Apple. Возможно, кого-то переманят назад.

AnandTech пишет, что возвращение с пенсии ведущего архитектора CPU для работы над новым проектом крайне нетривиальное событие. Можно предположить, что проект нового процессора действительно необычный и захватывающий. Кроме того, подобные проекты требует нескольких лет разработки, поэтому недавний пенсионер Хинтон подписывает долгосрочный рабочий контракт.

Подробности о новом проекте пока не разглашаются. Мы не знаем, что это такое. Нет уверенности даже, что новый CPU основан на архитектуре x86.

Intel сейчас оказалась в крайне тяжёлой ситуации. Новый процессор Apple M1 на микроархитектуре ARM практически не уступает по производительности топовым процессорам Intel, а по энергоэффективности превосходит их.



Впервые за 15 лет компания, не имеющая лицензии x86, создаёт микропроцессор для потребительского рынка, который вполне может конкурировать с чипами x86. Если Apple сохранит или улучшит свои позиции по отношению к Intel и AMD, это заметят и другие компании с лицензиями на ARM. Nvidia, которая купила ARM в ожидании одобрения регулятора, безусловно, заметит это. Если ARM может превзойти x86, то вся экосистема WinTel уязвима так, как этого не было с самого начала эпохи персональных компьютеров, пишет Stratechery. Падение Intel от короля индустрии к наблюдателю началось уже в 2005 году: несмотря на то, что у Intel имелась лицензия ARM для производства XScale, компания не захотела сосредоточиться на энергоэффективности, а предпочла диктовать дизайн клиентам, таким как Apple, рассматривая их новый iPhone, вместо того, чтобы попытаться приспособиться под них (как это сделала TSMC).



Так что новый процессор Intel тоже может быть основан и на архитектуре ARM. Так или иначе, но реальные результаты работы увидим только через 3-5 лет.

Известно, что в Intel несколько групп разработки работает над разными проектами. Мы видим постоянное обновление архитектуры Skylake, а также первые итерации ядра Cypress Cove, которое включает 10-нм ядро Ice Lake (портировано на 14-нм) и графику из Tiger Lake.





Это реальные продукты, которые выходят на рынок.

В то же время другие проектные группы работают над CPU следующего поколения и того поколения, которое будет за ним. Единственным препятствием к выходу этих инновационных процессоров является производство. Революционные процессоры остаются на бумаге просто потому, что заводы Intel просто физически не в состоянии реализовать замыслы архитекторов.

Сегодня уже дошло до того, что Intel размещает заказы на фабриках TSMC, потому что у той более продвинутое оборудование и есть возможность производить более современные микросхемы по техпроцессу 5нм.

Но сотрудники и акционеры Intel надеются, что Пэт Гелсингер повернёт компанию в другую сторону и изменит культуру Intel. Новый генеральный директор реально может проводить совещания с инженерами и по-настоящему обсуждать дизайн процессоров. Предыдущие руководители Intel не могли этого делать, потому что не обладали столь глубокими техническими знаниями.


Пэт Гелсингер во времена работы техническим директором Intel демонстрирует процессоры Intel Itanium 2

Таланты хотят работать с талантами, а грамотные инженеры с другими грамотными инженерами. Мы уже сейчас видим, что технический бэкграунд и авторитет Гелсингера заставляет вернуться с пенсии архитектора CPU для работы над новыми проектами и это ещё до того, как Гелсингер официально заступил в должность.
Подробнее..

Категории

Последние комментарии

© 2006-2021, personeltest.ru