×

构建8位计算机开源分享

消耗积分:2 | 格式:zip | 大小:0.83 MB | 2022-10-28

凤毛麟角

分享资料个

描述

我正在写一本关于旧电脑的书。哦,对不起:我的意思是 80 年代的“老式计算机”。我的主要目标是展示如何从头开始构建 8 位计算机。这意味着:如何设置CPU,如何连接内存,如何连接外围芯片,以及为什么要连接。

这台计算机是“演示结构”:一台基于 8085 CPU、32kB (EEP)ROM 和 32kB RAM、串行连接和并行端口的计算机。一切都应该尽可能简单。这是一个结果。

等一下——为什么是预兆?

很简单。OMEN 是捷克语表达“Osmibitový Mikropočítač pro Elektronické Nadšence”的缩写(当然),意思是“电子爱好者的 8 位微型计算机”。

当然——当我连接扬声器并播放一首曲子时,我实现的第一首曲子是……对,Prodigy 的“The Omen”!

成为 Patreon 的赞助人

加快生产和创新周期,成为赞助人。..

监视器 v3

Monitor v3 有四个命令:

  • D用于内存转储
  • M是内存变化
  • G代表围棋
  • :用于加载 HEX 文件
  • B调用 TINY BASIC
  • X设置断点
  • R在程序中断后显示/更改寄存器
  • C代表休息后继续

您可以通过 R 命令将所需的值设置到寄存器中,包括 PC 寄存器,然后通过 C 命令运行程序。

EEPROM 在地址 1000h 包含 TINY BASIC,因此输入 G1000 启动 BASIC。

替代监视器 MON85

我添加了Dave Dunfield的MON85 显示器。不是原始版本,而是 Roman Borik 的改进版本

你可以在 GitHub 上找到所有的源代码和现成的图像。

MON85 改进:

  • 支持未记录的 8085 指令 DSUB B、ARHL、RDEL、LDHI d8、LDSI d8、LHLX D、SHLX D、JNK a16、JK a16、RSTV
  • 命令 R 显示 F 寄存器 (SZKA3PVC) 的所有标志。如果未设置标志,则显示破折号“-”。
  • 添加了重启向量 RST 8 (0040h) 以便处理 RSTV 呼叫。
  • 更改了跟踪模式。进入 TRACE 模式后,显示实际 PC 上的指令和寄存器内容(如果已打开)。输入空格 ' ' 会执行这条指令,并返回到下一条指令的 'T>' 提示符。
  • 指令 LXI、DAD、INX、DCX 显示参数“SP”而不是“S”。
  • 如果输入的值不适合 1 个字节,则需要 1 个字节参数的命令会引发错误。
  • 命令“C”检查源块和目标块的重叠,并使用适当的方向进行复制。
  • 命令“F”检查 参数并引发错误,如果 低于
  • 添加了命令“H”以英特尔 HEX 格式发送内存内容。
  • LF 和 CR 字符的发送是颠倒的,并按通常的顺序发送 - 首先是 CR,然后是 LF。

编程

很简单,只需用汇编语言编写一个程序,将其编译为 HEX 并复制/粘贴到串行监视器。然后使用 G 命令(as GO)运行。

LED 通过并行端口和 TINY BASIC 闪烁

原型照片库

 
pYYBAGNYvfCAN2gPAAF76aB4SiY698.jpg
 
1 / 15
 

PCB批次#2

稍微改进的 PCB 正在自己的路上——下周应该有 10 块到货。所以我会测试它并上传SCH、BRD以及Gerber文件。

 
poYBAGNYvfSAbOYXAAChotyAzTw231.png
 

与MAX7219的串行接口

 
pYYBAGNYvfuAfWnmAA4XLBRCsCo375.jpg
只是端口 C 的一点敲击
 

通过 8255 的端口 PC 进行简单的 SPI 模拟。

预兆阿尔法,第 2 期

PCB的第二版有一些新特性:

  • 系统连接器(24 针),带数据总线、A0-A2、/RD 和 /WR、7 个 /CS(解码)、系统时钟和一个中断
  • 用于外部中断请求的可选 IRQ (RST7.5)
  • 用于 EEPROM 的可切换 /WE 以实现就地编程
 
 
 
 
poYBAGNYvi2AWTw8ABN7bCAvrnM625.jpg
 
1 / 6OMEN Alpha 第 2 期
 

放置在 PCB 上的零件

这是放置图像的零件:

 
pYYBAGNYvjGAWBuhAAZ6SKp481c492.png
 

跳线等:

  • JP1 是一个串口。引脚(从下到上):GND、TxD、RxD(在“JP1”标签旁边)
  • JP2、JP3、JP4:8255 的并行端口。方形标记引脚 1,请参见下面的示意图。JP2是PA口,JP3是PB口,JP4是PC口
  • JP5 是 EEPROM 写使能。连接针脚 1-2 禁用写入,连接针脚 2-3 启用(针脚 1 位于最左侧,针脚 3 位于标签“JP5”旁边)
  • JP7 是 RST7.5 使能器。关闭以禁用中断,打开以启用。

系统连接器(在上边缘,方形标记引脚 1)

  • /写
  • D0
  • D1
  • D2
  • D3
  • D4
  • D5
  • D6
  • D7
  • A0
  • A1
  • A2
  • /RD
  • IO1
  • IO2
  • IO3
  • IO4
  • IO5
  • IO6
  • IO7
  • VCC
  • 接地
  • RST7.5
  • 时钟

并行端口

JP2、3、4:方形标记“Vcc”引脚。

 
poYBAGNYvjOAapTTAAA_aUHLnG0114.png
 

“先睹为快”,或者会发生什么?

 
pYYBAGNYvjaAcw5CAACvvfC4EAg467.png
 

(当然,它现在已经编译并且完全没有优化......)

LED显示屏和十六进制键盘

这是单板计算机的经典外围设备:LED 7段显示器和十六进制键盘。

当然,我可以使用经典的键盘矩阵和一些 7 段显示器,一堆电阻器和晶体管,然后焊接一个老式的。是的,我可以,而且很容易。相反,我使用了来自中国的廉价 LED+按键模块。其型号为QYF-TM1638。就是这个:

 
pYYBAGNYvkKAEscKACKE-15SOQw685.jpg
 

你可以在eBayAliExpress上以大约 3 美元的价格购买它。

它提供现代 LED 显示驱动程序和键盘扫描仪。它有一个串行接口——不是 UART,而是某种带有双向数据线的 SPI。

您需要三个引脚来连接此模块:选通引脚(CPU 输出)、时钟引脚(CPU 输出)和数据引脚(bidir)。于是出现了一个问题:在OMEN Alpha中如何实现一个bidir接口?

我用的是82C55的并行接口,C口。C口可以分成两组(上半部和下半部,PC7-PC4和PC3-PC0),可以独立配置为输入或输出。端口 A 和 B 对整个端口具有相同的方向。

所以我将端口C的下半部分设置为STB和CLK的输出,上半部分可以在输入和输出之间切换。数据引脚 DIO 连接到端口 C 引脚 7。

这是驱动程序的源代码它没有优化,直接且相当丑陋,但它有效!

 
 
 
 
pYYBAGNYvnKAFSYuAB8tPAZmsOU102.jpg
 
1 / 2用于 TM1638 模块的 3D 打印外壳
 

套件可在 Tindie 上获得

PCB - 第 4 期

我的 Tindie 商店缺货,所以我决定制造一批新的 PCB。我跳过了第 3 期(背板版)并制作了一个新的、略微改进的版本,第 4 期。改进是:

- 信号 RESET 和 READY 被添加到应用程序/系统总线

- READY 和 Vcc 之间的 10k 上拉电阻,通过集电极开路驱动器驱动这条线路

- 移除了 LED 和 330R 电阻。添加了三个引脚:SID、SOD 和 GND,以享受串口。

- 移除了 22pF 电容器的一处。

进一步的计划

我计划更多的 OMEN 命名为Bravo Charlie 、 Delta 、 Echo 等。Bravo类似于 SBC,但使用 65C02 CPU。还有其他的?敬请关注!

去Zilog,还是不去Zilog?

问题很简单:您想要一个类似于 OMEN Alpha 的基于 Zilog Z80 的简单计算机套件吗?在这里投票

监视器 v4

有关新闻和下载,请参见GitHub 页面

印刷电路板

我可以推荐Seeed Fusion PCB 组装服务。它为 PCB 制造、PCB 组装提供一站式原型设计,因此他们可以在 7 个工作日内生产出优质的 PCB 和快速交钥匙 PCBA。当您使用 Seeed Fusion 进行原型制作时,他们绝对可以为您提供免费的 DFA 和免费的功能测试!查看他们的网站,了解他们的制造能力和服务。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !