Рефераты. Кодирующее устройство для кода Файера p> 5) При восходящем тестировании прежде всего проверяются модули нижних иерархических уровней, к которым постепенно подключаются вызывающие их модули. При этом обеспечивается работоспособность вызываемых компонент и функции группы программ проверяются в их естественном исполнении. Основные трудности состоят в необходимости полного обновления тестовых наборов при подключении каждой новой программы более высокого уровня.

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

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

На практике обычно используются три стратегии тестирования:

1) Тестирование программ как "Чёрного ящика ". Имеет цель выяснения обстоятельств, в которых поведение программ не соответствует спецификации. Тестовые данные составляются и используются без учета знаний о внутренней структуре программы.

2) Тестирование программ как "Белого ящика ". Тестовые наборы данных проектируются на основе внутренней логики программы. Цель тестирования

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

3) Реальная стратегия обычно сочетает оба метода. При помощи метода

"чёрного ящика" делается:

V Проверка в нормальных условиях.

V Анализ граничных значений.

V Проверка в исключительных ситуациях.

V Предположение об ошибке.

При помощи метода "Белого ящика" делается:
V Покрытие операторов.
V Покрытие решений.
V Покрытие условий.

7.2. Результаты тестирования

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

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

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

8. Ограничения на разработку.

Для выполнения программы необходимо соблюдать некоторые требования, а именно:
1) Программа может работать на персональных компьютерах с процессором не ниже 80486 .
2) Для реализации интерфейса необходимо иметь цветной монитор с адаптером не ниже VGA.
3) RAM не ниже 8MB.
4) Windows 95/98/NT

8.1. Инструкция пользователю.

В программе разработан интерфейс, подходящий под стандарты.
Интерфейс реализован в графическом режиме. Меню горизонтальное, с выпадающими окнами. Главное окно программы изображено на рис.. Приложения
2.
Главное меню программы содержит следующие пункты:
1. О программе - дана краткая аннотация выполненной программы.
2. Работа - содержит подменю с пунктами:

1. Ввод - позволяет пользователю ввод соответствующих данных.

Здесь предусмотрена защита от некорректного ввода. В этом пункте можно ввести любую информационную комбинацию.

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

3. Выход - обеспечивает выход из программы. Используется защита от случайного выхода.

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

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

Заключение

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

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

Программа реализована на языке Turbo Pascal 7.0. Это наиболее распространенный на сегодняшний день язык программирования. Поэтому в программе разобраться трудностей не будет.

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

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

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

Программа является универсальной и может быть усовершенствована любым пользователем, разбирающимся в языке программирования Pascal 7.0 .

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

Список литературы.

1. Тёмников Ф. Е..

Теоретические основы информационной техники:

Учеб.пособие для вузов-2-е изд., перераб. и доп.-М.:Энергия, 1979.-

512 с., ил.

2. Липаев В.В.

Тестирование программ.- М.: Радио и связь,1986. - 296 с.: ил.

3. Тутевич В. Н.

Телемеханика:

Учеб.пособие для студентов вузов спец. “Автоматика и телемеханика”-2-е изд., перераб. и доп.-М.: Высш. Шк., 1985.- 423 с., ил.

4. Зельдин Е. А.

Цифровые интегральные микросхемы в информационн-измерительной

аппаратуре. –Л.: Энергоатомиздат. Ленингр. отд-ние, 1986.- 280 с.: ил.

Приложения.


Приложение 1. Перечень элементов


| | | | |
|Поз. |Наименование |Кол|Примечания |
|Обозн. | | | |
| |Конденсаторы | | |
|С3 |К10-60 – 10 мКф + 10% |1 | |
| С1,С2 |К10-17а – 0.1 мКф + 0.1% |2 | |
| |Микросхемы. | | |
| |К555АГ3 |1 | |
| |К155ИР13 |9 | |
| |К555ТВ6 |1 | |
| |К555ИЕ10 |2 | |
| |К155ЛН1 | | |
| |К155ЛИ1 | | |
| |Резисторы | | |
|R1-R2 |С2-29В 5Ком±0.1% |2 | |
|R4 |МЛТ-0.125 – 30 Ком + 10% |1 | |
|R5 |МЛТ-0.125 – 1.5Koм + 10% |1 | |

Приложение 2. Блок-схема алгоритма.

Приложение 3. Текст програмных модулей.


Uses Crt,Graph,AlexUnit;
Const
_N = 33;
_M = 10;

Type
Delim_Mas = array[1 .. 100] of byte;
Mass1 = array[1 .. _N+_M-1] of byte;
Mass2 = array[1 .. _M] of byte;
Mass3 = array[1 .. _M-1] of byte;
Mas_Exit=array[1..2] of String;
Two_Matrix=array[1 .. _N,1 .. _N+_M-1] of byte;

Const
P : Mass2 = (1,0,1,1,0,0,1,0,1,1);
Y_No : Mas_Exit = ('Да','Нет');


Var

F,Cicle_Kod : Mass1; R : Mass1;

Delimoe : Delim_Mas;

Obraz_Matrix : Two_Matrix;

Mas : Mass; grDriver,grMode,ErrCode: Integer; flag : boolean;

_t,c,n,m,i,schot,N0,Code : integer;

Function Sum(F,P : Byte) : Byte; {Суммирование по модулю 2}
Var i : Byte;
Begin

If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0

Else Sum:=1;
End;

{-------------------------------}
Procedure Dopoln(Var F : Mass1); {Умножение на старшую степень образующего многочлена}
Var i : Byte;
Begin for i:=_N+1 to _N+_M-1 do F[i]:=0;
End;

{--------------------------------}
Procedure Delenye(F : Mass1;P : Mass2); {Деление многочлен на многочлен}
Var i,j,t : Byte; K : Mass1;
Begin

For i:=1 to _N do

Begin

IF F[i]=1 Then Begin t:=1;

For j:=i to i+_M-1 do

Begin

K[j]:=Sum(F[j],P[t]);

F[j]:=K[j]; t:=t+1;

End;

End;

End; t:=1;

For i:=_N+1 to _N+_M-1 do

Begin

R[t]:=F[i]; t:=t+1;

End;
End;

{----------------------------------------}
Procedure Ed_Matrix(Var A : Two_Matrix); {Составление еденичной матрицы}
Var i : Integer;
Begin

For i:=1 to _N do

Begin

A[i,_N+1-i]:=1

End;
End;
{----------------------------------------}

Procedure Obr_Matrix(Var A : Two_Matrix); {Получение образующей матрицы}
Var i,j,t,Schot,l,m : Byte; K : Mass1;
Begin

Delimoe[1]:=1;

Schot:=1;

For i:=1 to _N do

Begin

IF Delimoe[i]=1 Then Begin t:=1;

For j:=i to i+_M-1 do

Begin

K[j]:=Sum(Delimoe[j],P[t]);

Delimoe[j]:=K[j];

t:=t+1;

End;

l:=1;

For m:=i+1 to i+_M-1 do

Begin

A[Schot,_N+l]:=Delimoe[m]; l:=l+1;

End;

End

Else Begin l:=1;

For m:=i+1 to i+_M-1 do

Begin

A[Schot,_N+l]:=Delimoe[m]; l:=l+1;

End;

End;

Schot:=Schot+1;

End;

End;

Procedure InitGrf; {Инициализация графики}
Begin grDriver := Detect;
InitGraph(grDriver, grMode,'c:subbpbgi'); if GraphResult grOk then Begin

Halt(1);
End;
End;


Procedure Visual(Var sa:mass); {Ввод информационных символов}
Var i,x,y,k,Fon,Color,a:Integer;

Code: Integer; ch,chi:Char;

Stop:Boolean;

Elm : String;

Begin moveto(20,465);
SetTextJustify(0,1);
SetColor(0); outtext('Нажмите Enter'); x:=30; y:=225; k:=17;
Fon:=1;
Color:=14;
Window_(30,150,610,260,1,'Ввод нформационных символов');
SetTextStyle(1,0,4);
SetColor(Fon);
For i:=1 to _N Do

Begin

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

End;
SetTextStyle(0,0,1);
MoveTo(x+17,y-20);
Str(_N,Elm);
OutText(Elm);
MoveTo(x+_N*17,y-20);
Str(0,Elm);
OutText(Elm);

SetTextStyle(1,0,4); i:=1;

MoveTo(x+i*k,y);

Setcolor(Color);

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

Repeat

Begin ch:=ReadKey;

Case ch Of

#75:Begin

Setcolor(Fon);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm); i:=i-1; if(i_N)then i:=1;

SetColor(Color);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;{вправо}

'1':Begin

SetColor(7);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

SetColor(Color);

MoveTo(x+i*k,y); sa[i]:=1;

F[i]:=Sa[i];

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;

'2':Begin

SetColor(7);

MoveTo(x+i*k,y);

Str(Sa[i],Elm);

OutText(Elm);

SetColor(Color);

MoveTo(x+i*k,y); sa[i]:=0;

F[i]:=Sa[i];

Str(Sa[i],Elm);

OutText(Elm);

Stop:=False;

End;

#13:Begin Stop:=True; End;

End;

End;

Until(Stop);

SetTextStyle(0,0,1);
End;

{---------------------------------------}
{Вывод образующей матрицы}
Procedure OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix );
Var k,i,j : Integer;

Elm : String;
Begin k:=12;

For i:=1 to _N Do

Begin

For j:=1 to _N Do

Begin

MoveTo(x+j*k,i*10+y);

Str(Obr_Matr[i,j],Elm);

OutText(Elm);

End;

End;

SetColor(4);

For i:=1 to _N Do

Begin

For j:=_N+1 to _N+_M-1 Do

Begin

MoveTo(x+j*k,i*10+y);

Str(Obr_Matr[i,j],Elm);

OutText(Elm);

End;

End;
End;

{----------------------------------}
{Вывод полученной кодовой комбинации}
Procedure OutPut(x,y : Integer;F,A : Mass1);
Var k,s : Integer;

Elm : String;
Begin

MoveTo(x+10,y-20);

Str(_N+_M-1,Elm);

OutText(Elm);

MoveTo(x+(_N+_M)*12-3,y-20);

Str(0,Elm);

OutText(Elm); k:=12;

For i:=1 to _N Do Cicle_Kod[i]:=F[i];

s:=1;

For i:=_N+1 To _N+_M-1 Do

Begin

Cicle_Kod[i]:=A[s]; s:=s+1;

End;

For i:=1 to _N Do

Begin

MoveTo(x+i*k,y);

Str(Cicle_Kod[i],Elm);

OutText(Elm);

End;

SetColor(4);

For i:=_N+1 to _N+_M-1 Do

Begin

MoveTo(10+x+i*k,y);

Str(Cicle_Kod[i],Elm);

OutText(Elm);

End;

End;

{---------------------------------}
{выход из программы}

Function _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer;

Var x,y,k : Integer;

Stop : Boolean;

Ch : Char;
Begin
Window_(250,200,450,300,1,'Выход'); x:=225; y:=260; k:=80;
SetTextStyle(0,0,1);
SetColor(Col_Simv);
For i:=1 to 2 do

Begin

MoveTo(x+i*k,y);

OutText(Y_No[i]);

End;

i:=1;

SetFillStyle(1,Fon);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);

MoveTo(x+i*k,y);
Setcolor(Color);
OutText(Y_No[i]);
Stop:=False;
Repeat ch:=ReadKey;

Case ch Of

#75:Begin

SetFillStyle(1,7);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

Setcolor(Col_Simv);

MoveTo(x+i*k,y);

OutText(Y_No[i]); i:=i-1; if(i2)then i:=2;

SetFillStyle(1,Fon);

Bar(x+i*k-30,y-15,x+i*k+30,y+15);

SetColor(Color);

MoveTo(x+i*k,y);

OutText(Y_No[i]);

Stop:=False;

End;{вправо}

#13:Begin Stop:=True; _Exit:=i End;

End;{Case}
Until Stop;
SetTextStyle(0,0,0);
End;


{---------------------------------}
{ОСНОВНАЯ ПРОГРАММА }
{---------------------------------}

Begin
InitGrf;

Repeat flag:=false;
Fon(3,2,GetMaxX-3,30); setcolor(0); moveto(20,465);
SetTextJustify(0,1); outtext('Esc - Выход');
Menu(3,'Работа','О программе','Помощь','','','');
Case t Of

1:Begin

Repeat

SetFillStyle(1,7); {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

{moveto(20,465);

SetTextJustify(0,1);

SetColor(0); outtext('Нажмите любую клавишу ...');}

VerMenu(3,'Ввод комбинации','Образующая матрица','Выход','','','');

Case Np Of

1 : Begin

Visual(Mas);

Dopoln(F);

Delenye(F,P);

Window_(30,300,610,410,1,'Закодированное сообщение.
Красные символы - контрольные.');

OutPut(40,370,F,R);

ReadKey;

SetFillStyle(1,3);

Bar(30,150,610,410);

End;

2 : Begin

Window_(30,50,610,445,1,'Образующая матрица');

Ed_Matrix(Obraz_Matrix);

Obr_Matrix(Obraz_Matrix);

OutPutObr_Matrix(40,90,Obraz_Matrix);

ReadKey;

SetFillStyle(1,3);

Bar(30,50,610,450);

End;

3 : Begin

Case _Exit(1,15,0) of

1 : begin

Np:=3; flag:=true; end;

2 : Flag:=False; end

End;

End;

Until (Np=3) or (Np=4);

Ramka_Off(x1,y1,x2,y2);

End;

2:Begin

SetFillStyle(1,7); {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

Window_(100,80,510,400,1,'О программе'); moveto(130,130);

SetTextJustify(0,1); outtext('Данная программа является курсовой работой'); moveto(300,145);

SetTextJustify(1,1); outtext('по курсу :'); moveto(300,160);

SetTextJustify(1,1); outtext('" Передача информации " '); moveto(120,200);

SetTextJustify(0,1); outtext('Задание : Построить кодирующее устройство'); moveto(185,220); outtext('для кода Файра.Кодируемых сообщений 63,'); moveto(185,240); outtext('число обнаруживаемых ошибок Br=4, число'); moveto(185,260); outtext('исправляемых ошибок Bs=3.'); moveto(120,290); outtext('Студент : Иванов А. Е.'); moveto(120,310); outtext('Группа : BM-1-97'); moveto(120,330); outtext('Преподаватель : Каевченко .'); moveto(300,380);

SetTextJustify(1,1); outtext('СМОЛЕНСК 1999 г.'); moveto(20,465);

SetTextJustify(0,1);

SetColor(0); outtext('Нажмите любую клавишу ...');

Readkey;

Ramka_Off(x1,y1,x2,y2);

End;

3:Begin

SetFillStyle(1,7); {Строка состтояния}

Bar(3,450,getmaxx-3,getmaxy-3);

SetColor(15);

Line(3,450,getmaxx-3,450);

Line(3,450,3,getmaxy-3);

SetColor(0);

Line(3,getmaxy-3,getmaxx-3,getmaxy-3);

Line(getmaxx-3,450,getmaxx-3,getmaxy-3);

Window_(100,50,500,350,1,'Помощ'); moveto(120,110);

SetTextJustify(0,1); outtext(' ПЕРЕДВИЖЕНИЕ ПО ГОРИЗОНТАЛЬНОМУ МЕНЮ.'); moveto(120,130); outtext('- |'); moveto(120,135); outtext('| | ПЕРЕДВИЖЕНИЕ ПО ВЕРТИКАЛЬНОМУ МЕНЮ.'); moveto(120,140); outtext('| '); moveto(114,150); moveto(114,155); outtext(' АКТИВАЦИЯ ПУНКТА МЕНЮ.'); moveto(140,200); outtext('В программе использованы соотношения :'); moveto(120,220); outtext('L >= Bs c >= Bs+Br-1'); moveto(160,235); outtext('L'); moveto(120,240); outtext('e = 2 -1 m = c + L'); moveto(120,260); outtext('n = НОК(e,c)'); moveto(120,280); outtext('После расчетов получили образующий многочлен'); moveto(120,300); outtext('Файра : P(x)=1011001011'); moveto(20,465);

SetTextJustify(0,1);

SetColor(0); outtext('Нажмите любую клавишу ...');

ReadKey;

Ramka_Off(x1,y1,x2,y2);

End;

End; {Case}
Until flag; closegraph;
End.

Оглавление.


|Аннотация | |
|Введение | |
|1. Теоретическое введение | |
| 1.1. Постановка задачи. | |
| 1.2. Понятие двоичных циклических кодов. | |
| 1.2.1. Общие понятия и определения. | |
| 1.2.2. Методы построения циклических кодов. | |
|1.3.Технические средства кодирования для двоичных | |
|циклических кодов. | |
|1.4. Коды Файра. | |
| 2. Разработка схемы кодирующего устройства. | |
|2.1. Построение кода Файра. | |
|2.2. Структурная схема кодирующего устройства. | |
| 3. Анализ технического задания. | |
| 4. Работа устройства | |
| 5.Выбор узлов принципиальной схемы. | |
|5.1. Расчет генератора тактовых импульсов | |
| 5.2. Счетчик К555 ИЕ10 | |
| 5.3. Тригер К555 ТВ6 | |
|5.4. Регистр К155ИР13. | |
| 6. Описание разработки системы. | |
|6.1. Модульная структура системы. | |
|6.2. Организация пользовательского интерфейса . | |
| 6.2.1. Меню системы. | |
| 6.2.2. Обработка ошибочных ситуаций. | |
|6.3. Спецификация на программные модули. | |
| 7 . Тестирование. | |
|7.1. Выбор методики тестирования. | |
|7.2. Результаты тестирования | |
| 8. Ограничения на разработку. | |
|8.1. Инструкция пользователя | |
| Заключение. |
| Список литературы. |
| Приложения |
|Приложение 1. Перечень элементов. |
|Приложение 2. Блок схема алгоритма. |
|Приложение 3. Текст программных модулей. |
| Приложение 4. Экранные формы. |

-----------------------


M2

M2

M2

M2

1


2

К1

Вход

Выход

К2

g0

g1

gn-k-1

g2

Обработка ошибок

Модуль вывода


Рис. 5.3 . Триггер К555 ТВ6.

[pic]

Рис.5.2 Счетчик К555 ИЕ10.

[pic]

Рис. 5.1. Принципиальная схема генератора.

[pic]

[pic]


Г

Кодер


Счетчик

=H0 + H1X + ... + HkXk

H(X)=

G(X)

xn+1

Основная программа

Модуль ввода

Интерфейс


Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.