2015-10-25 54 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

我应该补充说,通常情况下,当它直接连接到内存总线时,或者如果您需要高速时,您通常会看到外部移位器。显然,位撞的速度会比较慢,但在微控制器项目中速度往往不是问题。通常的目标是让微控制器尽可能地做到节能。 –