计算机是怎么跑起来的?从零开始手动组装微型计算机

主要IC元件

  • Z80 CPU,8位,8个数据总线引脚(因此最多一次输出8位,代号D0~7),16个地址总线引脚(代号A0~15,可标识2的16次方个地址即2K)
  • Z80 PIO,负责cpu与io设备的之间的并行io(一排一排的输出8bit),8个数据总线引脚,两个输入输出端口(每个有8个引脚,分别可以连接一个8bit的io设备)
  • TC5517 内存,2k,以8bit为单位,8个数据总线引脚、8个地址总线引脚
  • 时钟,2,5MHz
  • io设备,指拨开关(3个)、LED灯(8个)
  • 其他辅助设备,三态总线缓冲器(4个)、六反相器(2个)、电容、电阻、电源、导线、按键开关(2个)、快动开关(2个)

开始组装

1.CPU、内存连接电源、数据和地址总线

(1)电源的连接

每个引脚上的电压要么是5V,要么是0V,分别代表数字1和0,通过电压的变化进行消息的收发

Vcc引脚和GND引脚,分别连接5V和0V电源上

(2)数据总线和地址总线

z80和5517上的A0-7和D0-7引脚连起来,5517上有2048个存储单元(每个单元8bit),但是由于只有8个地址引脚和cpu相连,能标识的地址单元也就是2的8次方,256个

2. 连接io

将pio的D0-D7的与cpu的数据引脚连起来,用于和cpu输入输出数据

将B/A和C/D引脚和cpu的A0-1连起来,AB选择端口,CD控制和数据(这里cpu的A0~1引脚既连接了内存也连接了io,如何区分呢,看第四部分)

3. 连接时钟

cpu和io的clk引脚连接

4. 连接控制区分是读写内存还是io的控制引脚

(1)区分内存和io

MREO和IORQ 引脚

MREO连内存的ce引脚;IORQ连io的IORQ和ce引脚

(2)区分读写

RD和WR引脚

cpu和内存的RD和WR相连,io一个RD引脚区分读写

5. 连接其他的控制引脚

  • INT引脚,控制中断,cpu和io的INT引脚相连
  • REST引脚,cpu从新从内存0号地址顺序执行指令,总线是连接在cpu数据、地址、控制引脚上的电路的总称;

6. 连接外部设备,从而可以通过DMA直接读写数据到内存

cpu上的BUSRQ和BUSAK引脚

BUSRQ 接收DMA请求,连接到快动开关,按下后将CPU从电路中隔离,这种状态下就可以不通过CPU直接向内存中读写数据了(这种行为就成为DMA)

BUSAK 响应DMA请求,隔离后需要BUSAK设成0,才能进入DMA,这个引脚连接在三态总线缓冲器上,通过这个ic连接io设备

7. 连接io外部设备

(1)输入内存程序和设定内存地址

4个三态总线缓冲器分别连接两个指拨开关和一个按键开关,缓冲器的另一端,其中一个指拨开关连接到数据总线(第一个开关),一个连接到地址总线(第二个开关),按键开关连接到cpu的WR引脚

(2)输入数据和输出结果

分别将一个指拨开关(第三个开关)和LED连到PIO 的AB端口的引脚上

最终连接图如下:

计算机是怎么跑起来的?从零开始手动组装微型计算机_第1张图片

输入测试

(1)启动程序:输入测试程序,通过拨动输入设备指拨开关,控制LED亮灭

先按下cpu上的DMA按键(BUSRQ引脚连着的快动开关),然后一行一行的分别用第一二个指拨开关(分别连着地址总线和数据总线)输入数据,没输入一行,按一下按键开关,程序写入内存的指定位置,全部写完后,按下reset引脚的开关,cpu开始准备从内存的第0个位置执行指令,程序开始跑起来了,

(2)输入数据,获得输出

通过第三个开关,输入数据,这时查看LED灯的亮灭情况

你可能感兴趣的:(单片机,fpga开发,嵌入式硬件)