Создание устройства генерирования основных синусоидальных импульсов ВИ.
Часть 1. Введение в платформу LabVIEW от NI
Цель работы: создать два инструмента: source.vi (генератор выборочной двоичной последовательности) и errorDetect.vi (инструмент, рассчитывающий частоту ошибочных битов в двоичной последовательности), использовать эти инструменты в моделирующей программе цифровой связи (блок-диаграмма awgnsimplesim.vi).
Таблица 1:Описание source.vi | |||
ВХОДЫ | длина | I32 (двоичное число 32) | длина двоичной последовательности |
ВЫХОДЫ | двоичная последовательность на выходе | массив U8 (байт без знака) | выборочная двоичная последовательность (массив байтов без знака, учитывая значение 0 или 1) |
Таблица 2:Описание errordetect.vi | |||
ВХОДЫ | проектируемая двоичная последовательность | массив U8 | проектируемая двоичная последовательность |
ключевая двоичная последовательность | массив U8 | правильная двоичная последовательность | |
ВЫХОДЫ | частота ошибочных битов | ДТ (двойная точность) | Расстояние Хемминга между проектируемой последовательностью и ключевой последовательность, разделенными длиной двоичной последовательности |
Выполнение работы
С помощью виртуальных инструментов создайте source.vi. Для этого откройте файл student_source, перейдите на диаграмму блоков (Window⇒Show Block Diagram) и добавьте необходимые элементы. Структура source.vi представлена на Рисунке 2.
Рисунок 2. Структура source.vi. Вариант No Error
Для выбора нужного элемента щелкните ПКМ на пустом месте в панели диаграмм – откроется вкладка Functions.
В Functions откройте Programming⇒Timing и выберете Tick Count (ms). Этот компонент считывает текущее значение системного таймера и возвращает результат в миллисекундах.
Из Programming⇒Numericдобавьте Numeric Constant(числовая константа), Multiply(умножение)иIncrement(инкремент).
ИзRF Communications⇒Modulation⇒Digitalдобавьте MT Generate Bits (poly)(генератор последовательности битов). Этот полиморфный инструмент может генерировать псевдошумовые последовательности битов Фибоначчи и Галуа. Он также может генерировать последовательности битов по созданному пользователем шаблону. Генератор работает до тех пор, пока заданное пользователем число полных битов не сгенерируется.
Создайте Case Structure(структура Варианта). Она находится во вкладке Programming⇒Structures. Case Structureаналогична операторам case или if then else в текстовых языках программирования. По умолчанию структура Вариант является логической и имеет два варианта - ИСТИНА (TRUE) и ЛОЖЬ (FALSE), выбираемые с помощью терминала селектора структуры варианта. Структура автоматически преобразуется в числовую или строковую при подключении соответственно числовой или строковой переменной к терминалу селектора. В этом случае структура может иметь практически неограниченное количество вариантов, начиная с нулевого. Одновременно можно наблюдать только один вариант (кадр) структуры. Переход между вариантами производится с помощью селектора структуры варианта, расположенного на верхней стороне рамки структуры или контекстного меню структуры. Для использования структуры Вариант необходимо отметить вариант по умолчанию (Default).
Ввод и вывод данных в структуру Вариант производится с помощью входных и выходных терминалов данных (тоннелей). Создание выходного терминала данных на одной поддиаграмме структуры приводит к его появлению на других поддиаграммах в том же самом месте границы структуры. До подключения данных к выходному терминалу во всех поддиаграммах он сохраняет белый цвет и воспринимается как ошибка создания структуры. Выходные терминалы должны иметь значения совместимых типов.
Обведите структурой Варианта блоки, которые вы добавили ранее, сами же блоки соедините связями. В итоге у Вас должна получиться поддиаграмма, как на Рисунке 2 (случай, если ошибок нет (No Error)).
Теперь переключитесь в поддиаграмму Error и соедините блоки как на Рисунке 3. Вариант «ошибки» создан. Можно сохранить программу source.vi.
Рисунок 3. Структура source.vi. Вариант Error
Аналогичным образом создайте errordetect.vi. Откройте файл student_error_detect.vi и добавьте необходимые элементы, чтобы получилась программа как на Рисунке 4.
Рисунок 4. Структура errordetect.vi. Вариант No Error
С помощью поиска в меню Functions найдите следующие элементы:
Add Array Elements(Возвращает сумму всех элементов числового массива)Divide (Деление) To Double Precision Float(Преобразует число двойной точности в число с плавающей точкой)Not Equal?(Возвращает TRUE, если х не равно у. В противном случае, эта функция возвращает FALSE . Вы можете изменить режим сравнения этой функции)Array Size(Возвращает количество элементов в каждом измерении массива),Numeric Constant(Константа)Boolean To (0,1)(Преобразовывает логическое значение FALSE или TRUE в 0 или 1, соответственно) Index Array(Возвращает элемент или подмассив n-мерного массива с его индексом)Max & Min(Сравнивает х и у и возвращает большее значение в верхнем выходном терминале и меньшее значение в нижнем выходном терминале)For Loop(Выполняет свою поддиаграмму n-раз (на графической структуре: N – количество циклов; i – текущая итерация, которая находится в пределах от 0 до N-1)Case StructureПри работе с For Loopотключите индексирование (Disable Indexing) с помощью ПКМ на соответствующих туннелях, тогда квадратик со скобками на границеFor Loopпревратится в закрашенный квадратик. Сохраните готовую программу. Вы создали source.vi и errordetect.vi. Теперь Вы готовы заменить соответствующие блоки в моделирующей программе, предоставленной вам (awgnsimplesim.vi). Для этого откройте в меню FunctionsвкладкуSelect a VI… и выберете созданные Вами source.vi и errordetect.vi. После введения Вашего кода в моделирующую программу и проверки ее на правильность работы, наблюдайте за тем, что происходит с частотой ошибочных битов, когда Вы уменьшаете шумовую мощность в моделирующей программе (Примечание: если ваш ВПП темнеет после введения его в моделирующую программу, правой кнопкой мыши нажмите на ВПП и выберите «перекомпоновать ВПП», чтобы исправить данную ошибку).Моделирующая программа позволит Вам запустить множество циклов и накапливать статистику по данным циклам. В данном случае, Вы должны обращать внимание на статистику частоты ошибочных битов (ЧОБ) (т.е., среднюю ЧОБ).
Постройте график зависимости средней частоты ошибочных битов (BER) от отношения 1 /N0, где N0 – шумовая мощность (учтите, что N0 подано в дБ в моделирующей программе). Достаточно изменять шумовую мощность от -10 дБ до 0 дБ с шагом в 2Дб. Используйте модуляции BPSK, QPSK и выберите входную длину 200 бит. Для определения средней частоты ошибочных битов для каждого значения 1 /N0 снимайте характеристики BER 10 раз.В канале связи на сигнал действует аддитивный белый гауссовский шум. Часть 2: Введение в высокочастотное аппаратное оборудование компании NIЦель работы: О USRPВ этом курсе вы будете использовать высокочастотное (ВЧ) аппаратное оборудование компании National Instruments, которое конфигурируется с помощью программного оборудования, чтобы создать систему цифровой связи. Это аппаратное оборудование можно легко сконфигурировать при помощи LabVIEW. ВЧ аппаратное оборудование, используемое в лабораторной работе, это USRP (Универсальное устройство программируемой радиосистемы) компании National Instruments. Рисунок 1 показывает USRP, подключенное к компьютеру (с выполнением LabVIEW). Этот ПК управляет USRP через кабель со стандартом Gigabit Ethernet, соединяющий их вместе. В данном разделе вы более детально изучите данные модули.NI USRP (Передача)
Начнем с того, что обратим внимание на NI USRP, когда оно работает как передатчик. USRP принимает колебательный сигнал от хост-компьютера с разрешением 16 бит, ко-торый дискретизируется при частоте до 25 млн. сэмплов/сек. Этот сигнал преобразо-вывается с повышением частоты до высокой частоты (ВЧ), перед тем, как он посылает-ся на усилитель и затем передается беспроводным способом. Для дополнительной ин-формации по NI USRP, пожалуйста, смотрите файлы справки, связанные с USRP (Help⇒ NI USRP Help⇒Devices⇒ NI USRP-292x Specifications)(Справка⇒Справка по NI USRP ⇒Устройства⇒Спецификации NI USRP-292x)NI USRP (Прием)
NI USRP также может принимать данные, и осуществляет это следующим образом. Принимаемый сигнал смешивается с желаемой несущей частотой для того, чтобы пре-образовать его с понижением частоты до комплексного синфазно-квадратурного сиг-нала основной полосы частот, который дискретизируется при частоте 100 млн. сэмплов/сек. Затем понижается качество цифрового сигнала до частоты, определяемой пользователем, и цифровой сигнал передается на хост-компьютер для обработки.
Когда аналогово-цифровой преобразователь (АЦП) NI USRP проводит отсчеты при полной частоте АЦП (100 млн. сэмплов/сек), он может получить ширину полосы частот 20МГц. Дискретизация при такой большой частоте с высоким разрешением (14 бит) создает огромное количество данных. Однако чтобы получить сигнал с меньшей шириной полосы частот (узкополосный сигнал), достаточно проводить отсчеты при частоте, вдвое большей ширины частот сигнала.Прореживание – это процесс уменьшения частоты дискретизации сигнала дискретного времени. На практике, это влечет за собой применение фильтра для подавления помех спектрального наложения и отклонения некоторых отсчетов. NI USRP предназначается для цифрового преобразователя с понижением частоты (ППЧ), который позволяет ему проводить прореживание в аппаратном оборудовании, вместо того, чтобы проводить его в программном оборудовании (что может быть значительно медленнее).
Используя ППЧ, USRP может принимать узкополосные сигналы при частотах дискретизации намного меньше, чем полная частота АЦП (100 млн. сэмплов/сек), таким образом, сокращая объем памяти, необходимой для хранения колебательного сигнала. Например, колебательный сигнал, который дискретизируется при частоте 100 млн. сэмплов/сек, в течение 1 секунды производит в 100 раз больше данных, чем тот же самый колебательный сигнал, дискретизирующийся при частоте 1 млн. сэмплов/сек. Эффективная частота дискретизации USRP (включая ППЧ) варьируется от максимальной частоты 25 млн. сэмплов/сек до 200 тыс. сэмплов/сек, и настраивается непосредственно пользователем. Для дополнительной информации по NI USRP, пожалуйста, смотрите соответствующие файлы справки.Подготовительная часть
Просмотрите документацию по USRP (Help⇒NI-USRP Help)(Справка⇒Справка по NI-USRP). Вы обнаружите, что файлы справки, находящиеся в Devices⇒NI USRP-292x Specifications(Устройства⇒Спецификации NI USRP-292x) и Devices⇒NI USRP-2920(Устройства⇒NI USRP-2920), содержат наиболее полную информацию о USRP. Для более глубокого понимания спецификаций, пожалуйста, смотрите нижеследующие документы:
• Ширина полосы частот, частота дискретизации и теорема Найквиста
• Понятие о спецификациях ВЧ и сверхвысоких частот (СВЧ) - Часть I
• Понятие о спецификациях ВЧ и СВЧ - Часть II [15]
Ответьте на нижеследующие вопросы об USRP после прочтения файлов справки.
1. Каков диапазон допустимой несущей/средней частоты, поддерживаемой NI-USRP?
2. Какова максимально допустимая ширина полосы частот, поддерживаемая NI-USRP?
3. Какова максимальная частота дискретизации NI-USRP?
4. Зачем, по вашему мнению, применяется ППЧ? В чем его главное преимущество?
Ответьте на нижеследующие вопросы по основному принципу, руководствуясь [8], [14] и [15].
1. Своими словами опишите, что собой представляет ширина полосы частот инструментального средства.
2. Что подразумевается под частотой дискретизации инструментального средства?
3. Почему данные спецификации важны для проектирования передатчика и приемника в системе беспроводной связи?
Выполнение работыСоздание устройства генерирования основных синусоидальных импульсов ВИ.
Создайте устройство генерирования основных синусоидальных импульсов VI (Виртуальный Инструмент). Блок-диаграмма Вашего VI должна совпадать с Рисунком 5, а лицевая панель - с Рисунком 6.
Рисунок 6. Лицевая панель устройства генерирования синусоидальных импульсов VI.Чтобы работать USRP, перейдите на вкладке Functions⇒Instrument I/O⇒Instrument Drivers⇒NI-USRP⇒TX(Функции⇒ Устройство ввода/вывода ⇒ Драйвера устройства ⇒ NI-USRP⇒Передача) и добавьте все инструменты из раздела ТХ.
Также понадобятся следующие элементы: