Загрузка...

Принцип действия устройства


Функциональная схема устройства (ПГУ.096.031.01.Э2.) была разработана исходя из алгоритма обработки строк в трех поддерживаемых режимах.

Управление устройством обеспечивается посредством регистра команд, распределенного в адресном пространстве ввода/вывода. В нем используются только три бита, остальные зарезервированы для будущих доработок. Один разряд регистра команд указывает, следует ли устройству генерировать прерывание, или система будет узнавать его состояние программно, путем опроса. Два разряда образуют поле, задающее режим работы: поиск первого вхождения, замена всех вхождении, замена найденного вхождения и остановка. В функциональной схеме регистр команд представлен блоком RG2.

Информацию о состоянии устройства система получает путем чтения регистра состояний (RG1), восемь разрядов которых могут устанавливаться независимо друг от друга и имеют следующие значения:

"ситуация прерывания" — устанавливается в 1 всякий раз, когда обнаруживается вхождение, конец строки или ошибка замены, то есть в ситуациях, требующих реакции центрального процессора, независимо от того, генерируется ли настоящее прерывание, или оно запрещено соответствующим битом регистра команд.

"поиск прерван" — устанавливается, когда работа устройства приостанавливается выдачей в регистр команды кода остановки (схема остается в режиме поиска, но новых сопоставлений не производится).

"достигнут конец строки" — этот бит равен 1, если в процессе поиска в просматриваемой строке обнаружен нулевой символ или достигнут верхний предел адресного пространства памяти.

"ошибка замены" — останавливается, если во время замены найденной подстроки было обнаружено, что заменяющая строка длиннее заменяемой.

"обнаружено вхождение" — используется при поиске подстроки, показывает, что в регистре адрес строки находится действительное значение адреса вхождения.

"идет поиск" — показывает, что устройство находится в режиме поиска.

"идет замена" — означает, что устройство находится в процессе замены найденной подстроки новой, включающем перезапись собственно подстроки и сдвиг оставшейся части строки.

"замена всех вхождений" — указывает, что все найденные подстроки должны заменятся, а после замены начинается новый поиск.

Искомая и заменяющая строки хранятся в блоках RAM1 (для заменяемой подстроки) и RAM2 (для заменяющей). К ним возможен доступ как по записи так и по чтению в адресном пространстве ввода-вывода.

Строка в которой приводится поиск, программно в память устройства не переписываются . Система передает устройству символьной обработки только ее начальный адрес, сохраняемый в счетчиках-регистрах СT3 и СT4. Их два, так как адрес на PCI в общем случае 32-разрядный, выбранный для взаимодействия между контроллером и схемой символьной обработки интерфейс PC Card поддерживает только 16-разрядные пересылки данных. Эти же счетчики в случае удачного сопоставления содержат адрес найденного вхождения, доступный для чтения.

Чтобы не загружать системный интерфейс постоянными пересылками отдельных байтов, в устройстве широко используются блочные операции.

Выбранный контроллер PC Card поддерживает прямой доступ к памяти. Проверяемый на сопоставление участок строки объемом 512 байт хранится в буферном запоминающем устройстве RAM3. Этой величины достаточно, чтобы отдельные циклы сопоставления можно было проводить без обмена данными с памятью системы. Такой буфер можно представить состоящим из двух банков, выбор между которыми осуществляется старшим битом, подаваемым на запоминающее устройство 9-разрядного адреса. Один из банков соответствует 256-банковому блоку, расположенному по более младшим адресам, другой по более старшим. При приближении адресов к границе отображенного в буфер участка памяти, блоки меняются местами и один из них заполняется новыми данными. Управление этими операциями осуществляет последовательный блок US3.Для сдвига при замещении подстрок нужно переписывать символы из одних адресов памяти в другие. Чтобы использовать прямой доступ к памяти и блочные пересылки и при этой операции, нужен второй буфер, представленный запоминающим устройством RAM4.Можно было бы ограничиться и одним буфером, но тогда управляющая схема была бы гораздо сложнее, хотя и компактнее. Кроме того, данные пересылались бы блоками меньшего размера.

Прямой доступом при записи данных в буфер RAM4 и затем в системную память управляет блок US4, действующий по тому же принципу, что US3.

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

Сам контроллер представлен на функциональной схеме последовательным блоком US1.Его сигналы и функционирование стандартны. Блок US2-дешифрация адресов. Кроме того, этот блок может в определенные моменты времени запрещать доступ к некоторым ячейкам памяти. Благодаря этому каждый цикл сопоставления при поиске и вся последовательность действий при замене вхождения являются едиными операциями, завершающимися при любых условиях, кроме случаев перезагрузки или сбоя питания. На время таких действий любое обращение к устройству по записи вызывает вставку циклов ожидания. Выполнение этих операций блок US2, вырабатывает сигнал IO, может приостановить работу устройству на время циклов ввода/вывода.

Запоминающее устройство RAM1 и RAM2 используются как устройством для чтения заданных программно подстрок, так и системой для передачи этих подстрок устройству. Поэтому адреса на эти блоки поступают и с контроллера US1, и от счетчика смещений схемы. Для временного разделения используются мультиплексоры MS1 и MS2, переключаемые сигналами обращения к запоминающему устройству от US1. Мультиплексор MS3 определяет, какого счетчика берется адрес при обращениях к US3:при поиске это полученное отсчетом текущего индекса от базового адреса CT3 и CT4 значение STR_ADR,при замене непосредственно текущее значение счетчика CT6.

Счетчики CT1 и CT2 нужны для формирования адресов ячеек буфера при операциях прямого доступа к памяти.

Для общего управления прямым доступом служит блок US5. Он воспринимает запросы на прямой доступ от US3 и US4 и преобразовывает их в сигналы интерфейса PC Card, а потом передает сигналы подтверждения, строба и окончания операций прямого доступа от контроллера нужному блоку.US5 также передает на шину данных значения адресов прямого доступа в случае возникновения соответствующих запросов, расположенных блоков US2. Внутреннее устройство блока US5 не рассматриваются, так как оно не имеет принципиального значения для логики работы схемы.

Основные задачи символьной обработки выполняет управляющий блок US6, вырабатывающий в определенные моменты времени необходимые сигналы. Значение выходных сигналов US6 зависит от состояния входов, содержимого регистров команды и состояния, а также внутреннего состояния самого блока. На входе управляющий блок получает, помимо тактового сигнала и значений задающих режим регистров, результат сравнения соответствующих символов строк, сигналы, индицирующие конец строки или подстроки, сигналы готовности от блоков организации прямого доступа и информацию об обращения к устройству от блока дешифрации адреса US2.

Результаты сравнения символов сопоставляемых строк снимаются с компаратора CM4.Компараторы CM1- CM3 проверяют символы строк на равенство с нулевым символом, который в передаваемых устройству символьных последовательностях должен служить признаком конца строки.

Важным блоком устройства является счетчик CT5. Именно его текущее значение служит индексом, пробегающим сопоставляемые подстроки. Реальный адрес вычисляется сумматором SM1,отсчитывающим заданное смещение от адреса начала подстроки.

Последовательность действий, производимых при нормальном функционировании устройства, отраженная также во временных диаграммах (Приложение 1), описывается ниже.

Обнуление или задание каких-либо инициализирующих значений при перезагрузке для большинства запоминающих устройств схемы не предусмотрено. Исключением является регистр состояния: в начале работы все его разряды сбрасываются в 0. Работа устройства начинается с обращения пользователя, задающего режим, но перед этим должны быть заданы начальный адрес строки, в которой производится поиск, и искомая подстрока. При всех этих обращениях блок US2 производит дешифрацию адреса и формирует сигналы, открывающие соответствующие запоминающие устройство для записи. Данные с линий D0….D15 сохраняются во внутренней памяти устройства. После изменения регистра команды управляющий блок преобразует код режима в значения соответствующих битов регистра состояния. Во время операций символьной обработки значение самого регистра команд не используется, но бит» генерация прерывания» проверяется при возникновении ситуации прерывания.

Когда один из битов» идет поиск» или »идет замена» регистра состояния установлен1,блок US6 вырабатывает управляющие сигналы, синхронизированные с сигналом CLK.

В режиме поиска цикл сопоставления представляет собой выдачу серии импульсов NEXT_CHAR с проверкой значений на входах TQ_END и STR_END. Каждый раз, когда EQ в момент проверки равен 0, вырабатывается сигнал NEXT_SUBSTR ,обнуляющий счетчик CT5 и инкрементирующий объединенные счетчики CT3, CT4. Если возникает сигнал 0 OLD_END, реакция устройства зависит от битов »замена всех вхождений» регистра команды. Если флаг »замена всех вхождений» равен 1, устанавливается. В противном случае разряд »идет замена» остается нулевым, но устанавливаются биты» ситуация прерывания» и »обнаружено вхождение». Если установлен флаг »генерация прерываний», возникает аппаратное прерывание, преобразуемое контроллером в системный сигнал. Когда в режиме поиска возникает значение логической »1» на входе STR_END, устройство также останавливает работу с установкой ситуации прерывания, но устанавливается не бит »обнаружено вхождение »,а признак конца строки. В режиме замены действия несколько сложнее и состоят из двух этапов.

В начале значение новой подстроки переписывается в тот участок памяти, где в последнем цикле поиска было обнаружено вхождение старого, то есть по адресу, сохраненному в счетчиках CT3, CT4. Для этого обнуляется CT5 импульсом NEXT_SUBSTR (на CT3 этот сигнал в режиме замены не должен влиять) и значение STR_ADR копируется в счетчик CT7. Затем CT5 начинает увеличивать свое значение, при этом генерируются импульсы SEND, записывающие в буфер RAM4 символы NEW_CHAR. Если возникает сигнал NEW_END или OLD_END, первый этап замены завершается. В случае одновременного завершения обеих подстрок цикл замены на этом заканчивается. Если сигнал OLD_END установлен, а NEW_END еще нет, возникает ситуация ошибки. И только когда NEW_END возникает раньше OLD_END, начинается второй этап замены -сдвиг. На линии SHIFT устанавливается сигнал, переключающий мультиплексор в такой режим, чтобы на вход буфераRAM4 передавались символы STR_CHAR из RAM3. До начало пересылок нужно установить правильное значение в счетчике CT6. Поэтому CT5 продолжает инкрементироваться до возникновения сигнала OLD_END, по которому значение STR_ADR переписывается в CT6 импульсом COPY_FROM. Далее начинается собственно сдвиг. Импульсы SEND генерируются до возникновения сигнала на входе STR_END.

Когда цикл замены нормально завершен, проверяется бит "замена всех вхождений" регистра состояния. Если он равен 1, происходит переход в режим поиска с одновременным инкрементом CT3-CT4 (увеличение CT3-CT4 происходит также в случае, когда в регистр RG1 записывается код команды поиска при установленном бите "обнаружено вхождение" регистра состояния). Если же требовалась одиночная замена, все биты регистра состояния, кроме одного -"ситуация прерывания" -сбрасываются. В зависимости от флага "генерация прерываний " устройство устанавливает сигнал прерывания или ждет обращения пользователя.

В продолжение всех операций должен контролироваться сигнал на входе STR_RDY. Если он неактивен, любые действия приостанавливаются до завершения пересылок данных.

Результаты операций символьной обработки можно получить программным чтением регистров устройства: в регистре состояния содержится причина, вызвавшая прерывание, а в регистрах — счетчиках адреса строки — адреса найденного вхождения. Блок US1 передает данные из внутренних запоминающих устройств на линии D0….D15, открывая один из шинных формирователей BD1…BD6.

В любой момент, когда запись в регистр команд разрешена, устройство можно программно остановить. При этом устанавливается бит поиск прерван регистра состояния.

Загрузка...