2015-10-25 59 views
3

我試圖製作一臺使用z80的復古電腦,理想情況下想讓它能夠從SD卡啓動。我100%使用z80,不想使用帶有內部SPI硬件接口的微控制器。我想了解計算機的硬件和軟件方面,因此,在購買之前,硬件方面已經完成,因此,Arduino和微控制器不在場了。無論如何,我的主要問題是可以將移位寄存器,某些解碼邏輯和軟件結​​合起來,以通過SPI模式從SD卡讀取數據嗎?我已經搜索了幾個小時的互聯網,閱讀了幾篇文章,似乎找不到教程。我瞭解SPI協議,然而,由於微控制器傾向於內置所有硬件,所以缺乏關於硬件方面的信息。我計劃將SD卡的SOMI連接到移位寄存器的串行輸入引腳SIMO的SD卡連接到移位寄存器的串行輸出引腳,然後將一些數據引腳連接到一些觸發器,其間具有一些解碼邏輯,這樣,如果我輸出到特定端口,它將觸發觸發器。觸發器將用作SD卡的時鐘和芯片使能線。我還將z80的一個引腳連接到移位寄存器的鎖存引腳(再次將解碼邏輯插入),以便如果我輸出到特定端口,它將鎖存移位寄存器的數據。我不關心速度/效率,只要我能準確讀取SD卡中的數據。另外,我是否將移位寄存器時鐘輸入連接到與連接SD卡相同的時鐘?任何意見如何實施這將不勝感激,謝謝!SPI z80的硬件接口

回答

2

你真的可以在普通的IO上點一下SPI。您所需要的只是時鐘信號的邊緣中斷和芯片選擇的電平中斷。其他一切都可以通過軟件完成。要發送,保持芯片選擇爲低電平,並按期望的速率輸出MOSI上的位。要接收,通過在時鐘線上所需的邊沿上關閉MISO的位來處理片選。當芯片選擇線變回高電平時,將所有內容都粘貼在緩衝區中並處理緩衝區。

+0

難道我在本質上是用移位寄存器做的嗎? z80沒有串行輸入引腳,無法單獨更改各個輸出引腳/創建電平輸出的狀態。這就是爲什麼我使用連接到輸出端口的觸發器來產生時鐘/芯片使能信號的原因。原諒我缺乏知識,這是我最近的一個愛好,而且我必須自學幾乎所有的知識,並且可能誤解/誤解了一些事情。 – Ki11akd0g

+1

是的,我只是建議移位寄存器不是必需的。當然,如果您的特定微型電腦沒有任何觸發外部信號中斷的方法,則可以使用外部移位寄存器。但是真的,任何IO都可以是串行IO。大多數微型計算機都具有「並行IO」,但沒有任何東西阻止你串行使用它們。 –

+1

我應該補充說,通常情況下,當它直接連接到內存總線時,或者如果您需要高速時,您通常會看到外部移位器。顯然,位撞的速度會比較慢,但在微控制器項目中速度往往不是問題。通常的目標是讓微控制器儘可能地做到節能。 –