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

Subversion Repositories pavr

[/] [pavr/] [trunk/] [doc/] [html/] [group__pavr__pipeline__jumps.html] - Diff between revs 4 and 6

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

Rev 4 Rev 6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Jumps</title>
<title>Jumps</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
</head><body>
<!-- Generated by Doxygen 1.2.16 -->
<!-- Generated by Doxygen 1.2.16 -->
<center>
<center>
<a class="qindex" href="main.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<a class="qindex" href="main.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>Jumps<br>
<hr><h1>Jumps<br>
<small>
<small>
[<a class="el" href="group__pavr__pipeline.html">Pipeline details</a>]</small>
[<a class="el" href="group__pavr__pipeline.html">Pipeline details</a>]</small>
</h1><table border=0 cellpadding=0 cellspacing=0>
</h1><table border=0 cellpadding=0 cellspacing=0>
</table>
</table>
<dl compact><dt><b>
<dl compact><dt><b>
A few details</b><dd>
A few details</b><dd>
There are 4 jump instructions: <ul>
There are 4 jump instructions: <ul>
<li> RJMP (relative jump) <br>
<li> RJMP (relative jump) <br>
 The jump address is obtained by adding to the current Program Counter a 12 bit signed offset obtained from the instruction word. <li> IJMP (indirect jump) <br>
 The jump address is obtained by adding to the current Program Counter a 12 bit signed offset obtained from the instruction word. <li> IJMP (indirect jump) <br>
 The jump address is read from the Z pointer register. <br>
 The jump address is read from the Z pointer register. <br>
 The jump destination resides in the lower 64 Kwords of Program Memory. <br>
 The jump destination resides in the lower 64 Kwords of Program Memory. <br>
 <li> EIJMP (extended indirect jump) <br>
 <li> EIJMP (extended indirect jump) <br>
 The jump address is read from EIND:Z (higher 6 bis from EIND register in IOF, and lower 16 bits from Z pointer in RF). <br>
 The jump address is read from EIND:Z (higher 6 bis from EIND register in IOF, and lower 16 bits from Z pointer in RF). <br>
 This jump accesses the whole 22 bit addressing space of the Program Memory. <br>
 This jump accesses the whole 22 bit addressing space of the Program Memory. <br>
 <li> JMP (long jump) <br>
 <li> JMP (long jump) <br>
 The jump address is read from two consecutive instruction words. <br>
 The jump address is read from two consecutive instruction words. <br>
 This jump accesses the whole 22 bit addressing space of the Program Memory. <br>
 This jump accesses the whole 22 bit addressing space of the Program Memory. <br>
 </ul>
 </ul>
<br>
<br>
 When a jump is detected into the pipeline, next two instructions (that were already uselessly fetched from the Program Memory) are flushed. Then, the Program Memory manager is asked permission to access the Program Memory and to modify the instruction flow (modify the Program Counter). <br>
 When a jump is detected into the pipeline, next two instructions (that were already uselessly fetched from the Program Memory) are flushed. Then, the Program Memory manager is asked permission to access the Program Memory and to modify the instruction flow (modify the Program Counter). <br>
 After that, unless it gets flushed or stalled by an older instruction, the jump instruction will configure the pipeline to fetch from the new PM address. <br>
 After that, unless it gets flushed or stalled by an older instruction, the jump instruction will configure the pipeline to fetch from the new PM address. <br>
 <br>
 <br>
 RJMP and JMP take 3 clocks, while IJMP and EIJMP take 4 clocks. <br>
 RJMP and JMP take 3 clocks, while IJMP and EIJMP take 4 clocks. <br>
</dl><dl compact><dt><b>
</dl><dl compact><dt><b>
Jump state machine</b><dd>
Jump state machine</b><dd>
<br>
<br>
 <div align="center">
 <div align="center">
<img src="pavr_pipe_jumps_01.gif" alt="pavr_pipe_jumps_01.gif">
<img src="pavr_pipe_jumps_01.gif" alt="pavr_pipe_jumps_01.gif">
</div>
</div>
<br>
<br>
 </dl><hr><address align="right"><small>Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by
 </dl><hr><address align="right"><small>Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by
<a href="http://www.doxygen.org/index.html">
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.16 </small></address>
width=110 height=53></a>1.2.16 </small></address>
</body>
</body>
</html>
</html>
 
 

powered by: WebSVN 2.1.0

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