Аппаратный интерфейс SPI к z80


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

1 3

1 ответ:

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