ЗНАЙ ИНТУИТ, Лекция, Разработване на прости цифрови устройства
Разработване на калкулатор на контролна сума
Различни контролни суми се използват широко в цифровите устройства и системи за контрол на правилното съхранение или предаване на информационни масиви. Същността на този метод за управление е проста: малък контролен код (обикновено от 1 бит до 32 бита) е прикрепен към съхранения или предаден информационен масив, който съдържа информация за целия масив в сгъната форма. При четене или получаване на този масив, същият контролен код се изчислява отново, използвайки същия алгоритъм. Ако този новоизчислен код е равен на кода, който е прикрепен към масива, тогава масивът се счита за запазен или предаден без грешки. Логиката тук е следната: контролният код (известен още като контролна сума) е много по-малък от контролирания масив, така че вероятността да се повреди контролната сума е много по-малка от вероятността да се повреди масивът. Ако и масивът, и контролната сума са изкривени, тогава вероятността тези изкривявания да не бъдат забелязани при преизчисляване на контролната сума е изключително малка. Съществува обаче възможността масивът да бъде изкривен на няколко места по такъв начин, че контролната сума от тези изкривявания да не се промени по никакъв начин, но тази вероятност също обикновено е малка.
Контролните суми се използват при съхраняване на данни в паметта (оперативна и постоянна), при съхраняване на данни на магнитни носители (дискове, ленти), в локални и глобални мрежи за предаване на информация. Ако съхранената информация е защитена с контролна сума, може да се определи, че този масив (файл, сектор на диска) е повреден и не може да се използва. В случай на защита на информацията, предавана по мрежата с контролна сума, приемникът може да изиска от предавателя да препредаде изкривения масив.
Има много начини за изчисляване на контролната сума, различаващи се по степента на сложност на изчислението и надеждността на откриването на грешки. Но най-широко разпространен в момента е така наречената „проверка на циклично съкращаване“ или CRC (Cyclic Redundancy Check), при която се прилага циклична контролна сума .
Цикличната контролна сума се изчислява, както следва. Целият масив от информация се разглежда като едно N-битово двоично число, където N е броят на битовете във всички байтове на масива. За да се изчисли контролната сума, това N-битово число се разделя на някакво постоянно число (полином), избрано по специален начин (но не просто разделено, а по модул 2). Съотношението на това разделение се отхвърля, а остатъкът се използва като контролна сума.