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

Тип работы:
Курсовая
Предмет:
Коммуникации, связь, цифровые приборы и радиоэлектроника


Узнать стоимость

Детальная информация о работе

Выдержка из работы

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. СТРУКТУРНАЯ СХЕМА УСТРОЙСТВА ПЕРЕДАЧИ ДАННЫХ

2. МОДЕЛИРОВАНИЕ ДАТЧИКА ТЕМПЕРАТУРЫ

2.1 Моделирование в Matlab

2.2 Моделирование в OrCAD

3. МОДЕЛИРОВАНИЕ АЦП И ЦАП

3.1 Моделирование в Matlab

3.2 Моделирование в OrCAD

4. МОДЕЛЬ УСТРОЙСТВА ПЕРЕДАЧИ ДАННЫХ

4.1 Моделирование в Matlab

4.2 Моделирование в OrCAD

5. ПОСТРОЕНИЕ КОДОВ

5.1 Код с удвоением числа элементов

5.1.1 Теоретические сведения

5.1.2 Моделирование кода с удвоением в Matlab

5.2 Циклический код

5.2.1 Теоретические сведения

5.2.2 Расчет кодовых комбинаций и пример исправления ошибки

5.2.3 Пример реализации на C++

5.2.4 Программирование ПЛИС для циклического кодирования

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

ВВЕДЕНИЕ

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

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

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

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

Для передачи информации на большие расстояния в настоящее время используются исключительно электромагнитные волны (акустические волны пригодны лишь для ограниченных расстояний). При этом пересылка может осуществляться по медным проводам, оптоволоконному кабелю или непосредственно, по схеме передатчик-приемник. В последнем случае используются антенны. Для того чтобы антенна была эффективна, ее размеры должны быть сравнимы с длиной передаваемой волны. Чем шире динамический диапазон передаваемых частот, тем труднее сделать антенну, пригодную для решения этой задачи. Именно по этой причине для передачи используются частоты, начиная с многих сотен килогерц и выше (длина волн сотни метров и меньше). Передача сигнала непосредственно по лучу лазера ограничена расстояниями 100−3000м и становится неустойчивой при наличии осадков даже для инфракрасных длин волн. Между тем человек воспринимает акустические колебания в диапазоне 20−20 000 Гц и для целей пересылки звука (например, телефония) требуется именно этот диапазон частот. Динамический диапазон частот в этом случае равен 4000, а для высококачественного воспроизведения звука он в два раза шире. При решении этой проблемы используется преобразование частот и различные методы модуляции.

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

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

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

циклическое кодирование данные датчик

1. СТРУКТУРНАЯ СХЕМА УСТРОЙСТВА ПЕРЕДАЧИ ДАННЫХ

Структурная схема устройства передачи данных указана на рисунке 1.1 и содержит следующие элементы:

§ Д — датчик;

§ НП — нормирующий преобразователь;

§ АЦП — аналогово-цифровой преобразователь;

§ КУ — кодирующее устройство;

§ ЛС — линия связи

§ ДУ — декодирующее устройство;

§ ЦАП — аналогово-цифровой преобразователь;

§ И — индикатор.

Рисунок 1.1 — Структурная схема устройства передачи данных

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

2. МОДЕЛИРОВАНИЕ ДАТЧИКА ТЕМПЕРАТУРЫ

2.1 Моделирование в Matlab

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

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

Модель представлена на рисунке 2.1.

Рисунок 2.1. — Модель датчика температуры

В ее состав входят:

— ramp — предназначен для формирования линейного сигнала вида:

где slope — скорость изменения выходного сигнала;

time — время существования сигнала;

initial_value — начальное значение сигнала;

— constant — задает постоянный по времени сигнал;

— fcn — необходим для преобразования сигнала (или сигналов) по требуемому закону;

— sum — сумматор сигналов;

— gain — усиливает входной сигнал на величину заданного коэффициента;

— scope — осциллограф, позволяющий наблюдать изменение требуемый параметров во времени;

— mux — служит для объединения сигналов в вектор.

Таблица 2.1. — Параметры блока ramp.

Параметр

Значение

Slope

0. 08

Start time

0

Initial output

273

В блоке включена функция Interpret vector parameters as 1-D.

Таблица 2.2. — Параметры блоков constant.

Имя

Значение

B

-25

R

1000

T0

298

Во всех блоках включена функция Interpret vector parameters as 1-D.

Таблица 2.3. — Параметры блока mux.

Параметр

Значение

Number of inputs

4

Display option

bar

Таблица 2.4. — Параметры блока fcn.

Параметр

Значение

Expression

u (3)*exp (u (2)*(u (4)-u (1))/(u (4)*u (1)))

Sample time

-1

Таблица 2.5. — Параметры блока sum.

Параметр

Значение

Icon shape

round

List of sings

Таблица 2.6. — Параметры блока gain.

Параметр

Значение

Gain

1. 95

Multiplication

element-wise (K*u)

Блоками constant задаются некоторые начальные данные: сопротивление терморезистора ®, температурный коэффициент сопротивления (B), начальная температура по шкале Кельвина (Т0).

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

Исходные данные объединяются блоком mux и поступают на блок fcn, где задана функция изменения напряжения от температуры.

После сигнал поступают к блоку gain, с помощью которого задается диапазон изменения выходного напряжения в пределах 0 ч 5 В.

2.2 Моделирование в OrCAD

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

Принцип этого датчика — баланс напряжений относительно общего провода двух комплементарных половин. Требуемая температура выставляется путем регулировки подстроечного резистора. При изменении температуры возле терморезистора, на нем изменяется падение напряжения и баланс напряжений нарушается. Разница между напряжениями подается на операционный усилитель. Напряжение на инвертирующем входе ОУ усиливается в kU раз, чтобы добиться изменение выходного напряжения от 0 до 5 В, где:

Рисунок 2.2. — Принципиальная схема датчика температуры

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

Рисунок 2.3. — Выходной сигнал датчика температуры

3. МОДЕЛИРОВАНИЕ АЦП И ЦАП

3.1 Моделирование в Matlab

Для преобразования сигналов, поступающих по трем каналам, необходимы восьмиразрядные ЦАП и АЦП. Модели преобразователей указаны на рисунках 3.1. и 3.2.

Рисунок 3.1. — Восьмиразрядный ЦАП

Для построения моделей использовались также:

— demux — служит для разделения векторного входного сигнала;

— display — отображает входной параметр в виде числа;

— rounding function — служит для округления входного значения.

Рисунок 3.2. — Возьмиразрядный АЦП

Таблица 3.1. — Параметры блоков constant ЦАП.

Имя

Значение

Constant

1

Constant1

0

Constant2

1

Constant3

0

Constant4

0

Constant5

0

Constant6

0

Constant7

0

Constant8

1

Блок Constant8 отправляет на вход демультиплексора сигнал в последовательном виде.

Таблица 3.2. — Параметры блока demux ЦАП.

Параметр

Значение

Number of outputs

8

Display option

bar

Таблица 3.3. — Параметры блоков gain ЦАП.

Имя

Значение Gain

Gain

1

Gain1

2

Gain2

4

Gain3

8

Gain4

16

Gain5

32

Gain6

64

Gain7

128

Для всех блоков gain параметр Multiplication равен Element-wise (K*u).

Таблица 3.4. — Параметры блоков sum ЦАП (для блоков sum. sum7).

Параметр

Значение

Icon shape

round

List of sings

|++

Таблица 3.5. — Параметры блока sum ЦАП (sum8).

Параметр

Значение

Icon shape

round

List of sings

|++++++++

Таблица 3.6. — Параметры блока display ЦАП.

Параметр

Значение

Format

short

Decimation

1

Таблица 3.7. — Параметры блока constant АЦП.

Параметр

Значение

Constant

101

Sample time

inf

В блоке включена функция Interpret vector parameters as 1-D.

Таблица 3.8. — Параметры блоков gain АЦП (для блоков Gain, Gain2, Gain4, Gain6, Gain8, Gain10, Gain12, Gain14).

Параметр

Значение

Gain

0. 5

Multiplication

element-wise (K*u)

Таблица 3.8. — Параметры блоков gain АЦП (для блоков Gain1, Gain3, Gain5, Gain7, Gain9, Gain11, Gain13, Gain15).

Параметр

Значение

Gain

2

Multiplication

element-wise (K*u)

Таблица 3.9. — Параметры блоков rounding function АЦП.

Параметр

Значение

Function

floor

Sample time

-1

Таблица 3. 10. — Параметры блоков sum АЦП.

Параметр

Значение

Icon shape

round

List of sings

±|

Таблица 3. 11. — Параметры блока mux АЦП.

Параметр

Значение

Number of inputs

8

Display option

bar

Таблица 3. 12. — Параметры блока display АЦП.

Параметр

Значение

Format

short

Decimation

1

3.2 Моделирование в OrCAD

Для моделирования АЦП воспользуемся моделью ADC8break из библиотеки идеальных элементов breakout. Схема подлючения представлена на рисунке 3.3.

Рисунок 3.3. — Модель АЦП

На вход IN поступают сигналы с датчика. С каждым новым фронтом сигнала от источника синхроимпульсов CLK АЦП выдает цифровой сигнал. На вход REF поступает опорное напряжение.

Входы STAT и OVER необходимы для информирования о состоянии АЦП и переполнения счетчика соответственно.

Диаграммы, иллюстрирующие часть работы АЦП, представлены на рисунке 3.4.

Для моделирования ЦАП также была использована библиотека идеальных элементов breakout, в частности — модель DAC8break. Схема ее подключения указана на рисунке 3.5.

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

Рисунок 3.4. — Диаграммы на входе и выходе АЦП

Рисунок 3.5. — Подключение ЦАП

Диаграммы, иллюстрирующие работу ЦАП, представлены на рисунке 3.6.

4. МОДЕЛЬ УСТРОЙСТВА ПЕРЕДАЧИ ДАННЫХ

4.1 Моделирование в Matlab

Модель устройства состоит из моделей датчиков температуры, мультиплексора каналов данных, АЦП, блока контроля четности, генераторов для маркирования каналов, линии связи, демультиплексора, ЦАП и индикатора. Модель представлена на рисунке 4.1.

Блоки mux и unbuffer выполняют функции мультиплексора каналов. Последний элемент выполняет прореживание выборок сигналов для сокращения вычислений и согласования настроек параметров моделирования и разрядности АЦП.

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

Канал передачи моделируется при помощи блока binary symmetric channel.

Роль демультиплексора выполняет блок selector.

Блоки to workspace применяются для контроля преобразования данных путем их записи в рабочую область Matlab.

Блок logic operator выполняет суммирование по модулю два и используется для проверки кода на четность.

Блок buffer предназначен для конвертации сигнала из дискретной в векторную форму.

Таблица 4.1. — Параметры блоков constant.

Имя

Значение

Constant1

-25

Constant2

-10

Constant3

-3

Во всех блоках включена функция Interpret vector parameters as 1-D.

Таблица 4.2. — Параметры блоков mux.

Имя

Number of inputs

Display option

Mux

3

bar

Mux1

4

bar

Таблица 4.3. — Параметры блока unbuffer.

Параметр

Значение

Number of channels

1

Input sample time

3

Рисунок 4.1. — Устройство передачи данных

Таблица 4.4. — Параметры блоков to workspace.

Name

Limit data points

Decimation

Save format

sensors

inf

1

array

beforechannel

inf

1

array

afterchannel

inf

1

array

error

inf

1

array

Таблица 4.5. — Параметры блока rounding function.

Параметр

Значение

Function

floor

Sample time

-1

Таблица 4.6. — Параметры блоков pulse generator.

Name

Amplitude

Period

Pulse width

Phase delay

Pulse generator

1

2

1

1

Pulse generator1

1

4

2

2

В блоках включен параметр Interpret vector parameters as 1-D.

Для обоих блоков параметры Pulse type и Time соответственно равны Sample based и Use simulation time.

Таблица 4.7. — Параметры блока logical operator.

Параметр

Значение

Operator

XOR

Number of inputs

3

Output datatype mode

boolean

Таблица 4.8. — Параметры блока binary symmetric channel.

Параметр

Значение

Error probability

0. 07

Initial seed

2137

Output datatype

double

В блоке включена опция Output error vector.

Таблица 4.9. — Параметры блока selector.

Параметр

Значение

Input type

Vector

Index mode

One-based

Source of element indices

Internal

Elements

[1 2 3 4 5 6 7 8]

Input port width

11

Таблица 4. 10. — Параметры блока buffer.

Параметр

Значение

Buffer size

3

Buffer overlap

0

Input sample time

1

Initial condition

0

Графики передаваемых и получаемых сообщений указаны на рисунках 4.1.

Рисунок 4.1. — Передаваемые сообщения

Рисунк 4.2. — Получаемые сообщения

График зависимости числа ошибок в канале передачи от вероятности помех представлен на рисунке 4.3.

Рисунок 4.3. — Зависимость числа ошибок от вероятности помех

4.2 Моделирование в OrCAD

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

Номиналы были рассчитаны из следующих соображений.

Индуктивность высокочастотного провода с изоляцией без экранирования определяется по выражению:

где d — ширина провода с изоляцией, м;

a — ширина проводника (медного провода), м.

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

Предположим, что наша линия связи распространяется на 100 метров, значит индуктивность провода линии связи будет равна:

Емкость между двумя изолированными неэкранированными проводами составит:

где е — электрическая постоянная.

Схема передачи данных и временные диаграммы прохождения сигнала представлены на рисунках 4.4 и 4.5 соответственно.

Рисунок 4.4. — Схема передачи данных

Рисунок 4.5. Диаграммы передачи данных

5. ПОСТРОЕНИЕ КОДОВ

5.1 Код с удвоением числа элементов

5.1.1 Теоретические сведения

Код с удвоением характеризуется введением дополнительных противоположных символов для каждого информационного символа, т. е. «0» дополняется «1» и наоборот:

1 1 0 0 1 1 > 10 10 01 01 10 10

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

Число элементов в коде:

Избыточность такого кода равна:

5.1.2 Моделирование кода с удвоением в Matlab

Модель кодирующего и декодирующего устройства для кода с удвоением указана на рисунке 5.1.

Таблица 5.1. — Параметры блоков constant.

Имя

Значение

Constant

0

Constant1

1

Constant2

0

Constant3

1

Во всех блоках включена функция Interpret vector parameters as 1-D.

Рисунок 5.1. — Реализация кода с удвоением

Таблица 5.2. — Параметры блоков logical operator.

Имя

Operator

Number of inputs

Output datatype mode

Logical operator

NOT

1

double

Logical operator1

NOT

1

double

Logical operator2

NOT

1

double

Logical operator3

NOT

1

double

Logical operator4

XOR

2

double

Logical operator5

XOR

2

double

Logical operator6

XOR

2

double

Logical operator7

XOR

2

double

Logical operator8

NOT

1

double

Logical operator9

NOT

1

double

Logical operator10

NOT

1

double

Logical operator11

NOT

1

double

Таблица 5.3. — Параметры блока mux.

Имя

Number of inputs

Display option

Mux

8

bar

Mux1

4

bar

Таблица 5.4. — Параметры блока binary symmetric channel.

Параметр

Значение

Error probability

0. 07

Initial seed

2137

Output datatype

double

В блоке включена опция Output error vector.

Таблица 5.5. — Параметры блоков to workspace.

Name

Limit data points

Decimation

Save format

code

inf

1

array

error

inf

1

array

Таблица 5.6. — Параметры блока demux.

Параметр

Значение

Number of outputs

8

Display option

bar

5.2 Циклический код

5.2.1 Теоретические сведения

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

Для формирования циклического кода необходимо проделать следующие этапы:

— рассчитать соотношение между контрольными и информационными символами;

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

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

— составить образующую матрицу путем умножения элементов единичной транспонированной матрицы на образующий полином;

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

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

Для поиска ошибочного разряда необходимо:

— принятую кодовую комбинацию разделить на образующий полином;

— определить вес остатка и если выполняется условие:

(допустимая кратность ошибки), (1)

то принятую комбинацию складывают по модулю 2 с полученным остатком. Сумма даст исправленную комбинацию. Если же условие не выполняется, то:

— необходимо выполнить циклический сдвиг принятой комбинации влево на один разряд. Полученную комбинацию делят на образующий полином (назовем это действие — операция 1). Если выполняется условие (1), то делимое суммируют с остатком;

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

— Полученная в результате кодовая комбинация не содержит ошибок.

— Если после первого циклического сдвига и деления вес остатка такой, что условие (1) не выполняется, то нужно:

— выполнять операцию 1 до тех пор, пока условие (1) не будет выполнено и полученную кодовую комбинацию суммируют с остатком от деления этой комбинации на образующий полином;

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

5.2.2 Расчет кодовых комбинаций и пример исправления ошибки

Рассчитаем соотношение между контрольными и информационными символами из выражения:

где N — количество команд в канале управления;

k — количество информационных символов.

Рассчитаем это уравнение графическим способом:

Рисунок 5.1. — Графическое решение соотношения между символами

Из рисунка следует, что n = 7. Значит количество контрольных символов:

Выберем образующий полином P (x). Он должен быть минимальной длины, но его порядок должен быть не меньше (n — k), а число ненулевых членов — не меньше минимального кодового расстояния d0. Так как код должен исправлять одиночные ошибки, значит d0 = 3. Это значит, что образующим полином в нашем случае равен:

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

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

Ч =

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

+

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

1

0

1

+

0

0

0

1

0

1

1

0

1

0

1

1

0

0

0

1

0

0

1

1

1

+

0

0

0

1

0

1

1

1

0

1

1

0

0

0

1

0

1

0

0

1

1

+

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

1

0

1

0

+

0

0

1

0

1

1

0

1

0

1

1

0

0

0

1

0

0

1

1

1

0

+

0

1

0

1

1

0

0

1

0

1

1

0

0

0

0

1

1

0

1

0

0

+

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

0

0

0

1

+

0

0

0

1

0

1

1

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

1

1

1

1

1

+

0

0

0

1

0

1

1

0

0

1

0

1

1

0

1

0

1

1

0

0

0

1

0

0

0

1

0

1

+

0

0

1

0

1

1

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

0

0

0

1

0

+

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

0

1

0

0

1

Получаем следующие комбинации кодированных сообщений:

— 0 0 0 1 0 1 1;

— 0 0 1 0 1 1 0;

— 0 1 0 1 1 0 0;

— 1 0 1 1 0 0 0;

— 0 1 1 0 0 0 1;

— 1 1 0 0 0 1 0;

— 1 0 0 0 1 0 1;

— 0 0 1 1 1 0 1;

— 0 1 1 1 0 1 0;

— 1 1 1 0 1 0 0;

— 1 1 0 1 0 0 1;

— 1 0 1 0 0 1 1;

— 0 1 0 0 1 1 1;

— 1 0 0 1 1 1 0;

— 1 1 1 1 1 1 1;

По условию технического задания, искажена комбинация 11, т. е. :

1 1 0 1 0 0 1

Для исправления ошибки принятую комбинацию делим на образующий полином:

ч

1

1

0

0

0

1

1

1

1

0

1

ч

1

0

1

1

1

1

0

1

1

1

Теперь необходимо сравнить вес полученного остатка щ с возможным числом исправляемых ошибок для данного кода у — число исправляемых ошибок равно единице. Вес остатка — 2. Так как щ > у, производим циклический сдвиг принятой комбинации на один разряд влево и повторяем деление:

ч

1

0

0

0

1

1

1

1

1

0

1

ч

1

0

1

1

1

1

1

1

0

1

ч

1

1

0

1

1

1

1

0

1

1

1

Снова сравниваем вес полученного остатка и возможное число исправленных ошибок. Т.к. щ = у, складываем последнее делимое с последним остатком по модулю два:

+

1

0

0

0

1

1

1

1

1

0

0

0

1

1

0

Далее необходимо произвести один циклический сдвиг влево и получим искомую правильную кодовую комбинацию:

0 1 0 0 0 1 1

5.2.3 Пример реализации на C++

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

#include < stdio. h>

#include < conio. h>

#include < clx. h>

#pragma hdrstop

#pragma argsused

void main ()

{

int n, k, g[10], C[10], M[10], I, T[10];

int i, j, r;

clrscr ();

printf («[ CYCLIC ENCODER ]n»);

printf («nEnter The Value Of n and k: n»);

scanf («%d%d»,& n,&k);

printf («nEnter The Generator Polynomial Of Dergee %d»,(n-k));

printf («of the form 1+x+x*x+x*x*x+… n»);

for (i=0; i< n-k; i++) scanf («%d»,& g[i]);

printf («nEnter Msgn»);

for (i=0; i< k; i++) scanf («%d»,& M[i]);

printf («n»);

for (i=0; i< n-k; i++) T[i]=0;

for (i=0; i< k; i++)

{

I = (M[i] + T[n-k-1])%2;

C[0] = I;

for (j=1; j< n-k; j++)

{

if (g[j]==1) C[j]=(I + T[j-1])%2;

else C[j]=T[j-1];

}

for (r=0; r< n-k; r++) T[r]=C[r];

}

printf («Generated Cyclic code is: n»);

for (i=0; i< k; i++) printf («%d», M[i]);

printf (««);

for (i=0; i< n-k; i++) printf («%d», C[i]);

getch ();

}

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

Рисунок 5.2. — Пример реализации циклического кодирования на C++

5.2.4 Программирование ПЛИС для циклического кодирования

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

На базе ПЛИС можно построить около двух довольно-таки мощных контроллера, а программирование происходит на языках высокого уровня VHDL или Verilog, синтаксис которых будет понятен программистам на C/C++.

Примеры для архитектуры векторов ПЛИС std bit logic vector.

-- VHDL example

library ieee;

use ieee. std_logic_1164. all;

package PCK_CRC3_D8 is

-- polynomial: (0 1 3)

-- data width: 8

-- convention: the first serial bit is D[7]

function nextCRC3_D8

(Data: std_logic_vector (7 downto 0);

crc: std_logic_vector (2 downto 0))

return std_logic_vector;

end PCK_CRC3_D8;

package body PCK_CRC3_D8 is

-- polynomial: (0 1 3)

-- data width: 8

-- convention: the first serial bit is D[7]

function nextCRC3_D8

(Data: std_logic_vector (7 downto 0);

crc: std_logic_vector (2 downto 0))

return std_logic_vector is

variable d: std_logic_vector (7 downto 0);

variable c: std_logic_vector (2 downto 0);

variable newcrc: std_logic_vector (2 downto 0);

begin

d: := Data;

c: := crc;

newcrc (0): := d (7) xor d (4) xor d (3) xor d (2) xor d (0) xor c (2);

newcrc (1): := d (7) xor d (5) xor d (2) xor d (1) xor d (0) xor c (0) xor c (2);

newcrc (2): := d (6) xor d (3) xor d (2) xor d (1) xor c (1);

return newcrc;

end nextCRC3_D8;

end PCK_CRC3_D8;

// Verilog example

module CRC3_D8;

// polynomial: (0 1 3)

// data width: 8

// convention: the first serial bit is D[7]

function [2: 0] nextCRC3_D8;

input [7: 0] Data;

input [2: 0] crc;

reg [7: 0] d;

reg [2: 0] c;

reg [2: 0] newcrc;

begin

d = Data;

c = crc;

newcrc[0] = d[7] ^ d[4] ^ d[3] ^ d[2] ^ d[0] ^ c[2];

newcrc[1] = d[7] ^ d[5] ^ d[2] ^ d[1] ^ d[0] ^ c[0] ^ c[2];

newcrc[2] = d[6] ^ d[3] ^ d[2] ^ d[1] ^ c[1];

nextCRC3_D8 = newcrc;

end

endfunction

endmodule

ЗАКЛЮЧЕНИЕ

В данной курсовой работе был представлен анализ моделирования датчика температуры, АЦП, ЦАП и канала передачи данных в математической и электронной модели.

Также были построены дополнительные избыточные коды для кодирования сигналов с АЦП, а именно: циклический код — реализация на C++ - и код с удвоением — модель в Matlab. В качестве примера работы был реализован механизм устранения ошибки в одной из переданных комбинаций.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Зиатдинов С. И., Осипов Л. А. — Проектирование специализированных вычислителей цифровой обработки сигналов: Учебное пособие, СП (б), 2002.

2. Цымбал В. П. Теория информации и кодирования: Учебник, 4-е из. перераб. и доп. К.: Высш. шк., 1992. — 263с.: ил.

3. Кузьмин И. В., Кедрус В. А. Основы теории информации и кодирования. К.: «Вища школа», 1977, 280с. :ил.

4. Ильин В. А. Телеуправление и телеизмерение: Учеб. Пособие для вузов. — 3-е изд. перераб. и доп. — М.: Энергия, 1982. — 560с., ил.

5. Методические указания к выполнению курсовой работы по дисциплине «Обработка сигналов и изображений» — Алчевск: ДГТУ, 2004. — 18 с.

ПоказатьСвернуть
Заполнить форму текущей работой