1 |
30 |
ghutchis |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
2 |
55 |
ghutchis |
<html lang="en"><head><title>$Revision: 1.3 $: tv80 Core Documentation</title>
|
3 |
|
|
<meta http-equiv="Expires" content="Fri, 17 Dec 2004 22:11:11 +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 |
55 |
ghutchis |
<tr><td class="header">$Revision: 1.3 $</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 |
55 |
ghutchis |
Core Area and Technology Mapping<br />
|
131 |
|
|
<a href="#anchor3">3.</a>
|
132 |
|
|
TV80 Peripherals<br />
|
133 |
|
|
<a href="#anchor4">3.1</a>
|
134 |
|
|
Simple GMII Interface<br />
|
135 |
|
|
<a href="#anchor5">3.1.1</a>
|
136 |
|
|
Register Interface<br />
|
137 |
|
|
<a href="#anchor12">4.</a>
|
138 |
30 |
ghutchis |
Verification Environment<br />
|
139 |
55 |
ghutchis |
<a href="#anchor13">4.1</a>
|
140 |
30 |
ghutchis |
Memory Map<br />
|
141 |
55 |
ghutchis |
<a href="#anchor14">4.2</a>
|
142 |
30 |
ghutchis |
Control Registers<br />
|
143 |
55 |
ghutchis |
<a href="#anchor15">4.2.1</a>
|
144 |
30 |
ghutchis |
Simulation control (0x80)<br />
|
145 |
55 |
ghutchis |
<a href="#anchor16">4.2.2</a>
|
146 |
30 |
ghutchis |
Message output (0x81)<br />
|
147 |
55 |
ghutchis |
<a href="#anchor17">4.2.3</a>
|
148 |
30 |
ghutchis |
Timeout control (0x82)<br />
|
149 |
55 |
ghutchis |
<a href="#anchor18">4.2.4</a>
|
150 |
30 |
ghutchis |
Max timeout (0x84, 0x83)<br />
|
151 |
55 |
ghutchis |
<a href="#anchor19">4.2.5</a>
|
152 |
30 |
ghutchis |
Interrupt countdown (0x90)<br />
|
153 |
55 |
ghutchis |
<a href="#anchor20">4.2.6</a>
|
154 |
35 |
ghutchis |
Checksum value (0x91)<br />
|
155 |
55 |
ghutchis |
<a href="#anchor21">4.2.7</a>
|
156 |
35 |
ghutchis |
Checksum accumulate (0x92)<br />
|
157 |
55 |
ghutchis |
<a href="#anchor22">4.2.8</a>
|
158 |
35 |
ghutchis |
Increment on read (0x93)<br />
|
159 |
55 |
ghutchis |
<a href="#anchor23">4.3</a>
|
160 |
30 |
ghutchis |
Tool Chain<br />
|
161 |
55 |
ghutchis |
<a href="#anchor24">4.4</a>
|
162 |
30 |
ghutchis |
Tests<br />
|
163 |
55 |
ghutchis |
<a href="#tvs80">4.4.1</a>
|
164 |
30 |
ghutchis |
tvs80 test<br />
|
165 |
55 |
ghutchis |
<a href="#rfc.references1">5.</a>
|
166 |
30 |
ghutchis |
References<br />
|
167 |
|
|
<a href="#rfc.authors">§</a>
|
168 |
|
|
Author's Address<br />
|
169 |
|
|
</p>
|
170 |
|
|
<br clear="all" />
|
171 |
|
|
|
172 |
|
|
<a name="anchor1"></a><br /><hr />
|
173 |
|
|
<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>
|
174 |
|
|
<a name="rfc.section.1"></a><h3>1. Background</h3>
|
175 |
|
|
|
176 |
|
|
<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.
|
177 |
|
|
The tv80 has been modified since then for better synthesis
|
178 |
|
|
timing/area results, and to incorporate several bug-fixes.
|
179 |
|
|
</p>
|
180 |
|
|
<p>The T80, and the tv80 derived from it, attempt to maintain the
|
181 |
|
|
original cycle timings of the Z80, but have radically different
|
182 |
|
|
internal designs and timings. With its target being ASIC and
|
183 |
|
|
embedded applications, the tv80 does not attempt to maintain
|
184 |
|
|
the original pinout of the Z80.
|
185 |
|
|
</p>
|
186 |
|
|
<a name="anchor2"></a><br /><hr />
|
187 |
|
|
<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>
|
188 |
55 |
ghutchis |
<a name="rfc.section.2"></a><h3>2. Core Area and Technology Mapping</h3>
|
189 |
30 |
ghutchis |
|
190 |
55 |
ghutchis |
<p> This section tracks synthesis results in various technologies. LSI 10K technology is
|
191 |
|
|
used as a baseline because the library ships with Design Compiler.
|
192 |
|
|
</p><pre>
|
193 |
|
|
Component Clock Speed Area Technology (units)
|
194 |
|
|
================ =========== ======== =====================
|
195 |
|
|
tv80 33 Mhz 10733 lsi_10k (gates)
|
196 |
|
|
simple_gmii 33 Mhz 1247 lsi_10k (gates)
|
197 |
|
|
</pre>
|
198 |
30 |
ghutchis |
|
199 |
55 |
ghutchis |
<a name="anchor3"></a><br /><hr />
|
200 |
|
|
<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>
|
201 |
|
|
<a name="rfc.section.3"></a><h3>3. TV80 Peripherals</h3>
|
202 |
|
|
|
203 |
|
|
<p>The TV80 design includes a number (one, at this point) of peripherals. These peripherals
|
204 |
|
|
are hardware-synthesizable, but may not be fully tested or functional.
|
205 |
|
|
</p>
|
206 |
|
|
<a name="rfc.section.3.1"></a><h4><a name="anchor4">3.1</a> Simple GMII Interface</h4>
|
207 |
|
|
|
208 |
|
|
<p>This block presents a GMII interface on one side and a TV80 processor interface on
|
209 |
|
|
the other. The processor-side controls are all mapped into I/O-space. The block
|
210 |
|
|
can only process a single packet in each direction at one time. This is only really
|
211 |
|
|
a limitation on the RX side, where any incoming packets will be dropped until the
|
212 |
|
|
processor removes the first packet from the RX buffer.
|
213 |
|
|
</p>
|
214 |
|
|
<p>The GMII interface is signalling only, and does not support 10/100 operation, half duplex
|
215 |
|
|
mode, flow control, or any other aspects of 802.3.
|
216 |
|
|
</p>
|
217 |
|
|
<a name="rfc.section.3.1.1"></a><h4><a name="anchor5">3.1.1</a> Register Interface</h4>
|
218 |
|
|
|
219 |
|
|
<p>This block consumes 3 bits of I/O address space. The register addresses below are
|
220 |
|
|
relative to the configurable base address of the block, which must be aligned to an
|
221 |
|
|
8-byte boundary. Registers 0x6 and 0x7 are reserved.
|
222 |
|
|
</p>
|
223 |
|
|
<a name="rfc.section.3.1.1.1"></a><h4><a name="anchor6">3.1.1.1</a> Status Register (0x0)</h4>
|
224 |
|
|
|
225 |
|
|
<p>Bit 0 of the status register indicates that a packet is available in the RX buffer.
|
226 |
|
|
This bit will be cleared when the last byte of data is read out of the RX buffer.
|
227 |
|
|
</p>
|
228 |
|
|
<p>Bit 1 is set when the packet in the TX buffer has finished transmitting. This bit
|
229 |
|
|
will be cleared when the first byte of data of the next packet is written into the
|
230 |
|
|
TX buffer.
|
231 |
|
|
</p>
|
232 |
|
|
<p>This register is read-only.
|
233 |
|
|
</p>
|
234 |
|
|
<a name="rfc.section.3.1.1.2"></a><h4><a name="anchor7">3.1.1.2</a> Control Register (0x1)</h4>
|
235 |
|
|
|
236 |
|
|
<p>Bit 0 controls sending packets. When a 1 is written to this bit, the data in
|
237 |
|
|
the TX buffer will be sent as a single packet.
|
238 |
|
|
</p>
|
239 |
|
|
<p>This register is write-only.
|
240 |
|
|
</p>
|
241 |
|
|
<a name="rfc.section.3.1.1.3"></a><h4><a name="anchor8">3.1.1.3</a> RX Length Register (Low, 0x2)</h4>
|
242 |
|
|
|
243 |
|
|
<p>This register contains the low 8 bits of the length of the packet currently
|
244 |
|
|
residing in the RX buffer.
|
245 |
|
|
</p>
|
246 |
|
|
<p>This register is read-only.
|
247 |
|
|
</p>
|
248 |
|
|
<a name="rfc.section.3.1.1.4"></a><h4><a name="anchor9">3.1.1.4</a> RX Length Register (High, 0x3)</h4>
|
249 |
|
|
|
250 |
|
|
<p>This register contains the high 8 bits of the length of the packet currently
|
251 |
|
|
residing in the RX buffer.
|
252 |
|
|
</p>
|
253 |
|
|
<p>This register is read-only.
|
254 |
|
|
</p>
|
255 |
|
|
<a name="rfc.section.3.1.1.5"></a><h4><a name="anchor10">3.1.1.5</a> RX Data Register (0x4)</h4>
|
256 |
|
|
|
257 |
|
|
<p>This register contains the next byte of data in the RX packet buffer.
|
258 |
|
|
</p>
|
259 |
|
|
<p>This register is read-only.
|
260 |
|
|
</p>
|
261 |
|
|
<a name="rfc.section.3.1.1.6"></a><h4><a name="anchor11">3.1.1.6</a> TX Data Register (0x5)</h4>
|
262 |
|
|
|
263 |
|
|
<p>Writing to this register puts data in the TX packet buffer. This register does
|
264 |
|
|
not perform bounds checking; it is the program's responsibility not to write more
|
265 |
|
|
data than the size of the TX buffer.
|
266 |
|
|
</p>
|
267 |
|
|
<p>This register is write-only.
|
268 |
|
|
</p>
|
269 |
|
|
<a name="anchor12"></a><br /><hr />
|
270 |
|
|
<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>
|
271 |
|
|
<a name="rfc.section.4"></a><h3>4. Verification Environment</h3>
|
272 |
|
|
|
273 |
|
|
<a name="rfc.section.4.1"></a><h4><a name="anchor13">4.1</a> Memory Map</h4>
|
274 |
|
|
|
275 |
30 |
ghutchis |
<p>
|
276 |
|
|
Environment memory space is divided into a 32k ROM region and a 32k RAM
|
277 |
|
|
region, as follows:
|
278 |
|
|
|
279 |
|
|
</p>
|
280 |
|
|
<pre>
|
281 |
|
|
0000-7FFF: ROM
|
282 |
|
|
8000-FFFF: RAM
|
283 |
|
|
</pre>
|
284 |
|
|
<p>
|
285 |
|
|
|
286 |
|
|
<p>Environment I/O space is allocated as follows:
|
287 |
|
|
</p><pre>
|
288 |
|
|
00-0F: Unused
|
289 |
|
|
10-1F: Test devices
|
290 |
|
|
20-7F: Unused
|
291 |
|
|
80-9F: Environment control
|
292 |
|
|
A0-FF: Unused
|
293 |
|
|
</pre>
|
294 |
|
|
|
295 |
|
|
|
296 |
55 |
ghutchis |
<a name="rfc.section.4.2"></a><h4><a name="anchor14">4.2</a> Control Registers</h4>
|
297 |
30 |
ghutchis |
|
298 |
55 |
ghutchis |
<a name="rfc.section.4.2.1"></a><h4><a name="anchor15">4.2.1</a> Simulation control (0x80)</h4>
|
299 |
30 |
ghutchis |
|
300 |
|
|
<ul class="text">
|
301 |
|
|
<li> Write '01' to end simulation with test passed
|
302 |
|
|
</li>
|
303 |
|
|
<li> Write '02' to end with test failed
|
304 |
|
|
</li>
|
305 |
|
|
<li> Write '03' to turn on dumping
|
306 |
|
|
</li>
|
307 |
|
|
<li> Write '04' to turn off dumping
|
308 |
|
|
</li>
|
309 |
|
|
</ul>
|
310 |
55 |
ghutchis |
<a name="rfc.section.4.2.2"></a><h4><a name="anchor16">4.2.2</a> Message output (0x81)</h4>
|
311 |
30 |
ghutchis |
|
312 |
|
|
<p>
|
313 |
|
|
Write characters to this port one at a time. When the
|
314 |
|
|
newline ('\n', ASCII 0x0A) character is written, the
|
315 |
|
|
environment will print out the collected string.
|
316 |
|
|
|
317 |
|
|
</p>
|
318 |
55 |
ghutchis |
<a name="rfc.section.4.2.3"></a><h4><a name="anchor17">4.2.3</a> Timeout control (0x82)</h4>
|
319 |
30 |
ghutchis |
|
320 |
|
|
<p>
|
321 |
|
|
Bit[0] enables the timeout counter,
|
322 |
|
|
Bit[1] resets the counter to 0.
|
323 |
|
|
Timeout counter defaults to enabled at simulation start.
|
324 |
|
|
|
325 |
|
|
</p>
|
326 |
55 |
ghutchis |
<a name="rfc.section.4.2.4"></a><h4><a name="anchor18">4.2.4</a> Max timeout (0x84, 0x83)</h4>
|
327 |
30 |
ghutchis |
|
328 |
|
|
<p>
|
329 |
|
|
Holds 16-bit timeout value (amount of time in clocks before
|
330 |
|
|
timeout error occurs).
|
331 |
|
|
|
332 |
|
|
</p>
|
333 |
55 |
ghutchis |
<a name="rfc.section.4.2.5"></a><h4><a name="anchor19">4.2.5</a> Interrupt countdown (0x90)</h4>
|
334 |
30 |
ghutchis |
|
335 |
|
|
<p>
|
336 |
|
|
When set, starts a countdown (in clocks) until assertion of
|
337 |
|
|
the INT_N signal.
|
338 |
|
|
|
339 |
|
|
</p>
|
340 |
55 |
ghutchis |
<a name="rfc.section.4.2.6"></a><h4><a name="anchor20">4.2.6</a> Checksum value (0x91)</h4>
|
341 |
30 |
ghutchis |
|
342 |
35 |
ghutchis |
<p>This register holds the checksum value of all data
|
343 |
|
|
written to the accumulate register. The checksum is a simple
|
344 |
|
|
twos-complement checksum, so it can be compared with a CPU-generated
|
345 |
|
|
checksum.
|
346 |
|
|
</p>
|
347 |
|
|
<p>This register is readable and writeable. Writing the register sets
|
348 |
|
|
the current checksum value.
|
349 |
|
|
</p>
|
350 |
55 |
ghutchis |
<a name="rfc.section.4.2.7"></a><h4><a name="anchor21">4.2.7</a> Checksum accumulate (0x92)</h4>
|
351 |
35 |
ghutchis |
|
352 |
|
|
<p>This write-only register adds the written value to the value
|
353 |
|
|
contained in the Checksum Value register.
|
354 |
|
|
</p>
|
355 |
55 |
ghutchis |
<a name="rfc.section.4.2.8"></a><h4><a name="anchor22">4.2.8</a> Increment on read (0x93)</h4>
|
356 |
35 |
ghutchis |
|
357 |
|
|
<p>This register increments every time it is read, so reading it
|
358 |
|
|
repeatedly generates an incrementing sequence. It can be reset
|
359 |
|
|
by writing it to a new starting value.
|
360 |
|
|
</p>
|
361 |
55 |
ghutchis |
<a name="rfc.section.4.3"></a><h4><a name="anchor23">4.3</a> Tool Chain</h4>
|
362 |
35 |
ghutchis |
|
363 |
30 |
ghutchis |
<p>The minimum toolchain required to simulate the tv80 is the
|
364 |
|
|
<a class="info" href="#cver">CVer<span>Vanvick, A., GPL Cver Simulator, .</span></a>[3] Verilog simulator, and the
|
365 |
|
|
<a class="info" href="#sdcc">SDCC<span>, Small Device C Compiler, .</span></a>[2] compiler/assembler/linker. In
|
366 |
|
|
addition, to run the <a class="info" href="#tvs80">tvs80<span>tvs80 test</span></a> instruction
|
367 |
|
|
test suite, the <a class="info" href="#dosbox">DOSBox<span>, DOSBox, .</span></a>[4] DOS emulator
|
368 |
|
|
is required.
|
369 |
|
|
|
370 |
|
|
</p>
|
371 |
55 |
ghutchis |
<a name="rfc.section.4.4"></a><h4><a name="anchor24">4.4</a> Tests</h4>
|
372 |
30 |
ghutchis |
|
373 |
|
|
<p>Most of the tests in the tv80 environment are written in C, and should
|
374 |
|
|
be compiled with the <a class="info" href="#sdcc">sdcc<span>, Small Device C Compiler, .</span></a>[2] compiler.
|
375 |
|
|
|
376 |
|
|
</p>
|
377 |
55 |
ghutchis |
<a name="rfc.section.4.4.1"></a><h4><a name="tvs80">4.4.1</a> tvs80 test</h4>
|
378 |
30 |
ghutchis |
|
379 |
|
|
<p>The tvs80 test is different than the rest of the tests, and is
|
380 |
|
|
written in its own flavor of assembly language. This test provides
|
381 |
|
|
a fairly comprehensive Z80 instruction test.
|
382 |
|
|
</p>
|
383 |
|
|
<p>The assembler for this test only runs under DOS. To assemble
|
384 |
|
|
under Unix/Linux, the <a class="info" href="#dosbox">"dosbox" DOS emulator<span>, DOSBox, .</span></a>[4] is required. A script
|
385 |
|
|
to run the assembler under dosbox, as well as the tvs80.asm source,
|
386 |
|
|
is checked in under the "tests/tvs80" directory.
|
387 |
|
|
</p>
|
388 |
|
|
<a name="rfc.references1"></a><br /><hr />
|
389 |
|
|
<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>
|
390 |
55 |
ghutchis |
<h3>5 References</h3>
|
391 |
30 |
ghutchis |
<table width="99%" border="0">
|
392 |
|
|
<tr><td class="author-text" valign="top"><a name="t80">[1]</a></td>
|
393 |
|
|
<td class="author-text">Wallner, D., "<a href="http://www.opencores.org/projects.cgi/web/t80/overview">VHDL T80 Core</a>".</td></tr>
|
394 |
|
|
<tr><td class="author-text" valign="top"><a name="sdcc">[2]</a></td>
|
395 |
|
|
<td class="author-text">"<a href="http://sdcc.sourceforge.net">Small Device C Compiler</a>".</td></tr>
|
396 |
|
|
<tr><td class="author-text" valign="top"><a name="cver">[3]</a></td>
|
397 |
|
|
<td class="author-text">Vanvick, A., "<a href="http://www.pragmatic-c.com/gpl-cver">GPL Cver Simulator</a>".</td></tr>
|
398 |
|
|
<tr><td class="author-text" valign="top"><a name="dosbox">[4]</a></td>
|
399 |
|
|
<td class="author-text">"<a href="http://dosbox.sourceforge.net">DOSBox</a>".</td></tr>
|
400 |
|
|
</table>
|
401 |
|
|
|
402 |
|
|
<a name="rfc.authors"></a><br /><hr />
|
403 |
|
|
<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>
|
404 |
|
|
<h3>Author's Address</h3>
|
405 |
|
|
<table width="99%" border="0" cellpadding="0" cellspacing="0">
|
406 |
|
|
<tr><td class="author-text"> </td>
|
407 |
|
|
<td class="author-text">Guy Hutchison</td></tr>
|
408 |
|
|
<tr><td class="author-text"> </td>
|
409 |
|
|
<td class="author-text">OpenCores.org</td></tr>
|
410 |
|
|
<tr><td class="author" align="right">EMail: </td>
|
411 |
|
|
<td class="author-text"><a href="mailto:ghutchis@opencores.org">ghutchis@opencores.org</a></td></tr>
|
412 |
|
|
</table>
|
413 |
|
|
</body></html>
|