Перейти к содержанию
    

Связка ISA + FIFO

Здравствуйте, уважаемые!

 

Занимаюсь одной интересной разработкой (я студент 3-го курса), и столкнулся с задачей приема/передачи данных между 8-разрядной шиной ISA и микроконтроллером DS80C400 (семейство 8051). Никаких зацепок, как реализовать аппаратно нет, опыта тоже :( единственно что известно, точно нужно FIFO, как буфер. посоветуйте, пожалуйста, подкиньте идей, поделитесь опытом, как можно проще и надежней это реализовать.

 

Заранее благодарю, отвечу на любые вопросы по теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, уважаемые!

 

Занимаюсь одной интересной разработкой (я студент 3-го курса), и столкнулся с задачей приема/передачи данных между 8-разрядной шиной ISA и микроконтроллером DS80C400 (семейство 8051). Никаких зацепок, как реализовать аппаратно нет, опыта тоже :( единственно что известно, точно нужно FIFO, как буфер. посоветуйте, пожалуйста, подкиньте идей, поделитесь опытом, как можно проще и надежней это реализовать.

 

Заранее благодарю, отвечу на любые вопросы по теме.

Я бы сделал на FPGA, т.к. все равно нужно делать интерфейсную часть ISA и FIFO, как я понимаю нужно двунаправленное т.е. туда и обратно.

Минимально можно поставить ACEX EP1K10... там 3 блока ОЗУ по 512 байт.

На двух можно сделать FIFO туда и обратно. При этом можно самому сформировать нужные сигналы типа FULL, EMPTY и т.д. можно даже вывести счетчик байт в FIFO. Но если нет опыта работы с программируемыми матрицами совсем, то это будет достаточно тяжело.

Можно поискать просто стандартные микросхемы FIFO, вообщем то они тоже есть в природе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, уважаемые!

 

Занимаюсь одной интересной разработкой (я студент 3-го курса), и столкнулся с задачей приема/передачи данных между 8-разрядной шиной ISA и микроконтроллером DS80C400 (семейство 8051). Никаких зацепок, как реализовать аппаратно нет, опыта тоже :( единственно что известно, точно нужно FIFO, как буфер. посоветуйте, пожалуйста, подкиньте идей, поделитесь опытом, как можно проще и надежней это реализовать.

 

Заранее благодарю, отвечу на любые вопросы по теме.

 

А зачем FIFO? Какая скорость обмена нужна? Если не предельная - то делаете стандартную обвязку (дешифратор адреса, защелку итд), при записи байта - выдаете прерывание на 51-ю. 51-я считывает байт. если надо - что-то пишет во внешний регистр. Далее по усмотрению. На всидку пара-тройка регистров типа LS373, пара LS245 и рассыпуха для дешифратора адреса в пространстве портов ввода-вывода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно поискать просто стандартные микросхемы FIFO, вообщем то они тоже есть в природе.

 

со стандартными тоже у меня проблема - как преобразовать параллельный поток данных идущий с ISA в последовательный, идущий на вход FIFO? Соответственно, возникает обратная задача - выдать последовательный поток на параллельную ISA.

 

в FPGA опыта нет совсем, да и времени нет разбираться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем FIFO? Какая скорость обмена нужна? Если не предельная - то делаете стандартную обвязку (дешифратор адреса, защелку итд), при записи байта - выдаете прерывание на 51-ю. 51-я считывает байт. если надо - что-то пишет во внешний регистр. Далее по усмотрению. На всидку пара-тройка регистров типа LS373, пара LS245 и рассыпуха для дешифратора адреса в пространстве портов ввода-вывода.

 

можно поподробней, как и что? идея интересная...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем FIFO? Какая скорость обмена нужна? Если не предельная - то делаете стандартную обвязку (дешифратор адреса, защелку итд), при записи байта - выдаете прерывание на 51-ю. 51-я считывает байт. если надо - что-то пишет во внешний регистр. Далее по усмотрению. На всидку пара-тройка регистров типа LS373, пара LS245 и рассыпуха для дешифратора адреса в пространстве портов ввода-вывода.

 

можно поподробней, как и что? идея интересная...

 

Шина ISA - штука очень простая, с PCI не сравнить. Очень близка по логике с внешним интерфейсом I8051. Берете к примеру макетку для ISA у которой уже есть все необходимые дешифраторы (раньше их было море). Думаю, что и в инете схему стандартной обвязки для ISA на рассыпухе найти можно.

Уточните, что Вас интересует поподробнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Шина ISA - штука очень простая, с PCI не сравнить. Очень близка по логике с внешним интерфейсом I8051. Берете к примеру макетку для ISA у которой уже есть все необходимые дешифраторы (раньше их было море). Думаю, что и  в инете схему стандартной обвязки для ISA на рассыпухе найти можно.

Уточните, что Вас интересует поподробнее

 

меня интересует, что значит "стандартная обвязка для ISA" и "макетка для ISA" :huh: :wacko::biggrin:

 

я бы и поискал в интернете, с радостью, но, непонимая, не знаю что искать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  меня интересует, что значит "стандартная обвязка для ISA" и "макетка для ISA"  :huh:  :wacko:  :biggrin:

 

я бы и поискал в интернете, с радостью, но, непонимая, не знаю что искать.

 

Макетка для ISA - это плата с ISA'вым разъемом как минимум, оптимум - на ней уже есть эта самая минимальная обвязка. Остальная часть - поле отверстий с шагом 2.54 мм, на которых можно разпаять что угодно (не планарные корпуса, ясное дело)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые, посмотрите пожалуйста на прикрепленное изображение. Задача в следующем: необходимо по шине ISA от мастер-устройства передавать для обработки данные подчиненному (в нашем случае МК 51-й) [на шине кроме нашего МК висят и другие устройства]. данные передаются через FIFO-память. мне непонятно, каким образом, схемотехнически можно определить, что данные на шине ISA предназначены для нашего устройства, иными словами, как можно обработать адрес, выставленный на шину ISA и определить, что обращаемся именно к нему.

 

буду благодарен за совет. и особенно благодарен, если ответ продублируете на [email protected]. спасибо.

post-2697-1115897143.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендую почитать, что такое шина ISA, хотябы вкратце. Можно сходить по линку http://www.techfest.com/hardware/bus/isa_sokos.htm, можно поискать что-то на русском.

 

Про реакцию на адреса: Ваша плата с МК должна реагировать на обращения в строго определенном диапазоне адресов (база+диапазон). И при наличии транзакции с адресом, лежащим в этой области, будет происходить либо запись в FIFO, либо чтения из него. Например, если диапазон адресов 0x350+0x10 (0x350-0x360) и он принадлежит к диапазону адресов ввода-вывода (сигналы IOR/IOW), то при наличии на шине адреса 0x350 и сигнала IOW должно происходить чтение в FIFO (это упрощенная картина, т.к. в транзакции учавствует большее число сигналов - ALE, IOCS16 и другие... ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про реакцию на адреса: Ваша плата с МК должна реагировать на обращения в строго определенном диапазоне адресов (база+диапазон).  И при наличии транзакции с адресом, лежащим в этой области, будет происходить либо запись в FIFO, либо чтения из него. Например, если диапазон адресов 0x350+0x10 (0x350-0x360) и он принадлежит к диапазону адресов ввода-вывода (сигналы IOR/IOW), то при наличии на шине адреса 0x350 и сигнала IOW должно происходить чтение в FIFO (это упрощенная картина, т.к. в транзакции учавствует большее число сигналов - ALE, IOCS16 и другие... ).

 

спасибо. это все хорошо, но как это реализовать схемотехнически? какие схемы?микросхемы защелкивают/обрабатывают адрес? совсем запутался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На pal'ах можно реализовать дешифратор адреса. Не забудьте поставить 245 на шину данных:).

 

Лучше если вы реализуете интерфейс к isa на какой-нибудь epm3032alc44(или аналогичное), получится дешево и сердито.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо. это все хорошо, но как это реализовать схемотехнически? какие схемы?микросхемы защелкивают/обрабатывают адрес? совсем запутался...

 

Посмотрите в качестве примера как подключен 8255 (KP580BB55A) к шине ISA http://www.rlocman.ru/shem/rs.php?id=16965

Или Вы хотите, чтобы Вам нарисовали готорую схему? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про реакцию на адреса: Ваша плата с МК должна реагировать на обращения в строго определенном диапазоне адресов (база+диапазон).  И при наличии транзакции с адресом, лежащим в этой области, будет происходить либо запись в FIFO, либо чтения из него. Например, если диапазон адресов 0x350+0x10 (0x350-0x360) и он принадлежит к диапазону адресов ввода-вывода (сигналы IOR/IOW), то при наличии на шине адреса 0x350 и сигнала IOW должно происходить чтение в FIFO (это упрощенная картина, т.к. в транзакции учавствует большее число сигналов - ALE, IOCS16 и другие... ).

 

спасибо. это все хорошо, но как это реализовать схемотехнически? какие схемы?микросхемы защелкивают/обрабатывают адрес? совсем запутался...

 

Все это, конечно, можно сделать на отдельных микросхемах, но лучше всего для этой цели подойдет любая FPGA которая может работать с 5V сигналами, например Xilinx Spartan, Spartan XL, Spartan 2. А если не нужно большое FIFO, а достаточно нескольких регистров - то тут хватит простой CPLD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые, посмотрите пожалуйста на прикрепленное изображение. Задача в следующем: необходимо по шине 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 (этим сейчас почти никто не занимается).

post-4146-1116094231.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...