Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Теоретичні положення

Читайте также:
  1. I. Загальні положення
  2. II. Прикінцеві та перехідні положення
  3. Uml; Основні теоретичні положення
  4. Uml; Основні теоретичні положення
  5. Віхи життєвого шляху Й.Ф.Гербарта. Основні положення філософсько-психолого-педагогічної концепції видатного педагога
  6. Геополітичне положення та зовнішня політика Молдови.
  7. Геополітичне положення українських земель в період первіснообщинного ладу
  8. ГЛАВА 2. Теоретичні основи харчування
  9. Глава 67. Загальні положення щодо порушень митних правил та відповідальності за них
  10. Декларація про державний суверенітет України (16.07.1990 року) та її основні положення.

 

Завдання1. Зобразити у двійково-десятковому коді 8421 (BCD) наступні числа

 

Варіант                    
Дані                    
Варіант                    
дані                    
Варіант                    
дані                    

 

Завдання 2. Перевести із двійкового коду 8421 (BCD) у десятковий

 

Варіант                    
дані                    
Варіант                    
дані                    
Варіант                    
дані                    

 

Завдання 3. Перевести у двійкову систему числення дроби

 

Варіант                    
дані а)78,61 б)0,117 а)38,49 б)0,3125 а)4,531 б)13,6 а)84,37 б)1,245 а)5,41 б)71,35 а)3,28 б)6,513 а)4,771 б)9,18 а)1,112 б)99,3 а)2,67 б)71,15 а)11,31 б)7,123
Варіант                    
дані а)7,16 б)65,48 а)15,17 б)28,413 а)1,135 б)49,761 а)2,81 б)33,111 а)0,84 б)85,221 а)1,932 б)14,5 а)0,37 б)21,08 а)3,121 б)74,1 а)1,434 б)27,4 а)8,5 б)0,871
Варіант                    
дані а)1,7 б)243,6 а)0,333 б)7,6 а)16,82 б)5,51 а)0,19 б)5,28 а)7,43 б)23,75 а)2,74 б)3,47 а)0,001 б)10,8 а)63,7 б)3,77 а)1,64 б)99,1 а)4,31 б)0,02

 

 

Завдання 4. Перевести у десятковий код, а тоді зобразити у двійково-десятковому коді 8421(BCD) наступні числа:

 

Варіант          
Дані   054(16)   62(16) 777(8)
Варіант          
Дані   543(8)     E2(16)
Варіант          
Дані   721(8)   4CA(16)  
Варіант          
Дані 4EF(16) 531(8) FF(16)   56(8)
Варіант          
Дані 2A1(16) DE(16)   717(8) 511(8)
Варіант          
Дані 0541(16)     475(8) AB1(16)

 

Завдання5. Перевести двійкові числа в десяткову систему числення, застосовуючи спрощений спосіб:

 

Варіант          
дані          
Варіант          
дані          
Варіант          
дані          
Варіант          
Дані          
Варіант          
Дані          
Варіант          
Дані          

 

Завдання 6. Скориставшись двійково-десятковими кодами з надлишком 3 чисел, розрахувати S=A+B:

 

Варіант          
дані A= B=          
Варіант          
дані A= B=          
Варіант          
дані A= B=          
Варіант          
дані A = B=          
Варіант          
дані A= B=          
Варіант          
дані A= B=          

 

 

Лабораторна робота №9. Код Хемінга.

 

Теоретичні положення

В елементах пам’яті, виготовлюваних у вигляді напвіпровідникових ВІС, а також в процесорах підвищеної надійності використовується оперативний апаратний контроль за допомогою кодів Хемінга. Даний кодом виявляє і виправляє одноразові помилки. Кожній з 2n-1 ненульових комбінацій n -розрядного числа відповідає комбінація з n+k бітів. Значення перевірних бітів отримуються в результаті додавання за модулем 2 значень бітів у деяких визначених інформаційних розрядах, Із загальної кількості 2 n-k -1 можливих помилок код Хеммінга може виявити та виправити 2 k -1 помилок. Припустімо, що треба передати або обробити 15 різних послідовностей з одиниць та нулів. Без кодування для цього достатньо чотирьох інформаційних бітів (n =4). Потрібну кількість додаткових перевірних бітів k обчислюють з формули 2 k -1 = n+k. Звідки визначають кількість перевірних розрядів та кількість одноразових помилок, які можуть бути виявлені та виправлені. У цьому випадку кількість додаткових розрядів k = 3, а кількість одноразових помилок – 2 k -1 = 7.

Контрольні біти ki розташовують у послідовності інформаційних бітів uj на позиціях із номерами 2 i- 1 (табл. 1.).

Таблиця 1. Послідовність контрольних та інформаційних бітів у коді Хеммінга

                     
u 11 u 6 u5 k 4 u 4 u3 u 2 k 3 u 1 k 2 k 1

 

Значення перевірних бітів k i обчислюється додаванням за модулем 2 значень бітів, у двійковому виразі номерів яких наявна одиниця в i -му розряді.

Для обчислення значення k 1 потрібно додати за модулем 2 значення бітів із непарними номерами. Це біти на позиціях з номерами 3, 5, 7, 9, 11, 13, 15:

.

Для визначення k 2 треба додати за модулем 2 біти, у двійковому виразі

номерів яких наявна одиниця у другому розряді, тобто 3, 6, 7, 10, 11, 14, 15:

Контрольний біт k 3 визначається додаванням за модулем 2 бітів, у двійковому виразі номерів яких наявна одиниця у третьому розряді, тобто 5, 6, 7, 12, 13, 14, 15:

.

Аналогічно визначається k4 через біти з номерами: 9,10,11,12,13,14,15:

Визначення та виправлення помилок здійснюється k перевірками. При кожній перевірці додаються за модулем 2 біти послідовності інформаційних та контрольних бітів, двійкові номери яких мають одиницю в першому, другому, третьому і так далі розрядах. Якщо під час передавання не було збою, то результати перевірок дорівнюють нулю. Якщо збій відбувся, то хоча б одна перевірка не дорівнює нулю. У цьому випадку треба сформувати двійковий код з результатів перевірок, який вкаже на розряд, де відбувся збій. Молодший розряд коду результату перевірок формує перша перевірка, старший - остання. Інверсія біта в розряді з одержаним номером виправить помилку.

Приклад. Сформувати код Хеммінга, що виявляє і виправляє одноразову помилку у послідовності:

       
u 4 u 3 u 2 u 1

Для формування коду Хеммінга необхідно к = 3 контрольні біти, які мають займати позиції з номерами 1, 2 і 4.

Послідовність з контрольними символами має вигляд:

             
u4 u3 u2 k3 u1 k2 k1

Значення контрольних бітів визначимо як:

Отже, послідовність, закодована за кодом Хеммінга, буде такою: 1100001. Нехай після передачі відбувся збій в одному розряді і прийнята послідовність 1110001.

Перша та друга перевірки дадуть значення 0, а третя - 1:

1.

2.

3.

Код 101, який створюють результати перевірок, вказує, що відбувся збій у п’ятому розряді. Якщо проінвертувати п’ятий розряд, то одержимо виправлену послідовність 1100001.

Лістинг 1. Приклад програми, яка реалізує код Хемінга для передачі повідомлення довжиною 7 бітів та розшифрування отриманого повідомлення кількістю 11 бітів:

 

uses crt;

const

data_len = 7;

type

PTBlock = ^TBlock;

TBlock = array[1.. maxint] of byte;

 

function is_power(x: byte): boolean;

var bits: byte;

begin

bits:= 0;

while x > 0 do begin

if (x and $01) = $01 then inc(bits);

x:= x shr 1;

end;

is_power:= (bits = 1);

end;

 

procedure print_block(X: PTBlock; const n: byte);

var i: byte;

begin

for i:= n downto 1 do begin

if is_power(i) then textcolor(lightred)

else textcolor(lightgray);

write(X^[i]:4);

end;

writeln; textcolor(lightgray);

end;

 

var

ctrl_bits: byte;

block: PTBlock;

s: string;

check, i, pos: byte;

 

begin

ctrl_bits:= 0;

repeat

inc(ctrl_bits);

until (data_len + ctrl_bits + 1) <= (1 shl ctrl_bits);

 

writeln('p = ', ctrl_bits);

 

GetMem(block, (data_len + ctrl_bits)*sizeof(byte));

FillChar(block^, (data_len + ctrl_bits)*sizeof(byte), 0);

Write('sent data [', data_len, '] bits: '); ReadLn(s);

 

pos:= 1;

for i:= 1 to data_len do begin

while is_power(pos) do inc(pos);

block^[pos]:= (ord(s[data_len - i + 1]) - ord('0')); inc(pos);

end;

 

check:= $00;

for i:= 1 to (data_len + ctrl_bits) do

if block^[i] = 1 then check:= check xor i;

 

i:= 1;

while check > 0 do begin

block^[i]:= (check and $01);

check:= check shr 1;

i:= 2 * i

end;

print_block(block, (data_len + ctrl_bits));

 

{ Перевірка правильності }

check:= $00;

for i:= 1 to (data_len + ctrl_bits) do

if block^[i] = 1 then check:= check xor i;

writeln('checking error status [0 = no error]: ', check);

 

writeln;

Write('received data [', data_len + ctrl_bits, '] bits: '); ReadLn(s);

check:= $00;

for i:= 1 to (data_len + ctrl_bits) do

if s[(data_len + ctrl_bits) - i + 1] = '1' then check:= check xor i;

writeln('checking error status [0 = no error]: ',

(data_len + ctrl_bits) - check + 1);

 

FreeMem(block, (data_len + ctrl_bits)*sizeof(byte));

ReadLn;

end.

 

При запуску програми вводиться послідовність бітів, які повинні бути передані. Програма кодує їх з використанням коду Хемінга, і виводить результат – послідовність бітів, яка готова до передачі (при цьому червоним кольором виділені «надлишкові» біти, які не несуть інформації, а використовуються тільки для знаходження (висліджування) помилок).

Потім вводиться рядок бітів, отримана приймачем інформації, і після її аналізу виводиться результат – чи є помилка, і в якому біті. (Біти нумеруються зліва направо)

Діалог програми:

sent data [7] bits: 1110011

1 1 1 1 0 0 1 1 1 1 0

checking error status [0 = no error]: 0

 

received data [11] bits: 11111011110

checking error status [0 = no error]: 5




Дата добавления: 2014-12-18; просмотров: 52 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.023 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав