Кодирующее устройство для кода Файера icon

Кодирующее устройство для кода Файера



НазваниеКодирующее устройство для кода Файера
Дата конвертации12.08.2012
Размер247.56 Kb.
ТипРеферат
Кодирующее устройство для кода Файера


Министерство общего и профессионального образования РФ Московский энергетический институт (Технический Университет) Филиал в городе Смоленске Кафедра Вычислительной Техники Расчётно-пояснительная записка к курсовой работе по дисциплине: " Передача информации " Тема : " Кодирующее устройство для кода Файра". Преподаватель: Каевченко М.А. Группа: ВМ-1-97 Студент: Иванов А. Е. К защите: Смоленск 2000 г. Аннотация. Курсовая работапо курсу "Передача информации".Преподаватель : Каевченко Михаил Антонович.Автор работы: Иванов Алексей Евгеньевич.Название работы: “Кодирующее устройство для кода Файра ”Количество страниц:Количество иллюстраций:Цель курсовой работы: Построить математическую модель заданногокорректирующего кода, найти образующую матрицу кода, технически реализоватьсредства для его кодирования/декодирования (на уровне принципиальнойсхемы).В главе 1 расчетно-пояснительной записки выполнен обзор теоретическихаспектов, связанных с циклическими кодами.В главе 2 расчетно-пояснительной записки выполнена разработкапринципиальной схемы кодирующего устройства.В главе 3 расчетно-пояснительной записки выполнен анализ техническогозадания.Глава 4 расчетно-пояснительной записки содержит описание работыкодирующего устройства.Глава 5 расчетно-пояснительной записки обосновывается выбор элементов иузлов в принципиальной схеме.Глава 6 расчетно-пояснительной записки содержит спецификации наразрабатываемую систему (модульная структура, описание пользовательскогоинтерфейса, спецификация на программные модули).В главе 7 расчетно-пояснительной записки выбран метод тестирования,приведены результаты тестирования.Глава 8 расчетно-пояснительной записки содержит инструкцию пользователя поработе в системе и ограничение на разработанную программу. Введение. Два научных направления призваны сыграть особую роль в научно-техни-ческом прогрессе. Это- теория систем и теория информации. Особенностьуказанных научных направлений состоит в их всеобщности. Действительно,теория систем и теория информации имеют прямое отношение ко всем другимнаукам, к явлениям любой физической природы и ко всем видам деятельностичеловека. Достаточно привести такое категорическое утверждение по этомуповоду: “Информация есть всеобщее свойство материи и мера организациясистем”. В ходе научно-технической революции наука об информацииразвивалась как дисциплина, имеющая ряд направлений. Деятельность людейсвязана с переработкой и использованием материалов, энергии и информации.Соответственно развивались научные технические дисциплины, отражающиевопросы технологии, энергетики и информатики. Информационная техникаявляется сравнительно новой отраслью, получившее наибольшее развитие наэтапе развития и применения электронных вычислительных машин (ЭВМ) иавтоматизированных систем управления (АСУ). В ряду новых дисциплин(исследование операций, системотехника, административное управление)информационные наука и техника занимают одно из базовых положений. Кинформационной технике относятся средства, служащие для восприятия,подготовки, передачи, переработки, хранения и представления какой-либоинформации, получаемой от человека, природы, машины, вообще от какого-либообъекта наблюдения и управления. Комплексное применение этих средствприводит к созданию больших и сложных информационных систем. С передачей иобработкой информации связаны действия любого автоматического устройства,поведение живого существа, творческая деятельность человека, развитие наукии техники, экономические и социальные преобразования в обществе и самажизнь. Если материал (вещество) и энергия сравнительно полно изучены, тозаконы получения, преобразования и использования информации еще являются неизвестной областью, таящей в себе много неожиданных проявлений. Современные системы телемеханики лучше защищены от помех за счетболее совершенных кодов, а сжатие данных позволяет увеличить объемпередаваемой информации по тем же каналам связи. В данной работе будет рассмотрен помехозащищенный (иликорректирующий) код – код Файра. Это циклический код, обнаруживающий иисправляющий пакеты ошибок. Особенности этого кода будут рассмотреныдальше. 1. Теоретическое введение. 1.1. Постановка задачи. Построить математическую модель заданного корректирующего кода, найтиобразующую матрицу кода, технически реализовать средства для егокодирования/декодирования (на уровне принципиальной схемы). Тип кода: Файра Число передаваемых сообщений: 63 Кодирующая способность кода: bs=3 br=4 1.2. Понятие двоичных циклических кодов. 1.2.1. Общие понятия и определения. Любой групповой (n, k) – код может быть записан в виде матрицы,включающей k линейно-независящих строк по n символов, и, наоборот, любаясовокупность k линейно-независящих n-разрядных кодовых комбинаций можетрассматриваться как образующая матрица некоторого группового кода. Средивсего многообразия таких кодов можно выделить коды, у которых строкиобразующих матриц связаны дополнительным условием цикличности. Все строки образующей матрицы такого кода могут быть полученыциклическим сдвигом одной комбинации, называемой образующей для данногокода. Коды, удовлетворяющие этому условию, получили название циклических. Циклические коды относятся к числу блоковых систематических кодов, вкоторых каждая комбинация кодируется самостоятельно (в виде блока) такимобразом, что информационные k и контрольные m символы всегда находятся наопределенных местах. Возможность обнаружения и исправления практически любых ошибок приотносительно малой избыточности по сравнению с другими кодами, а такжепростота схемной реализации аппаратуры кодирования и декодирования сделалиэти коды широко распространенными. Теория циклических кодов базируется на теории групп и алгебремногочленов над полем Галуа. Многочлен (полином), который можно представить в виде произведениямногочленов низших степеней, называют приводимым (в данном поле), впротивном случае не приводимым. Неприводимые многочлены играют роль,сходную с простыми числами в теории чисел. Неприводимые многочлены P(X)можно записать в виде десятичных или двоичных чисел, либо в видеалгебраического многочлена. Многочлен в поле двоичных чисел называется неприводимым, если онделится без остатка только на себя или на единицу. В основу циклического кодирования положено использование неприводимогомногочлена P(X), который применительно к циклическим кодам называетсяобразующим, генератором или производящим многочленом (полиномом) . 1.2.2. Методы построения циклических кодов. В качестве информационных символов k для построения циклических кодовберут комбинацию двоичного кода на все сочетания. В общем случае, еслизаданную кодовую комбинацию G(X) умножить на образующий многочлен P(X) ,получится циклический код, обладающий теми или иными корректирующимисвойствами в зависимости от выбора P(X). Однако в этом коде контрольныесимволы m будут располагаться в самых разнообразных местах кодовойкомбинации. Такой код не является систематическим, что затрудняет егосхемную реализацию. Ситуацию можно значительно упростить, если контрольныесимволы приписать в конце кода, т. е. после информационных символов. Для этой цели удобно воспользоваться следующим методом.1. Умножаем кодовую комбинацию G(X), которую мы хотим закодировать, на одночлен Xm , имеющий ту же степень, что и образующий многочлен P(X).2. Делим произведение G(X)Xm на образующий многочлен P(X). G(X)Xm / P(x)=Q(X)+R(X)/P(X), (1.1) где Q(X) - частное от деления; R(X) – остаток. Умножая выражение (1) на P(X) и перенося R(X) в другую частьравенства, согласно правилам алгебры двоичного поля, т. е. без переменызнака на обратный, получаем F(X)=G(X)P(x)= G(X)Xm+R(X). (1.2)Таким образом, согласно (2) , циклический код, т.е. закодированноесообщение F(X), можно образовать двумя способами: 1) умножением одной из комбинаций двоичного кода на все сочетания [комбинация Q)(X) к той же группе того же кода, что и заданная комбинация G(X)] на образующий многочлен P(X). 2) умножением заданной кодовой комбинации G(X) на одночлен Xm, имеющий ту же степень, что и образующий многочлен P(X), с добавлением к этому произведению остатка R(X), полученного после деления произведения G(X)Xm на образующий многочлен P(X).Свойства образующего многочлена:1. Все разрешенные комбинации циклического кода делятся на образующий многочлен без остака.2. На образующий многочлен делится без остатка двучлен Xn+1.1.3. Технические средства кодирования для двоичных циклических кодов. Основу кодирующих и декодирующих устройств двоичных циклических кодовсоставляют регистры сдвига с обратными связями, позволяющие осуществлятькак умножение, так и деление многочленов с приведением коэффициентов помодулю 2. Все известные кодирующие устройства для любых типов циклическихкодов, выполненные на регистрах сдвига, можно к двум типам схем согласнометодам кодирования рассмотренным выше. С помощью схем первого типа вычисляются значения проверочных символовпутем непосредственного деления многочлена G(X)Xm на образующий многочленP(X). Это делается с помощью регистра сдвига, содержащего n-k разрядов(рис.1.1). В этой схеме коэффициенты кодируемого многочлена участвуют вобратной связи не через n-k сдвигов, а сразу с первого такта. Это позволяетустранить разрыв между информационными и проверочными символами. Рис. 1.1. Кодирующее устройство для циклического кода на основе (n-k) – разрядного регистра сдвига. В исходном состоянии ключ К1 находится в положении 1, а ключ К2замкнут. Информационные символы одновременно поступают как в линию связи,так и в регистр сдвига, где за k тактов образуется остаток. Затем ключ К2размыкается, ключ К1 переходит в положение 2 и остаток поступает в линиюсвязи. С помощью схем второго типа вычисляют значения проверочных символовкак линейную комбинацию информационных символов, т. е. построены на основесистематических кодов. Кодирующее устройство строится на основе k-разрядного регистра сдвига. Выходы ячеек памяти подключаются к сумматору вцепи обратной связи в соответствии с видом генераторного многочлена 1.4. Коды Файра. Под пакетом ошибок длинной b понимают такой вид комбинации помехи,в котором между крайними разрядами, пораженными помехами, содержится b-2разряда. Коды Файра могут исправлять пакет ошибок длинной bs и обнаруживатьпакет ошибок длинной br (в кодах Файра понятие кодового расстояния d неиспользуются). Образующий многочлен кода Файра P(X)ф определяется из выражения P(X)ф= P(X)(Xc-1),(1.3)Где P(X) – неприводимый многочлен степени [pic]L.Из принципа построения кода следует, что L ? bs, (1.4) с ? bs+ br-1(1.5)При этом с не должно делится нацело на число e, где e=2L -1 (1.6) Неприводимый многочлен P(X) выбирают из таблицы, согласно уравнению(4), но так, чтобы удовлетворялось условие (6). Длинна слова n равнанаименьшему общему кратному чисел c и e, так как только в этом случаемногочлен Xn+1 делится на P(X)ф без остатка: n=НОК(e,c) (1.7)Число контрольных символов m=c+L (1.8)ВЫВОДЫ. В данной главе были рассмотрены теоретические аспекты построениядвоичных циклических кодов. Также было выбрано кодирующее устройство наоснове n-k разрядного регистра. Выяснили, что сперва необходимо найтиобразующий многочлен (по соответствующим формулам), а потом на основе этогомногочлена строить кодирующее устройство. В последующих главах будетприведена реализация кодирующее устройство кода Файра на ЭВМ и приведенапринципиальная схема кодера.2. Разработка схемы кодирующего устройства. 2.1. Построение кода Файра. Согласно техническому заданию и в соответствии с данными, полученнымина курсовую работу образующий многочлен Файра P(X)ф. Согласно формуле (1.4)находим L ? 3 , откуда можно принять L=3. Из соответствующих таблицвыбираем неприводимый многочлен P(X)=x3+x+1= 1011. В соответствии с формулой (1.5): c ? 3+4-1 ? 6 , откуда можно принять с=6.По формуле (1.6) получаем е=23-1=7. Видим, что с на е нацело не делится.Число проверочных разрядов, подставляя в формулу (1.8) значения L и C,получим m=6+3=9 .Тогда длинна кода в соответствии с (1.7) равна n = НОК(6,7) = 42Тогда код Файра имеет вид (42,33).Образующий многочлен Файра P(X)ф равен P(X)ф=(x3+x+1)(x6+1)=x9+x7+x6+x3+x+1=1011001011 (2.1) 2.2. Структурная схема кодирующего устройства. В соответствии с многочленом (2.1) схема получения проверочныхсимволов будет иметь 9-ти разрядный регистр с двумя ключами. Структурная схема кодера представлена на рис. 2.1 Рис 2.1. Структурная схема кодера.ВЫВОДЫ. В данной главе получен образующий многочлен Файра, а такжеколичество информационных символов и проверочных. По виду образующегомногочлена определяется расположение сумматоров в кодирующем устройстве, атакже количество разрядов в регистре сдвига. Далее будет рассмотрена работапринципиальной схемы и реализованной программы.3. Анализ технического задания. Согласно техническому заданию на курсовую работу необходимо построитьматематическую модель заданного корректирующего кода, найти образующуюматрицу кода, технически реализовать средства для егокодирования/декодирования (на уровне принципиальной схемы), разработатьмногомодульную программу реализующую кодирующее устройство на ЭВМ.. Программа должна иметь стандартный интерфейс, удовлетворяющийпринятым нормам, работать правильно на всех допустимых персональных ЭВМ,текст программы должен быть удобно-читаемый и понятный пользователю. С целью упрощения процесса разбора текста программы, программасостоит из нескольких модулей, каждый из которых выполняет определённыефункции. Можно выделить пять основных модуля: V Основная программа. В нём происходит обработка результатов выполнения остальных модулей программы. А именно: интерфейс, модуль ввода данных, модуль вывода данных, модуль обработки ошибок. Происходит выполнение алгоритма. V Модуль ввода. В нём происходит диалог пользователя с программой. В частности здесь происходит ввод информационных символов. V Модуль вывода. Здесь реализован вывод результатов выполнения программы в удобной для чтения форме. Результаты представлены в виде таблицы. Также здесь реализован вывод образующей матрицы. V Модуль обработки ошибок. В нём обрабатываются ошибки при вводе и реализована защита программы от сбоев. V Интерфейс. В этом блоке реализован интерфейс программы взаимодействия пользователя с ЭВМ. Интерфейс состоит из горизонтального меню и строки статуса.Основные пункты меню: V О программе. В этом пункте представлена краткая информация о программе. V Задание. Изложена полная постановка задачи. V Работа. Здесь реализован ввод данных и выполнение основного алгоритма, получение результатов и вывод их на экран в удобной для чтения форме.Программа должна корректно заканчивать свою работу, без ошибочных ситуаций.ВЫВОДЫ. В данной главе рассмотрены условия реализации программы ипоставлены конкретные цели. Здесь было упоминание о модульной структурепрограммы, в следующей главе модульная структура будет рассмотренаподробнее. Также будут рассмотрены аспекты, связанные с реализациейпользовательского интерфейса. Работа устройства. Принципиальная схема кодирующего устройства приведена в приложении. Данные на вход кодирующего устройства поступают начиная со старшегоразряда. Информация поступает на DD12.1 сумматор по модулю 2, выполненныйна ИМС К555ИП5. Как только мы включили питание на схему, то через цепочкуR4, C3, DD17.2, DD17.3 происходит начальный сброс счетчиков DD10, DD11.Это получается потому что в начальный момент времени, при резкомподключении питания конденсатор С3 не успевает зарядится. На нем получаетсялогический ноль. Этот ноль через инверторы DD14.2, DD14.3, выполненные наК155ЛИ1, преобразуется в единицу и поступает на входы счетчиков РЕ, счетчикпереходит в режим записи, результате чего происходит запись в счетчикиданных со входов D1-D4. Но так как эти входы заземлены, то на выходысчетчика запишутся нули. Произошло начальное обнуление. По истечениикороткого промежутка времени конденсатор С3 заряжается до уровня логическойединицы и счетчики переходят в режим счета импульсов. Так как счетчикиобнулялись то на триггер DD15.2 на инверсный вход R поступает ноль итриггер установится в ноль. Этот ноль на выходе инвертора DD14.1становитсяединицей и поступает на инверсный вход R триггера DD15.1. Триггер хранитсвое предыдущее нулевое значение, так как вход K заземлен, а на J поступаетноль со счетчика. Тогда на элемент DD13.3 будет поступать нулевой уровень.Но DD13.3 является элементом “И”, поэтому на его выходе всегда будет ноль.С другой стороны с инверсного выхода триггера на “И” поступает логическаяединица и выходной сигнал будет зависеть от входного. Эта же единицапоступает на DD13.5. Элементы DD13.3, DD13.4, DD13.5 выполняют роль ключей.Когда на выходе триггера DD15.1 логический ноль, то замкнут ключи К1, а К2находится в положении 1 [см. Теоретическое введение], сигнал со входанапрямую поступает на выход, а в регистрах формируется остаток. Если навыходе триггера DD15.1 логическая единица, то ключи К1 разомкнут, а К2находится в положении 2 . Входной сигнал через ключ DD13.4 поступает на выход ,а через ключDD13.5 на вход регистра DD1. Запись в регистр происходит последовательносо сдвигом влево, в соответствии с тактируемыми импульсами. В схеме девятьрегистров (Степень образующего многочлена). Каждый регистр выполняетзадержку на один такт. Пока триггер DD15.1 находится в нуле в регистрахза K-тактов вычисляются проверочные символы. Триггер DD15.2 управляет работой счетчиков и триггером DD15.1.Как только счетчики досчитали до k ,т.е. прошло k символов то DD15.1перебрасывается в единицу, ключи DD13.5, DD13.4 открываются, а DD13.3закрывается и из регистров на вход поступают проверочные символы за n-kтактов. Когда счетчик досчитает до n триггер DD15.2 перебросится в единицуи произойдет обнуление регистров, счетчиков и триггера DD15.1, т. е. схемаготова принимать новую комбинацию. Временные диаграммы работы кодера приведены в приложении .ВЫВОДЫ. В данной главе была подробна описана работа принципиальной схемы.Далее будет рассмотрена отдельные элементы принципиальной схемы и ихописание.5.Выбор узлов принципиальной схемы. 5.1. Расчет генератора тактовых импульсов Генератор тактовых импульсов на ИМС DD1 К555АГ3. Принципиальная схемагенератора приведена на рис.5.1. Период колебаний импульсов получаемых савтогенератора Т = 1 мс. Длительность импульса: tи = 0.5Т = 0.5 мс. Длительность паузы: tп = 0.5Т = 0.5 мс. Рассчитаем параметры RC элементов генератора: [pic]; [pic]; Задаваясь С1 = С2 = 0.1 мкФ, имеем: R1 = 5 кОм; R2 = 5 кОм. 5.2. Счетчик К555 ИЕ10 Для подсчета числа импульсов используем два счетчика К555 ИЕ10. Микросхема К555 ИЕ10 - это синхронный, четырехразрядный, реверсивный,двоично-десятичный счетчик с предварительной записью и выходом переноса.Условное обозначение и цоколевка даны на рис. 5.2. Особенностью данного счетчика является его построение по синхронному принципу, т. е. все триггеры переключаются одновременно от одного тактового импульса. Счетчик запускается положительным перепадом тактового импульса, подаваемым на вход синхронизации С. Сброс всех триггеров в нулевое состояние асинхронный по общему входу сброса R, т. е. осуществляется напряжением низкого уровня, независимо от сигналов действующих на входах С, РЕ, СЕР, СЕТ. Счетчик устанавливается в предварительное состояние при наличии на входе параллельной загрузки РЕ напряжения низкого уровня. В этом случае разрешена подача сигналов на триггер через входы параллельной установки D0 - D3 в момент прихода положительного перепада на вход С. Для синхронного каскадирования микросхема имеет два входа разрешенияСЕР и СЕТ, а также выход ТС (окончания счета). Счетчик считает тактовыеимпульсы если на входах СЕТ и СЕР напряжения высокого уровня. Вход СЕТ последующего счетчика соединяется с выходом ТС предыдущего. Навыходе ТС появится напряжение высокого уровня, если выходной код счетчика1111=15, а на входе СЕТ присутствует напряжение высокого уровня. Состояниясчетчика приведены в таблице 1. Таблица 1.|Режим работы |Входы |Выходы || |R |C |CЕР |СЕТ |РЕ |Dn |Qn |ТС ||Сброс |0 |Х |Х |Х |Х |Х |0 |0 ||Параллельная |1 |( |Х |Х |0 |0 |0 |0 ||загрузка | | | | | | | | || |1 |( |Х |Х |0 |1 |1 |1 ||Счет |1 |( |1 |1 |1 |Х |Счет |1 ||Хранение |1 |Х |Х |0 |1 |Х |Qn |1 || |1 |Х |0 |Х |1 |Х |Qn |1 | 5.3. Триггер К555 ТВ6Микросхема К555 ТВ6 содержит два J-K триггера с общим входом питания иизображена на Рис .5.3 . Вход синхронизации С у всех триггеров инверсныйдинамический, поэтому данные со входов J и K переносятся на выход Q поотрицательному перепаду импульса С. Когда импульс переходит от высокогоуровня к низкому сигналы на входах J и K не должны меняться. Состояниядля триггера приведены в таблице 2 . Таблица 2. Состояния триггера К555 ТВ6.|Режим работы |Входы |Выходы || | R | J |K |C |[pic] |[pic] ||Асинхронный сброс |0 |Х |Х |Х |0 |1 ||Переключение |1 |1 |1 | |[pic]=1|[pic]=0||Хранение |1 |0 |0 | |1 |0 ||Загрузка 1 |1 |1 |0 | |1 |0 ||Загрузка 0 |1 |0 |1 | |0 |1 | 5.4. Регистр К155ИР13.Микросхема К155ИР13 является универсальным восьмиразрядным регистромсдвига с большими функциональными возможностями. Регистр может работать вследующих режимах: последовательного ввода информации с о сдвигом вправо;последовательного ввода информации с о сдвигом влево; параллельного ввода;хранение; установка нулей (очистка, сброс). Микросхема имеет следующие выводы (рис. 5.4): информационные входыпоследовательного ввода информации – DR при сдвиге вправо и DL при сдвигевлево; восемь входов D0-D7 для параллельного ввода; тактовый вход С;управляющие входы S0 и S1 для выбора режима; вход R для установки триггеровв нулевое состояние и восемь выходов от разрядов Q0-Q7. Рис. 5.4. Регистр К155ИР13. Работа регистра в режиме последовательного ввода со сдвигом вправопроисходит при S1=0 и S0=1. Информация в последовательном коде подается навход, начиная с младших разрядов. Ввод и сдвиг всего числа на один разрядпроисходит с каждым перепадом 0,1 тактовых импульсов. Последовательный ввод со сдвигом влево осуществляется при S1=1 и S0=0. Входная информация должна поступать на вход DL со старших разрядов. Для параллельного ввода со входов D0-D7 на обоих управляющих входахдолжно быть S1=S0=1. Информация со входов D0-D7 будет записана в триггеры ипоявится на выходах Q0-Q7 по перепаду 0,1 тактового импульса. Во избежание сбоев, смена состояний управляющих входов S1 и S0 должнапроисходить при С=1. Когда на обоих управляющих входах S1= S0=0, триггерыне переключаются, т. е. имеет место режим хранения. Установка нулей(очистка регистра ) осуществляется импульсом U0 на входе R. Очисткарегистра происходит независимо от состояния остальных входов. Во времядействия импульса R=0 регистр бездействует. При выполнении всех остальныхопераций необходимо поддерживать R=1. Работа регистра приведена в таблице3. Таблица 3.|Входы |Выходы |Режим работы ||R|C |S0 |S1 |DR |DL |Di |Q0 |Q1-Q6 |Q7 | ||1|( |1 |1 |1 |X |Dni |Dn0 |Dn1... |Dn7 |Параллельный || | | | | | | | |Dn6 | |ввод. || | | | | | | | | | |Хранение ||1|( |0 |0 |X |X |X |Qn0 |Qn1... |Qn7 | || | | | | | | | |Qn6 | | ||1|( |1 |0 |X |0 |X |Qn1 |Qn2... |0 |Сдвиг влево || | | | | | | | |Qn7 | | ||1|( |1 |0 |X |1 |X |Qn1 |Qn2... |1 | || | | | | | | | |Qn7 | | ||1|( |0 |1 |0 |X |X |0 |Qn0... |Qn6 |Сдвиг вправо || | | | | | | | |Qn5 | | ||1|( |0 |1 |1 |X |X |1 |Qn0... |Qn6 | || | | | | | | | |Qn5 | | ||0|x |x |x |X |x |X |0 |0 ... 0 |0 |Сброс | ВЫВОДЫ. В данной главе были описаны основные элементы, применяемыепри реализации принципиальной схемы кодера. Также была дана их краткаяхарактеристика и способы включения элементов. Все используемые элементы-ТТЛ. В следующих главах будет рассмотрена программная реализациякодирующего устройства (его математическая модель). 6. Описание разработки системы. 6.1. Модульная структура системы.Как уже говорилось во второй главе программа состоит из пяти модулей: - Основная программа. - Модуль ввода. - Модуль вывода. - Интерфейс. - Модуль обработки ошибок. Модульная структура программы представлена на рисунке 6.1 Рис 6.1 Модульная структура программы. Пользователь ведёт диалог с программой через интерфейс. От интерфейсауправление передаётся в Основную программу, где анализируются командыпользователя и выполняется передача управления соответствующим модулям.Если пользователь выбрал пункт меню <Работа> и пункт подменю <Ввод>, тоуправление от Основной программы передаётся в Модуль ввода и дальшепользователь ведет диалог с этим модулем. Как только нажата клавиша, то управление берёт Модуль обработки ошибок. Данный модульпроверяет выполнение ограничений и выявляет ошибки при вводе. Если ошибокнет, то управление передаётся в Основную программу и дальше в Модульвывода. А иначе пользователю предоставляется шанс ещё раз ввести данные. 6.2. Описание пользовательского интерфейса. 6.2.1. Меню системы. Интерфейс системы выполнен в графическом режиме с соблюдением всехустановленных ГОСТОВ. Экран разбит на три части: верхняя часть -горизонтальное меню с выпадающими окнами; нижняя часть - строка состояния;средняя часть - окно диалога. Горизонтальное меню состоит из трёх пунктов: V Работа. В этом пункте предусмотрено выпадающее меню для облегчения поиска соответствующего пункта. В подменю находятся следующие пункты: V Ввод. V Вывод V Выход. V О программе. V Помощь. Передвижение по меню осуществляется с помощью клавиш управлениякурсором. Каждый пункт меню активизируется при нажатии клавиши .Обработку пунктов меню осуществляет Основная программа. В неё передаётсяуправление и соответствующие координаты пунктов на выполнение. В пункте меню <Работа>, в подпункте <Ввод > осуществляется вводданных, необходимых для работы программы. При этом в Модуле вводапредусмотрено редактирование вводимого результата. В подпункте <Вывод>происходит выполнение алгоритма и вывод образующей матрицы на экран вудобном для визуализации виде. В подпункте <Выход> происходит предупреждение пользователя о выходе изпрограммы с соответствующими запросами. В пункте <О программе > дана краткая аннотация программы. В пункте <Помощь> представлена помощь по обработке пунктов меню и посоответствующим клавишам. 6.2.2. Обработка ошибочных ситуаций. В программе предусмотрена защита от ввода нестандартных данных, атакже защита от нажатия различных клавиш. Для обработки этих ситуацийпредусмотрен Модуль обработки ошибок. Пользователь может вводить только 0или 1. Если пользователь ввел по ошибке неправильные данные, то у него естьвозможность исправиться на стадии ввода. Для этих целей в программепредусмотрен повторный ввод с предыдущими данными. 6.3. Спецификация на программные модули. Процедура initgrf. Входные параметры:Нет. Выходные параметры:Нет. Выполняемые функции:Инициализация графики. Особенностей:Нет. Функция Sum(F,P : Byte) : Byte; Входные параметры: F,P : Byte Выходные параметры: Sum Выполняемые функции: Суммирование по модулю 2 Особенностей:Нет. Процедура Dopoln(Var F : Mass1); Входные параметры: F : Mass1 Выходные параметры: F : Mass1 Выполняемые функции: Умножение на старшую степень образующего многочлена . Особенностей: НЕТ . Процедура Delenye(F : Mass1;P : Mass2); Входные параметры: F : Mass1;P : Mass2 Выходные параметры: нет. Выполняемые функции: Деление многочлен на многочлен Особенностей:Имеет свои особенности. Процедура Ed_Matrix(Var а: Two_Matrix); Входные парамеры: Var а: Two_Matrix Выходные параметры: Var а: Two_Matrix Выполняемые функции: Составление единичной матрицы. Особенности: нет. Процедура Obr_Matrix(Var а: Two_Matrix); Входные параметры а: Two_Matrix Выходные параметры: а: Two_Matrix Выполняемые функции: Получение образующей матрицы Особенностей: нет. Процедура Visual(Var sa:mass); Входные параметры: Var sa:mass Выходные параметры: Var sa:mass Выполняемые функции: Ввод информационных символов. Особенностей: нет Процедура OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix ); Входные параметры: x,y : Integer;Obr_Matr : Two_Matrix ); Выходные параметры:Нет. Выполняемые функции: Вывод образующей матрицы. Особенностей:Является универсальной. Процедура OutPut(x,y : Integer;F,а: Mass1); Входные параметры: x,y : Integer;F,а: Mass1. Выходные параметры:Нет. Выполняемые функции: Вывод полученной кодовой комбинации. Особенностей: нет. Функция _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer; Входные параметры Fon,Color : Integer;Col_Simv : Byte Выходные параметры: _Exit : integer. Выполняемые функции: выход из программы Особенностей: нет Основная программа Входные параметры:нет. Выходные параметры:Нет. Выполняемые функции:Обьединяет в себя все процедуры и управляет работой. Особенностей:Нет.ВЫВОДЫ. В данной главе были описаны принципы разработки программы иинтерфейса. Дана модульная структура программы и межмодульные связи. Описанпринцип работы программы и дана спецификация на программные модули. Еслиэто всё объединить, то нетрудно будет разобраться в отдельных деталяхпрограммы. Дальше будет рассмотрено одно из основных мероприятий припрограммировании - тестирование. 7. Тестирование. 7.1. Выбор методики тестирования. Без тестирования программ невозможно создать правильно работающуюпрограмму, так как всегда существуют какие-то граничные условия, запределами которых программа даёт ошибки. При этом не следует путатьотладку программ и тестирование. Отладка программ - используется при неправильной работе программы. Тестирование - ищет ошибки.Существует много методов тестирования: 1) Статическое тестирование является наиболее формализованным и автоматизируемым методом проверки программ. В качестве эталонов применяются правила структурного построения программных модулей и обработки данных. Проверка степени этих правил проводится без использования объектного кода программы путем формального анализа текста программы на языке программирования. Операторы и операнды текста программ при этом анализируется в символьном виде, поэтому такой метод называют символьным тестированием. 2) Детерминированное тестирование является наиболее трудоёмким и детализирующим. При детерминированном тестировании контролиру- естся каждая комбинация исходных эталонных данных и соответствующая ей комбинация результатов функционирования программы. Это позволяет выявлять отклонение результатов от эталона и реализующих данных, при которых это отклонение произошло. 3) Стохастическое тестирование применяется в тех случаях, когда невозможно в сложных задачах перебрать все комбинации исходных данных и проконтролировать результаты функционирования программы на каждом из них. При этом исходные тестовые данные задаются множеством случайных величин с соответствующими распределениями и для сравнения полученных результатов используются также распределения случайных величин. Стохастическое тестирование применяется в основном для обнаружения ошибок. 4) Тестирование в реальном масштабе времени. В процессе такого тестирования проверяется исполнение программ и обработка исходных данных с учетом времени их поступления , длительности и приоритетности обработки , динамика использования памяти и т.д. 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 а: 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 а: 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:'); 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<1)then i:=_N; SetColor(Color); MoveTo(x+i*k,y); Str(Sa[i],Elm); OutText(Elm); Stop:=False; End;влево #77: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,а: 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(i<1)then i:=1; 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;влево #77: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(i>2)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; CaseUntil 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. Экранные формы. |-----------------------M2M2M2M212К1ВходВыходК2g0g1gn-k-1g2 Обработка ошибок Модуль выводаРис. 5.3 . Триггер К555 ТВ6.[pic]Рис.5.2 Счетчик К555 ИЕ10.[pic]Рис. 5.1. Принципиальная схема генератора.[pic][pic]Г КодерСчетчик=H0 + H1X + ... + HkXkH(X)=G(X)xn+1 Основная программа Модуль ввода Интерфейс




Похожие:

Кодирующее устройство для кода Файера icon"Кодирующее устройство для кода Файра "
Цель курсовой работы: Построить математическую модель заданного корректирующего кода, найти образующую матрицу кода, технически реализовать...
Кодирующее устройство для кода Файера iconМосковский ордена ленина и ордена октябрьской революции авиационный институт имени серго орджоникидзе
На вход устройства подается код X{1: 16}. Спроектировать устройство, формирующее код Y{1: 16}, количество нулей которого равно количеству...
Кодирующее устройство для кода Файера iconРазработка структур данных для объектов аналоговых микросхем
От простоты и универсальности разработанных на этом этапе структур данных зависит сложность алгоритмов и программного кода модуля...
Кодирующее устройство для кода Файера iconCинтез схемы шифратора и кодопреобразователя для управления одноразрядным семисегментным индикатором
Синтезировать схему шифратора унитарного кода в двоичный код и кодопреобразователя двоичного кода в код, который управляет работой...
Кодирующее устройство для кода Файера iconCинтез схемы шифратора и кодопреобразователя для управления одноразрядным семисегментным индикатором
Синтезировать схему шифратора унитарного кода в двоичный код и кодопреобразователя двоичного кода в код, который управляет работой...
Кодирующее устройство для кода Файера iconCинтез схемы шифратора и кодопреобразователя для управления одноразрядным семисегментным индикатором
Синтезировать схему шифратора унитарного кода в двоичный код и кодопреобразователя двоичного кода в код, который управляет работой...
Кодирующее устройство для кода Файера iconCинтез схемы шифратора и кодопреобразователя для управления одноразрядным семисегментным индикатором
Синтезировать схему шифратора унитарного кода в двоичный код и кодопреобразователя двоичного кода в код, который управляет работой...
Кодирующее устройство для кода Файера iconСинхронизация в системах пдс
Построение кодера и декодера циклического кода. Формирование кодовой комбинации циклического кода (задачи)
Кодирующее устройство для кода Файера iconТитульный лист Задание №1. Вопрос №1
Запоминающее устройство это устройство для записи, хранения и выдачи информации, представленной в закодированной форме, а так же...
Кодирующее устройство для кода Файера iconТехническое задание Разработать устройство, способное использоваться в качестве имитатора телефонной линии для тестирования телефонной техники, например телефонов и модемов.
Также устройство должно имитировать сигнал вызова абонента, поступающий с атс (путем подачи на выход мощных звонковых импульсов)....
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©rushkolnik.ru 2000-2015
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы