-
Вложений: 1
Итак, SPI работает. Из-за "лапши" на макетке создается много помех, что приводит к достаточно большому количеству битых байт. Последнюю неделю пробовал разные варианты для их уменьшения. В итоге окончательный вариант таков: частота 8 МГц, слово 8 бит, режим SPI - 0. Так же добавил четвертый провод NSS для синхронизации после ошибки. В режиме чтения в одну сторону передается номер дорожки, а в другую байт. В режиме записи передается байт или Дорожка (в зависимости от старшего бита).
Характер ошибок показывал, что проблема в сигнале SCLK, так как полученные слова были сдвинуты с какого-то места. Для очистки сигналов все они выводятся с минимальной силой и их тип LVCMOS. Это дало лучший результат. Так как у меня пока нет осцилографа, то я не могу посмотреть форму сигнала, поэтому для тестирования я передаю один и тот же байт в каждом цикле и сравниваю что получено. В случае ошибки счетчик увеличивается на индикаторах DE1 и дисковода. Так я могу отслеживать кол-во ошибок за период времени. Пробуя разные варианты я смог оценивать их эффективность.
Для дальнейшего уменьшения кол-ва ошибок я передаю байт трижды и беру то значение, которое встречается дважды. Все эти меры привели к эффективности в 1 ошибку каждые 15 минут (1 ошибка на 25 переданных мегабайт), что неплохо , но все же недостаточно.
Для дальнейшего улучшения, я попробовал разные методы termination сигнала SCLK. Наилучший результат показал метод соединения его с землей через последовательные резистор и конденсатор. После их подбора оптимальным оказались значения 82 ома и 22нФ. На данный момент тест крутится уже больше полутора часов и на счетчиках 0 ошибок.
Теперь, добившись надежной связи, я могу тестировать дисковод. Теперь вместо 12 ног надо всего 4. Для дисковода 840к можно будет применить тот же принцип.
UPD: Попробовал загрузить систему - "Школьница" загрузилась без проблем с переделанного дисковода (см. картинку). Только какие-то проблемы с переключением дорожек. Буду смотреть.
-
Переключение дорожек пофиксено. Все опробованные системы и программы загружаются без проблем (BASIC, Школьница, AltDOS и программы). Теперь можно смело сказать, что новая версия дисковода функционально равна старой на ATMega, но имеет правильные тайминги, требует всего 4 ноги ПЛИС и предусмотрена запись. :v2_thumb:
Завтра начну прикручивать запись на "диск". :v2_dizzy_sleep2:
-
Вложений: 2
Сегодня пришел осциллограф. Первым делом решил посмотреть что там за сигналы по SPI идут, что ошибки проскакивают. Вот такие картинки увидел - первая NSS, вторая SCK.:v2_eek:
Такие наводки происходят по пути от FPGA к разъему на DE1, далее к макетке по 15см ленте, далее проводом длиной еще 15 см по макетке до платы с STM32L и наконец немного по самой плате до микроконтроллера. Мои меры с резистором и конденсатором работают потому, что это уменьшает немного уровни, и помехи не достают до порога срабатывания.
В общем бесперспективно пытаться что-то отладить с таким шумом. По всей видимости надо отложить работу с дисководом пока все не будет размещено на плате. Похоже сейчас лучше сконцентрироваться на завершении составления схемы и доотладке на макетке магнитофонного входа/выхода (благо с осциллографом это будет несложно) с целью изготовления печатки Rev.0. На ней будут выведены неиспользуемые пины на разъем расширения.
-
Трудно сказать, конечно, но наблюдаемая картина непохожа на шум. Это похоже на какие-то глитчи, которые вылезают с FPGA и частично фильтруются длинной линией.
-
Эти колебания на NSS совпадают в точности с SCK. Там как раз идет небольшая пауза перед началом SCK. То есть очень похоже на наводку. Кроме того, я пробовал две версии SPI в ПЛИС. Одну я сам написал, а вторую взял готовую, думая что я напортачил. Так вот обе дают одинаковую картинку. Кроме того, емкость линии такова, что SCK даже не успевает опуститься до нуля и подняться до 3.3В. И обрати внимание на ступеньки между некоторыми пиками SCK - похоже как раз на смену уровня на линиях данных, которые наводятся. Так что мне кажется все же наводки и емкости виноваты, хотя версию с глитчами, конечно, не стоит со счетов полностью сбрасывать.
-
15 сантиметров как-то уже многовато для проброса SPI. А там еще дополнительные 15 сантиметров тоже добавляют радости.
Покороче никак не сделать?
-
Я теперь тоже знаю, что это много. :v2_rolley
Можно, например, плату сделать и прямо в гнездо DE1 ее воткнуть (как я с процессором сделал). Но я все же склоняюсь полную плату сделать. На ней можно будет все сразу отладить. Подумаю еще. Не хочется сделать плату расширения, потратить время и деньги и окажется, что наводки все равно велики.
-
15 или 30, но тут в поламплитуды наводка, это как-то очень эффективно для паразитной связи. Попробуй сделай просто два провода рядом, повесь на дальний конец какое-нибудь сопротивление на землю, подай на один провод 1МГц и посмотри на втором, какого размаха у тебя будет наводка? Будет похоже не эту картинку?
-
Вложений: 1
svofski, ты как обычно прав :) Я поиграл с разными режимами и вспомнил, что когда я пробовал те сигналы я не включил чтение файла на микроконтроллере. А SPI интерфейс у меня включается уже после того, как нужный файл выбран (о чем я подзабыл). То есть те сигналы шли в ненастроенный порт микроконтроллера и что там с ними происходило я пока не знаю. :v2_rolley Вот какой сигнал SCK при включенном чтении образа и, следовательно, SPI на микроконтроллере. NSS пришел в норму (почти).
Все еще плохо, но не настолько. Понятно, что емкость линии высока и надо сокращать длину. Однако пока не знаю как - действовать наверняка и все же создавать Rev.0 компьютера или сделать плату расширения непосредственно в гнездо DE1. Пока делаю схему и одновременно буду думать. Плюс Rev0 в том, что заодно можно отладить I2C расширитель портов и TV выход без этих проблем с длинными проводами.
-
Линии ведь однонаправленные, попробуй согласовать их, что будет? С передающей стороны буферный усилитель, 100 ом последовательно, с принимающей 100 ом на землю. Например. Не знаю, что получится =)