субота, 8 лютого 2020 р.

Реалiзацiя обмiну USB/Link порт процесора Sharc ADSP-21161N в асинхронному режимі двох FIFO

Апаратний шлюз арбайтен в режимі паралельного 2х8 bit обміну F245 Async Mode. DSP забезпечує введення-виведення даних через шість 8-ми розрядних Link-портів. Кожен Link-порт ADSP-21161 складається з 8 двонаправлених ліній передачі даних LxDAT7..0, двонаправленої лінії тактових синхроімпульсів LxCLK і двонаправленої лінії квитування LxACK. Дані зчитуються або записуються в буфери Link-портів із внутрішньої пам'яті по DMA шині...

Структурно міст включає наступні блоки

  • накопичувач 8-байт на зсувному регістрі
  • контроль контрольного слова
  • master-блок Link+FIFO+RAM


Дані Link-порту по фронту кожного тактового імпульсу LCLK надходять на накопичувач, після виходу якого встановлено схему контролю контрольного слова $55AA55A. Дані з виходу накопичувача фіксації контрольного слова надходять на RAM і контроль режимів.

Особливості роботи Link-портів

  • Link-порти можуть працювати одночасно незалежно один від одного і бути доступними для прямого читання і запису зовнішнім провідним процесором
  • Передавач встановлює строб (LxCLK) високим рівнем кожного байта даних
  • Спад імпульсу LxCLK використовується приймачем фіксації байта даних
  • Приймач встановлює LxАCK, коли готовий прийняти наступне слово буфер
  • LxАCKможе бути знятий після прийому другого байта даних. Якщо LxАCK не встановлено (лог. "0"), передавач не буде передавати наступне слово і залишить сигнал LxCLKвисоким рівнем. Якщо LxАCK встановлений (лог. “1”), LxCLK буде переключено на низький рівень і почнеться передача наступного слова. Якщо передавальний буфер порожній – рівень LxCLK стає низьким, поки в буфері не з'явиться чергове слово, незалежно від стану LxАCK
  • Дані видаються молодшими байтами наперед
  • Задній фронт LxCLK використовується приймачем фіксації слова, коли приймач готовий прийняти наступне слово буфер, він виставляє сигнал LxAСK. Передавач перевіряє LxAСK на початку кожного слова. Якщо LxAСK у цей час скинутий, передавач не буде передавати нове слово
  • Передавач залишить сигнал LxСLK високим і продовжить вивiд, якщо LxAСK скинутий. Коли LxAСK буде знову виставлений, LxCLK переключиться на низький рівень і почнеться передача наступного слова
  • Якщо передавальний буфер порожній, LxCLK залишатиметься в низькому рівні до того часу, поки буфер буде заповнено, незалежно стану LxACK





Розглянемо алгоритм детальнiше:

Таким чином, використання сигналу лінії LxCLK дозволяє виконувати асинхронну передачу даних, а сигнал лінії LxACK дає можливість передачі з квитуванням. Коли Link-порт налаштовано на передачу, він керує лініями даних та лінією LxCLK. Коли Link-порт налаштований прийом, він керує лінією LxACK. Операція прийому повністю асинхронна і може проводитись на будь-якій частоті, аж до подвійної тактової частоти процесора. Після приходу імпульсу запуску LFLG замикається D-тригер, що дозволяє роботу першого лічильника тактових імпульсів LCLK з Link-порту з їх спаду і піднімає флаг готовності LACK в  ”1”. Після приходу другого спаду такту LCLK перший лічильник спільно з D-тригером скидається і таким чином формує сигнал про готовність прийому на LACK в "0", який йде на Link-порт, Link-порт додатково видає ще два такти. Другий лічильник зі спаду четвертого такту LCLK встановлює ще один тригер у "1", тим самим дозволяючи подальшу роботу:

Конструктив прототипу мезонінного модуля реєстрації для встановлення на плати DSP обробки: