OpenCores
URL https://opencores.org/ocsvn/cpu8080/cpu8080/trunk

Subversion Repositories cpu8080

[/] [cpu8080/] [trunk/] [project/] [readme.txt] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 samiam9512
8080 Compatible CPU: Overview
2
 
3
Details
4
 
5
Name: cpu8080
6
Created: 04-Oct-2006 23:44:45
7
Updated: 06-Oct-2006 22:16:26
8
 
9
Project maintainer
10
 
11
Scott A. Moore
12
 
13
Description
14
 
15
This is an 8080 core I created as a project to get to know Verilog.
16
 
17
The 8080 was the second in the series 8008->8080->Z80. It was the first
18 9 samiam9512
commercially available single chip CPU (disregarding the required clock and
19 5 samiam9512
demultiplexor chips). Besides being an interesting project, it also can serve as
20
a very compact core, suitable for a supervisor role on an FPGA with other
21
blocks. It has extensive support, all freely available, including assemblers,
22
compilers, an operating system (CP/M).
23
 
24
Although the Z80 is a more popular core due to being a superset of the 8080, the
25
Z80 takes considerably more chip real estate. Its likely that more than 50% of
26
available software is 8080 only, since the Z80 was often used to run 8080 code.
27
For example, the CP/M OS itself was 8080 only code.
28
 
29
This means that the 8080 can be an attractive core if you want the great support
30
of this processor series, but need it to fit in less space.
31
 
32
The core is fully instruction compatible with 8080, but not signal compatible.
33
The original 8080 was a multiplexed nightmare. one of the original selling
34
points of the Z80 was its cleanup of the signals, and the 8080 itself had a
35
companion chip that demultiplexed it.
36
 
37
There are a few other similar chips on opencores. This one is a bit different
38
because it is only 8080, and is in native Verilog (not a translation). Further,
39
the goal was to get it down to the minimum in both source size and synthesized
40
size.
41
 
42
I also suspect there is a preverse advantage to running this core: its original
43
manufacturer no longer makes it, or any compatible chip, and it has probally
44
passed from any IP protection long ago. However, as usual, Should warn that I
45
have not verified any legal status on this processor and do not speak from any
46
knowledge or authority on the matter.
47
 
48
Features
49
 
50
Instruction set: 8080
51
Data size: 8 bit
52
Address: 16 bit
53
Instruction: 8 bit
54
Language: Verilog
55
License: BSD
56
Created under: Xilinx ISE, free webpack edition
57
Device: xc3c1000-4ft256
58
Slices: 1104
59
Slice flip flops: 296
60
4 input LUTs: 2082
61
Bonded IOBs: 33
62
GCLKs: 1
63
 
64
The CPU works entirely on positive clock edges and signals, but could be
65
reconfigured easily. It has wait state ability, and simple interrupt
66
request/acknowledge structure. The original 8080 method of fetching an external
67
instruction to satisfy the interrupt is preserved, and it is left up to an
68
external interrupt controller to provide vectoring.
69
 
70
I have no problem with, and in fact encourage, commercial use, modifications
71
(public and private), etc.
72
 
73
Status
74
 
75
This project was synthesized and simulated, but has not yet been tried on real
76
hardware, I am going to obtain a FPGA evaluator board for that step.
77
 
78
The wait state and interrupt capability, as of this writing, have not been
79
verified.
80
 
81
It includes an elementary test bench with an instruction ROM, and RAM. Each of
82
the instructions of the 8080 has been given a walkthrough in simulation, and
83
verified to give the correct flags and results. Not all registers have been
84
tried with all instructions. The next step is I will make a full instruction
85
test that will go through all modes, to be loaded into the testbench rom, then
86
simulated, and (hopefully) used to create an automated regression test for the
87
CPU.
88
 
89
I expect to do several more edits to merge code in the CPU in attempts to make
90
it use less real estate and less source lines. I also plan to create an interrupt
91
controller, select controller and other add-ons towards the goal of a system
92
that runs on the target eval board. I am thinking towards running this on the
93
eval board, which includes VGA and keyboard boards, as a "virtual Altair" (an
94
early home computer using the 8080), that includes a serial I/O emulator and
95
enough resources to run CP/M.
96
 
97
I have no plans to extend the processor after that. The Z80 appears to be well
98
served here, so I won't be extending the core to cover that space. The 12
99
instructions that remain undefined in the 8080 can be useful to the embedded
100
designer to implement custom instructions.
101
 
102
If the core seems to be written by someone versed in CPU design, but stunningly
103
ignorant on Verilog matters, its because that is essentially the situation. I
104
used to design ICs at the schematic level, before all this HDL stuff, and
105
figgured I would try it out.
106
 
107
If you can see areas in the design where gates can be saved, by all means let me
108
know, and I'll get it put in there.
109
 
110
Development systems
111
 
112
There is TONS of software available for the 8080. The best way to go about it is
113
to run a CP/M simulator on your host machine. Here are a few:
114
 
115
http://www.schorn.ch/cpm/intro.html
116
http://www.moria.de/~michael/yaze-cpm3/
117
 
118
For development systems, try these forums:
119
 
120
http://www.retroarchive.org
121
http://www.cpm.z80.de/
122
 
123
This includes CP/M, assemblers, a basic compiler, the original Microsoft Basic
124
interpreter, Fortan compilers, Cobol, C (of course), Pascal, Modula, Algol, and
125
Ada.
126
 
127
You can find a lot more with a simple search.
128
 
129
CP/M itself is a good, small operating system to run on your target if you wish.
130
It can be adapted to your target hardware with a very simple BIOS, which can run
131
using a flash memory as the "disk" for it. The entire system fits in less than
132
256kb (yes, actually less than a meg), which was the common size of a floppy
133
disk back when this CPU was popular.
134
 
135
Documentation
136
 
137
Here are some locations that have the original 8080 documentation:
138
 
139
http://vt100.net/mirror/harte/Intel%208080%20Manual/
140
http://www.hartetechnologies.com/manuals/Intel%208080%20Manual/
141
http://www.imsai.net/whatsnew.htm
142
http://www.classiccmp.org/dunfield/heath/index.htm
143
 
144
That last link contains the "8080 Assembly language programming manual", which
145
is the book that I used to construct cpu8080, from my original coffee stained
146
edition, bought in 1977.
147
 
148
For people interested in the difference between the 8080 and its predecessor,
149
the 8008, the following site is available:
150
 
151
http://www.bitsavers.org/pdf/intel/MCS8/
152
 
153
Legal notice
154
 
155
The 8080 CPU implemented here was created as a not for profit student project.
156
I don't know if its use will violate patents, copyrights, trademark rights or
157
other rights. The source files were created entirely by me, but their use,
158
commercial or otherwise, and any legal, consequences that arise, are entirely
159
the responsibility of the user. I specifically deny that this core is usable for
160
life support systems, or any other system that can or will cause, directly or
161
indirectly, any harm to persons or property.
162
 
163
THESE SOURCE FILES ARE PROVIDED "AS IS" AND WITHOUT ANY
164
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
165
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
166
FITNESS FOR A PARTICULAR PURPOSE.
167
 
168
CVS Format
169
 
170
The CVS repository is under cpu8080.
171
 
172
I'll apologize in advance, but repository is basically a dump of my Xilinx ISE
173
directory. This is not the clean way to do it, but it does have the advantage
174
that if you are running ISE, you can download the entire thing and just go. Here
175
is a list of the important files in the directory:
176
 
177
readme.txt - A copy of this text
178
cpu8080.txt - The documentation for the project, in plain ASCII.
179
cpu8080.v - The 8080 core
180
testbench.v - The testbench for the core. Also contains the peripherals for the
181
core, such as the peripheral select controller, the interrupt controller, the
182
test ROM, RAM, and anything else required.
183
 
184
The other files are the testbench running files, like the stimulus package. I
185
don't even know what half of them are, sorry, I only started using the system 2
186
weeks ago!
187
 
188
Shameless plug
189
 
190
For people who want ask me questions, or find out more about what I am doing, my
191
information is:
192
 
193
Email: samiam95124@m...
194
Web page: www.moorecad.com
195
 
196
Disclaimer: The above web page does include commercial content, ads, rants, etc.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.