ОПИСАНИЕ ФУНКЦИОНИРОВАНИЯ


Устройство умножения троичных чисел содержит следующие элементы (см. схему принципиальную):

1 PCI контроллер (DD1);

2 Заказную СБИС (DD2);

Схема управляется посредством стандартного набора команд PCI(см. п.3.3). Данные получает и возвращает при помощи ПДП. Формат данных полностью описан в п.1.1. PCI контроллер выполняет функции сопряжения проектируемого устройства с ЭВМ. Он обеспечивает ввод-вывод, имеет специальные регистры для конфигурирования устройства, тем самым, облегчая разработку устройства, так как его конфигурирование перекладывается на ЭВМ и программиста. Заказная СБИС MSU100 выполняет функции приема исходных данных, умножения двух троичных чисел, и сохранения полученного результата.

Функционирование устройства выглядит следующим образом:

При установлении сигнала OE происходит активизация устройства. Оно производит запрос на ПДП для чтения исходных данных. Запрос производится сигналом INPACK . После получения подтверждения доступа устройство читает два шестнадцатиразрядных данных. Чтение производится синхронно, сигналом синхронизации служит сигнал A_IOWR .после каждого установления этого сигнала производится, запрись данных во внутренние регистры заказной СБИС MSU100. После того как было прочитано второе данное доступ, к памяти при помощи ПДП прекращается. После окончания чтения данных устройство выполняет непосредственное перемножение. Оно производится заказной микросхемой путем циклического суммирования. При этом управление осуществляется внутренними сигналами при помощи управляющего блока СБИС (см. рис. 5). При этом блок управления имеет жесткую логику работы и основным управляющим сигналом для него является внутренний тактовый генератор TG, который вырабатывает тактовый сигнал CLK. Так как умножение выполняется путем суммирования, то на каждый тактовый сигнал производится сохранение во внутреннем регистре СБИС промежуточного результата и выставление на входы сумматоров новых данных. Суммирование выполняется набором сумматоров со сквозным переносом. Это приводит к тому, что длительность процесса суммирования сильно зависит от суммируемых чисел и может колебаться в весьма широких пределах. Кроме того, скорость суммирования зависит и от конкретной реализации сумматоров. Все эти особенности приводят к тому, что предварительно весьма трудно назначить оптимальную частоту тактового генератора. Она выбирается, исходя из задержек конкретного сумматора и должна быть такой, чтобы результат успел установиться, даже если перенос возникает в каждом разряде при суммировании.

После получения окончательного результата умножения, он сохраняется во внутреннем регистре СБИС. Для передачи его ЭВМ производится запрос на ПДП. Для этого используется сигнал WP. Он выставляется на шину PCI, и затем устройство ожидает предоставления ему прямого доступа к памяти. Если такой доступ был предоставлен, то выставляется сигнал подтверждения ПДП по записи (сигнал B_REG). После того как этот сигнал был выставлен, устройство выставляет на шину данные. Так как разрядность результата умножения вдвое больше, чем разрядность входных операндов, то сохранение производится в два цикла. Сначала записывается старшая часть результата, затем младшая. Как и чтение, запись производится синхронно. В качестве сигнала синхронизации используется сигнал B_IORD. По окончании записи результата умножения все сигналы устройства приводятся в неактивное состояние. Цикл работы устройства закончился, оно ожидает нового обращения.

При работе устройства возможна ситуация, когда на вход сумматоров были поданы неверные данные (см. п.1.1 и п. 3.2). Если такая ситуация возникла, то устройство прекращает счет, сбрасывает счетчик циклов суммирования (встроен в устройство управления) и переходит в состояние, соответствующее окончанию цикла работы устройства. Дополнительно сообщение об ошибке не производится. Это может вызвать сбои в работе всей ЭВМ в целом, но для учебных целей вполне приемлемо. Этого можно избежать, если производить хранение исходных данных и сохранение результата умножения по одному и тому же адресу. В этом случае можно проверить результат умножения, и если в нем окажутся некорректные данные сделать вывод, что умножение не было произведено, и нужно изменить исходные данные и снова произвести обращение к устройству.

Загрузка...