Последната актуализация на този раздел е от 2019 година.

 

 

9.   ОРГАНИЗАЦИЯ  НА  ВХОДНО-ИЗХОДЕН  ОБМЕН  ЗА  ISA-БАЗИРАНИ  АНАЛОГО-ЦИФРОВИ  КОНТРОЛЕРИ

 

 

 

9.1.   Пряк  достъп  до  паметта

 

      Въпреки безнадеждно остарелия ISA-стандарт ние оставяме този пример, тъй като го считаме за полезен. В него се разглеждат принципите за организация на каналите за пряк достъп до паметта, които не са се променили и в съвременните контролери, реализиращи апаратно управлявания обмен на данни. Принципите за организация на методите за обмен на данни с оперативната памет на процесора са изложени в книга [1].

      За изследване на един реален процес компютърната система се нуждае от неговата цифрова проекция. Възможността тя да бъде получена се осигурява от апаратно-програмни средства на една система за сбор на данни. Тези средства не са традиционни за масово разпространените компютърни конфигурации. Стремежът към простота в структурата и управлението на тази система водят към разработване на аналого-цифров контролер (АЦ-контролер), базиран върху системната компютърна шина, например според стандарта ISA. Лишаването на потребителския АЦ-контролер от собствена памет означава, че той ще използува наличната оперативна памет, достъпът до която ще бъде периодичен в циклическото повторение на операциите преобразуване и въвеждане. При тези условия и като се имат предвид високите изисквания спрямо стабилността на честотата за дискретизация на аналоговия сигнал, които се постигат чрез кварцова стабилизация, се стига до убеждението, че управлението на аналого-цифровото преобразуване и четенето на данни от АЦ-контролера е най-добре да се осъществява чрез сигналите на DMA-контролера. Обикновено компютърните платформи предлагат свободни за потребителя DMA-канали за 8-битов трансфер и DMA-канали за 16-битов трансфер. Подходящи за реализация на трансфера на данни от АЦ-контролера към оперативната памет са два от режимите за работа на DMA-канала - режим на единичен обмен и режим на блочен обмен.

 

А)  Режим на единичен обмен

      Когато DMA-каналът е програмиран за работа в този режим (битове b7,b6 в регистъра на режима имат стойностите b7=0, b6=1 ), прехвърлянето на всеки отделен отчет получен в АЦ-контролера към паметта на процесора, се осъществява по инициатива на контролера. Това той постига като подава към DMA-канала заявка за обслужване. В отговор DMA-контролерът иска от процесора правото да управлява системната шина и след като го получи осъществява трансфер до съответната клетка в оперативната памет на формирания в АЦ-контролера отчет. С това задълженията на DMA-контролера се изчерпват, той освобождава системната шина и остава в състояние на очакване. Процесите на преобразуване и трансфер на данни в този режим на работа на DMA-канала са илюстрирани на фигура 9.1.1.

 

Фиг. 9.1.1.  Времедиаграма на DMA-канала

 

      Означенията на сигналите във времедиаграмата от фигура 9.1.1 са такива, каквито са дефинирани от производителя.

      От времедиаграмата се вижда, че темпът на аналого-цифровото преобразуване се задава от тактовия сигнал “Start ADC”. Всеки заден фронт на този сигнал стартира ново преобразуване, при което отчетите на амплитудите следват с временна стъпка Т. В рамките на периода Т се наблюдават три етапа в развитието на процеса.

 

      Първият етап, с продължителност Т1, принадлежи на аналого-цифровия преобразовател и се определя от неговите скоростни възможности. Интервалът Т1 започва от задния фронт на тактуващия сигнал “Start ADC” и завършва със задния фронт на сигнала “Ready”, който възниква в преобразователя, когато всички цифри на отчета са готови. Този временен интервал е постоянен и не може да се управлява, тъй като представлява техническа характеристика на самия преобразовател.

 

      Вторият етап, с продължителност Т2, принадлежи на DMA-контролера и се определя от продължителността на машинния цикъл върху системната шина. Началото му е в момента на възникване на сигнала “Ready” и завършва със записването на данните в паметта. В този временен интервал се изпълнява следната процедура: сигналът от преобразователя за готови данни “Ready” се използува от съответни схеми за формиране на заявка за трансфер “DREQ”, която се подава към съответния DMA-канал. Сигналът “DREQ” инициира в DMA-контролера действия за заемане на системната шина и прехвърляне на данни от АЦ-контролера към оперативната памет. След завършване на трансфера DMA-контролерът снема потвърждаващия сигнал “DACK”, чийто преден фронт бележи края на този етап. Времето Т2 за трансфер на текущия отчет е малко повече от един машинен цикъл и не може да бъде променяно.

 

      Третият етап, с продължителност Т3, по същество представлява време на очакване. В този временен участък както АЦ-контролерът така и DMA-каналът са в състояние на очакване. Първият очаква стартиращ фронт в сигнала “Start ADC”, а вторият - заявка “DREQ”.

      Разнообразни технически решения, използуващи описаната процедура за трансфер на данни чрез DMA-канал, работещ в режим на единичен обмен, са описани в съответната литература.

      Интерес представляват скоростните възможности на една система за сбор на данни, използуваща този метод за организация на трансфера, тъй като те определят нейното приложение. Ниските скорости на аналого-цифровото преобразуване се постигат чрез увеличаване на периода Т на стартиращите импулси. Обикновено изменението на скоростта се реализира чрез програмно управляван делител на тактовата честота. Може да се каже, че постигането на ниски скорости на дискретизация няма теоретични или организационни ограничения. Това обаче не може да се каже за високите скорости.

      При разглеждания метод за организация на трансфера съществуват две възможности за постигане на пределно високи скорости на дискретизация и трансфер. Първата възможност се постига чрез повишаване честотата на стартиращия сигнал, което се изразява в намаляване на временния интервал Т3. Теоретично този интервал може да се премахне, т.е. Т3=0, но практически това е опасно да се прави. Опасността идва от факта, че краят на временния интервал Т2 не винаги отстои на едно и също разстояние от началото на периода Т. Това се дължи първо на асинхронността между тактовите импулси на сигнала “Start ADC” и тактовите импулси на самия преобразовател. Тази асинхронност въвежда променливото закъснение  tADC  (виж фиг. 9.1.1). Второ, времето за което DMA-контролера заема системната шина  tDMA  (виж фиг. 9.1.1), е също променливо. В резултат на това съществува вероятност в някои от циклите на АЦ-контролера да се получи стартиране на преобразователя преди трансферът на текущия отчет да е завършил, т.е.  (Т1+Т2) > Т.

      Втората възможност се състои в подходящия избор на аналого-цифров преобразовател. Колкото по-бързо той получава отчетите, толкова по-малък е временният интервал Т1. Теоретично може да се приеме този интервал да клони към нула. Така излиза, че скоростният предел за аналого-цифровото преобразуване се определя единствено от пропускателните възможности на системната шина. Като се имат предвид обаче особеностите на разглеждания режим за трансфер, при който в управлението на системната шина процесорът и DMA-контролерът се редуват, се стига до заключението, че минималната стойност към която може да се стреми периодът Т на стартиращите импулси, е два машинни цикъла, което според стандарта ISA прави около 2 [ms]. При използуване на DMA-канал за 16-битов трансфер това означава натрупване на отчети със скорост близка до  106[B/s].

      Ако аналого-цифровият преобразовател има изходен регистър за съхранение на данни, т.е. ако той може да съвместява във времето процедурите преобразуване и четене на данни, то тогава стартиращият преобразователя заден фронт на сигнала “Start ADC” може да се премества при определени условия още по-вляво от края на временния интервал Т2, както е показано на фигура 9.1.2. Условието, при което ще може да се работи по показания начин, е: Т1>Т2. Това означава, че описаните за този режим на работа методи за управление на АЦ-контролера, има смисъл да се прилагат само когато използваният преобразовател има време за преобразуване не по-малко от 1[ms].

 

Фиг. 9.1.2.  Ускорен режим на преобразуване

 

 

Б)  Режим на блочен обмен

      Когато DMA-каналът е програмиран за работа в този режим (битове b7,b6 в регистъра на режима имат стойностите b7=1, b6=0 ), трансферът на заявеното количество отчети се извършва чрез непрекъснато следващи цикли на обмен, инициирани от една единствена заявка. Веднъж заел системната шина DMA-контролерът не я освобождава докато не се формира флагът “ТС” (Terminal count). При този начин на работа (непрекъснато следващи чисти цикли на обмен) DMA-контролерът разчита, че източникът на данни е винаги готов за четене. Тук това означава, че всеки отделен отчет АЦ-контролерът трябва да получава в рамките на един машинен цикъл. Скоростните параметри на преобразуването, изискванията към схемната част на контролера, както и алгоритмите за неговото управление най-точно се изясняват върху блок-схемата на микропрограмното управление на DMA-контролера. Тук на фигура 9.1.3 е представен обобщен граф на състоянията му при работа в блочен режим.

 

Фиг. 9.1.3.  Граф на състоянията на УУ на DMA-контролера

 

      От фигурата се вижда, че ако не е изпълнено условието за край на цикъла за трансфер (ТС=0), DMA-контролерът преминава последователно през четири състояния (S1,S2 ,S3,S4), при което издава необходимите управляващи сигнали към процесора, към паметта и към външното устройство. Но не във всеки цикъл тези състояния присъстват едновременно. Обикновено преносът от осмия разряд на адреса е нула (р7=0), което означава, че при нормална (некомпресирана) времедиаграма, се редуват състоянията (S2,S3,S4), (S2,S3,S4) ... Некомпресирана времедиаграма се изпълнява, когато битовете b0 и b3 в управляващия регистър на DMA-контролера образуват конюнкцията:

      На всеки 256 такива цикъла (виж фигура 9.1.3) възниква преносът р7 (р7=1) и тогава се извършва преход и през състояние S1 - ... (S2,S3,S4), (S1,S2,S3,S4), (S2,S3,S4),... Тъй като интерес представлява пределната скорост за работа на АЦ-контролера, който следва да получава всеки отчет в рамките на един цикъл на DMA-контролера, от казаното следва, че типичното време за това е малко по-малко от три системни такта, т.е.  Т1>3*210=630[ns].

      За да се осигури този начин на работа всяко четене на данни от АЦ-контролера следва да осъществява старт на следващото преобразуване. За тази цел най-подходящ е сигналът “I/O Read”. На фигура 9.1.4 е представен процес на многократно четене на данни от АЦ-контролера, когато обслужващият го DMA-канал работи в режим на блочен обмен. Има се предвид също, че преобразователят съвместява във времето процесите на преобразуване и съхранение на предидущия отчет.

 

Фиг. 9.1.4.  Многократно четене на данни в режим на блочен обмен

 

      Въпреки, че състоянията Si на DMA-контролера се сменят синхронно от кварцово стабилизирани тактови импулси, тази дискретизация ще определим като асинхронна. Потребителят трябва да знае, че временната стъпка между два съседни отчета, съхранявани в две съседни клетки на паметта, не винаги е една и съща - на всеки 256 стъпки от по 630[ns] има една от 840[ns]. Тя се отнася за отчети намиращи се в клетки, чиито адреси в младшия си байт преминават от стойност  xx...xxFF  в стойност  yy...yy00.  В случай, че за заснемане на реалния процес потребителят може да се задоволи с тези 256 отчета, то при подходящ начален адрес (xx...xx00), той ще ги получи при напълно синхронен процес. Ако се пренебрегне появата на състояние S1 в машинния цикъл на всеки 256 такива от по три такта, може да се приеме, че при използуване на 16-битов DMA-канал, работещ в режим на блочен обмен, е възможно натрупване на отчети със скорост близка до

      Когато DMA-каналът е програмиран да реализира компресирана времедиаграма

то от циклите на обмен се изключва състояние S3 (виж фигура 9.1.3). Тогава DMA-контролерът изпълнява своите цикли като преминава само през състояния S2 и S4, към които на всеки 256 повторения включва и състояние S1. Така типичното време на машинния цикъл се формира от два машинни такта, а скоростта за натрупване на отчети може да достигне стойности близки до

      Аналого-цифровият преобразовател, който може да осигури тази скорост, трябва да има време за преобразуване по-малко от 400[ns].

 

 

 

Следващият раздел е:

9.2  Проблеми на синхронизацията