1 |
30 |
ghutchis |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2 |
35 |
ghutchis |
<html lang="en"><head><title>$Revision: 1.2 $: tv80 Core Documentation</title>
|
3 |
|
|
<meta http-equiv="Expires" content="Wed, 03 Nov 2004 21:11:35 +0000">
|
4 |
30 |
ghutchis |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5 |
|
|
<meta name="description" content="tv80 Core Documentation">
|
6 |
|
|
<meta name="keywords" content="private, XML, Extensible Markup Language">
|
7 |
|
|
<meta name="generator" content="xml2rfc v1.26 (http://xml.resource.org/)">
|
8 |
|
|
<style type='text/css'>
|
9 |
|
|
<!--
|
10 |
|
|
body {
|
11 |
|
|
font-family: verdana, charcoal, helvetica, arial, sans-serif;
|
12 |
|
|
margin: 2em;
|
13 |
|
|
font-size: small ; color: #000000 ; background-color: #ffffff ; }
|
14 |
|
|
.title { color: #990000; font-size: x-large ;
|
15 |
|
|
font-weight: bold; text-align: right;
|
16 |
|
|
font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
|
17 |
|
|
background-color: transparent; }
|
18 |
|
|
.filename { color: #666666; font-size: 18px; line-height: 28px;
|
19 |
|
|
font-weight: bold; text-align: right;
|
20 |
|
|
font-family: helvetica, arial, sans-serif;
|
21 |
|
|
background-color: transparent; }
|
22 |
|
|
td.rfcbug { background-color: #000000 ; width: 30px ; height: 30px ;
|
23 |
|
|
text-align: justify; vertical-align: middle ; padding-top: 2px ; }
|
24 |
|
|
td.rfcbug span.RFC { color: #666666; font-weight: bold; text-decoration: none;
|
25 |
|
|
background-color: #000000 ;
|
26 |
|
|
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
|
27 |
|
|
font-size: x-small ; }
|
28 |
|
|
td.rfcbug span.hotText { color: #ffffff; font-weight: normal; text-decoration: none;
|
29 |
|
|
text-align: center ;
|
30 |
|
|
font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
|
31 |
|
|
font-size: x-small ; background-color: #000000; }
|
32 |
|
|
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
|
33 |
|
|
div#counter{margin-top: 100px}
|
34 |
|
|
|
35 |
|
|
a.info{
|
36 |
|
|
position:relative; /*this is the key*/
|
37 |
|
|
z-index:24;
|
38 |
|
|
text-decoration:none}
|
39 |
|
|
|
40 |
|
|
a.info:hover{z-index:25; background-color:#990000 ; color: #ffffff ;}
|
41 |
|
|
|
42 |
|
|
a.info span{display: none}
|
43 |
|
|
|
44 |
|
|
a.info:hover span{ /*the span will display just on :hover state*/
|
45 |
|
|
display:block;
|
46 |
|
|
position:absolute;
|
47 |
|
|
font-size: smaller ;
|
48 |
|
|
top:2em; left:2em; width:15em;
|
49 |
|
|
padding: 2px ;
|
50 |
|
|
border:1px solid #333333;
|
51 |
|
|
background-color:#eeeeee; color:#990000;
|
52 |
|
|
text-align: left ;}
|
53 |
|
|
|
54 |
|
|
A { font-weight: bold; }
|
55 |
|
|
A:link { color: #990000; background-color: transparent ; }
|
56 |
|
|
A:visited { color: #333333; background-color: transparent ; }
|
57 |
|
|
A:active { color: #333333; background-color: transparent ; }
|
58 |
|
|
|
59 |
|
|
p { margin-left: 2em; margin-right: 2em; }
|
60 |
|
|
p.copyright { font-size: x-small ; }
|
61 |
|
|
p.toc { font-size: small ; font-weight: bold ; margin-left: 3em ;}
|
62 |
|
|
|
63 |
|
|
span.emph { font-style: italic; }
|
64 |
|
|
span.strong { font-weight: bold; }
|
65 |
|
|
span.verb { font-family: "Courier New", Courier, monospace ; }
|
66 |
|
|
|
67 |
|
|
ol.text { margin-left: 2em; margin-right: 2em; }
|
68 |
|
|
ul.text { margin-left: 2em; margin-right: 2em; }
|
69 |
|
|
li { margin-left: 3em; }
|
70 |
|
|
|
71 |
|
|
pre { margin-left: 3em; color: #333333; background-color: transparent;
|
72 |
|
|
font-family: "Courier New", Courier, monospace ; font-size: small ;
|
73 |
|
|
}
|
74 |
|
|
|
75 |
|
|
h3 { color: #333333; font-size: medium ;
|
76 |
|
|
font-family: helvetica, arial, sans-serif ;
|
77 |
|
|
background-color: transparent; }
|
78 |
|
|
h4 { font-size: small; font-family: helvetica, arial, sans-serif ; }
|
79 |
|
|
|
80 |
|
|
table.bug { width: 30px ; height: 15px ; }
|
81 |
|
|
td.bug { color: #ffffff ; background-color: #990000 ;
|
82 |
|
|
text-align: center ; width: 30px ; height: 15px ;
|
83 |
|
|
}
|
84 |
|
|
td.bug A.link2 { color: #ffffff ; font-weight: bold;
|
85 |
|
|
text-decoration: none;
|
86 |
|
|
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
|
87 |
|
|
font-size: x-small ; background-color: transparent }
|
88 |
|
|
|
89 |
|
|
td.header { color: #ffffff; font-size: x-small ;
|
90 |
|
|
font-family: arial, helvetica, sans-serif; vertical-align: top;
|
91 |
|
|
background-color: #666666 ; width: 33% ; }
|
92 |
|
|
td.author { font-weight: bold; margin-left: 4em; font-size: x-small ; }
|
93 |
|
|
td.author-text { font-size: x-small; }
|
94 |
|
|
table.data { vertical-align: top ; border-collapse: collapse ;
|
95 |
|
|
border-style: solid solid solid solid ;
|
96 |
|
|
border-color: black black black black ;
|
97 |
|
|
font-size: small ; text-align: center ; }
|
98 |
|
|
table.data th { font-weight: bold ;
|
99 |
|
|
border-style: solid solid solid solid ;
|
100 |
|
|
border-color: black black black black ; }
|
101 |
|
|
table.data td {
|
102 |
|
|
border-style: solid solid solid solid ;
|
103 |
|
|
border-color: #333333 #333333 #333333 #333333 ; }
|
104 |
|
|
|
105 |
|
|
hr { height: 1px }
|
106 |
|
|
-->
|
107 |
|
|
</style>
|
108 |
|
|
</head>
|
109 |
|
|
<body>
|
110 |
|
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table>
|
111 |
|
|
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
|
112 |
35 |
ghutchis |
<tr><td class="header">$Revision: 1.2 $</td><td class="header">G. Hutchison</td></tr>
|
113 |
30 |
ghutchis |
<tr><td class="header"> </td><td class="header">OpenCores.org</td></tr>
|
114 |
35 |
ghutchis |
<tr><td class="header"> </td><td class="header">October 2004</td></tr>
|
115 |
30 |
ghutchis |
</table></td></tr></table>
|
116 |
|
|
<div align="right"><span class="title"><br />tv80 Core Documentation</span></div>
|
117 |
|
|
|
118 |
|
|
<h3>Abstract</h3>
|
119 |
|
|
|
120 |
|
|
<p>
|
121 |
|
|
A synthesizable 8-bit microprocessor which is instruction-set compatable
|
122 |
|
|
with the Z80, targetted at embedded and system-on-a-chip designs.
|
123 |
|
|
|
124 |
|
|
</p><a name="toc"></a><br /><hr />
|
125 |
|
|
<h3>Table of Contents</h3>
|
126 |
|
|
<p class="toc">
|
127 |
|
|
<a href="#anchor1">1.</a>
|
128 |
|
|
Background<br />
|
129 |
|
|
<a href="#anchor2">2.</a>
|
130 |
|
|
Verification Environment<br />
|
131 |
|
|
<a href="#anchor3">2.1</a>
|
132 |
|
|
Memory Map<br />
|
133 |
|
|
<a href="#anchor4">2.2</a>
|
134 |
|
|
Control Registers<br />
|
135 |
|
|
<a href="#anchor5">2.2.1</a>
|
136 |
|
|
Simulation control (0x80)<br />
|
137 |
|
|
<a href="#anchor6">2.2.2</a>
|
138 |
|
|
Message output (0x81)<br />
|
139 |
|
|
<a href="#anchor7">2.2.3</a>
|
140 |
|
|
Timeout control (0x82)<br />
|
141 |
|
|
<a href="#anchor8">2.2.4</a>
|
142 |
|
|
Max timeout (0x84, 0x83)<br />
|
143 |
|
|
<a href="#anchor9">2.2.5</a>
|
144 |
|
|
Interrupt countdown (0x90)<br />
|
145 |
35 |
ghutchis |
<a href="#anchor10">2.2.6</a>
|
146 |
|
|
Checksum value (0x91)<br />
|
147 |
|
|
<a href="#anchor11">2.2.7</a>
|
148 |
|
|
Checksum accumulate (0x92)<br />
|
149 |
|
|
<a href="#anchor12">2.2.8</a>
|
150 |
|
|
Increment on read (0x93)<br />
|
151 |
|
|
<a href="#anchor13">2.3</a>
|
152 |
30 |
ghutchis |
Tool Chain<br />
|
153 |
35 |
ghutchis |
<a href="#anchor14">2.4</a>
|
154 |
30 |
ghutchis |
Tests<br />
|
155 |
|
|
<a href="#tvs80">2.4.1</a>
|
156 |
|
|
tvs80 test<br />
|
157 |
|
|
<a href="#rfc.references1">3.</a>
|
158 |
|
|
References<br />
|
159 |
|
|
<a href="#rfc.authors">§</a>
|
160 |
|
|
Author's Address<br />
|
161 |
|
|
</p>
|
162 |
|
|
<br clear="all" />
|
163 |
|
|
|
164 |
|
|
<a name="anchor1"></a><br /><hr />
|
165 |
|
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table>
|
166 |
|
|
<a name="rfc.section.1"></a><h3>1. Background</h3>
|
167 |
|
|
|
168 |
|
|
<p>The tv80 core was created as a Verilog port of the <a class="info" href="#t80">VHDL T80 core<span>Wallner, D., VHDL T80 Core, .</span></a>[1], for use as a maintenence processor inside an ASIC.
|
169 |
|
|
The tv80 has been modified since then for better synthesis
|
170 |
|
|
timing/area results, and to incorporate several bug-fixes.
|
171 |
|
|
</p>
|
172 |
|
|
<p>The T80, and the tv80 derived from it, attempt to maintain the
|
173 |
|
|
original cycle timings of the Z80, but have radically different
|
174 |
|
|
internal designs and timings. With its target being ASIC and
|
175 |
|
|
embedded applications, the tv80 does not attempt to maintain
|
176 |
|
|
the original pinout of the Z80.
|
177 |
|
|
</p>
|
178 |
|
|
<a name="anchor2"></a><br /><hr />
|
179 |
|
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table>
|
180 |
|
|
<a name="rfc.section.2"></a><h3>2. Verification Environment</h3>
|
181 |
|
|
|
182 |
|
|
<a name="rfc.section.2.1"></a><h4><a name="anchor3">2.1</a> Memory Map</h4>
|
183 |
|
|
|
184 |
|
|
<p>
|
185 |
|
|
Environment memory space is divided into a 32k ROM region and a 32k RAM
|
186 |
|
|
region, as follows:
|
187 |
|
|
|
188 |
|
|
</p>
|
189 |
|
|
<pre>
|
190 |
|
|
0000-7FFF: ROM
|
191 |
|
|
8000-FFFF: RAM
|
192 |
|
|
</pre>
|
193 |
|
|
<p>
|
194 |
|
|
|
195 |
|
|
<p>Environment I/O space is allocated as follows:
|
196 |
|
|
</p><pre>
|
197 |
|
|
00-0F: Unused
|
198 |
|
|
10-1F: Test devices
|
199 |
|
|
20-7F: Unused
|
200 |
|
|
80-9F: Environment control
|
201 |
|
|
A0-FF: Unused
|
202 |
|
|
</pre>
|
203 |
|
|
|
204 |
|
|
|
205 |
|
|
<a name="rfc.section.2.2"></a><h4><a name="anchor4">2.2</a> Control Registers</h4>
|
206 |
|
|
|
207 |
|
|
<a name="rfc.section.2.2.1"></a><h4><a name="anchor5">2.2.1</a> Simulation control (0x80)</h4>
|
208 |
|
|
|
209 |
|
|
<ul class="text">
|
210 |
|
|
<li> Write '01' to end simulation with test passed
|
211 |
|
|
</li>
|
212 |
|
|
<li> Write '02' to end with test failed
|
213 |
|
|
</li>
|
214 |
|
|
<li> Write '03' to turn on dumping
|
215 |
|
|
</li>
|
216 |
|
|
<li> Write '04' to turn off dumping
|
217 |
|
|
</li>
|
218 |
|
|
</ul>
|
219 |
|
|
<a name="rfc.section.2.2.2"></a><h4><a name="anchor6">2.2.2</a> Message output (0x81)</h4>
|
220 |
|
|
|
221 |
|
|
<p>
|
222 |
|
|
Write characters to this port one at a time. When the
|
223 |
|
|
newline ('\n', ASCII 0x0A) character is written, the
|
224 |
|
|
environment will print out the collected string.
|
225 |
|
|
|
226 |
|
|
</p>
|
227 |
|
|
<a name="rfc.section.2.2.3"></a><h4><a name="anchor7">2.2.3</a> Timeout control (0x82)</h4>
|
228 |
|
|
|
229 |
|
|
<p>
|
230 |
|
|
Bit[0] enables the timeout counter,
|
231 |
|
|
Bit[1] resets the counter to 0.
|
232 |
|
|
Timeout counter defaults to enabled at simulation start.
|
233 |
|
|
|
234 |
|
|
</p>
|
235 |
|
|
<a name="rfc.section.2.2.4"></a><h4><a name="anchor8">2.2.4</a> Max timeout (0x84, 0x83)</h4>
|
236 |
|
|
|
237 |
|
|
<p>
|
238 |
|
|
Holds 16-bit timeout value (amount of time in clocks before
|
239 |
|
|
timeout error occurs).
|
240 |
|
|
|
241 |
|
|
</p>
|
242 |
|
|
<a name="rfc.section.2.2.5"></a><h4><a name="anchor9">2.2.5</a> Interrupt countdown (0x90)</h4>
|
243 |
|
|
|
244 |
|
|
<p>
|
245 |
|
|
When set, starts a countdown (in clocks) until assertion of
|
246 |
|
|
the INT_N signal.
|
247 |
|
|
|
248 |
|
|
</p>
|
249 |
35 |
ghutchis |
<a name="rfc.section.2.2.6"></a><h4><a name="anchor10">2.2.6</a> Checksum value (0x91)</h4>
|
250 |
30 |
ghutchis |
|
251 |
35 |
ghutchis |
<p>This register holds the checksum value of all data
|
252 |
|
|
written to the accumulate register. The checksum is a simple
|
253 |
|
|
twos-complement checksum, so it can be compared with a CPU-generated
|
254 |
|
|
checksum.
|
255 |
|
|
</p>
|
256 |
|
|
<p>This register is readable and writeable. Writing the register sets
|
257 |
|
|
the current checksum value.
|
258 |
|
|
</p>
|
259 |
|
|
<a name="rfc.section.2.2.7"></a><h4><a name="anchor11">2.2.7</a> Checksum accumulate (0x92)</h4>
|
260 |
|
|
|
261 |
|
|
<p>This write-only register adds the written value to the value
|
262 |
|
|
contained in the Checksum Value register.
|
263 |
|
|
</p>
|
264 |
|
|
<a name="rfc.section.2.2.8"></a><h4><a name="anchor12">2.2.8</a> Increment on read (0x93)</h4>
|
265 |
|
|
|
266 |
|
|
<p>This register increments every time it is read, so reading it
|
267 |
|
|
repeatedly generates an incrementing sequence. It can be reset
|
268 |
|
|
by writing it to a new starting value.
|
269 |
|
|
</p>
|
270 |
|
|
<a name="rfc.section.2.3"></a><h4><a name="anchor13">2.3</a> Tool Chain</h4>
|
271 |
|
|
|
272 |
30 |
ghutchis |
<p>The minimum toolchain required to simulate the tv80 is the
|
273 |
|
|
<a class="info" href="#cver">CVer<span>Vanvick, A., GPL Cver Simulator, .</span></a>[3] Verilog simulator, and the
|
274 |
|
|
<a class="info" href="#sdcc">SDCC<span>, Small Device C Compiler, .</span></a>[2] compiler/assembler/linker. In
|
275 |
|
|
addition, to run the <a class="info" href="#tvs80">tvs80<span>tvs80 test</span></a> instruction
|
276 |
|
|
test suite, the <a class="info" href="#dosbox">DOSBox<span>, DOSBox, .</span></a>[4] DOS emulator
|
277 |
|
|
is required.
|
278 |
|
|
|
279 |
|
|
</p>
|
280 |
35 |
ghutchis |
<a name="rfc.section.2.4"></a><h4><a name="anchor14">2.4</a> Tests</h4>
|
281 |
30 |
ghutchis |
|
282 |
|
|
<p>Most of the tests in the tv80 environment are written in C, and should
|
283 |
|
|
be compiled with the <a class="info" href="#sdcc">sdcc<span>, Small Device C Compiler, .</span></a>[2] compiler.
|
284 |
|
|
|
285 |
|
|
</p>
|
286 |
|
|
<a name="rfc.section.2.4.1"></a><h4><a name="tvs80">2.4.1</a> tvs80 test</h4>
|
287 |
|
|
|
288 |
|
|
<p>The tvs80 test is different than the rest of the tests, and is
|
289 |
|
|
written in its own flavor of assembly language. This test provides
|
290 |
|
|
a fairly comprehensive Z80 instruction test.
|
291 |
|
|
</p>
|
292 |
|
|
<p>The assembler for this test only runs under DOS. To assemble
|
293 |
|
|
under Unix/Linux, the <a class="info" href="#dosbox">"dosbox" DOS emulator<span>, DOSBox, .</span></a>[4] is required. A script
|
294 |
|
|
to run the assembler under dosbox, as well as the tvs80.asm source,
|
295 |
|
|
is checked in under the "tests/tvs80" directory.
|
296 |
|
|
</p>
|
297 |
|
|
<a name="rfc.references1"></a><br /><hr />
|
298 |
|
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table>
|
299 |
|
|
<h3>3 References</h3>
|
300 |
|
|
<table width="99%" border="0">
|
301 |
|
|
<tr><td class="author-text" valign="top"><a name="t80">[1]</a></td>
|
302 |
|
|
<td class="author-text">Wallner, D., "<a href="http://www.opencores.org/projects.cgi/web/t80/overview">VHDL T80 Core</a>".</td></tr>
|
303 |
|
|
<tr><td class="author-text" valign="top"><a name="sdcc">[2]</a></td>
|
304 |
|
|
<td class="author-text">"<a href="http://sdcc.sourceforge.net">Small Device C Compiler</a>".</td></tr>
|
305 |
|
|
<tr><td class="author-text" valign="top"><a name="cver">[3]</a></td>
|
306 |
|
|
<td class="author-text">Vanvick, A., "<a href="http://www.pragmatic-c.com/gpl-cver">GPL Cver Simulator</a>".</td></tr>
|
307 |
|
|
<tr><td class="author-text" valign="top"><a name="dosbox">[4]</a></td>
|
308 |
|
|
<td class="author-text">"<a href="http://dosbox.sourceforge.net">DOSBox</a>".</td></tr>
|
309 |
|
|
</table>
|
310 |
|
|
|
311 |
|
|
<a name="rfc.authors"></a><br /><hr />
|
312 |
|
|
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2"> TOC </a></td></tr></table>
|
313 |
|
|
<h3>Author's Address</h3>
|
314 |
|
|
<table width="99%" border="0" cellpadding="0" cellspacing="0">
|
315 |
|
|
<tr><td class="author-text"> </td>
|
316 |
|
|
<td class="author-text">Guy Hutchison</td></tr>
|
317 |
|
|
<tr><td class="author-text"> </td>
|
318 |
|
|
<td class="author-text">OpenCores.org</td></tr>
|
319 |
|
|
<tr><td class="author" align="right">EMail: </td>
|
320 |
|
|
<td class="author-text"><a href="mailto:ghutchis@opencores.org">ghutchis@opencores.org</a></td></tr>
|
321 |
|
|
</table>
|
322 |
|
|
</body></html>
|