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

Subversion Repositories tv80

[/] [tv80/] [tags/] [rel_1_0/] [doc/] [tv80_docs.html] - Diff between revs 76 and 84

Only display areas with differences | Details | Blame | View Log

Rev 76 Rev 84
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!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.3 $: tv80 Core Documentation</title>
<html lang="en"><head><title>$Revision: 1.3 $: tv80 Core Documentation</title>
<meta http-equiv="Expires" content="Fri, 17 Dec 2004 22:11:11 +0000">
<meta http-equiv="Expires" content="Fri, 17 Dec 2004 22:11:11 +0000">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="tv80 Core Documentation">
<meta name="description" content="tv80 Core Documentation">
<meta name="keywords" content="private, XML, Extensible Markup Language">
<meta name="keywords" content="private, XML, Extensible Markup Language">
<meta name="generator" content="xml2rfc v1.26 (http://xml.resource.org/)">
<meta name="generator" content="xml2rfc v1.26 (http://xml.resource.org/)">
<style type='text/css'>
<style type='text/css'>
<!--
<!--
    body {
    body {
        font-family: verdana, charcoal, helvetica, arial, sans-serif;
        font-family: verdana, charcoal, helvetica, arial, sans-serif;
        margin: 2em;
        margin: 2em;
        font-size: small ; color: #000000 ; background-color: #ffffff ; }
        font-size: small ; color: #000000 ; background-color: #ffffff ; }
    .title { color: #990000; font-size: x-large ;
    .title { color: #990000; font-size: x-large ;
        font-weight: bold; text-align: right;
        font-weight: bold; text-align: right;
        font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
        font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
        background-color: transparent; }
        background-color: transparent; }
    .filename { color: #666666; font-size: 18px; line-height: 28px;
    .filename { color: #666666; font-size: 18px; line-height: 28px;
        font-weight: bold; text-align: right;
        font-weight: bold; text-align: right;
        font-family: helvetica, arial, sans-serif;
        font-family: helvetica, arial, sans-serif;
        background-color: transparent; }
        background-color: transparent; }
    td.rfcbug { background-color: #000000 ; width: 30px ; height: 30px ;
    td.rfcbug { background-color: #000000 ; width: 30px ; height: 30px ;
        text-align: justify; vertical-align: middle ; padding-top: 2px ; }
        text-align: justify; vertical-align: middle ; padding-top: 2px ; }
    td.rfcbug span.RFC { color: #666666; font-weight: bold; text-decoration: none;
    td.rfcbug span.RFC { color: #666666; font-weight: bold; text-decoration: none;
        background-color: #000000 ;
        background-color: #000000 ;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-size: x-small ; }
        font-size: x-small ; }
    td.rfcbug span.hotText { color: #ffffff; font-weight: normal; text-decoration: none;
    td.rfcbug span.hotText { color: #ffffff; font-weight: normal; text-decoration: none;
        text-align: center ;
        text-align: center ;
        font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
        font-size: x-small ; background-color: #000000; }
        font-size: x-small ; background-color: #000000; }
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
    div#counter{margin-top: 100px}
    div#counter{margin-top: 100px}
 
 
    a.info{
    a.info{
        position:relative; /*this is the key*/
        position:relative; /*this is the key*/
        z-index:24;
        z-index:24;
        text-decoration:none}
        text-decoration:none}
 
 
    a.info:hover{z-index:25; background-color:#990000 ; color: #ffffff ;}
    a.info:hover{z-index:25; background-color:#990000 ; color: #ffffff ;}
 
 
    a.info span{display: none}
    a.info span{display: none}
 
 
    a.info:hover span{ /*the span will display just on :hover state*/
    a.info:hover span{ /*the span will display just on :hover state*/
        display:block;
        display:block;
        position:absolute;
        position:absolute;
        font-size: smaller ;
        font-size: smaller ;
        top:2em; left:2em; width:15em;
        top:2em; left:2em; width:15em;
        padding: 2px ;
        padding: 2px ;
        border:1px solid #333333;
        border:1px solid #333333;
        background-color:#eeeeee; color:#990000;
        background-color:#eeeeee; color:#990000;
        text-align: left ;}
        text-align: left ;}
 
 
     A { font-weight: bold; }
     A { font-weight: bold; }
     A:link { color: #990000; background-color: transparent ; }
     A:link { color: #990000; background-color: transparent ; }
     A:visited { color: #333333; background-color: transparent ; }
     A:visited { color: #333333; background-color: transparent ; }
     A:active { color: #333333; background-color: transparent ; }
     A:active { color: #333333; background-color: transparent ; }
 
 
    p { margin-left: 2em; margin-right: 2em; }
    p { margin-left: 2em; margin-right: 2em; }
    p.copyright { font-size: x-small ; }
    p.copyright { font-size: x-small ; }
    p.toc { font-size: small ; font-weight: bold ; margin-left: 3em ;}
    p.toc { font-size: small ; font-weight: bold ; margin-left: 3em ;}
 
 
    span.emph { font-style: italic; }
    span.emph { font-style: italic; }
    span.strong { font-weight: bold; }
    span.strong { font-weight: bold; }
    span.verb { font-family: "Courier New", Courier, monospace ; }
    span.verb { font-family: "Courier New", Courier, monospace ; }
 
 
    ol.text { margin-left: 2em; margin-right: 2em; }
    ol.text { margin-left: 2em; margin-right: 2em; }
    ul.text { margin-left: 2em; margin-right: 2em; }
    ul.text { margin-left: 2em; margin-right: 2em; }
    li { margin-left: 3em;  }
    li { margin-left: 3em;  }
 
 
    pre { margin-left: 3em; color: #333333;  background-color: transparent;
    pre { margin-left: 3em; color: #333333;  background-color: transparent;
        font-family: "Courier New", Courier, monospace ; font-size: small ;
        font-family: "Courier New", Courier, monospace ; font-size: small ;
        }
        }
 
 
    h3 { color: #333333; font-size: medium ;
    h3 { color: #333333; font-size: medium ;
        font-family: helvetica, arial, sans-serif ;
        font-family: helvetica, arial, sans-serif ;
        background-color: transparent; }
        background-color: transparent; }
    h4 { font-size: small; font-family: helvetica, arial, sans-serif ; }
    h4 { font-size: small; font-family: helvetica, arial, sans-serif ; }
 
 
    table.bug { width: 30px ; height: 15px ; }
    table.bug { width: 30px ; height: 15px ; }
    td.bug { color: #ffffff ; background-color: #990000 ;
    td.bug { color: #ffffff ; background-color: #990000 ;
        text-align: center ; width: 30px ; height: 15px ;
        text-align: center ; width: 30px ; height: 15px ;
         }
         }
    td.bug A.link2 { color: #ffffff ; font-weight: bold;
    td.bug A.link2 { color: #ffffff ; font-weight: bold;
        text-decoration: none;
        text-decoration: none;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
        font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
        font-size: x-small ; background-color: transparent }
        font-size: x-small ; background-color: transparent }
 
 
    td.header { color: #ffffff; font-size: x-small ;
    td.header { color: #ffffff; font-size: x-small ;
        font-family: arial, helvetica, sans-serif; vertical-align: top;
        font-family: arial, helvetica, sans-serif; vertical-align: top;
        background-color: #666666 ; width: 33% ; }
        background-color: #666666 ; width: 33% ; }
    td.author { font-weight: bold; margin-left: 4em; font-size: x-small ; }
    td.author { font-weight: bold; margin-left: 4em; font-size: x-small ; }
    td.author-text { font-size: x-small; }
    td.author-text { font-size: x-small; }
    table.data { vertical-align: top ; border-collapse: collapse ;
    table.data { vertical-align: top ; border-collapse: collapse ;
        border-style: solid solid solid solid ;
        border-style: solid solid solid solid ;
        border-color: black black black black ;
        border-color: black black black black ;
        font-size: small ; text-align: center ; }
        font-size: small ; text-align: center ; }
    table.data th { font-weight: bold ;
    table.data th { font-weight: bold ;
        border-style: solid solid solid solid ;
        border-style: solid solid solid solid ;
        border-color: black black black black ; }
        border-color: black black black black ; }
    table.data td {
    table.data td {
        border-style: solid solid solid solid ;
        border-style: solid solid solid solid ;
        border-color: #333333 #333333 #333333 #333333 ; }
        border-color: #333333 #333333 #333333 #333333 ; }
 
 
    hr { height: 1px }
    hr { height: 1px }
-->
-->
</style>
</style>
</head>
</head>
<body>
<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" 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">
<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.3 $</td><td class="header">G. Hutchison</td></tr>
<tr><td class="header">$Revision: 1.3 $</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">OpenCores.org</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">October 2004</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">October 2004</td></tr>
</table></td></tr></table>
</table></td></tr></table>
<div align="right"><span class="title"><br />tv80 Core Documentation</span></div>
<div align="right"><span class="title"><br />tv80 Core Documentation</span></div>
 
 
<h3>Abstract</h3>
<h3>Abstract</h3>
 
 
<p>
<p>
A synthesizable 8-bit microprocessor which is instruction-set compatable
A synthesizable 8-bit microprocessor which is instruction-set compatable
with the Z80, targetted at embedded and system-on-a-chip designs.
with the Z80, targetted at embedded and system-on-a-chip designs.
 
 
</p><a name="toc"></a><br /><hr />
</p><a name="toc"></a><br /><hr />
<h3>Table of Contents</h3>
<h3>Table of Contents</h3>
<p class="toc">
<p class="toc">
<a href="#anchor1">1.</a>&nbsp;
<a href="#anchor1">1.</a>&nbsp;
Background<br />
Background<br />
<a href="#anchor2">2.</a>&nbsp;
<a href="#anchor2">2.</a>&nbsp;
Core Area and Technology Mapping<br />
Core Area and Technology Mapping<br />
<a href="#anchor3">3.</a>&nbsp;
<a href="#anchor3">3.</a>&nbsp;
TV80 Peripherals<br />
TV80 Peripherals<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor4">3.1</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor4">3.1</a>&nbsp;
Simple GMII Interface<br />
Simple GMII Interface<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">3.1.1</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">3.1.1</a>&nbsp;
Register Interface<br />
Register Interface<br />
<a href="#anchor12">4.</a>&nbsp;
<a href="#anchor12">4.</a>&nbsp;
Verification Environment<br />
Verification Environment<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">4.1</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor13">4.1</a>&nbsp;
Memory Map<br />
Memory Map<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor14">4.2</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor14">4.2</a>&nbsp;
Control Registers<br />
Control Registers<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor15">4.2.1</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor15">4.2.1</a>&nbsp;
Simulation control (0x80)<br />
Simulation control (0x80)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor16">4.2.2</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor16">4.2.2</a>&nbsp;
Message output (0x81)<br />
Message output (0x81)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor17">4.2.3</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor17">4.2.3</a>&nbsp;
Timeout control (0x82)<br />
Timeout control (0x82)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor18">4.2.4</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor18">4.2.4</a>&nbsp;
Max timeout (0x84, 0x83)<br />
Max timeout (0x84, 0x83)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor19">4.2.5</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor19">4.2.5</a>&nbsp;
Interrupt countdown (0x90)<br />
Interrupt countdown (0x90)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor20">4.2.6</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor20">4.2.6</a>&nbsp;
Checksum value (0x91)<br />
Checksum value (0x91)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor21">4.2.7</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor21">4.2.7</a>&nbsp;
Checksum accumulate (0x92)<br />
Checksum accumulate (0x92)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor22">4.2.8</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor22">4.2.8</a>&nbsp;
Increment on read (0x93)<br />
Increment on read (0x93)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor23">4.3</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor23">4.3</a>&nbsp;
Tool Chain<br />
Tool Chain<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor24">4.4</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor24">4.4</a>&nbsp;
Tests<br />
Tests<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tvs80">4.4.1</a>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#tvs80">4.4.1</a>&nbsp;
tvs80 test<br />
tvs80 test<br />
<a href="#rfc.references1">5.</a>&nbsp;
<a href="#rfc.references1">5.</a>&nbsp;
References<br />
References<br />
<a href="#rfc.authors">&#167;</a>&nbsp;
<a href="#rfc.authors">&#167;</a>&nbsp;
Author's Address<br />
Author's Address<br />
</p>
</p>
<br clear="all" />
<br clear="all" />
 
 
<a name="anchor1"></a><br /><hr />
<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>
<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>
<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.
<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
            The tv80 has been modified since then for better synthesis
            timing/area results, and to incorporate several bug-fixes.
            timing/area results, and to incorporate several bug-fixes.
</p>
</p>
<p>The T80, and the tv80 derived from it, attempt to maintain the
<p>The T80, and the tv80 derived from it, attempt to maintain the
            original cycle timings of the Z80, but have radically different
            original cycle timings of the Z80, but have radically different
            internal designs and timings.  With its target being ASIC and
            internal designs and timings.  With its target being ASIC and
            embedded applications, the tv80 does not attempt to maintain
            embedded applications, the tv80 does not attempt to maintain
            the original pinout of the Z80.
            the original pinout of the Z80.
</p>
</p>
<a name="anchor2"></a><br /><hr />
<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>
<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;Core Area and Technology Mapping</h3>
<a name="rfc.section.2"></a><h3>2.&nbsp;Core Area and Technology Mapping</h3>
 
 
<p> This section tracks synthesis results in various technologies.  LSI 10K technology is
<p> This section tracks synthesis results in various technologies.  LSI 10K technology is
       used as a baseline because the library ships with Design Compiler.
       used as a baseline because the library ships with Design Compiler.
</p><pre>
</p><pre>
    Component         Clock Speed    Area     Technology (units)
    Component         Clock Speed    Area     Technology (units)
    ================  ===========  ========  =====================
    ================  ===========  ========  =====================
      tv80              33 Mhz     10733      lsi_10k (gates)
      tv80              33 Mhz     10733      lsi_10k (gates)
      simple_gmii       33 Mhz      1247      lsi_10k (gates)
      simple_gmii       33 Mhz      1247      lsi_10k (gates)
  </pre>
  </pre>
 
 
<a name="anchor3"></a><br /><hr />
<a name="anchor3"></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>
<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.3"></a><h3>3.&nbsp;TV80 Peripherals</h3>
<a name="rfc.section.3"></a><h3>3.&nbsp;TV80 Peripherals</h3>
 
 
<p>The TV80 design includes a number (one, at this point) of peripherals.  These peripherals
<p>The TV80 design includes a number (one, at this point) of peripherals.  These peripherals
      are hardware-synthesizable, but may not be fully tested or functional.
      are hardware-synthesizable, but may not be fully tested or functional.
</p>
</p>
<a name="rfc.section.3.1"></a><h4><a name="anchor4">3.1</a>&nbsp;Simple GMII Interface</h4>
<a name="rfc.section.3.1"></a><h4><a name="anchor4">3.1</a>&nbsp;Simple GMII Interface</h4>
 
 
<p>This block presents a GMII interface on one side and a TV80 processor interface on
<p>This block presents a GMII interface on one side and a TV80 processor interface on
        the other.  The processor-side controls are all mapped into I/O-space.  The block
        the other.  The processor-side controls are all mapped into I/O-space.  The block
        can only process a single packet in each direction at one time.  This is only really
        can only process a single packet in each direction at one time.  This is only really
        a limitation on the RX side, where any incoming packets will be dropped until the
        a limitation on the RX side, where any incoming packets will be dropped until the
        processor removes the first packet from the RX buffer.
        processor removes the first packet from the RX buffer.
</p>
</p>
<p>The GMII interface is signalling only, and does not support 10/100 operation, half duplex
<p>The GMII interface is signalling only, and does not support 10/100 operation, half duplex
        mode, flow control, or any other aspects of 802.3.
        mode, flow control, or any other aspects of 802.3.
</p>
</p>
<a name="rfc.section.3.1.1"></a><h4><a name="anchor5">3.1.1</a>&nbsp;Register Interface</h4>
<a name="rfc.section.3.1.1"></a><h4><a name="anchor5">3.1.1</a>&nbsp;Register Interface</h4>
 
 
<p>This block consumes 3 bits of I/O address space.  The register addresses below are
<p>This block consumes 3 bits of I/O address space.  The register addresses below are
            relative to the configurable base address of the block, which must be aligned to an
            relative to the configurable base address of the block, which must be aligned to an
            8-byte boundary.  Registers 0x6 and 0x7 are reserved.
            8-byte boundary.  Registers 0x6 and 0x7 are reserved.
</p>
</p>
<a name="rfc.section.3.1.1.1"></a><h4><a name="anchor6">3.1.1.1</a>&nbsp;Status Register (0x0)</h4>
<a name="rfc.section.3.1.1.1"></a><h4><a name="anchor6">3.1.1.1</a>&nbsp;Status Register (0x0)</h4>
 
 
<p>Bit 0 of the status register indicates that a packet is available in the RX buffer.
<p>Bit 0 of the status register indicates that a packet is available in the RX buffer.
                This bit will be cleared when the last byte of data is read out of the RX buffer.
                This bit will be cleared when the last byte of data is read out of the RX buffer.
</p>
</p>
<p>Bit 1 is set when the packet in the TX buffer has finished transmitting.  This bit
<p>Bit 1 is set when the packet in the TX buffer has finished transmitting.  This bit
                will be cleared when the first byte of data of the next packet is written into the
                will be cleared when the first byte of data of the next packet is written into the
                TX buffer.
                TX buffer.
</p>
</p>
<p>This register is read-only.
<p>This register is read-only.
</p>
</p>
<a name="rfc.section.3.1.1.2"></a><h4><a name="anchor7">3.1.1.2</a>&nbsp;Control Register (0x1)</h4>
<a name="rfc.section.3.1.1.2"></a><h4><a name="anchor7">3.1.1.2</a>&nbsp;Control Register (0x1)</h4>
 
 
<p>Bit 0 controls sending packets.  When a 1 is written to this bit, the data in
<p>Bit 0 controls sending packets.  When a 1 is written to this bit, the data in
                the TX buffer will be sent as a single packet.
                the TX buffer will be sent as a single packet.
</p>
</p>
<p>This register is write-only.
<p>This register is write-only.
</p>
</p>
<a name="rfc.section.3.1.1.3"></a><h4><a name="anchor8">3.1.1.3</a>&nbsp;RX Length Register (Low, 0x2)</h4>
<a name="rfc.section.3.1.1.3"></a><h4><a name="anchor8">3.1.1.3</a>&nbsp;RX Length Register (Low, 0x2)</h4>
 
 
<p>This register contains the low 8 bits of the length of the packet currently
<p>This register contains the low 8 bits of the length of the packet currently
                residing in the RX buffer.
                residing in the RX buffer.
</p>
</p>
<p>This register is read-only.
<p>This register is read-only.
</p>
</p>
<a name="rfc.section.3.1.1.4"></a><h4><a name="anchor9">3.1.1.4</a>&nbsp;RX Length Register (High, 0x3)</h4>
<a name="rfc.section.3.1.1.4"></a><h4><a name="anchor9">3.1.1.4</a>&nbsp;RX Length Register (High, 0x3)</h4>
 
 
<p>This register contains the high 8 bits of the length of the packet currently
<p>This register contains the high 8 bits of the length of the packet currently
                residing in the RX buffer.
                residing in the RX buffer.
</p>
</p>
<p>This register is read-only.
<p>This register is read-only.
</p>
</p>
<a name="rfc.section.3.1.1.5"></a><h4><a name="anchor10">3.1.1.5</a>&nbsp;RX Data Register (0x4)</h4>
<a name="rfc.section.3.1.1.5"></a><h4><a name="anchor10">3.1.1.5</a>&nbsp;RX Data Register (0x4)</h4>
 
 
<p>This register contains the next byte of data in the RX packet buffer.
<p>This register contains the next byte of data in the RX packet buffer.
</p>
</p>
<p>This register is read-only.
<p>This register is read-only.
</p>
</p>
<a name="rfc.section.3.1.1.6"></a><h4><a name="anchor11">3.1.1.6</a>&nbsp;TX Data Register (0x5)</h4>
<a name="rfc.section.3.1.1.6"></a><h4><a name="anchor11">3.1.1.6</a>&nbsp;TX Data Register (0x5)</h4>
 
 
<p>Writing to this register puts data in the TX packet buffer.  This register does
<p>Writing to this register puts data in the TX packet buffer.  This register does
               not perform bounds checking; it is the program's responsibility not to write more
               not perform bounds checking; it is the program's responsibility not to write more
               data than the size of the TX buffer.
               data than the size of the TX buffer.
</p>
</p>
<p>This register is write-only.
<p>This register is write-only.
</p>
</p>
<a name="anchor12"></a><br /><hr />
<a name="anchor12"></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>
<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.4"></a><h3>4.&nbsp;Verification Environment</h3>
<a name="rfc.section.4"></a><h3>4.&nbsp;Verification Environment</h3>
 
 
<a name="rfc.section.4.1"></a><h4><a name="anchor13">4.1</a>&nbsp;Memory Map</h4>
<a name="rfc.section.4.1"></a><h4><a name="anchor13">4.1</a>&nbsp;Memory Map</h4>
 
 
<p>
<p>
Environment memory space is divided into a 32k ROM region and a 32k RAM
Environment memory space is divided into a 32k ROM region and a 32k RAM
region, as follows:
region, as follows:
 
 
</p>
</p>
<pre>
<pre>
  0000-7FFF:  ROM
  0000-7FFF:  ROM
  8000-FFFF:  RAM
  8000-FFFF:  RAM
</pre>
</pre>
<p>
<p>
 
 
<p>Environment I/O space is allocated as follows:
<p>Environment I/O space is allocated as follows:
</p><pre>
</p><pre>
  00-0F:  Unused
  00-0F:  Unused
  10-1F:  Test devices
  10-1F:  Test devices
  20-7F:  Unused
  20-7F:  Unused
  80-9F:  Environment control
  80-9F:  Environment control
  A0-FF:  Unused
  A0-FF:  Unused
</pre>
</pre>
 
 
 
 
<a name="rfc.section.4.2"></a><h4><a name="anchor14">4.2</a>&nbsp;Control Registers</h4>
<a name="rfc.section.4.2"></a><h4><a name="anchor14">4.2</a>&nbsp;Control Registers</h4>
 
 
<a name="rfc.section.4.2.1"></a><h4><a name="anchor15">4.2.1</a>&nbsp;Simulation control (0x80)</h4>
<a name="rfc.section.4.2.1"></a><h4><a name="anchor15">4.2.1</a>&nbsp;Simulation control (0x80)</h4>
 
 
<ul class="text">
<ul class="text">
<li>   Write '01' to end simulation with test passed
<li>   Write '01' to end simulation with test passed
</li>
</li>
<li>   Write '02' to end with test failed
<li>   Write '02' to end with test failed
</li>
</li>
<li>   Write '03' to turn on dumping
<li>   Write '03' to turn on dumping
</li>
</li>
<li>   Write '04' to turn off dumping
<li>   Write '04' to turn off dumping
</li>
</li>
</ul>
</ul>
<a name="rfc.section.4.2.2"></a><h4><a name="anchor16">4.2.2</a>&nbsp;Message output (0x81)</h4>
<a name="rfc.section.4.2.2"></a><h4><a name="anchor16">4.2.2</a>&nbsp;Message output (0x81)</h4>
 
 
<p>
<p>
        Write characters to this port one at a time.  When the
        Write characters to this port one at a time.  When the
        newline ('\n', ASCII 0x0A) character is written, the
        newline ('\n', ASCII 0x0A) character is written, the
        environment will print out the collected string.
        environment will print out the collected string.
 
 
</p>
</p>
<a name="rfc.section.4.2.3"></a><h4><a name="anchor17">4.2.3</a>&nbsp;Timeout control (0x82)</h4>
<a name="rfc.section.4.2.3"></a><h4><a name="anchor17">4.2.3</a>&nbsp;Timeout control (0x82)</h4>
 
 
<p>
<p>
        Bit[0] enables the timeout counter,
        Bit[0] enables the timeout counter,
        Bit[1] resets the counter to 0.
        Bit[1] resets the counter to 0.
        Timeout counter defaults to enabled at simulation start.
        Timeout counter defaults to enabled at simulation start.
 
 
</p>
</p>
<a name="rfc.section.4.2.4"></a><h4><a name="anchor18">4.2.4</a>&nbsp;Max timeout (0x84, 0x83)</h4>
<a name="rfc.section.4.2.4"></a><h4><a name="anchor18">4.2.4</a>&nbsp;Max timeout (0x84, 0x83)</h4>
 
 
<p>
<p>
        Holds 16-bit timeout value (amount of time in clocks before
        Holds 16-bit timeout value (amount of time in clocks before
        timeout error occurs).
        timeout error occurs).
 
 
</p>
</p>
<a name="rfc.section.4.2.5"></a><h4><a name="anchor19">4.2.5</a>&nbsp;Interrupt countdown (0x90)</h4>
<a name="rfc.section.4.2.5"></a><h4><a name="anchor19">4.2.5</a>&nbsp;Interrupt countdown (0x90)</h4>
 
 
<p>
<p>
        When set, starts a countdown (in clocks) until assertion of
        When set, starts a countdown (in clocks) until assertion of
        the INT_N signal.
        the INT_N signal.
 
 
</p>
</p>
<a name="rfc.section.4.2.6"></a><h4><a name="anchor20">4.2.6</a>&nbsp;Checksum value (0x91)</h4>
<a name="rfc.section.4.2.6"></a><h4><a name="anchor20">4.2.6</a>&nbsp;Checksum value (0x91)</h4>
 
 
<p>This register holds the checksum value of all data
<p>This register holds the checksum value of all data
       written to the accumulate register.  The checksum is a simple
       written to the accumulate register.  The checksum is a simple
       twos-complement checksum, so it can be compared with a CPU-generated
       twos-complement checksum, so it can be compared with a CPU-generated
       checksum.
       checksum.
</p>
</p>
<p>This register is readable and writeable.  Writing the register sets
<p>This register is readable and writeable.  Writing the register sets
       the current checksum value.
       the current checksum value.
</p>
</p>
<a name="rfc.section.4.2.7"></a><h4><a name="anchor21">4.2.7</a>&nbsp;Checksum accumulate (0x92)</h4>
<a name="rfc.section.4.2.7"></a><h4><a name="anchor21">4.2.7</a>&nbsp;Checksum accumulate (0x92)</h4>
 
 
<p>This write-only register adds the written value to the value
<p>This write-only register adds the written value to the value
       contained in the Checksum Value register.
       contained in the Checksum Value register.
</p>
</p>
<a name="rfc.section.4.2.8"></a><h4><a name="anchor22">4.2.8</a>&nbsp;Increment on read (0x93)</h4>
<a name="rfc.section.4.2.8"></a><h4><a name="anchor22">4.2.8</a>&nbsp;Increment on read (0x93)</h4>
 
 
<p>This register increments every time it is read, so reading it
<p>This register increments every time it is read, so reading it
       repeatedly generates an incrementing sequence.  It can be reset
       repeatedly generates an incrementing sequence.  It can be reset
       by writing it to a new starting value.
       by writing it to a new starting value.
</p>
</p>
<a name="rfc.section.4.3"></a><h4><a name="anchor23">4.3</a>&nbsp;Tool Chain</h4>
<a name="rfc.section.4.3"></a><h4><a name="anchor23">4.3</a>&nbsp;Tool Chain</h4>
 
 
<p>The minimum toolchain required to simulate the tv80 is the
<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="#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
         <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
         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
         test suite, the <a class="info" href="#dosbox">DOSBox<span>, DOSBox, .</span></a>[4] DOS emulator
         is required.
         is required.
 
 
</p>
</p>
<a name="rfc.section.4.4"></a><h4><a name="anchor24">4.4</a>&nbsp;Tests</h4>
<a name="rfc.section.4.4"></a><h4><a name="anchor24">4.4</a>&nbsp;Tests</h4>
 
 
<p>Most of the tests in the tv80 environment are written in C, and should
<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.
       be compiled with the <a class="info" href="#sdcc">sdcc<span>, Small Device C Compiler, .</span></a>[2] compiler.
 
 
</p>
</p>
<a name="rfc.section.4.4.1"></a><h4><a name="tvs80">4.4.1</a>&nbsp;tvs80 test</h4>
<a name="rfc.section.4.4.1"></a><h4><a name="tvs80">4.4.1</a>&nbsp;tvs80 test</h4>
 
 
<p>The tvs80 test is different than the rest of the tests, and is
<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
         written in its own flavor of assembly language.  This test provides
         a fairly comprehensive Z80 instruction test.
         a fairly comprehensive Z80 instruction test.
</p>
</p>
<p>The assembler for this test only runs under DOS.  To assemble
<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
          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,
         to run the assembler under dosbox, as well as the tvs80.asm source,
         is checked in under the "tests/tvs80" directory.
         is checked in under the "tests/tvs80" directory.
</p>
</p>
<a name="rfc.references1"></a><br /><hr />
<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>
<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>5&nbsp;References</h3>
<h3>5&nbsp;References</h3>
<table width="99%" border="0">
<table width="99%" border="0">
<tr><td class="author-text" valign="top"><a name="t80">[1]</a></td>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<td class="author-text">"<a href="http://dosbox.sourceforge.net">DOSBox</a>".</td></tr>
</table>
</table>
 
 
<a name="rfc.authors"></a><br /><hr />
<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>
<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>
<h3>Author's Address</h3>
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="author-text">&nbsp;</td>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">Guy Hutchison</td></tr>
<td class="author-text">Guy Hutchison</td></tr>
<tr><td class="author-text">&nbsp;</td>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">OpenCores.org</td></tr>
<td class="author-text">OpenCores.org</td></tr>
<tr><td class="author" align="right">EMail:&nbsp;</td>
<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>
<td class="author-text"><a href="mailto:ghutchis@opencores.org">ghutchis@opencores.org</a></td></tr>
</table>
</table>
</body></html>
</body></html>
 
 

powered by: WebSVN 2.1.0

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