Аппаратный интерфейс SPI для z80

Я пытаюсь сделать ретро-компьютер, используя z80, и в идеале хотел бы дать ему возможность загружаться с SD-карты. Я на 100% настроен на использование z80 и не хочу использовать микроконтроллер с внутренним аппаратным интерфейсом SPI. Я хочу понять как аппаратные, так и программные аспекты компьютера, поэтому arduinos и микроконтроллеры не обсуждаются, так как аппаратная часть завершена еще до того, как вы ее приобретете. В любом случае, мой главный вопрос: возможно ли объединить сдвиговый регистр, некоторую логику декодирования и программное обеспечение для чтения с SD-карты в режиме SPI? Я искал в Интернете часами, прочитал несколько статей и, похоже, не могу найти учебник. Я понимаю протокол SPI, однако информации об аппаратной части не хватает, поскольку в микроконтроллеры, как правило, встроено все оборудование. Я планировал подключить SOMI SD-карты к последовательному входному контакту регистра сдвига, SIMO SD-карты к последовательному выводу регистра сдвига, а затем подключить несколько выводов данных к некоторым триггерам с некоторой логикой декодирования между ними, так что, если я вывожу на определенный порт, он переключит триггеры. Триггеры будут служить линиями включения часов и чипов на SD-карту. Я бы также подключил контакт z80 к контакту-защелке регистра сдвига (опять же с логикой декодирования между ними), чтобы при выводе на определенный порт он фиксировал данные регистра сдвига. Я не обеспокоен скоростью / эффективностью, пока я могу точно читать данные с SD-карты. Кроме того, могу ли я подключить вход часов сдвигового регистра к тем же часам, к которым подключаю SD-карту? Любые советы о том, как реализовать это, будут оценены, спасибо!

2 ответа

Решение

Вы действительно могли бы просто убить SPI на обычных IO. Все, что вам нужно, это прерывание по фронту для тактового сигнала и прерывание по уровню для выбора микросхемы. Все остальное можно сделать программно. Чтобы отправить, удерживайте микросхему на низком уровне и синхронизируйте биты на MOSI с желаемой скоростью. Чтобы получить, обработайте чип, выбирая понижающий уровень, отбирая биты из MISO на желаемом фронте тактовой линии. Вставьте все в буфер и обработайте буфер, когда строка выбора микросхемы вернется к началу.

У меня было быстрое и грязное решение для моего Z80, позволяющее считать стандартный файл с SD-карты в оперативную память, на котором работал мой z80. По крайней мере, для меня это значительно упростило задачу. Я отмечаю, что вы не упомянули об Arduino, однако вы можете использовать его только для SDCARD, и он действует как контроллер, извлекая данные из SDCARD и передавая их по набору, состоящему, скажем, не более чем из 3 строк (очень похоже на то, как вы видели бы на старые дисководы гибких дисков, внутренняя работа которых не подвергается воздействию системы z80). Он имеет дополнительное преимущество в управлении файловой системой FAT, по крайней мере, до тех пор, пока вы не сможете разработать собственную файловую систему z80. Однако следите за размером единицы размещения / фрагмента SD, это кое-что в программных библиотеках Arduino, на которые мне нужно обратить внимание.

Другие вопросы по тегам