Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Последовательно-параллельные АЦП




Последовательно-параллельные АЦП - это компромисс между параллельными и последовательными АЦП.

На рисунке 9.10 показан для примера двухступенчатый АЦП. В многоступенчатых преобразователях процесс преобразования разделен в пространстве.

 

Рис. 9.17 - Двухступенчатый АЦП

Для примера на рисунке 9.10 изображен двухступенчатый АЦП. АЦП1 (верхний) осуществляет "грубое" преобразование входного сигнала в старшие разряды. Сигналы с выхода первого АЦП поступают на выходной регистр и одновременно на вход быстродействующего ЦАП. Цифровой код преобразуется ЦАП в напряжение, которое вычитается из входного. Разность напряжений преобразуется с помощью АЦП2 в коды младших разрядов. Регистр собирает полученные значения в одного. В таких схемах ЦАП чаще всего выполняется по схеме суммирования токов с помощью дифференциальных переключателей, но могут быть построены по схеме суммирования напряжений.

Требования к точности АЦП1 выше, нежели ко второму. Оба АЦП параллельного типа. Допустим, и тот, и другой 4-х разрядные, в каждом используется по 16 компараторов. В итоге получается 8-ми разрядный АЦП всего на 32 компараторах, тогда как при построении по параллельной схеме понадобилось бы 28 - 1 = 255 шт. Быстродействие примерно раза в два хуже. Помимо этого бывают многотактные последовательно-параллельные и конвейерные АЦП. У них несколько иная структура. К примеру, многотактные преобразователи работают с различным шагом квантования, т. е. в преобразователе процесс преобразования разделен во времени. В один момент времени формируются старшие разряды, в другой момент времени шаг квантования уменьшается и формируются младшие разряды.

ПЕРЕПИСАТЬ ДМА

Контроллер прямого доступа к памяти.

Прямой доступ к памяти (DMA) - это метод непосредственного обращения к памяти, минуя процессор. Процессор отвечает только за программирование DMA: настройку на определенный тип передачи, задание начального адреса и размера массива обмениваемых данных. Обычно DMA используется для обмена массивами данных между системной памятью и устройствами ввода-вывода.

Обмен данными между процессором и устройствами ввода-вывода осуществляется по системной шине, ведущим которой является процессор. При использовании контроллера DMA на время обмена данными он должен получить управление системной шиной. По окончании обмена подсистема DMA возвращает процессору право управления шиной.

Для предотвращения коллизии, при которой два устройства одновременно обращаются за доступом к одной и той же шине используется DMA-контроллер. DMA-контроллер – это устройство, контролирующее все операции по прямому доступу к памяти.

Перед запуском DMA-контроллер необходимо произвести настройку. Эта операция включает в себя, в том числе задание адреса источника и приемника, режим работы и объем передаваемых данных. Имея такую информацию, DMA-контроллер запрашивает контроль над памятью у центрального процессора (ЦП). Когда ЦП готов передать контроль над шиной памяти, он отправляет оповещающий сигнал в ответ на запрос DMA-контроллера.

Рисунок 9.18

Пакетный или однотактный

Что случается после получения DMA-контроллером контроля над шиной памяти, зависит от того, какой режим работы установлен для DMA-контроллера. Есть два основных режима для DMA-контроллеров. Первый из них называется пакетный. Когда DMA-контроллер работает в этом режиме, он сохраняет контроль над шиной памяти на протяжении всего процесса передачи данных. Отрицательным аспектом работы в таком режиме является то, что ЦП не сможет работать с шиной памяти, пока DMA-контроллер не завершит передачу данных. То есть процессор сможет работать только со своими кэшами первого и второго уровней, но не с чем-либо другим в памяти; очевидно, это ограничивает возможности ЦП на время ожидания процессором завершения операции и возвращения контроля над шиной памяти DMA-контроллером.

Чтобы избежать такой невыгодной ситуации, когда ЦП приходится ожидать завершения передачи данных, DMA-контроллер может работать в другом режиме, который называется однотактным (single-cycle). При работе в однотактном режиме DMA-контроллер возвращает контроль над шиной памяти после передачи каждого отдельного блока данных. Размер этого блока обычно составляет 256 или 512 байт. Это дает возможность процессору использовать шину памяти для своих целей без необходимости долго ждать. К сожалению, есть недостатки и у однотактного режима работы. После возвращения контроля над шиной памяти DMA-контроллеру нужно снова посылать запрос процессору, опять ждать разрешения на контроль над шиной памяти, чтобы сделать передачу очередного блока данных. То есть необходимость повторять последовательность запросов может в несколько раз увеличить время простоя в процессе передачи данных.

И все-таки однотактный режим работы используется чаще всего, хотя большинство DMA-контроллеров могут работать в обоих режимах. Оптимальный размер блока, который будет передаваться перед возвращением контроля над шиной памяти и повторением запроса, - вопрос довольно сложный. Одним из главных факторов тут является наблюдаемая частота ошибок. Когда обнаруживаются ошибки при передаче данных (часто это бывает при передаче через сеть), необходимо повторить передачу данных. Поэтому, если ошибки случаются часто, оптимальными являются блоки небольшой длины. Однако если ошибок мало, малый размер блоков приведет к увеличению количества циклов запросов и ответов между DMA-контроллером и ЦП, что будет увеличивать общее время передачи данных. Как именно реализуются эти решения, зависит от конкретного производителя DMA-контроллеров (а еще точнее, от инженера, проектировавшего их!); и об этом не сильно распространяются. Если вы захотите узнать, как размер блоков определяется для конкретного DMA-контроллера, вероятно, эту информацию можно отыскать в документации, или же вам придется обращаться к компании-производителю.

Когда DMA-контроллер завершает передачу блока и возвращает контроль над шиной памяти ЦП, процессор может использовать шину для своих целей. В вышеприведенном примере, да и во многих других примерах, это дает процессору возможность обновлять индикаторы прогресса и обновлять файловую систему информацией, относящейся к осуществляемым операциям прямого доступа к памяти (например, информацию о появлении нового файла).

Когерентность кэша

Другая проблема, возникающая при операциях прямого доступа к памяти, связана с когерентностью кэша. Когда процессор обращается к некоторому месту в памяти, содержимое этого места записывается в кэш процессора. Если производятся операции прямого доступа к памяти, содержимое кэша процессора может не перестать совпадать с истинным содержимым памяти. Более подробно о когерентности кэша см. мою предыдущую статью здесь.

У этой проблемы есть два возможных решения. Системы с полной когерентностью кэша реализуют аппаратное решение, в котором DMA-контроллер отправляет сигнал контроллеру кэша, сообщающий о месте в памяти, с которым он работает. Если при прямом доступе требуется произвести запись в это место, контроллер кэша аннулирует содержимое кэша процессора. Если производится чтение, контроллер кэша обновит содержимое кэша процессора, чтобы оно содержало текущее значение (которое и должно храниться в кэше ЦП). Такой метод работы требует некоторых накладных расходов, но при этом он гарантирует когерентность кэша процессора.

В системах с неполной когерентностью кэша работа по поддержке кэша отдается операционной системе. От операционной системы в таком случае требуется, чтобы она принимала решение, стоит ли обновлять значение кэша перед операцией прямого доступа к памяти или аннулировать после нее. Какой метод лучше? Я не уверен, что есть однозначный ответ на этот вопрос, ведь оба метода достаточно адекватны. Но лично я предпочитаю элегантность аппаратного решения, реализуемого в случае полностью когерентной системы.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...