1. Що е цифрова електроника?Здравейте и добре дошли в първа част от малката ми серия от статии за този огромен и важен раздел от електрониката, които всеки себе почитащ се робостроител трябва да знае. С тази серия се надявам да ви „вкарам” в основните принципи и елементи на този гигант, превзел почти целия свят(и наистина, ако се замислите, рядкост е да се види човек без мобилен телефон или компютър
). Ще ви запозная с много интегрални схеми(чипове) и тяхното приложение, не само в роботиката, а и в много други проекти и разработки. Но преди това, много хора сигурно си задават въпроса – „С какво точно се занимава тази електроника, че да има такова голямо влияние върху света?”. В общи линии от самото наименование се разбира с какво точно се занимава този огромен раздел – със цифри или по-точно – данни, представени във вид на множество електрически дигитални сигнали, които за разлика от аналоговите сигнали имат само две състояния. Това са разбира се 1 и 0. Познато нали?
За момент може да ви се стори абсурдно колко много устройства функционират благодарение на тези две прости нива, но представете си цял масив от сигнали, разширявайки броят на състоянията от 2 на 2 ^ n *(n-броя на сигналите). Това вече е друго нали? А сега си представете много логически компоненти, които извършват работа за всяко едно състояние и ето ви едно цифрово устройство. В тази тема обаче няма да започвам със самите интегрални схеми. Вместо това ще поясня някои основни принципи, термини и начинания в цифровата електроника, без които анализирането и създаването на дигитални устройства става трудно, и дори - невъзможно. Така, че ако вече сте навътре с материала, може съвсем спокойно да изчакате до следващата ми тема. За начинаещите обаче тази тема е важна и е нужен поне един прочит. Така че наслаждавайте се на темата, която се надявам да ви хареса и имайте търпение – скоро ще подхванем по-сложните неща.
* - a ^ n - a на степен n-та
2. Дигитални сигнали и магистралиКакто споменах, цифровата електроника се занимава главно със данни и манипулация на дигитални сигнали и се използват логически операции за управлението им. Сигурно ви е ясно поне от обща култура, че електрически ток може да тече по проводници на ток, в две посоки, който най-често в аналоговата електроника е
променлив.При цифровата електроника принципа е същия, с единствената разлика, че се използва
само прав ток и сигналите имат само две състояния – високо(HIGH) и ниско(LOW), като за високо най-често се използват напрежения над 0V, а за ниско се приема 0V и в редки случаи напрежение по-малко от това за високо ниво и по-голямо от 0V. При много дигитални схеми е прието, че ако дадено ниво задейства определен стадий на едно устройство, то това ниво се счита за
активно(active). Тъй като единичен сигнал, не е достатъчен за да се представят повече състояния в дадена система, често се използва множество от сигнали, обединени в масив от сигнални линии, наречен
електрическа магистрала (electrical bus), която може да има точно 2^n на брои състояния, както вече споменах и всяка линия се представя цифрово чрез единица наречена
бит(bit) (което също е и наименованието на най-малкия тип данни в информатиката и програмирането) и служи да представя съответната линия от магистралата (или единичен сигнал). Всеки бит представя нивото на даден сигнал чрез две цифри – 1 съответно за високо и 0 за ниско ниво респективно.
Бележка: За да избегнем обърквания, от тук нататък когато говорим за състоянието на един бит, ще използваме 1 или 0, докато като говорим за състоянието на дигитален електрически сигнал, ще използваме „високо” или „ниско” ниво.
За да покажем пък големината на дадена магистрала според броя линии, казваме, че тя е n-битова и в електрически схеми и диаграми се представя чрез име, като до него в скоби се записва началото и края на битовата номерация. Сигналните линии, произлизащи от магистралата също носят името й, както и съответния номер в нея. Ето например схема, илюстрираща 8-битова магистрала А:
В случая отделните линии или проводници на сигналите приемат наименованията А0, А1, А2, ... А7 и са представени с по-тънки линии, които се събират в по-дебела, представяща магистралата с име А<0..7>. Има и други начини за именуване на магистрала, например А[0..7], A<0:7>, A [0:7], и т.н. но аз ще се придържам към първия вариант или към следния:
Този път, линията на магистралата е пресечена с по-малки отсечки и до тях е записан броят битове. Добавена е и стрелка, за да показва посоката й. Тук не е нужно изписването на битовата номерация в скоби до името.
Както истинските магистрали, и тези в цифровата електроника са двупосочни, т.е. в един момент данните „пътуват” от изходно към входящо устройство и обратното, но никога и двете едновременно. Прието е, че всички сигнални линии приемат една и съща посока – тази на магистралата към която принадлежат, без изключения и разногласия.
Съществуват два вида магистрали –
паралелни(parallel) и
серийни(serial). Магистралите които ви илюстрирах се наричат паралелни, тъй като са всъщност масив от проводници, по които пътуват отделни цифрови сигнали за да се постигнат повече от едно състояния и най-важното – сигналите пътуват едновременно. Обикновено се използват в приложения, когато се изисква бързо пренасяне на данни. Серийните обаче, имат съвсем различен метод за пренасяне на данни. Обикновено се състои от два елемента – електрическа
цифрова линия(data line), по която пътуват сигналите един по един и специален механизъм за разграничаване на всеки отделен бит и неговото състояние. Типичен механизъм е втора електрическа линия, по която периодично пътуват сигнали, служещи да разграничават всеки отделен бит от магистралата, наречена
часовникова линия(clock line), и често сигналите по нея се генерират от т. нар.
тактов генератор(което всъщност е осцилатор). Ето пример за една такава 7-битова магистрала, който илюстрира нивата на сигналите по двете линии във времето:
Като за начало, всяка отделна кутийка с номер на цифровата линия е всъщност състоянието на съответния сигнал, или бит, т.е. сигналът може да е с високо или ниско ниво, и съответния бит може да е 1 или 0 респективно. Думичката “
idle” в случая означава „неактивен”, и служи да показва състоянието на линиите, когато те са неактивни, т.е. данни не се пренасят по магистралата. Часовниковата линия, както забелязвате е периодичен сигнал, които се редува от високо към ниско ниво и обратното. За да може да се разграничава всеки отделен бит от магистралата, се избира едно ниво на сигнала(в случая високо), и в момента когато това ниво е достигнато, нивото на сигнала от цифровата линия се отчита и добавя в крайното състояние на магистралата. За да може точно да се определи края на изпращането на сигнали(и съответно големината на магистралата), се използва метод за маркиране началото и края на изпращането:
В случая се използват два допълнителни сигнала, различни от този, когато линията е неактивна(idle), за да стартират последователността. В конкретния пример, нивото на тези сигнали е високо. Обикновено, когато се разглежда състоянието на магистралата, битовете представящи тези сигнали се наричат
стартиращ(start bit) и
завършващ(stop bit). Този тип магистрали не са практични за изпращане на данни между отделни компоненти, но са изключително практични за комуникация между устройства (както и евтини). Такива магистрали са например RS-232, USB, Firewire, LAN и т.н. и те имат специални протоколи за изпращане на данните. Има разбира се и по-прости като SPI, CAN, I2C, 1-Wire и т.н. проектирани специално за комуникация между отделни интегрални схеми, когато е нужно изразходването на по малко входове или изходи на интегралните схеми. По-нататък ще разберете за какво говоря
И така, разгледахме различните типове магистрали и техните характеристики, но сигурно още не ви е ясно какво точно са те. Разбрахте, че данни се пренасят по тях, но кога, защо и към какво сигурно още не ви е ясно. Преди да ви покажа действителен пример, където две устройства са „свързани” едно към друго, трябва да знаете как се интерпретират данните. Четете нататък и ще разберете.