编辑器版本 ×
标准版

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 DJS-08 电子计算机

简介:采用74LS系列和PLD器件组成的简易8位CPU,采用哈佛架构,64K ROM + 64K RAM,外部总线为标准8080时序

开源协议: GPL 3.0

发布时间: 2023-01-30 09:58:52
  • 6.5k
  • 24
  • 92
描述

此项目是一个DIY 简易8位CPU的工程。

 

CPU基本性能:

速度:1Hz-2.048MHz,3T-5T单周期,大部分指令是5T,少部分3T(折合每秒钟40万次加法)

ROM:64KB(或32KB)

RAM:64KB

总线和ALU位宽:8

指令长度(带立即数):16

指针栈:4级16bit

硬件中断:单级、255向量半中断(注:中断函数中不支持某些指令)

显卡:无

键盘:无

外部总线:8080时序、64KB

 

结构框图如下:

该架构参考了1972年由英特尔发布的8008 CPU,采用单内部总线,指令集基本参考8008,运算和逻辑指令类同,有4个flag寄存器。

由于原版的8008采用了CDIP-18封装,时序刁钻,因此本设计首先把外部总线的地址线和数据线分离,然后把16KB寻址范围扩大到64KB+64KB的哈佛结构,但程序执行时不支持跳转到RAM内执行。

 

该设计主要由以下几个部分:

    1.时钟振荡器和复位电路

        时钟源部分采用了四种来源,分别是:7556产生的1Hz低频、25Hz低频、手动按钮信号、8224产生2.048MHz高频时钟源,在硬件电路上做任意切换。复位电路带有上电复位功能。由于指令中有HLT(停机),因此板上自带一个READY按钮方便调试。

      2.算数运算部分(ALU)

        ALU采用西格尼蒂克公司的N8260运算单元,拥有全加、与门、同或三种运算功能,在外加的74LS86异或门和74LS153 MUX的辅助下,拥有减法、异或、逻辑位移、比较等功能。ALU设立单独的AB寄存器,与主寄存器堆上的AB寄存器没有任何联系。有四个FLAG,分别是:CF SF ZF PF ,当有加法进位或减法借位时,CF<=1,;当输出的数为0x00/00000000时,ZF<=1;当输出的最高位/符号位为1时,SF<=1;当输出的8个字节中有偶数个1时,PF<= 1。

      3. 寄存器堆

      ABCDEFXY 8个通用无特殊功能寄存器,P寄存器(内部RAM指针)、内RAM映射、DPTRH、DPTRL、INDEX三个寄存器,指向外部RAM单元,指针计算公式:256*DPTRH + DPTRL + INDEX 、外部RAM映射(读写操作同内部寄存器)、PC暂存器(两个寄存器但一个映射,通过阻塞串联实现两个8位写入16位操作)、只输入口映射、AF寄存器双向IO口映射(和51单片机的IO口同地址映射类似)

      4. PC程序计数器和指针栈

       可以实现0000-FFFF的寻址操作,每取得一个8bit程序指令,PC+1 。 在JMP指令执行时,PC寄存器中的高低8位数据压入PC,原16位进程舍弃。在CAL中,将PC中高低8位压入PC,同时原PC中16位进程压入指针栈。在RET指令中,将指针栈顶16bit数据压入PC,PC中原进程舍弃。

      5.  外部中断控制器

        一个很不完善的中断机制,只能做一些简单的操作,没有寄存器状态恢复,没有PSW保存与恢复,很不推荐使用

      6. 控制器

   由4片GAL16V8/ATF16V8组成的控制器,结构简单,详情略

 

指令集:

NOP 空跑

HLT 停机

HLTDMA (DMA可控停机)

ADD/ADC/ADDI/ADCI (带/不带立即数的加/全加)

SUB/SBC/SUBI/SBCI (带/不带立即数的 减法/带借位减法)

NXR/NXRI 同或

XOR 异或

AND /ANDI 按位与

CMP/CMPI 比较

RR/RL 补0的右移/左移

RRC/RLC 补进位的右移/左移

JMP/JMC/JNC/JMZ.... (跳转/当CF= 1时跳转/当CF=0时跳转.... 其他flag类同)

CAL/CLC/CNC/CLZ.... (子函数调用/当CF= 1时调用/当CF=0时调用.... 其他flag类同)

RET/RTC/RNC/RTZ.... (子函数返回/当CF= 1时返回/当CF=0时返回.... 其他flag类同)

 

目前暂时没有汇编器,机器码结构如PDF和上图所示,该指令集对手写汇编非常友好

 

注:

        1.目前项目还在进行中,并没有测试完所有的硬件功能和指令集。今后会继续完善该开源

        2.该项目虽然标注为标准版,但是画的PCB文件在专业版中(见附件的备份压缩包),因此请使用立创EDA专业版导入并打开,该文件是最后的成品PCB文件!!!

        3.目前版本使用了很多停产40多年的器件,部分器件很难购买,请谨慎参考!

 

PCB预览图:

 

实物图:通电测试中

 

 

示例代码:

 

实现在LCD1602上显示“HELLO WORLD!”,具体映射地址如下
write cmd 0xff00
write data 0xff02
read cmd 0xff01
read data 0xff03

 

LCD写命令的启动代码如下:
0x38
0x0c
0x06
0x01

 

需要写入的数据和地址如下(地址--该地址写入的数据),每写一个数据前,都需要输入地址,写地址用写指令操作,写数据用写数据操作
80--48  
81--45
82--4c
83--4c
84--4f
85--20
86--57
87--4f
88--52
89--4c
8a--44
8b--21
(这些ASCII码合起来是“HELLO WORLD!”包括空格)

下面是代码:    ****时钟频率1.33MHz(使用12MHz晶振)*****

MOVI H 0xff          //   1C FF
MOVI L 0x00         //   1C 00
---------------------------------------
MOVI A , 0x38         //   10 38
MOVI PC 0x01         //   19 01
MOVI PC 0x40         //   19 40
CAL                          //   E1 FF
MOVI A , 0x0c         //   10 0C
MOVI PC 0x01         //   19 01
MOVI PC 0x40         //   19 40
CAL                          //   E1 FF
MOVI A , 0x06         //   10 0C
MOVI PC 0x01         //   19 01
MOVI PC 0x40         //   19 40
CAL                          //   E1 FF
MOVI A , 0x01         //   10 01
MOVI PC 0x01         //   19 01
MOVI PC 0x40         //   19 40
CAL                          //   E1 FF
--------------------------------------------
MOVI A 0x80           //   10 80
MOVI B , 48             //   11 48
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 45             //   11 45
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 4c             //   11 4C
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 4c             //   11 4C
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 4f              //   11 4F
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
------------------------------------
MOVI B , 00             //   11 00
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
------------------------------------
MOVI B , 57             //   11 57 
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 4f              //   11 4F 
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 52             //   11 52
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 4c              //   11 4C
MOVI PC 0x01          //   19 01
MOVI PC 0x00          //   19 00
CAL                           //   E1 FF
MOVI B , 44             //   11 44
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
MOVI B , 21             //   11 21
MOVI PC 0x01         //   19 01
MOVI PC 0x00         //   19 00
CAL                          //   E1 FF
--------------------------------------------------------
HLT                          //   FFFF

(.org 0x0100) 写数据子函数 
MOVI PC 0x01          //   19 01
MOVI PC 0x40          //   19 40
CAL                           //   E1 FF
MOVI IDX , 0x02       //   18 02
MOV RAM , B           //   90 F1
ADDI A , 0x01           //   20 01
MOVI PC , 0x01        //   19 01
MOVI PC , 0x20        //   19 20
CAL                          //    E1 FF
RET                          //    E2 FF

(.org 0x0120) 写读忙+等忙子函数
MOVI IDX 0x01         //   18 01
MOV D , RAM          //    90 3F
ADDI D , 0x80          //    23 80
JMPC                       //     E0 80
RET                          //     E2 FF

(.org 0x0140) 写命令子函数
MOVI IDX 0x00       //    18 00
MOV RAM , A         //    90 F0
MOVI PC , 0x01      //    19 01
MOVI PC , 0x20     //     19 20
CAL                        //     E1 FF
RET                        //     E2 FF


未完待续...

ID Name Designator Footprint Quantity
1 10p C16,C33 5.08 2
2 74138/74LS138/74HC138 IC19,IC41,IC31 PDIP-16 3
3 7474/74LS74/74HC74 IC28 DIP-14N 1
4 7402/74LS02/74HC02 IC29,IC92 DIP-14N 2
5 74238/74LS238/74HC238 IC33,IC40 PDIP-16 2
6 7414/74LS14/74HC14 IC61,IC30,IC84 DIP-14N 3
7 74244/74LS244/74HC244 IC64,IC9,IC42,IC44,IC45,IC48,IC53,IC65,IC88 PDIP-20 9
8 7430/74LS30/74HC30 IC83,IC98 DIP-14N 2
9 ATF16V8B IC91,IC95,IC96,IC99 PDIP-20 4
10 7410/74LS10/74HC10 IC93,IC34 DIP-14N 2
11 74157/74LS157/74HC157 IC94,IC97,IC12,IC58,IC59,IC60 PDIP-16 6
12 LED INTRQ,JMP,MCLK,RAMEN,READ,REGIN,REGOUT,WRITE,AL0,AL1,AL2,AL3,AL4,AL5,AL6,AL7,DB0,DB1,DB2,DB3,DB4,DB5,DB6,DB7,CLOCK,F0,F1,F2,F3,F4,F5,HLT,POWER LED-TH_F3-F5 33
13 8p*2.54mm-switch K2,K1 SW-TH-2*8P 2
14 100 R6 1/4W-8.1MM 1
15 10k RN1,RN7,RN5,RN2,RN3,RN4,RN8,RN6,RN9 RES-ARRAY-TH_9P-P2.54-D1.0 9
16 74153/74LS153/74HC153 IC1,IC2,IC3,IC4 PDIP-16 4
17 74688/74LS688/SN74H688 IC14 PDIP-20 1
18 74280/74LS280 IC15 DIP-14N 1
19 N8260 IC16,IC17 DIP-24-15.24 2
20 74151/74LS151/74HC151 IC18 PDIP-16 1
21 7486/74LS86/74HC86 IC20,IC21,IC22 DIP-14N 3
22 74574/SN74HC574 IC23,IC24,IC5,IC6,IC35,IC36,IC37,IC38,IC39,IC43,IC46,IC47,IC49,IC50,IC51,IC52,IC66,IC86,IC87 PDIP-20 19
23 SD143A IC25 PDIP-16 1
24 T696 IC100 PDIP-16 1
25 1N5817 D3,D4,D5,D6,D7,D8,D9,D10,D2,D16 DO-41_BD2.4-L4.7-P8.70-D0.9-FD 10
26 排针2.54_1x3 H1 HDR-TH_3P-P2.54-V-M-1 1
27 74194/74LS194/74HC194 IC7,IC8,IC10,IC11,IC68,IC69,IC70,IC71,IC72,IC73,IC74,IC78,IC79,IC80,IC81,IC82 PDIP-16 16
28 74161/74LS161/74HC161 IC54,IC55,IC56,IC57 PDIP-16 4
29 HM6116 RAM1 DIP-24-15.24 1
30 106 C1,C8 5.08 2
31 105 C2,C3,C7,C9,C14 5.08 5
32 47p C4 5.08 1
33 103 C5,C6 5.08 2
34 K4-6×6_TH CLK,READY,RESET KEY-TH_4P-L6.0-W6.0-P4.50-LS6.5 3
35 1N5817-T D17,D18,D19,D20,D21 DO-41_BD2.4-L4.7-P8.70-D0.9-FD 5
36 SD142A IC13 DIP-18-7.62 1
37 UPB8224C IC26 PDIP-16 1
38 5G7556 IC27 DIP-14N 1
39 T216 IC32 PDIP-16 1
40 KIA7042 IC89 TO-92-3_L4.8-W3.7-P2.54-L 1
41 4.7K R1,R2 1/4W-8.1MM 2
42 4.7k R3,R34 1/4W-8.1MM 2
43 330 R11 1/4W-8.1MM 1
44 33k R16,R17 1/4W-8.1MM 2
45 47k R18,R19 1/4W-8.1MM 2
46 NDS-04-V SW1 SW-TH_8P-L11.8-W9.9-P2.54-LS7.6 1
47 18.432MHz XTAL1 HC-49S_L11.0-W4.7-P4.88 1
48 100uF C10 CAP-TH_10*16 1
49 102 C11 5.08 1
50 10uF C12,C15 CAP-TH_8*12 2
51 470uF C13 CAP-TH_10*16 1
52 1N4148 DO-35 D1 DO-35 1N4148 1
53 1N4733 D11,D13 DO-41_BD2.4-L4.7-P8.70-D0.9-RD 2
54 1N4148 D12 DO-35 1N4148 1
55 DC-005 DC1 DC-IN-TH_DC-005-A250 1
56 2.5A FUSE RES-TH_BD4.5-L11.5-P15.50-D0.7 1
57 5G14E IC90 5G14E 1
58 2SK170 J1 2SK170 1
59 DBT10-7.62-3P-BK PWR1 CONN-TH_3P-P7.62_DBT10-7.62-3P-BK 1
60 BC558 Q1,Q2,Q9,Q10,Q13 TO92-BCXXX 5
61 BC548 Q3,Q4,Q5,Q6,Q7,Q8,Q14,Q15,Q16 TO92-BCXXX 9
62 3DD15/2N3055 Q11 TO-3/3DD15/2N3055 1
63 3DG12 Q12 TO-39 1
64 51k R20 1/4W-8.1MM 1
65 240 R21,R33 1/4W-8.1MM 2
66 0.33 R22 RES-TH_BD4.5-L11.5-P15.50-D0.7 1
67 2.4k R23,R14 1/4W-8.1MM 2
68 3.3k R24 1/4W-8.1MM 1
69 3k R35 1/4W-8.1MM 1
70 5k R85 RES-ADJ-TH_VZ067TL1B202 1
71 琴键开关 SW2 琴键开关 1
72 X9555WV-2X*20P H4 CONN-TH_2*20P_2.54 1
73 P8216 IC62,IC63 PDIP-16 2
74 7483/74LS83/74HC83 IC67,IC75,IC76,IC77 PDIP-16 4
75 7400/74LS00/74HC00 IC85 DIP-14N 1
76 1k R15 1/4W-8.1MM 1
77 HM62256 RAM2 PDIP-28-15.24 1
78 SST27SF512 ROM1 PDIP-28-15.24 1

展开

工程成员
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

  • 开源平台公众号