Цитата(8301 @ May 12 2005, 14:34)
Уважаемые, посмотрите пожалуйста на прикрепленное изображение. Задача в следующем: необходимо по шине ISA от мастер-устройства передавать для обработки данные подчиненному (в нашем случае МК 51-й) [на шине кроме нашего МК висят и другие устройства]. данные передаются через FIFO-память. мне непонятно, каким образом, схемотехнически можно определить, что данные на шине ISA предназначены для нашего устройства, иными словами, как можно обработать адрес, выставленный на шину ISA и определить, что обращаемся именно к нему.
Прилагаю функциональную схему для решения вашей задачи. Эта схема может быть реализована как на ПЛИС (достаточно простых и не быстрых с поддержкой уровней ТТЛ 5В и выходным током 12mA), так и
на дискретной логике семейств 1533 (74ALSxxx), 1531 (74Fxxx). Из ПЛИС фирмы Хilinx подойдут семейства 4000E, Spartan, 9500.
По алгоритму работы хотелось бы добавить следующее:
1. Схема реализует алгоритм программного ввода-вывода, т.е. чтение даных производится по команде.
2. Для управления процессами записи-чтения в один из портов чтения следует вывести статусную информацию FIFO (флаги).
3. Если есть желание избежать постоянный цикл опроса статуса FIFO, можно воспользоваться установкой прерывания по заполнении FIFO чтения (например на 1/2 или 3/4) и по освобождению FIFO записи (например более, чем на 1/2).
Естественно в обработчике прерывания следует производить чтение порта, отображающего статус FIFO для определения дальнейших действий (запись или чтение).
4. В качестве адресов можно испольовать диапазон 300\h...320\h (или же другой, но его надо предварительно проверить хотя бы по справочным данным стандартного распределения адресов).
5. Использовать пространство памяти можно, но это усложнит задачу, т.к. потребует настройку системы (в DOS мы это делали, но это было очень давно), а использовать DMA на ISA тоже не рекомендую - потеряете много времени на программирование контроллера DMA (этим сейчас почти никто не занимается).
Эскизы прикрепленных изображений