repo renewal (windows build) + beamer

This commit is contained in:
Ivan I. Ovchinnikov 2023-10-24 15:47:15 +03:00
parent 6315020837
commit c798bb1d70
6 changed files with 135 additions and 117 deletions

View File

@ -1,8 +1,8 @@
\documentclass{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\input{settings/common-preamble}
\input{settings/bmstu-preamble}
\input{settings/fancy-listings-preamble}
\author{Фёдоров Сергей Владимирович (svf\_@mail.ru)}
\title{Проектирование программного обеспечения встраиваемых (встроенных) систем}
\date{2021-09-07}
@ -75,7 +75,7 @@
\begin{figure}[H]
\centering
\def\svgwidth{90mm}
\input{pics/01-ess-00-economics.pdf_tex}
\includesvg{pics/01-ess-00-economics.svg}
\caption{Отношение затрат на разработку и тиражирование к объёму выпуска }
\label{pic:economics}
\end{figure}
@ -326,13 +326,15 @@ store.w R5, @R4 // 1сл, 2т
\item с аппаратурой (по опросу, по прерыванию, с использованием ПДП (прямого доступа к памяти)).
\def\svgwidth{40mm}
\input{pics/01-ess-00-burstwrite.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-burstwrite.svg}
По опросу обычно делают короткие события не требующие быстрой реакции, вроде проверки ножки, изменения направления ветра или для приёма бёрстов данных.
ПДП не осуществляет анализ данных по приёму, поэтому не факт что хорошая идея так принимать ethernet пакеты.
\def\svgwidth{50mm}
\input{pics/01-ess-00-burstanswer.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-burstanswer.svg}
Если есть кэш и план по использованию прямого доступа к памяти - нельзя забывать о кэше. При использовании ПДП мы работаем как будто напрямую с подсистемой ПДП, но фактически работаем с кэшем, поэтому обязательно когда мы собрались записать данные - нужно выполнять cache flush.
\begin{lstlisting}[language=C,style=CCodeStyle]
write_data(a);
@ -340,7 +342,8 @@ store.w R5, @R4 // 1сл, 2т
start_data_tx(a, sizeof(a));
\end{lstlisting}
\def\svgwidth{50mm}
\input{pics/01-ess-00-cacheflush.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-cacheflush.svg}
второй случай - подсистема прямого доступа к памяти данные модифицировала, а для процессора они остались старые, потому что кэш обычно надо сделать cache invalidate
\begin{lstlisting}[language=C,style=CCodeStyle]
if (dma_finished()) {
@ -352,7 +355,6 @@ store.w R5, @R4 // 1сл, 2т
\end{itemize}
\end{enumerate}
\section{Оптимизация кода}
Желательно не делать руками то, что должен делать компилятор. Чаще всего используются готовые наборы оптимизаций, например, для gcc - это о0, о1, о2, о3. Также есть оптимизация по размеру, она используется гораздо реже - это оптимизация с точки зрения быстродействия. В о3, например, включена оптимизация type-based alias analysis и она может значительно повлиять на работоспособность нехорошо написанного кода. Обычно ограничиваются оптимизацией о2, но о3 неплохо тоже прогнать, чтобы понять, что код написан хорошо. Если нужно рассматривать на уровне ассемблера - пошаговую отладку нужно вести на о0 или о1 - код компактнее, а читаемость сохраняется. Если отлаживается без оптимизаций совсем - разница по быстродействию может очень сильно отличаться. Между о0 и о2 быстродействие не будет значительно отличаться, но на ассемблере код будет читаемее. Когда приступаем к тестированию релиза, его нужно проводить на том уровне, на котором будет сделан релиз. (TOREAD: gcc optimize options). Важно, что есть оптимизации, не входящие в наборы.
@ -528,7 +530,7 @@ OSTaskCreateExt();
\item с фиксированными приоритетами ($\mu$C/OSII) приоритет может менять только программист. существует проблема инверсии приоритетов. Допустим, есть три задачи с разными приоритетами. Задача 1 самая приоритетная, она не выполняется. Задача 3 самая не приоритетная захватывает ресурс А. Приходит запрос прерывания, которого ждёт задача 1, диспетчер снимает задачу 3. Если задаче 1 нужен будет ресурс А, диспетчер отправляет 1 в ожидание и продолжает выполнять 3. Но тут случается плохое - прерывание для задачи 2. диспетчер снимает 3 и выполняет 2. Получается, что задача 1 ждёт менее приоритетную задачу 2, которая даже не задействовала ресурс А.
\def\svgwidth{140mm}
\input{pics/01-ess-00-tasks.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-tasks.svg}
Чтобы этого избежать в $\mu$C/OSII введён специальный тип семафоров (мьютексы) которые временно повышают приоритет задач, ожидающих ресурсы.
@ -584,7 +586,7 @@ OSTaskCreateExt();
\item \textbf{Mutex.} (mutual exclusion) взаимное исключение. В большинстве операционных систем мьютекс это двоичный семафор, кроме $\mu$C/OSII. В $\mu$C/OSII это двоичный семафор, который решает проблему инверсии приоритетов. Каким образом решает? При создании мьютекса ему передаётся приоритет. Так как $\mu$C/OSII это операционная система с фиксированными приоритетами, для мьютекса нужно выделить отдельный приоритет, который не используется в других задачах и обязательно он должен быть выше, чем у любой задачи, которая будет использовать этот мьютекс. Как только какая-то задача пытается получить доступ к мьютексу, который занят, у задачи, которая владеет мьютексом становится приоритет мьютекса (становится выше, для задачи со средним приоритетом становится невозможно захватить ресурс).
\def\svgwidth{120mm}
\input{pics/01-ess-00-mutex.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-mutex.svg}
Проблема, например, может быть, если есть больше задач с разными приоритетами. Нужно разруливать вручную, внимательно расставляя приоритеты задач. Функции такие же как с семаформаи. В создании есть больше опций ошибок. Важная ошибка - ошибка о существовании такого-же приоритета или при задании недопустимого приоритета. Остальные функции идентичны.
\item \textbf{Флаги.} Используется для синхронизации и в некотором смысле для передачи информации. Флаги реализуются с помощью регистра (обычно переменная соответствующая разрядности процессора). Функции установки/сброса позволяют по маске в выбранные биты записать 0 или 1. Процесс, который ожидает флаг формирует свою маску и может ждать чтобы в этой маске флаги были установлены или сброшены. Есть 4 варианта ожидания: все установлены, все сброшены, хотя бы один установлен, хотя бы один сброшен. Позволяет создавать разные синхронизации:
@ -811,7 +813,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[h]
\centering
\def\svgwidth{70mm}
\input{pics/01-ess-00-irq.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-irq.svg}
\caption{Проблемы разрешения вложенных прерываний}
\label{pic:irq}
\end{figure}
@ -859,15 +861,14 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\item фон-Нейманова модель - общая память для команд и данных.
\def\svgwidth{80mm}
\input{pics/01-ess-00-fon-neyman.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-fon-neyman.svg}
\label{pic:fon-neyman}
википедия: Архитектура фон Неймана (модель фон Неймана, Принстонская архитектура) — широко известный принцип совместного хранения команд и данных в памяти компьютера. Вычислительные машины такого рода часто обозначают термином <<машина фон Неймана>>, однако соответствие этих понятий не всегда однозначно. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают принцип хранения данных и инструкций в одной памяти.
\item гарвардская модель - разделение памяти на данные и команды физически по устройствам. Часто именно так устроены микроконтроллеры.
\def\svgwidth{80mm}
\input{pics/01-ess-00-harvard.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-harvard.svg}
\label{pic:harvard}
википедия: Гарвардская архитектура — архитектура ЭВМ, отличительными признаками которой являются: хранилище инструкций и хранилище данных представляют собой разные физические устройства; канал инструкций и канал данных также физически разделены.
@ -880,8 +881,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[H]
\centering
\def\svgwidth{120mm}
\input{pics/01-ess-00-memory.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-memory.svg}
\caption{Обычное устройство микроконтроллера}
\label{pic:memory}
\end{figure}
@ -905,7 +905,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[H]
\centering
\includegraphics[height=4cm]{01-ess-00-cache.pdf}
% \includesvg[scale=1.01]{pics/01-ess-00-cache.svg}
\caption{Способ доступа к SDRAM}
\label{pic:cache}
\end{figure}
@ -914,7 +914,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[H]
\centering
\def\svgwidth{70mm}
\input{pics/01-ess-00-sdram.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-sdram.svg}
\caption{Обычно SDRAM выглядит так}
\label{pic:SDRAM}
\end{figure}
@ -924,7 +924,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[H]
\centering
\def\svgwidth{60mm}
\input{pics/01-ess-00-arrayrow.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-arrayrow.svg}
\caption{Хранение данных из массива в памяти}
\label{pic:arrayrows}
\end{figure}
@ -933,8 +933,7 @@ ISO/IEC 12207:2008 (ГОСТ 12207-2010) - про разработку ПО, ж
\begin{figure}[H]
\centering
\def\svgwidth{80mm}
\input{pics/01-ess-00-readmem.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-readmem.svg}
\caption{Чтение данных из памяти SDRAM}
\label{pic:readmem}
\end{figure}
@ -950,7 +949,7 @@ RAS, CAS: после выборки адреса чтение происходи
\begin{figure}[h]
\centering
\def\svgwidth{80mm}
\input{pics/01-ess-00-s-d-aram.pdf_tex}
\includesvg[scale=1.01]{pics/01-ess-00-s-d-aram.svg}
\caption{Планирование памяти}
\label{pic:sdaram}
\end{figure}

View File

@ -1,8 +1,11 @@
\documentclass{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\input{settings/common-preamble}
\input{settings/bmstu-preamble}
\input{settings/fancy-listings-preamble}
\def\makeyear{2021}
\def\grpNum{11М}
\begin{document}
\thispagestyle{empty}
@ -12,20 +15,20 @@
\newpage
\blankpage
\pagestyle{fancy}
% \tableofcontents
% \newpage
\tableofcontents
\newpage
\section*{Цель работы}
\addcontentsline{toc}{section}{Цель работы}
Изучить средства создания систем на кристалле на основе процессора Nios II фирмы Intel в средстве Platfrom Designer. Освоить методику создания и конфигурации систем на кристалле. Реализовать и отладить программное обеспечение системы на кристалле. Освоить методику отладки проекта с применением программных и аппаратных средств. Получить навыки работы с документацией производителя.
\section*{Задания}
\begin{enumerate}
\item Модифицируйте исходную программу следующим образом: нажатие кнопки KEY3 должно зажигать все светодиоды, KEY0 гасить все светодиоды, нажатие центральных кнопок KEY2 и KEY1 должно гасить светодиоды по очереди слева и справа по одному на каждое нажатие.
\item Модифицируйте исходную программу следующим образом: нажатие кнопки KEY3 должно зажигать все светодиоды, KEY0 -- гасить все светодиоды, нажатие центральных кнопок KEY2 и KEY1 должно гасить светодиоды по очереди слева и справа по одному на каждое нажатие.
\item Реализуйте обработку нажатия кнопок и формирование значений на светодиодах по прерыванию. Используйте справочные материалы в каталоге лабораторной работы.
\end{enumerate}
\section*{Листинги программ}
\textbf{Программа по заданию 1} (изменения выделены красным цветом, комментарии приведены и выделены зеленым). для сдвига влево или вправо используется оператор >>, а для наложения полученного значения на текущие обжуленные биты побитовая маска \& с последующим присваиванием обратно в переменную led:
\textbf{Программа по заданию 1} (изменения выделены красным цветом, комментарии приведены и выделены зеленым). для сдвига влево или вправо используется оператор \code{>>}, а для наложения полученного значения на текущие обжуленные биты побитовая маска \& с последующим присваиванием обратно в переменную \code{led}:
\begin{lstlisting}[language=C,style=CCodeStyle]
#include <stdio.h>
@ -71,7 +74,7 @@
} // end
\end{lstlisting}
\textbf{Программа по заданию 2.} Структура программы: обработчик прерывания от кнопок (в нем считываются задетектированные нажатия кнопок), подпрограмма регистрации обработчика прерывания и главная программа, которая вызывает подпрограмму регистрации и управляет состоянием светодиодов. Во всех функциях использовались макроконстанты, объявленные в заголовочных файлах \code{system.h} и \code{altera\_avalon\_pio\_regs.h}, хранящих адреса соответствующих инструкций и данных. Также был добавлен заголовочный файл \code{sys/alt\_irq.h}. Адреса изменились, потому что теперь это не значения на кнопках (1 для свободной, 0 для нажатой), а значения в регистре прерываний (1 для места, где сработало прерывание).
\textbf{Программа по заданию 2.} Структура программы: обработчик прерывания от кнопок (в нем считываются задетектированные нажатия кнопок), подпрограмма регистрации обработчика прерывания и главная программа, которая вызывает подпрограмму регистрации и управляет состоянием светодиодов. Во всех функциях использовались макроконстанты, объявленные в заголовочных файлах \code{system.h} и \code{altera_avalon_pio_regs.h}, хранящих адреса соответствующих инструкций и данных. Также был добавлен заголовочный файл \code{sys/alt_irq.h}. Адреса изменились, потому что теперь это не значения на кнопках (1 для свободной, 0 для нажатой), а значения в регистре прерываний (1 для места, где сработало прерывание).
\begin{lstlisting}[language=C,style=CCodeStyle]
#include <stdio.h>

View File

@ -1,9 +1,13 @@
\documentclass[a4paper,fontsize=14bp]{article}
\input{../common-preamble}
\input{../fancy-listings-preamble}
\input{../bmstu-preamble}
\input{settings/common-preamble}
\input{settings/fancy-listings-preamble}
\input{settings/bmstu-preamble}
\numerationTop
\def\makeyear{2021}
\def\grpNum{11М}
\begin{document}
\setlength{\columnsep}{22pt}
\thispagestyle{empty}
@ -303,7 +307,7 @@ int main(void) {
Для массивов длиной 8192 элементов типа \code{unsigned short}, циклически заполненных значениями \code{0xf001}, \code{0x0e11}, \code{0xaad0}, \code{0xa00c} получилось значение \code{0xbec8}, что является корректным значением контрольной суммы.
\subsection*{Оптимизация и заполнение памяти}
В процессе выполнения программы были произведены измерения количества тактов, затрачиваемых на одну итерацию неразвернутого цикла при включенной оптимизации -O3 при разных объемах массивов данных. Результаты измерений приведены в таблице \hrf{table:memory}. Подсчёт результатов был произведён без изменения положения Performace Counter (для всей функции целиком) согласно средней асимтотической сложности алгоритма получения контрольной суммы O(n), где n - это размер входящего массива данных. Для системы было выделено 16384 байта, соответственно, для заполнения её согласно задания необходимо создать массивы на 16384 ($200\%$), 8192 ($100\%$), 4096 ($50\%$), 2048 ($25\%$) элементов типа \code{unsigned short} (шестнадцатиразрядные беззнаковые целые числа). Снимки экрана с результатами работы Performance counter представлены в приложении \hrf{appendix:udpMemory}.
В процессе выполнения программы были произведены измерения количества тактов, затрачиваемых на одну итерацию неразвернутого цикла при включенной оптимизации -O3 при разных объемах массивов данных. Результаты измерений приведены в таблице \hrf{table:memory}. Подсчёт результатов был произведён без изменения положения Performace Counter (для всей функции целиком) согласно средней асимтотической сложности алгоритма получения контрольной суммы O(n), где n -- это размер входящего массива данных. Для системы было выделено 16384 байта, соответственно, для заполнения её согласно задания необходимо создать массивы на 16384 ($200\%$), 8192 ($100\%$), 4096 ($50\%$), 2048 ($25\%$) элементов типа \code{unsigned short} (шестнадцатиразрядные беззнаковые целые числа). Снимки экрана с результатами работы Performance counter представлены в приложении \hrf{appendix:udpMemory}.
\begin{table}[H]
\centering
@ -493,7 +497,7 @@ int main(void) {
1000011c: f800283a ret
\end{lstlisting}
В оптимизированной версии кода в листингах \hrf{lst:optsim} и \hrf{lst:optunf} также есть общая часть - условие добора нечётности массива и цикл преобразования к 16-разрядному значению, начало и конец выделены \lh{red}{красным}.
В оптимизированной версии кода в листингах \hrf{lst:optsim} и \hrf{lst:optunf} также есть общая часть -- условие добора нечётности массива и цикл преобразования к 16-разрядному значению, начало и конец выделены \lh{red}{красным}.
\begin{lstlisting}[style=ASMStyle, caption=Код -О3 без развёртывания, label={lst:optsim}]
// unsigned short checkSum(unsigned short* addr, int size) {
@ -800,7 +804,7 @@ r5=size 100
Во второй части работы требовалось изучить отчёт профилировщика, сохранить иерархию вызовов функции main и начало таблицы <<плоского>> профиля. На примере реализованной функции обработки данных в части I определить с помощью Performance Counter, какой оверхед (накладные расходы) в циклах вносит вызов функции \code{mcount} в выполнение функции. Изучите ассемблерный код и найдите в нем вызов функции \code{mcount}. Результаты сохраните в отчет.
\subsection*{Проделанная работа}
Согласно показаний Performance Counter (рис. \hrf{pic:pcpt2}) функция подсчёта контрольной суммы без подключенного профайлера выполнялась в среднем 843.434 микросекунд, а с вызовом \code{mcount} 863.816, то есть на $\approx$20 мкс больше.
Согласно показаний Performance Counter (рис. \hrf{pic:pcpt2}) функция подсчёта контрольной суммы без подключенного профайлера выполнялась в среднем 843.434 микросекунд, а с вызовом \code{mcount} 863.816, то есть на $\approx 20$ мкс больше.
\begin{figure}[H]
\centering
\includegraphics[width=9cm]{01-ess-lab-02-counter.png}
@ -825,7 +829,7 @@ Each sample counts as 0.001 seconds.
0.01 14.77 0.00 3 0.00 0.00 _fflush_r
\end{lstlisting}
В листинге \hrf{lst:gprofassemble} отмечен \lh{red}{красным} вызов функции \code{mcount}. Интересно, что адрес функции (\code{0000ddfc <\_mcount>:}) считается налету с применением временного регистра.
В листинге \hrf{lst:gprofassemble} отмечен \lh{red}{красным} вызов функции \code{mcount}. Интересно, что адрес функции (\code{0000ddfc <_mcount>:}) считается налету с применением временного регистра.
\begin{lstlisting}[frame=single, basicstyle={\tiny\ttfamily}, caption=Начало отчёта плоского профиля, label={lst:gprofassemble}, numbers=left, numberstyle=\tiny\color{gray}]
10000000 <checkSum>:

View File

@ -1,11 +1,14 @@
\documentclass[a4paper,fontsize=14bp]{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\input{settings/common-preamble}
\input{settings/bmstu-preamble}
\input{settings/fancy-listings-preamble}
\setcounter{secnumdepth}{0}
\numerationTop
\def\makeyear{2021}
\def\grpNum{11М}
\begin{document}
\thispagestyle{empty}
\makeBMSTUHeader
@ -21,7 +24,7 @@
\section{Выполнение}
\subsection{Часть I. Создание простой системы на основе $\mu$C/OS-II}
В первой части работы была создана простая система на основе ОСРВ $\mu$C/OS-II. В приложении \hrf{appendix:pt1full} приведён полный листинг готовой программы. Единственным отличием от предложенной в исходном материале было добавление переключения светодиода по вызову задачи второго семафора, согласно методического материала. В листинге \hrf{lst:pt1change} представлен код, добавленный в тело функции \code{getsem\_task2}.
В первой части работы была создана простая система на основе ОСРВ $\mu$C/OS-II. В приложении \hrf{appendix:pt1full} приведён полный листинг готовой программы. Единственным отличием от предложенной в исходном материале было добавление переключения светодиода по вызову задачи второго семафора, согласно методического материала. В листинге \hrf{lst:pt1change} представлен код, добавленный в тело функции \code{getsem_task2}.
\begin{lstlisting}[language=C, style=CCodeStyle, caption=Внесённые в исходный код изменения, label={lst:pt1change}]
...
INT8U led;
@ -57,8 +60,8 @@ Idx Name Size VMA LMA File off Algn
\end{lstlisting}
\subsection{Часть II. Реализация обработчиков прерываний в $\mu$C/OS-II}
В приложении \hrf{appendix:pt2isr} представлен полный листинг программы, включающий обработку прерываний. Основным отличием является подключение функции обработки прерываний (в листинге \hrf{lst:addisr} представлены фрагмент фукнции инициализации со строкой подключения и функция обработчика). Также, согласно задания, функция \code{send\_task} была изменена таким образом, чтобы отправлять сообщения в очередь не по таймеру, а по сигналу от обработчика прерываний.
\begin{lstlisting}[language=C,style=CCodeStyle,label={lst:addisr},caption=Функция обработки прерываний и изменённая функция \code{send\_task}]
В приложении \hrf{appendix:pt2isr} представлен полный листинг программы, включающий обработку прерываний. Основным отличием является подключение функции обработки прерываний (в листинге \hrf{lst:addisr} представлены фрагмент фукнции инициализации со строкой подключения и функция обработчика). Также, согласно задания, функция \code{send_task} была изменена таким образом, чтобы отправлять сообщения в очередь не по таймеру, а по сигналу от обработчика прерываний.
\begin{lstlisting}[language=C,style=CCodeStyle,label={lst:addisr},caption=Функция обработки прерываний и изменённая функция \code{send_task}]
void isr_button(void* context, alt_u32 id) {
INT32U value;
INT8U return_code = OS_ERR_NONE;
@ -95,7 +98,7 @@ void initialize_task(void* pdata) {
}
\end{lstlisting}
Также для передачи сообщений была создана дополнительная очередь, хранящая сообщения от \code{send\_task} к \code{receive\_task}'ам.
Также для передачи сообщений была создана дополнительная очередь, хранящая сообщения от \code{send_task} к \code{receive_task}'ам.
\begin{lstlisting}[language=C,style=CCodeStyle]
//...
OS_EVENT *buttonqueue; //Message queue pointer
@ -191,7 +194,7 @@ void timer2Hz(void* ptmr, void* args) {
}
\end{lstlisting}
\item Задача, обслуживающая семисегментный индикатор ожидает сообщения в своей очереди и выключает индикатор или записывает в него предыдущее значение. Также задача перед записью (два раза в секунду) проверяет регистр прерываний от \code{BUTTONS\_PIO} (не нажата ли какая-то кнопка): если нажата - каждое второе срабатывание таймера инкрементирует предыдущее запомненное значение, а если не нажата - выставляет на флагах нули, разрешая таким образом обработчику прерываний от кнопок отправку сообщений в свою очередь и выставляет в счётчике 0;
\item Задача, обслуживающая семисегментный индикатор ожидает сообщения в своей очереди и выключает индикатор или записывает в него предыдущее значение. Также задача перед записью (два раза в секунду) проверяет регистр прерываний от \code{BUTTONS_PIO} (не нажата ли какая-то кнопка): если нажата -- каждое второе срабатывание таймера инкрементирует предыдущее запомненное значение, а если не нажата -- выставляет на флагах нули, разрешая таким образом обработчику прерываний от кнопок отправку сообщений в свою очередь и выставляет в счётчике 0;
\begin{lstlisting}[language=C,style=CCodeStyle]
void task_sseg(void *pdata) {
INT8U return_code = OS_ERR_NONE;
@ -254,7 +257,6 @@ static void sevenseg_set_hex(int hex) {
Полный листинг программы, решающей задачу представлен в приложении \hrf{appendix:indi}.
\newpage
\appendix
\setcounter{secnumdepth}{5}

View File

@ -3,7 +3,7 @@
\usepackage{multicol}
\usepackage{babel}
\usepackage{fontspec}
\input{../fancy-listings-preamble}
\input{settings/fancy-listings-preamble}
\makeatletter
\def\beamer@framenotesbegin{% at beginning of slide

View File

@ -1,11 +1,14 @@
\documentclass{article}
\input{../common-preamble}
\input{../bmstu-preamble}
\input{settings/common-preamble}
\input{settings/bmstu-preamble}
\author{Баскаков Сергей Сергеевич}
\title{Проектирование информационных и телекоммуникационных систем}
\date{2021-09-07}
\def\makeyear{2021}
\def\grpNum{11М}
\begin{document}
\maketitle
\newpage
@ -20,7 +23,7 @@
\begin{figure}[h]
\centering
\def\svgwidth{50mm}
\input{pics/01-itsp-01-ber.pdf_tex}
\includesvg{pics/01-itsp-01-ber.svg}
\caption{график вероятности появления ошибки к соотношению сигнал-шум}
\label{pic:BER}
\end{figure}
@ -28,22 +31,22 @@
\subsection{Организационные вопросы}
раз в две недели (по чётным неделям), лабы расписание с ноября, курсовой проект (как начало дипломной работы)
\subsection{Понятие информационной и телекоммуникационной системы}
Предмет - то, что сейчас называется "интернет вещей", по факту распределённая система сбора данных. Раньше были только специального назначения, сейчас дешевеет поэтому приходит в коммерцию.
Предмет -- то, что сейчас называется "интернет вещей", по факту распределённая система сбора данных. Раньше были только специального назначения, сейчас дешевеет поэтому приходит в коммерцию.
Фактическая задача - снять данные с датчика, передать по каналу связи шлюзу (концентратору) далее по каналам связи передать серверу (или, например, облаку) и произвести обработки.
Фактическая задача -- снять данные с датчика, передать по каналу связи шлюзу (концентратору) далее по каналам связи передать серверу (или, например, облаку) и произвести обработки.
\section{Введение}
все информационные и телекоммуникационные системы бывают:
\begin{itemize}
\item по уровню оцифрованности
\begin{itemize}
\item аналоговые. полностью аналоговые уже не разрабатываются.
\item цифровые, даже если первичная и конечная информация аналоговая - на входе ЦАП, на выходе АЦП. в первую очередь потому что цифра дешевле и гибче.
\item цифровые, даже если первичная и конечная информация аналоговая -- на входе ЦАП, на выходе АЦП. в первую очередь потому что цифра дешевле и гибче.
\end{itemize}
\item по ширине полосы:
\begin{figure}[H]
\centering
\def\svgwidth{50mm}
\input{pics/01-itsp-01-bandwidth.pdf_tex}
\includesvg{pics/01-itsp-01-bandwidth.svg}
\label{pic:bandwidth}
\caption{Понятие ширины полосы}
\end{figure}
@ -54,7 +57,7 @@
\[
\mu = \frac{\Delta_f}{f_c}
\]
где $\mu$ - это показатель ширины полосы.
где $\mu$ -- это показатель ширины полосы.
\begin{itemize}
\item узгополосные,
@ -68,22 +71,22 @@
Решение: можно попробовать увеличить точность кварца (термостатированный или термостабилизированный кварц.) соответственно такие кварцы с тысячи раз дороже. на практике обычно использутся обычные кварцы в передатчиках, а приёмник слушает параллельно широкий сигнал и ищет модуляции на разных полосах.
Топология: такой системы может быть только звезда - с централизацией, более сложные системы не получатся потому что каждое устройство скорее всего не увидит другое.
Топология: такой системы может быть только звезда -- с централизацией, более сложные системы не получатся потому что каждое устройство скорее всего не увидит другое.
\end{itemize}
\item по степени мобильности абонентов
\begin{itemize}
\item все абоненты стационарны,
\item все мобильны.
\end{itemize}
большинство систем в реальной жизни - смешанного типа, например, телефонная или вайфай сеть где точка доступа фиксированна, а абоненты перемещаются. При проектировании важно понимать насколько мобильны будут абоненты. \textbf{Эффект Допплера}: чем выше относительная скорость абонентов - тем больше смещение (но разница - десятки герц, будет иметь критическое влияние для UNB). Для широкополосных систем не принципиально, поскольку ширина полосы значительно больше. В таких сетях нужно думать о бесшовном переключении абонентов от одной зоны обслуживания к другой. Влияет на маршрутизацию и объём служебной информации, как следствие на энергопотребление
большинство систем в реальной жизни -- смешанного типа, например, телефонная или вайфай сеть где точка доступа фиксированна, а абоненты перемещаются. При проектировании важно понимать насколько мобильны будут абоненты. \textbf{Эффект Допплера}: чем выше относительная скорость абонентов -- тем больше смещение (но разница -- десятки герц, будет иметь критическое влияние для UNB). Для широкополосных систем не принципиально, поскольку ширина полосы значительно больше. В таких сетях нужно думать о бесшовном переключении абонентов от одной зоны обслуживания к другой. Влияет на маршрутизацию и объём служебной информации, как следствие на энергопотребление
\item по размеру зоны обслуживания, расчёт на масштаб сети.
\begin{itemize}
\item персональные - несколько метров, несколько (до 10) устройств, мощность десятки миллиВатт, например, блютус
\item локальные сети - вайфай, мощность десятки-сотни милливатт, десятки-сотни устройств, дальность десятки-сотни метров,
\item региональные - сотовые радио сети,
\item глобальные - спутникоые, GPS.
\item персональные -- несколько метров, несколько (до 10) устройств, мощность десятки миллиВатт, например, блютус
\item локальные сети -- вайфай, мощность десятки-сотни милливатт, десятки-сотни устройств, дальность десятки-сотни метров,
\item региональные -- сотовые радио сети,
\item глобальные -- спутникоые, GPS.
\end{itemize}
влияет на проектирование - закладывается масштабирование, служебные данные устройств и служебный трафик. так вопрос маштабирования нужно решать на всех уровнях (как в модели ISO-OSI)
влияет на проектирование -- закладывается масштабирование, служебные данные устройств и служебный трафик. так вопрос маштабирования нужно решать на всех уровнях (как в модели ISO-OSI)
\end{itemize}
\section{Преимущества цифровых систем связи}
\begin{enumerate}
@ -97,12 +100,12 @@
\begin{figure}[H]
\centering
\def\svgwidth{60mm}
\input{pics/01-itsp-01-rxtx-ack.pdf_tex}
\includesvg{pics/01-itsp-01-rxtx-ack.svg}
\caption{Подтверждение приёма данных от передатчика}
\label{pic:rxack}
\end{figure}
Где (1) - это норма, а (2) - любая ошибка данных, отсутствие ответа. По прошествии таймаута вторая попытка передать пакет. При этом, бесконечно повторять нет смысла, потому что устройство приёма может быть вовсе отключено. Если канал однонаправленный - обычно передаются коды коррекции ошибок. в двунаправленном выгоднее переповторить, чем закладывать в протокол пространство для передачи кодов коррекции ошибок.
Где (1) -- это норма, а (2) -- любая ошибка данных, отсутствие ответа. По прошествии таймаута вторая попытка передать пакет. При этом, бесконечно повторять нет смысла, потому что устройство приёма может быть вовсе отключено. Если канал однонаправленный -- обычно передаются коды коррекции ошибок. в двунаправленном выгоднее переповторить, чем закладывать в протокол пространство для передачи кодов коррекции ошибок.
\textbf{Проблемы:} битовая синхронизация, кадровая синхронизация. Актуально и для проводных и для беспроводных систем.
@ -110,26 +113,26 @@
\includegraphics[width=10cm]{01-itsp-01-scheme.png}
\begin{enumerate}
\item источник данных (например, если это аналоговый сигнал)
\item форматирование - приведение к цифре (АЦП)
\item кодирование - сжатие может быть как с потерями так и бес потерь. например, голос - кодеки для сжатия, снижаем поток информации с сохранением качества информации. если это ТМИ, можем передавать дифференциальный сигнал, например. то есть всё от задачи и направлено на снижение объёма данных
\item шифрование - крипта. возможно, классическое шифрование, возможно, просто проверка целосности (добавление в сообщение хеш-функции), несмотря на то что это опциональный блок, чаще всего он всё равно нужен. желательно внимательно подходить к этому, чтобы не подвергать опасности устройство.
\item канальное кодирование - добавить код коррекции ошибок, добавление помехоустойчивости
\item уплотнение - агрегация информации из разных источников, экономим трафик сети и энергопотребление на передачу от каждого отдельного источника
\item импульсная модуляция - преобразование выходного сигнала, например, манчестерская кодировка (тактирование в два раза быстрее, но восстановить сигнал становится проще за счёт увеличения количества спадов, избавляемся от постоянной составляющей, всегда идёт изменение 0-1-0). возможно, нужно добавить ещё избыточных данных для исправления ошибок каналов связи
\item полосовая модуляция - делаем именно то, что будем передавать передатчиком (амплитудная, фазовая, частотная, квадратурно-амплитудная). меняя фазу гармонического колебания мы передаём полезную информацию. вид будет влиять на вероятность битовой ошибки при одинаковом соотношении сигнал-шум. отличаются сложностью реализации. многоуровневые модуляции могут увеличить скорость передачи данных (но снижаем помехоустойчивость).
\item расширение спектра - теоретически опциональный, нацелено на то чтобы не мешать другим и собирать меньше шумов, мы должны стремиться к тому чтобы полоса нашего сигнала должна быть наименьшая. позволяет повысить помехоустойчивость.
\item форматирование -- приведение к цифре (АЦП)
\item кодирование -- сжатие может быть как с потерями так и бес потерь. например, голос - кодеки для сжатия, снижаем поток информации с сохранением качества информации. если это ТМИ, можем передавать дифференциальный сигнал, например. то есть всё от задачи и направлено на снижение объёма данных
\item шифрование -- крипта. возможно, классическое шифрование, возможно, просто проверка целосности (добавление в сообщение хеш-функции), несмотря на то что это опциональный блок, чаще всего он всё равно нужен. желательно внимательно подходить к этому, чтобы не подвергать опасности устройство.
\item канальное кодирование -- добавить код коррекции ошибок, добавление помехоустойчивости
\item уплотнение -- агрегация информации из разных источников, экономим трафик сети и энергопотребление на передачу от каждого отдельного источника
\item импульсная модуляция -- преобразование выходного сигнала, например, манчестерская кодировка (тактирование в два раза быстрее, но восстановить сигнал становится проще за счёт увеличения количества спадов, избавляемся от постоянной составляющей, всегда идёт изменение 0-1-0). возможно, нужно добавить ещё избыточных данных для исправления ошибок каналов связи
\item полосовая модуляция -- делаем именно то, что будем передавать передатчиком (амплитудная, фазовая, частотная, квадратурно-амплитудная). меняя фазу гармонического колебания мы передаём полезную информацию. вид будет влиять на вероятность битовой ошибки при одинаковом соотношении сигнал-шум. отличаются сложностью реализации. многоуровневые модуляции могут увеличить скорость передачи данных (но снижаем помехоустойчивость).
\item расширение спектра -- теоретически опциональный, нацелено на то чтобы не мешать другим и собирать меньше шумов, мы должны стремиться к тому чтобы полоса нашего сигнала должна быть наименьшая. позволяет повысить помехоустойчивость.
\begin{frm}
\def\svgwidth{50mm}
\input{pics/01-itsp-01-bad.pdf_tex}
\includesvg{pics/01-itsp-01-bad.svg}
если есть помеха - мы снижаем риск того что она будет критической для системы.
если есть помеха -- мы снижаем риск того что она будет критической для системы.
\end{frm}
\item множественный доступ (к среде) - большинство - это не точка-точка, а многопользовательские системы связи, значит нужно придумать способ общения клиентов (правила для экономии ресурсов сети, частоту, время, кодовое пространство). распределить нужно как можно более эффективно. актуально и для проводных систем связи. часто 9 и 10 меняются местами и/или объединяются.
\item передатчик - для нас чёрный ящик, потому что среда может быть абсолютно разная.
\item импульсная характеристика канала - помехи канала (аддитивные, мультипликативные) замирания мелко и крупномасштабные, искажения. в проводных тоже есть но в радио сильно больше.
\item все дальнейшие действия - обратные на приёмнике.
\item множественный доступ (к среде) -- большинство -- это не точка-точка, а многопользовательские системы связи, значит нужно придумать способ общения клиентов (правила для экономии ресурсов сети, частоту, время, кодовое пространство). распределить нужно как можно более эффективно. актуально и для проводных систем связи. часто 9 и 10 меняются местами и/или объединяются.
\item передатчик -- для нас чёрный ящик, потому что среда может быть абсолютно разная.
\item импульсная характеристика канала -- помехи канала (аддитивные, мультипликативные) замирания мелко и крупномасштабные, искажения. в проводных тоже есть но в радио сильно больше.
\item все дальнейшие действия -- обратные на приёмнике.
\end{enumerate}
\section{Частотные диапазоны}
@ -137,7 +140,7 @@
300-3000Гц 1000-100км \\
... }
\textit{Здесь так и не появилась таблица из раздаточного материала, но смысл понятен} - чем больше частота тем меньше расстояние, на которое мы можем передавать данные, внизу таблицы только прямая видимость, то есть сигналы, которые не в состоянии огибать землю. Все частоты в странах либо используется либо зарезервированы, когда мы сделали модуляцию - мы перенесли на какую-то несущую. Например, сигнал имеет полосу 1МГц, мы переносим ту же ширину на другую частоту. делается для того чтобы:
\textit{Здесь так и не появилась таблица из раздаточного материала, но смысл понятен} -- чем больше частота тем меньше расстояние, на которое мы можем передавать данные, внизу таблицы только прямая видимость, то есть сигналы, которые не в состоянии огибать землю. Все частоты в странах либо используется либо зарезервированы, когда мы сделали модуляцию - мы перенесли на какую-то несущую. Например, сигнал имеет полосу 1МГц, мы переносим ту же ширину на другую частоту. делается для того чтобы:
\begin{itemize}
\item произвести частотное планирование (выделить частоты под разные нужды, чтобы системы и люди не мешали друг другу).
\item размер антенны всегда сопоставим с длиной волны, поэтому для сотен километров нужна и антенна пару десятков метров. для использования в мобильной связи это может оказаться неудобным
@ -145,7 +148,7 @@
В основном будем говорить о частотах от десятков МГц до единиц ГГц, чем выше частота, тем сильнее затухание.
\subsection{Нелицензируемые диапазоны частот}
\textbf{ISM} - industrial scientific medical. Идея в том, что это частоты, которые можно использовать без дополнительных согласований. \textbf{EIRP} - эквивалентная изотропная излучаемая мощность. Единственное что нужно - удостовериться, что устройство отвечает требованиям диапазона. Например, нельзя увеличивать EIRP при использовании нелицензируемых частот, штраф и конфискация оборудования (касается лайфхаков по улучшению вайфая итд).
\textbf{ISM} - industrial scientific medical. Идея в том, что это частоты, которые можно использовать без дополнительных согласований. \textbf{EIRP} -- эквивалентная изотропная излучаемая мощность. Единственное что нужно -- удостовериться, что устройство отвечает требованиям диапазона. Например, нельзя увеличивать EIRP при использовании нелицензируемых частот, штраф и конфискация оборудования (касается лайфхаков по улучшению вайфая итд).
\begin{itemize}
\item 433МГц полоса 700КГц мощность EIRP 10мВт (с учётом коэфф усиления антенны)
\item 868МГц полоса 500КГц мощность 25мВт (в определённых условиях до 100мВт) - в америке эта частота отличается, 915МГц, поэтому, некоторые устройства могут оказаться несовместимы.
@ -155,7 +158,7 @@
\section{Распространение радиоволн}
\def\svgwidth{60mm}
\input{pics/01-itsp-01-width.pdf_tex}
\includesvg{pics/01-itsp-01-width.svg}
\[u(t) = S_I(t)+jS_Q(t)\]
@ -166,19 +169,22 @@
вещественный сигнал
\[S(t) = Re\{u(t)e^{j2^if_c}\}\]
\[u(t) = a(t)e^{j\phi(T)}\]
\[S(t) = Re\{a(t)e^j\phi(t)e^{j2if_ct}\} = a(t)\cos(2if_c+\phi(t))\]
это три эквивалентные формулы, представляющих одно и тоже.
\[a(t) = \sqrt{S^2_I(t) + S^2_Q(t)}\]
\[phi(t) = \arctg[\frac{S_Q(t)}{S_I(t)}] \]
задача анализа распространения радиоволн: понять что будет с сигналом на входе приёмника при прохождении среды распространении. обратная задача - зная, что мы приняли, понять как повлияла среда на распространение.
задача анализа распространения радиоволн: понять что будет с сигналом на входе приёмника при прохождении среды распространении. обратная задача -- зная, что мы приняли, понять как повлияла среда на распространение.
\textbf{Базовые эффекты при распространеии радиосигнала}
\begin{enumerate}
\item отражение (длина волны сигнала - это длина волны несущей, не любая поверхность может отражать любые сигналы) $Z_0 < \frac{\lambda}{16\sin\Theta}$ где $\Theta$ это угол падения сигнала, а $\lambda$ это длина волны
\item отражение (длина волны сигнала -- это длина волны несущей, не любая поверхность может отражать любые сигналы) $Z_0 < \frac{\lambda}{16\sin\Theta}$ где $\Theta$ это угол падения сигнала, а $\lambda$ это длина волны
\item дифракция (возникает когда волна сталкивается с объектом с острыми краями, но иногда помогает при отсутствии прямой видимости, например, не можем передать сигнал сквозь гору, но можем поверх)
\item рассеивание (сталкиваемся с объектами, которые значительно меньше длины волны, например, растения (2.4ГГц длина волны ок. 12см))
\end{enumerate}
@ -190,22 +196,22 @@
Потери сигнала равны десяти десятичным логарифмам отношения переданного к принятому. В среднем скорость затухания линейно возрастает в логарифмической шкале относительно расстояния, но далее на этом пути начинают включаться негативные эффекты распространения сигнала.
\def\svgwidth{120mm}
\input{pics/01-itsp-01-zamir.pdf_tex}
\includesvg{pics/01-itsp-01-zamir.svg}
\begin{itemize}
\item медленное (крупномаштабное) замирание, например, крупные препятствия на пути сигнала
\item быстрые (мелкомасштаблые) замирания - меняется при изменении положения передатчика или приёмника в масштабе длины волны, может быть до десятков децибел
\item быстрые (мелкомасштаблые) замирания -=- меняется при изменении положения передатчика или приёмника в масштабе длины волны, может быть до десятков децибел
\end{itemize}
\subsection{Основные параметры антенн, критерии выбора}
Антенна - это система проводников, преобразующая электрический сигнал в электромагнитную волну. приёная антенна - обратная задача. Антенны работают в обе стороны. Большинство реальных систем - двунаправленные, и как правило это одна и та же антенна. Задача разработчика - максимально эффективное преобразование. Основная эарактеристика - диаграмма направленности.
Антенна -- это система проводников, преобразующая электрический сигнал в электромагнитную волну. приёная антенна -- обратная задача. Антенны работают в обе стороны. Большинство реальных систем -- двунаправленные, и как правило это одна и та же антенна. Задача разработчика - максимально эффективное преобразование. Основная эарактеристика -- диаграмма направленности.
\textbf{Передающие устройства:}
\begin{itemize}
\item Изотропная антенна - некая точка в пространстве, которая излучает электромагнитное излучение во все стороны (это абстракция, реально таких не существует). диаграмма направленности - сфера.
\item Изотропная антенна -- некая точка в пространстве, которая излучает электромагнитное излучение во все стороны (это абстракция, реально таких не существует). диаграмма направленности -- сфера.
\def\svgwidth{50mm}
\input{pics/01-itsp-01-izo.pdf_tex}
\includesvg{pics/01-itsp-01-izo.svg}
это трёхмерная характеристика
@ -216,85 +222,87 @@
\item монополь/диполь полуволновые, четвертьволновые. Коэффициент усиления антенны (значит в каком-то одном направлении антенна сильнее эталонной), но при этом игнорируем, что в других направлениях это значение будет компенсировано.
\def\svgwidth{50mm}
\input{pics/01-itsp-01-monopol.pdf_tex}
\includesvg{pics/01-itsp-01-monopol.svg}
\def\svgwidth{50mm}
\input{pics/01-itsp-01-dipol.pdf_tex}
\includesvg{pics/01-itsp-01-dipol.svg}
Зачем роутеру в этом случае две антенны? Чтобы выставить их под углом 90 градусов, чтобы получился и вертикальный и горизонтальный тор, формирующий почти сферу.
\item направленная антенна, например, Яги (Yagi). это набор поперечных прутов. например, секторная антенна, используются в вышках сотовой связи. каждый сектор - обслуживает физическую территорию (пространственное разделение каналов).
\item направленная антенна, например, Яги (Yagi). это набор поперечных прутов. например, секторная антенна, используются в вышках сотовой связи. каждый сектор -- обслуживает физическую территорию (пространственное разделение каналов).
\def\svgwidth{100mm}
\input{pics/01-itsp-01-direct.pdf_tex}
\includesvg{pics/01-itsp-01-direct.svg}
G - максимальный коэфф усиления G (например, 10дБ относительно изотропной антенны). Чем больше коэфф усиления, тем меньше угол $\alpha$ (ширина главного лепестка). Есть также уровень боковых лепестков, например, -30дБ, это значит, что он в 30 раз меньше, чем главный. Суммарная мощность антенны остаётся равной подаваемой.
Так при использовании точка-точка мы можем использовать максимальный коэффициент усиления и узкой шириной главного лепестка - нужно очень точно наводить антенны друг на друга, то есть появляется требование к точности наведения.
G -- максимальный коэфф усиления G (например, 10дБ относительно изотропной антенны). Чем больше коэфф усиления, тем меньше угол $\alpha$ (ширина главного лепестка). Есть также уровень боковых лепестков, например, -30дБ, это значит, что он в 30 раз меньше, чем главный. Суммарная мощность антенны остаётся равной подаваемой.
Так при использовании точка-точка мы можем использовать максимальный коэффициент усиления и узкой шириной главного лепестка -- нужно очень точно наводить антенны друг на друга, то есть появляется требование к точности наведения.
\end{itemize}
\[EIRP = P_tG_t = P_t + G_t\]
то есть для вайфай
\[ P_t = 100\text{мВт} = 20\text{дБм} \]
\[ G_t = 10\text{дБи} \]
\[ EIRP = 30\text{дбМ} (1\text{Вт}) \]
мощность в абсолютной шкале, а коэффициент усиления в логарифмической шкале. Чтобы мВт перевести в логарифмическую шкалу = $10lg[\text{мВт}] = [\text{дБм}]$, чтобы дБи перевести в абсолютные = $10 / 10 ^ 1 = 10\text{раз}$.
То есть при допуске 100мВт мы превышаем нормативы в 10 раз. Чтобы не превышать - нужно кратно уменьшать выходную мощность антенны. Получается, что использовать направленные антенны целесообразно для:
То есть при допуске 100мВт мы превышаем нормативы в 10 раз. Чтобы не превышать -- нужно кратно уменьшать выходную мощность антенны. Получается, что использовать направленные антенны целесообразно для:
\begin{enumerate}
\item контроля направления излучения сигнала.
\item антенна всегда используется в двух направлениях, за счёт этого получается приёмник с лучшим соотношением сигнал-шум
\item контроль области пространства откуда принимается сигнал.
Например, Для ракет томагавк используется система наведения через GPS. если делать широкополосные омехи на канале GPS - это будет не эффективно, а эффективнее будет принимать сигнал GPS и переизлучать его.
Например, Для ракет томагавк используется система наведения через GPS. если делать широкополосные омехи на канале GPS -- это будет не эффективно, а эффективнее будет принимать сигнал GPS и переизлучать его.
\def\svgwidth{70mm}
\input{pics/01-itsp-01-station.pdf_tex}
\includesvg{pics/01-itsp-01-station.svg}
Поскольку станция постановки помех ближе - она будет приоритетной, поэтому ракета за 1млн может быть отправлена в болото станцией за 20долларов. Выход для производителей ракет - направленная вверх антенна.
Поскольку станция постановки помех ближе -- она будет приоритетной, поэтому ракета за 1млн может быть отправлена в болото станцией за 20долларов. Выход для производителей ракет -- направленная вверх антенна.
\end{enumerate}
При настройке антенны важно не только убрать шумы, но и согласовать устройство с точки зрения реальной эксплуатации (материалы корпуса, окружающие предметы).
\subsection{Модели распространения радиоволн}
Один из основных вопросов: как себя поведёт сигнал во время эксплуатации (затухание - разница излучаемого и принятого сигнала). Такое поведение с разной степенью точностьи позволяет посчитать характеристики. Чаще всего говорится именно о вероятности битовой ошибки. То есть при каком соотношении сигнал-шум мы получим какую вероятность битовой ошибки при данной дальности связи.
Один из основных вопросов: как себя поведёт сигнал во время эксплуатации (затухание -- разница излучаемого и принятого сигнала). Такое поведение с разной степенью точностьи позволяет посчитать характеристики. Чаще всего говорится именно о вероятности битовой ошибки. То есть при каком соотношении сигнал-шум мы получим какую вероятность битовой ошибки при данной дальности связи.
\begin{itemize}
\item \textbf{детерминированные}
все модели работают для дальней зоны формирования волны антенной (близко от антенны волна ещя считается не сформированной)
\begin{enumerate}
\item \textbf{модель распространения в открытом пространстве}. Например, модель точка-точка, нет препятствий, прямая видимость.
d - расстояние между передатчиком и приёмником
d -- расстояние между передатчиком и приёмником
Gt - коэффициент усиления передатчика
Gt -- коэффициент усиления передатчика
Gr - коэффициент усиления приёмника
Gr -- коэффициент усиления приёмника
получаем
\[ r(t) = Re\frac{\lambda\sqrt{GtGr}e^{-j2.d/\lambda}}{4.d}u(t)r^{-j2.j_{ct}} \]
PL - затухание
PL -- затухание
\[ PL = 10lg\frac{Pt}{Pr} = 10lg\frac{(4.d)^2}{GtGr\lambda^2} дБ \]
затухание обратно пропорционально длине волны. чем больше длина волны, тем меньше затухание, или наоборот чем больше частота несущей - тем больше затухание. Формула расчёта дальней зоны, где L размер антенны, а лямбда длина волны: $df = \frac{2L^2}{\Lambda}$ и результат должен быть много больше исходных
затухание обратно пропорционально длине волны. чем больше длина волны, тем меньше затухание, или наоборот чем больше частота несущей -- тем больше затухание. Формула расчёта дальней зоны, где L размер антенны, а лямбда длина волны: $df = \frac{2L^2}{\Lambda}$ и результат должен быть много больше исходных
Наример частота 900Мгц (длина волны около 33см) и мы используем антенну размером 1метр. по формуле получаем расстояние дальней зоны - 6 метров. Видим, что это много больше, чем 1 метр и чем 33см. Также есть эмпирическое правило, что дальняя зона - это сумма длин волн.
\item \textbf{двухлучевая модель распространения}. Предполагает уточнение высоты установки антенн передатчика и приёмника (не высоту самих антенн). получается два луча - прямая видимость и отражённый от поверхности земли. Коэфф усиления а и б - прямая видимость с,д это падающий и отражённый лучи. угол падения Тета большое, расстояния падения и отражения х и хштрих. получаем формулу суммы лучей прямой видимости и отражённого луча, но отражённый луч приходит на время тау позже и формируется сдвиг фаз сигнала. В зависимости от того как приходят сигналы картина сигналов может значительно отличаться.
Наример частота 900Мгц (длина волны около 33см) и мы используем антенну размером 1метр. по формуле получаем расстояние дальней зоны -- 6 метров. Видим, что это много больше, чем 1 метр и чем 33см. Также есть эмпирическое правило, что дальняя зона -- это сумма длин волн.
\item \textbf{двухлучевая модель распространения}. Предполагает уточнение высоты установки антенн передатчика и приёмника (не высоту самих антенн). получается два луча -- прямая видимость и отражённый от поверхности земли. Коэфф усиления а и б - прямая видимость с,д это падающий и отражённый лучи. угол падения Тета большое, расстояния падения и отражения х и хштрих. получаем формулу суммы лучей прямой видимости и отражённого луча, но отражённый луч приходит на время тау позже и формируется сдвиг фаз сигнала. В зависимости от того как приходят сигналы картина сигналов может значительно отличаться.
\def\svgwidth{60mm}
\input{pics/01-itsp-02-zamir.pdf_tex}
\includesvg{pics/01-itsp-02-zamir.svg}
Такая картина возникает из-за разницы фаз, но в асимптотическом случае получаем после какого-то расстояния мощность принятого сигнала будет (схлопываются до GrGt) как у прямой видимости. Также важно учесть коэффициент отражения (зависит от множества факторов, как от диэлектрических свойств, так и от длины волны, итд.) затухание происходит быстрее - 4я степень расстояния, в отличие от квадрата в открытом пространстве и нет зависимости от длины волны.
Такая картина возникает из-за разницы фаз, но в асимптотическом случае получаем после какого-то расстояния мощность принятого сигнала будет (схлопываются до GrGt) как у прямой видимости. Также важно учесть коэффициент отражения (зависит от множества факторов, как от диэлектрических свойств, так и от длины волны, итд.) затухание происходит быстрее -- 4я степень расстояния, в отличие от квадрата в открытом пространстве и нет зависимости от длины волны.
\item \textbf{десятилучевая модель распространения (Модель гранд каньон)}. Лучи отражаются как в двухлучевой модели + от стен + многократные отражения. Считается, что больше трёх отражений учитывать не нужно из-за слабости сигнала. Также в этой модели используются разные комбинации таких отражений.
\def\svgwidth{100mm}
\input{pics/01-itsp-01-ten.pdf_tex}
\includesvg{pics/01-itsp-01-ten.svg}
Так получаем оригинальный луч и сумму всех отражённых лучей с учётом разницы фаз и коэффициентов отражений от диэлектрической проницаемости среды. Если у лучей недостаточно широкая полоса - сливаются в один. В сверширокополосных системах каждый импульс различим. Передаваемый сигнал обычно распространяется во все стороны и не учитывается сигнал, уходящий в другую сторону. Скорость затухания равна квадрату расстояния но вплоть до шестой степени. В некоторых случаях сигнал может приниматься даже лучше, чем в прямой видимости. Применяется в шахтах, на длинных улицах, ущельях.
Так получаем оригинальный луч и сумму всех отражённых лучей с учётом разницы фаз и коэффициентов отражений от диэлектрической проницаемости среды. Если у лучей недостаточно широкая полоса -- сливаются в один. В сверширокополосных системах каждый импульс различим. Передаваемый сигнал обычно распространяется во все стороны и не учитывается сигнал, уходящий в другую сторону. Скорость затухания равна квадрату расстояния но вплоть до шестой степени. В некоторых случаях сигнал может приниматься даже лучше, чем в прямой видимости. Применяется в шахтах, на длинных улицах, ущельях.
\item \textit{Эффекты дифракции и рассеивания}. Точно описать модель дифракции почти невозможно из-за разницы геометрии препятствий. Модель клиновидного препятствия хорошо описана. Волна попадает за препятствие (дифракция, затенение).
\def\svgwidth{70mm}
\input{pics/01-itsp-01-obstacle.pdf_tex}
\includesvg{pics/01-itsp-01-obstacle.svg}
Согласно этой модели есть два расстояния d и d' а также высота препятствия h, при этом если высота значительно меньше длины волны и расстояния значительно больше высоты возникает разница фаз и обозначается дифракционным параметром Френеля-Кирхгофа.
\[\Delta d = \frac{h^2}{2}\frac{d+d'}{dd'}\]
@ -340,7 +348,7 @@ G - максимальный коэфф усиления G (например, 10
\item скорость возрастания потерь в зависимости от расстояния (высчитываем альфа и сигма эмпирически произведя серию экспериментов, или используем готовые исследования),
\item глубина замирания.
\end{enumerate}
Используется для описания медленных, крупномасштабных замираний, особенно в ситауции внутри помещения. Сигма = 0 значит случайного фактора нет, а альфа = 2 - это скорость затухания, в этом случае получим модель распространения в открытом пространстве. Например
Используется для описания медленных, крупномасштабных замираний, особенно в ситауции внутри помещения. Сигма = 0 значит случайного фактора нет, а альфа = 2 -- это скорость затухания, в этом случае получим модель распространения в открытом пространстве. Например
\begin{table}[H]
\begin{tabular}{||p{0.1\textwidth}|c|c|c|p{0.45\textwidth}||}
\hline
@ -364,20 +372,22 @@ G - максимальный коэфф усиления G (например, 10
Можем посчитать коэфф номинальной зону покрытия сигнала (то есть мощность выше порога) в виде вероятности
\[ U(P_{min}) = \frac{1}{\pi R^2} \iint_V P_r[P(r) > P_{min}] = Q(d)+exp(\frac{2-2ab}{b^2})Q(\frac{2-2ab}{b}) \]
\[ a = \frac{P_{min} - P_{t} + \overline{PL}(d_0) + 10\alpha lg(\frac{R}{d_0})}{\sigma} \]
\[ b = \frac{10\alpha lg e}{\sigma} \]
\end{enumerate}
\item \textbf{модели для узкополосных систем}
В общем случае это сумма из множества лучей, включающих прямой луч. Есть сдвиги по фазе из-за разницы времени и учитывается эффект допплера уникальные для каждого отражения. От времени зависит не только фаза, но и количество лучей.
допущения:
\begin{enumerate}
\item временные задержки примерно равны (полоса недостаточно широка, чтобы каждый луч выделить в отдельный) лучи для приёмника неразличимы, он их считает суммой всех синусов. Единственное исключение - сверхширокополосная связь. Принятый сигнал р(т) равен сумме квадратурных сигналов(р(т) кос + р(ку)син). Квадратурный коэффициент. сигнал - синус с амплитудой и фазой. если представить его на плоскости то амплитуда это радиус, угол это фаза. иногда удобнее представлять в виде квадратуры - это проекции на оси на х р(и(т)) синфазная составляющая и у р(ку(т)) при этом принятый сигнал р(т). квадратуры описывают через амплитудные коэффициенты форму сигнала.
\item временные задержки примерно равны (полоса недостаточно широка, чтобы каждый луч выделить в отдельный) лучи для приёмника неразличимы, он их считает суммой всех синусов. Единственное исключение -- сверхширокополосная связь. Принятый сигнал р(т) равен сумме квадратурных сигналов(р(т) кос + р(ку)син). Квадратурный коэффициент. сигнал -- синус с амплитудой и фазой. если представить его на плоскости то амплитуда это радиус, угол это фаза. иногда удобнее представлять в виде квадратуры -- это проекции на оси на х р(и(т)) синфазная составляющая и у р(ку(т)) при этом принятый сигнал р(т). квадратуры описывают через амплитудные коэффициенты форму сигнала.
\item мы не знаем какое распределение случайных лучей, а каждый луч это сумма квадратур, но если количество лучей достаточно велико, согласно центральной линейной теореме при бесконечности сумм какое бы не было распределение сумма будет иметь нормальное распределение. то есть случайные величины будут иметь нормальное распределение
\item величины стационарны, чтобы упростить себе жизнь мы предполагаем что амплитудный коэффициент и временная задержка не важны, убираем фактор времени.
\item мат ожидание равно нулю поэтому убираем луч в линии прямой видимости.
\end{enumerate}
\[\Phi_n(t) = 2\pi f_c\tau_n - 2\pi f_Dt - \phi_0\]
Фаза н-ного луча зависит от временной задержки. фазовый сдвиг вызван эффектом допплера, фи нулевое это начальная фаза, которая не играет роли. Допплеровский сдвиг частоты это в пределах нескольких десятков герц, основной фактор, который будет влиять на фазу - это тау(н) частота несущей. частота обычно обратна временнОй задержке. небольшое изменение может меняться во вс§м возможном диапазоне значений. Математическое ожидание
Фаза н-ного луча зависит от временной задержки. фазовый сдвиг вызван эффектом допплера, фи нулевое это начальная фаза, которая не играет роли. Допплеровский сдвиг частоты это в пределах нескольких десятков герц, основной фактор, который будет влиять на фазу -- это тау(н) частота несущей. частота обычно обратна временнОй задержке. небольшое изменение может меняться во вс§м возможном диапазоне значений. Математическое ожидание
\[M[r_I(t)] = M[\sum_n\alpha_ncos\phi_n(t)] = \sum_nM[\alpha_n]M[\cos\phi_n(t)]\]
мат ожидание это произведение каждого мат ожидания по отдельности. поскольку одно мат ожидание равно 0 то общее тоже. потому что мат ожидание фазы это 0. синус среднего распределения на всём периоде равно 0.
\textbf{Замирания}