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

Subversion Repositories tv80

[/] [tv80/] [branches/] [restruc1/] [doc/] [tv80_docs.html] - Rev 115

Go to most recent revision | Compare with Previous | Blame | View Log

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><head><title>$Revision: 1.2 $: tv80 Core Documentation</title>
<meta http-equiv="Expires" content="Wed, 03 Nov 2004 21:11:35 +0000">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tv80 Core Documentation">
<meta name="keywords" content="private, XML, Extensible Markup Language">
<meta name="generator" content="xml2rfc v1.26 (http://xml.resource.org/)">
<style type='text/css'>
<!--
    body {
        font-family: verdana, charcoal, helvetica, arial, sans-serif;
        margin: 2em;
        font-size: small ; color: #000000 ; background-color: #ffffff ; }
    .title { color: #990000; font-size: x-large ;
        font-weight: bold; text-align: right;
        font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
        background-color: transparent; }
    .filename { color: #666666; font-size: 18px; line-height: 28px;
        font-weight: bold; text-align: right;
        font-family: helvetica, arial, sans-serif;
        background-color: transparent; }
    td.rfcbug { background-color: #000000 ; width: 30px ; height: 30px ; 
        text-align: justify; vertical-align: middle ; padding-top: 2px ; }
    td.rfcbug span.RFC { color: #666666; font-weight: bold; text-decoration: none;
        background-color: #000000 ;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-size: x-small ; }
    td.rfcbug span.hotText { color: #ffffff; font-weight: normal; text-decoration: none;
        text-align: center ;
        font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-size: x-small ; background-color: #000000; }
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
    div#counter{margin-top: 100px}
 
    a.info{
        position:relative; /*this is the key*/
        z-index:24;
        text-decoration:none}
 
    a.info:hover{z-index:25; background-color:#990000 ; color: #ffffff ;}
 
    a.info span{display: none}
 
    a.info:hover span{ /*the span will display just on :hover state*/
        display:block;
        position:absolute;
        font-size: smaller ;
        top:2em; left:2em; width:15em;
        padding: 2px ;
        border:1px solid #333333;
        background-color:#eeeeee; color:#990000;
        text-align: left ;}
 
     A { font-weight: bold; }
     A:link { color: #990000; background-color: transparent ; }
     A:visited { color: #333333; background-color: transparent ; }
     A:active { color: #333333; background-color: transparent ; }
 
    p { margin-left: 2em; margin-right: 2em; }
    p.copyright { font-size: x-small ; }
    p.toc { font-size: small ; font-weight: bold ; margin-left: 3em ;}
 
    span.emph { font-style: italic; }
    span.strong { font-weight: bold; }
    span.verb { font-family: "Courier New", Courier, monospace ; }
 
    ol.text { margin-left: 2em; margin-right: 2em; }
    ul.text { margin-left: 2em; margin-right: 2em; }
    li { margin-left: 3em;  }
 
    pre { margin-left: 3em; color: #333333;  background-color: transparent;
        font-family: "Courier New", Courier, monospace ; font-size: small ;
        }
 
    h3 { color: #333333; font-size: medium ;
        font-family: helvetica, arial, sans-serif ;
        background-color: transparent; }
    h4 { font-size: small; font-family: helvetica, arial, sans-serif ; }
 
    table.bug { width: 30px ; height: 15px ; }
    td.bug { color: #ffffff ; background-color: #990000 ;
        text-align: center ; width: 30px ; height: 15px ;
         }
    td.bug A.link2 { color: #ffffff ; font-weight: bold;
        text-decoration: none;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
        font-size: x-small ; background-color: transparent }
 
    td.header { color: #ffffff; font-size: x-small ;
        font-family: arial, helvetica, sans-serif; vertical-align: top;
        background-color: #666666 ; width: 33% ; }
    td.author { font-weight: bold; margin-left: 4em; font-size: x-small ; }
    td.author-text { font-size: x-small; }
    table.data { vertical-align: top ; border-collapse: collapse ;
        border-style: solid solid solid solid ;
        border-color: black black black black ;
        font-size: small ; text-align: center ; }
    table.data th { font-weight: bold ;
        border-style: solid solid solid solid ;
        border-color: black black black black ; }
    table.data td {
        border-style: solid solid solid solid ;
        border-color: #333333 #333333 #333333 #333333 ; }
 
    hr { height: 1px }
-->
</style>
</head>
<body>
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
<tr><td class="header">$Revision: 1.2 $</td><td class="header">G. Hutchison</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">OpenCores.org</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">October 2004</td></tr>
</table></td></tr></table>
<div align="right"><span class="title"><br />tv80 Core Documentation</span></div>
 
<h3>Abstract</h3>
 
<p>
A synthesizable 8-bit microprocessor which is instruction-set compatable
with the Z80, targetted at embedded and system-on-a-chip designs.
 
</p><a name="toc"></a><br /><hr />
<h3>Table of Contents</h3>
<p class="toc">
<a href="#anchor1">1.</a>&nbsp;
Background<br />
<a href="#anchor2">2.</a>&nbsp;
Verification Environment<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor3">2.1</a>&nbsp;
Memory Map<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor4">2.2</a>&nbsp;
Control Registers<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">2.2.1</a>&nbsp;
Simulation control (0x80)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">2.2.2</a>&nbsp;
Message output (0x81)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor7">2.2.3</a>&nbsp;
Timeout control (0x82)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor8">2.2.4</a>&nbsp;
Max timeout (0x84, 0x83)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor9">2.2.5</a>&nbsp;
Interrupt countdown (0x90)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor10">2.2.6</a>&nbsp;
Checksum value (0x91)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor11">2.2.7</a>&nbsp;
Checksum accumulate (0x92)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor12">2.2.8</a>&nbsp;
Increment on read (0x93)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">2.3</a>&nbsp;
Tool Chain<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor14">2.4</a>&nbsp;
Tests<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tvs80">2.4.1</a>&nbsp;
tvs80 test<br />
<a href="#rfc.references1">3.</a>&nbsp;
References<br />
<a href="#rfc.authors">&#167;</a>&nbsp;
Author's Address<br />
</p>
<br clear="all" />
 
<a name="anchor1"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
<a name="rfc.section.1"></a><h3>1.&nbsp;Background</h3>
 
<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.
            The tv80 has been modified since then for better synthesis
            timing/area results, and to incorporate several bug-fixes.
</p>
<p>The T80, and the tv80 derived from it, attempt to maintain the
            original cycle timings of the Z80, but have radically different
            internal designs and timings.  With its target being ASIC and
            embedded applications, the tv80 does not attempt to maintain
            the original pinout of the Z80.
</p>
<a name="anchor2"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
<a name="rfc.section.2"></a><h3>2.&nbsp;Verification Environment</h3>
 
<a name="rfc.section.2.1"></a><h4><a name="anchor3">2.1</a>&nbsp;Memory Map</h4>
 
<p>
Environment memory space is divided into a 32k ROM region and a 32k RAM
region, as follows:
 
</p>
<pre>
  0000-7FFF:  ROM
  8000-FFFF:  RAM
</pre>
<p>
 
<p>Environment I/O space is allocated as follows:
</p><pre>
  00-0F:  Unused
  10-1F:  Test devices
  20-7F:  Unused
  80-9F:  Environment control
  A0-FF:  Unused
</pre>
 
 
<a name="rfc.section.2.2"></a><h4><a name="anchor4">2.2</a>&nbsp;Control Registers</h4>
 
<a name="rfc.section.2.2.1"></a><h4><a name="anchor5">2.2.1</a>&nbsp;Simulation control (0x80)</h4>
 
<ul class="text">
<li>   Write '01' to end simulation with test passed
</li>
<li>   Write '02' to end with test failed
</li>
<li>   Write '03' to turn on dumping
</li>
<li>   Write '04' to turn off dumping
</li>
</ul>
<a name="rfc.section.2.2.2"></a><h4><a name="anchor6">2.2.2</a>&nbsp;Message output (0x81)</h4>
 
<p>
        Write characters to this port one at a time.  When the
        newline ('\n', ASCII 0x0A) character is written, the 
        environment will print out the collected string.
 
</p>
<a name="rfc.section.2.2.3"></a><h4><a name="anchor7">2.2.3</a>&nbsp;Timeout control (0x82)</h4>
 
<p>
        Bit[0] enables the timeout counter,
        Bit[1] resets the counter to 0.
        Timeout counter defaults to enabled at simulation start.
 
</p>
<a name="rfc.section.2.2.4"></a><h4><a name="anchor8">2.2.4</a>&nbsp;Max timeout (0x84, 0x83)</h4>
 
<p>
        Holds 16-bit timeout value (amount of time in clocks before
        timeout error occurs).
 
</p>
<a name="rfc.section.2.2.5"></a><h4><a name="anchor9">2.2.5</a>&nbsp;Interrupt countdown (0x90)</h4>
 
<p>
        When set, starts a countdown (in clocks) until assertion of
        the INT_N signal.
 
</p>
<a name="rfc.section.2.2.6"></a><h4><a name="anchor10">2.2.6</a>&nbsp;Checksum value (0x91)</h4>
 
<p>This register holds the checksum value of all data
       written to the accumulate register.  The checksum is a simple
       twos-complement checksum, so it can be compared with a CPU-generated 
       checksum.
</p>
<p>This register is readable and writeable.  Writing the register sets
       the current checksum value.
</p>
<a name="rfc.section.2.2.7"></a><h4><a name="anchor11">2.2.7</a>&nbsp;Checksum accumulate (0x92)</h4>
 
<p>This write-only register adds the written value to the value
       contained in the Checksum Value register.
</p>
<a name="rfc.section.2.2.8"></a><h4><a name="anchor12">2.2.8</a>&nbsp;Increment on read (0x93)</h4>
 
<p>This register increments every time it is read, so reading it
       repeatedly generates an incrementing sequence.  It can be reset
       by writing it to a new starting value.
</p>
<a name="rfc.section.2.3"></a><h4><a name="anchor13">2.3</a>&nbsp;Tool Chain</h4>
 
<p>The minimum toolchain required to simulate the tv80 is the
         <a class="info" href="#cver">CVer<span>Vanvick, A., GPL Cver Simulator, .</span></a>[3] Verilog simulator, and the
         <a class="info" href="#sdcc">SDCC<span>, Small Device C Compiler, .</span></a>[2] compiler/assembler/linker.  In
         addition, to run the <a class="info" href="#tvs80">tvs80<span>tvs80 test</span></a> instruction
         test suite, the <a class="info" href="#dosbox">DOSBox<span>, DOSBox, .</span></a>[4] DOS emulator
         is required.
 
</p>
<a name="rfc.section.2.4"></a><h4><a name="anchor14">2.4</a>&nbsp;Tests</h4>
 
<p>Most of the tests in the tv80 environment are written in C, and should
       be compiled with the <a class="info" href="#sdcc">sdcc<span>, Small Device C Compiler, .</span></a>[2] compiler.  
 
</p>
<a name="rfc.section.2.4.1"></a><h4><a name="tvs80">2.4.1</a>&nbsp;tvs80 test</h4>
 
<p>The tvs80 test is different than the rest of the tests, and is 
         written in its own flavor of assembly language.  This test provides
         a fairly comprehensive Z80 instruction test.
</p>
<p>The assembler for this test only runs under DOS.  To assemble
          under Unix/Linux, the <a class="info" href="#dosbox">"dosbox" DOS emulator<span>, DOSBox, .</span></a>[4] is required.  A script
         to run the assembler under dosbox, as well as the tvs80.asm source,
         is checked in under the "tests/tvs80" directory.
</p>
<a name="rfc.references1"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
<h3>3&nbsp;References</h3>
<table width="99%" border="0">
<tr><td class="author-text" valign="top"><a name="t80">[1]</a></td>
<td class="author-text">Wallner, D., "<a href="http://www.opencores.org/projects.cgi/web/t80/overview">VHDL T80 Core</a>".</td></tr>
<tr><td class="author-text" valign="top"><a name="sdcc">[2]</a></td>
<td class="author-text">"<a href="http://sdcc.sourceforge.net">Small Device C Compiler</a>".</td></tr>
<tr><td class="author-text" valign="top"><a name="cver">[3]</a></td>
<td class="author-text">Vanvick, A., "<a href="http://www.pragmatic-c.com/gpl-cver">GPL Cver Simulator</a>".</td></tr>
<tr><td class="author-text" valign="top"><a name="dosbox">[4]</a></td>
<td class="author-text">"<a href="http://dosbox.sourceforge.net">DOSBox</a>".</td></tr>
</table>
 
<a name="rfc.authors"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="bug" align="right"><tr><td class="bug"><a href="#toc" class="link2">&nbsp;TOC&nbsp;</a></td></tr></table>
<h3>Author's Address</h3>
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">Guy Hutchison</td></tr>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">OpenCores.org</td></tr>
<tr><td class="author" align="right">EMail:&nbsp;</td>
<td class="author-text"><a href="mailto:ghutchis@opencores.org">ghutchis@opencores.org</a></td></tr>
</table>
</body></html>
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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