本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 ATmega32A 的自制计算机设计

发布时间:2021-10-10
分享到:

基于 ATmega32A 的自制计算机设计

发布时间:2021-10-10
分享到:

Z80-MBC2 是一款易于构建的 Z80 SBC(单板计算机)。它是 Z80-MBC的“进化” ,带有 SD 作为“磁盘模拟器”并带有用于 CP/M 3 的 128KB 存储 RAM(但它也可以运行 CP/M 2.2、QP/M 2.71、UCSD Pascal 和 Collapse OS)。

它有一个可选的板载 16x GPIO 扩展器,并为 SD 和 RTC 选项使用常见的廉价附加模块。它有一个“Arduino 心脏”,使用 Atmega32A 作为 EEPROM 和“通用”I/O 仿真器(因此不需要“传统”EPROM 编程器)。

它是一个完整的开发“生态系统”,使用iLoad引导模式可以交叉编译。

如图:

硬件概述
“基本系统”所需的 IC 是:

Z80 CPU CMOS (Z84C00) 8Mhz 或更高
Atmega32A
TC551001-70(128kB 内存)
74HC00
如果您想要 16x GPIO 扩展(GPE 选项),还需要添加一个 MCP23017。

原理图和 BOM 附在文件部分。MCU Atmega32A 用作通用 I/O 子系统、Eeprom 以及 Z80 CPU 的复位和 4/8MHz 时钟发生器。
在 Atmega32A 内部,它闪现了从这里获取的 Arduino 引导加载程序,并且可以使用 Arduino IDE 的 Board Manager 来“导入”它。

首先刷新 Arduino 引导加载程序(使用您喜欢的方法),然后您可以上传 IOS“草图”(与 Z80 总线交互并“虚拟化”EEPROM 和 Z80 CPU 看到的所有外围设备的 I/O 子系统) 使用 Arduino IDE。

您可以使用板载ICSP端口J3(也称为 ISP 端口)来编写引导加载程序,但请记住在使用时断开任何其他连接器。此外,当使用 ICSP 端口时,SD 和 RTC 模块(如果存在)必须从板上移除。

作为 Z80 CPU 的时钟源,它使用 16MHz Atmega32A 振荡器,因此“外部 16MHZ osc”。从 Arduino IDE 刷新引导加载程序时,必须选择引导加载程序变体!。

74HC00 用作 RS 触发器以在 I/O 操作期间停止 Z80 CPU,为 Atmega32A 提供所需的时间与 Z80 总线交互,并作为 MMU 的一部分。

请注意,此处只能使用 Z80 CPU 的 CMOS 版本。这是因为只有 CMOS 版本,在此原理图中所考虑的给定条件下,具有与 Atmega32A 和 74HC00 兼容的逻辑电平。


关于组件的说明:
您应该使用至少 8MHz 的 Z80 CMOS 速度等级来实现全速,但是将时钟速度设置为 4MHz 您也可以使用 4MHz Z80 CMOS 版本(或者您可以尝试以 8MHz 超频它......)。如果您已经拥有 74HCT00,则可以将 74HC00 替换为 74HCT00。RAM 芯片 TC551001-70 可以用任何合适的 128kB SRAM 代替)。

请注意,用户LED * 必须 * 是蓝色或白色(或粉红色...我有一些粉红色 LED,它们的 Vf 似乎与蓝色 LED 类似。可能我会用它们做一块板...)确保V(forward) >= 2.7V(否则 USER 键可能无法按预期工作)。

的J4连接器(AUX_P)目前不支持,并且不被默认填充。

当前不支持底部的三个焊接跳线 ( SJ1-3 ),必须保持打开状态(如原理图中所述)。


串口:
的  SERIAL端口(J2,见示意图)可以用TTL-RS232适配器连接,或与串行USB适配器。
我使用了一个串行 USB 适配器,它也用作 Z80-MBC 的电源,并且具有用于从 Arduino IDE 驱动的“自动重置”的DTR信号。对于具有串行 TTL 端口的终端,不需要适配器。

当然,要从 Arduino IDE 上传“草图”,您需要使用连接到 SERIAL 端口的串行 USB 适配器。

请注意,目前不支持 SERIAL 端口的 RTS 和 CTS 引脚,必须保持不连接(作为 NC 引脚!)。

串行 USB 适配器的 3V3 引脚必须断开连接。

您应该使用那些在连接器上具有 DTR 引脚的串行 USB 适配器。建议还提供 CTS/RTS 信号以供将来升级:

可选的 RTC 模块:
RTC 是一种基于 DS3231 RTC 的通用模块,如下所示:

这种便宜的模块具有涓流充电电路,如果您使用标准的 CR2032 电池,可能会导致电池“爆炸”。此外,它还会损坏可充电 LIR2032 电池。有关更多信息以及如何修复它,请参见此处。

RTC 模块在 SDA 和 SCL 上有自己的上拉电阻。由于该值为 4k7(与 Z80-MBC2 板内部使用的值相同),因此结果值为:

4k7 // 4k7 = 2k3

因为这个值很好,所以不需要去掉 RTC 模块上的上拉。

注意插入模块的方式和位置(唯一正确的连接器是J5标记为RTC_MOD)。如果您将其插入错误的连接器或以错误的方式插入,则可能会对模块和 Z80-MBC2 板造成永久性损坏!所以如图所示插入它(这里是安装了 GPE 选项的板):

适用于 Z80-MBC2 的 uTERM、类似 VT100 的终端
uTerm (micro-Term) 是 Z80-MBC2 的类似 VT100 的终端。它有一个 VGA 输出和 PS/2 键盘连接器、一个 Z80-MBC2 电源和一个“透明”串行 USB 端口。

uTerm 可以水平或垂直安装到 Z80-MBC2。

使用 uTerm,Z80-MBC2 成为一台“自主”计算机:

 uCOM、RS232 适用于 Z80-MBC2 
uCom (micro-Com) 是 Z80-MBC2 的 RS232 适配器。它具有 Z80-MBC2 的电源和“透明”串行 USB 端口。

uCom 可以水平或垂直安装到 Z80-MBC2:

通过 uCom,Z80-MBC2 可以与“老式”RS232 终端一起使用:
uCom 的所有详细信息都在这里。
软件概述 
在由于不同的硬件设计进行了必要的修改之后,我已经使用伟大的 Grant Searle站点中提供的源将 Basic 解释器“移植”到 Z80-MBC 。在 Grant 的网站上,要求承认他的网站使用这个来源,所以我在这里做了(并且我还通过电子邮件向他发送了关于这件事的信息)。生成的 ROM 映像存储在 Atmega32A 内(仅适用于 IOS-LITE),并在系统启动期间由 Atmega32A 加载到 TC551001 RAM 中。

Forth 解释器是Bill Westfield为 Z80-MBC提供的那个解释器的修改版本(用于 Z80-MBC2)。

如何进入“选择启动模式或系统参数”菜单:
要进入“选择启动模式或系统参数”,您必须按下RESET 键(SW2),松开它并立即按下USER 键(SW1) 并按住它直到 IOS LED 开始闪烁。

另一种方法是同时按下两个键,松开RESET 键,同时按住USER 键直到 IOS LED 开始闪烁,或者您在屏幕上看到菜单。

以下屏幕截图显示了为 IOS-LITE 和 IOS 安装了 RTC 模块和 GPE 选项时的菜单:

如何使用 CPMTOOLSGUI 在虚拟磁盘中添加文件
Z80-MBC2 将 A: B: C: 等任何磁盘映射到 SD 卡上的映像文件中,文件名为:DSxNyy.DSK;

其中x(从 0 到 9)是操作系统:

0 = CP/M 2.2
1 = QP/M 2.71
2 = CP/M 3


和YY(从00到15)是圆盘(00 = A:01 = B:等)。


您可以从这里下载CpmtoolsGUI(英文 Windows 版)。


在新文件夹中提取文件 CpmtoolsGUI.exe 并添加/覆盖文件diskdefs,将其从SD 内的文件夹cpmtools复制。


-> 第 1 步

在CpmtoolsGUI工具的左上角窗口(Image File)中选择要添加文件的虚拟磁盘。


对于CP / M 2.2和QP / M 2.71:
选择“ z80mbc2-D0 ”仅用于磁盘0或“ z80mbc2-D1 ”为他人(磁盘1 - 15)在CpmtoolsGUI的左下窗口(格式)。

在下图中选择(Image File)磁盘DS0N02.DSK对应于CP/M 2.2 OS (x = 0)的磁盘 C: (yy = disk = 02 ):

在中心窗口中,您可以看到所选虚拟磁盘(磁盘 0 - 15)内的所有文件。

请注意,如果您选择一个空磁盘(如 P:),您将不会在 CpmtoolsGUI 工具的中心窗口中看到任何文件名。


对于 CP/M 3:
在 CpmtoolsGUI 的左下方窗口(格式)中为任何磁盘选择“ z80mbc2-cpm3 ”。

在下图中选择(图像文件)对应于磁盘 A的磁盘DS2N00.DSK :(yy = 磁盘 = 00)的CP/M 3 OS (x = 2):

步骤 2

要将一个或多个文件添加到选定的虚拟磁盘,您只需将右上方的选择窗口指向 PC 中存储新文件的文件夹,使用右下方的选择窗口选择它们,然后按“ <-P ”按钮. 添加后,您将在中心窗口中看到添加的文件名(以及之前存在的其他文件)。


步骤 3

按 eXit按钮退出CpmtoolsGUI 工具。

如果您对此项目有任何想法、意见或问题,请在下方留言。

外文原文:点击进入
声明:本文由Hackaday授权电路城翻译,系电路城的原创内容,转载请注明出处! 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论