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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [doc/] [html/] [core.html] - Diff between revs 195 and 202

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 195 Rev 202
Line 68... Line 68...
<a name="2.1 Design structure"></a>
<a name="2.1 Design structure"></a>
<h2>2.1 Design structure</h2>
<h2>2.1 Design structure</h2>
 
 
The following diagram shows the openMSP430 design structure:
The following diagram shows the openMSP430 design structure:
<br><br>
<br><br>
<img src="http://opencores.org/usercontent,img,1354053264" alt="CPU Structure" title="CPU Structure" width="80%">
<img src="http://opencores.org/usercontent,img,1430426442" alt="CPU Structure" title="CPU Structure" width="80%">
<br>
<br>
<ul>
<ul>
        <li><b>Frontend</b>: This module performs the instruction Fetch and Decode tasks. It also contains the execution state machine.</li>
        <li><b>Frontend</b>: This module performs the instruction Fetch and Decode tasks. It also contains the execution state machine.</li>
        <li><b>Execution unit</b>:
        <li><b>Execution unit</b>:
Containing the ALU and the register file, this module executes the
Containing the ALU and the register file, this module executes the
Line 80... Line 80...
        <li><b>Serial Debug Interface</b>:
        <li><b>Serial Debug Interface</b>:
Contains all the required logic for a Nexus class 3 debugging unit
Contains all the required logic for a Nexus class 3 debugging unit
(without trace). Communication with the host is performed with a standard
(without trace). Communication with the host is performed with a standard
two-wire interface following either the UART 8N1 or I<sup>2</sup>C serial protocol.</li>
two-wire interface following either the UART 8N1 or I<sup>2</sup>C serial protocol.</li>
   <li><b>Memory backbone</b>: This block
   <li><b>Memory backbone</b>: This block
performs a simple arbitration between the frontend and execution-unit
performs a simple arbitration between frontend, execution-unit, DMA and Serial-Debug interfaces
for program, data and peripheral memory access.</li>
for program, data and peripheral memory accesses.</li>
   <li><b>Basic Clock Module</b>: Generates MCLK, ACLK, SMCLK and manage the low power modes.</li>
   <li><b>Basic Clock Module</b>: Generates MCLK, ACLK, SMCLK and manage the low power modes.</li>
   <li><b>SFRs</b>: The <b>S</b>pecial <b>F</b>unction <b>R</b>egister<b>s</b> block contain diverse configuration registers (NMI, Watchdog, ...).</li>
   <li><b>SFRs</b>: The <b>S</b>pecial <b>F</b>unction <b>R</b>egister<b>s</b> block contain diverse configuration registers (NMI, Watchdog, ...).</li>
   <li><b>Watchdog</b>:
   <li><b>Watchdog</b>:
Although it is a peripheral, the watchdog is directly included in
Although it is a peripheral, the watchdog is directly included in
the core because of its tight links with the NMI interrupts and PUC
the core because of its tight links with the NMI interrupts and PUC
Line 237... Line 237...
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Possibility to generate a software PUC reset<br>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Possibility to generate a software PUC reset<br>
//-------------------------------------------------------<br>
//-------------------------------------------------------<br>
`define WATCHDOG<br>
`define WATCHDOG<br>
      <br>
      <br>
      <br>
      <br>
///-------------------------------------------------------<br>
//-------------------------------------------------------<br>
 
// Include/Exclude DMA interface support<br>
 
//-------------------------------------------------------<br>
 
//`define DMA_IF_EN<br>
 
      <br>
 
      <br>
 
//-------------------------------------------------------<br>
// Include/Exclude Non-Maskable-Interrupt support<br>
// Include/Exclude Non-Maskable-Interrupt support<br>
//--------------------------------------------------------<br>
//--------------------------------------------------------<br>
`define NMI<br>
`define NMI<br>
      <br>
      <br>
      <br>
      <br>
Line 474... Line 480...
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
<br>
<br>
The values of these parameters are then directly accessible through the CPU_NR register of the SFR peripheral.<br>
The values of these parameters are then directly accessible by software through the CPU_NR register of the SFR peripheral.<br>
For example, if both cores share the same program memory, the software can take advantage of this information as following:
For example, if both cores share the same program memory, the software can take advantage of this information as following:
<br><br>
<br><br>
<table border="0" cellpadding="0" cellspacing="4">
<table border="0" cellpadding="0" cellspacing="4">
<tbody><tr>
<tbody><tr>
<td width="35"><br></td>
<td width="35"><br></td>
Line 518... Line 524...
between 512B and 32kB. As a consequence, the data memory space will be
between 512B and 32kB. As a consequence, the data memory space will be
shifted up, which means that the linker script of your favorite
shifted up, which means that the linker script of your favorite
toolchain will have to be modified accordingly.<br>
toolchain will have to be modified accordingly.<br>
The following schematic should hopefully illustrate this:<br>
The following schematic should hopefully illustrate this:<br>
<br><br>
<br><br>
<img src="usercontent,img,1306066277" alt="Memory mapping" title="Memory mapping" width="80%">
<img src="http://opencores.org/usercontent,img,1306066277" alt="Memory mapping" title="Memory mapping" width="80%">
<br>
<br>
<br><br>
<br><br>
 
 
<a name="2.5 Interrupt mapping"></a>
<a name="2.5 Interrupt mapping"></a>
<h2>2.5 Interrupt mapping</h2>
<h2>2.5 Interrupt mapping</h2>
Line 708... Line 714...
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
      </td>
      </td>
<td> Reset Pin (active low, asynchronous and non-glitchy)                             </td>
<td> Reset Pin (active low, asynchronous and non-glitchy)                             </td>
        </tr>
        </tr>
 
 
 
        <tr> <td colspan="5" align="center"> <b><i>Interrupts</i></b>                     </td></tr>
 
        <tr>
 
                  <td> irq                                                              </td>
 
                  <td> Input                                                            </td>
 
                  <td> `IRQ_NR-2<b><sup><font color="#ff0000">1</font></sup></b>        </td>
 
                  <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Maskable interrupts (one-hot signal)                             </td>
 
   </tr>
 
        <tr>
 
             <td> nmi                                                              </td>
 
             <td> Input                                                            </td>
 
             <td> 1                                                                </td>
 
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
 
or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
 
<td> Non-maskable interrupt (asynchronous and non-glitchy)<br>
 
Set to 0 if unused.<br>
 
                            </td>
 
        </tr>
 
        <tr>
 
             <td> irq_acc                                                          </td>
 
             <td> Output                                                           </td>
 
             <td> `IRQ_NR-2<b><sup><font color="#ff0000">1</font></sup></b>        </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Interrupt request accepted (one-hot signal)                      </td>
 
        </tr>
 
 
        <tr> <td colspan="5" align="center"> <b><i>Program Memory interface</i></b>       </td></tr>
        <tr> <td colspan="5" align="center"> <b><i>Program Memory interface</i></b>       </td></tr>
        <tr>
        <tr>
             <td> pmem_addr                                                        </td>
             <td> pmem_addr                                                        </td>
             <td> Output                                                           </td>
             <td> Output                                                           </td>
Line 834... Line 867...
             <td> 2                                                                </td>
             <td> 2                                                                </td>
             <td style="vertical-align: top; text-align: center;">mclk<br>
             <td style="vertical-align: top; text-align: center;">mclk<br>
      </td>
      </td>
<td> Peripheral write enable (high active)                            </td>
<td> Peripheral write enable (high active)                            </td>
        </tr>
        </tr>
 
        <tr> <td colspan="5" align="center"> <b><i>Direct Memory Access interface</i></b> </td></tr>
        <tr> <td colspan="5" align="center"> <b><i>Interrupts</i></b>                     </td></tr>
 
        <tr>
        <tr>
                  <td> irq                                                              </td>
             <td> dma_addr                                                         </td>
                  <td> Input                                                            </td>
                  <td> Input                                                            </td>
                  <td> `IRQ_NR-2<b><sup><font color="#ff0000">1</font></sup></b>        </td>
             <td> 15                                                               </td>
                  <td style="vertical-align: top; text-align: center;">mclk<br>
                  <td style="vertical-align: top; text-align: center;">mclk<br>
      </td>
      </td>
<td> Maskable interrupts (one-hot signal)                             </td>
<td> Direct Memory Access address                                              </td>
   </tr>
   </tr>
        <tr>
        <tr>
             <td> nmi                                                              </td>
             <td> dma_din                                                          </td>
 
             <td> Input                                                            </td>
 
             <td> 16                                                               </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Direct Memory Access data input                                           </td>
 
   </tr>
 
        <tr>
 
             <td> dma_dout                                                         </td>
 
             <td> Output                                                           </td>
 
             <td> 16                                                               </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Direct Memory Access data output                                          </td>
 
        </tr>
 
        <tr>
 
             <td> dma_en                                                           </td>
             <td> Input                                                            </td>
             <td> Input                                                            </td>
             <td> 1                                                                </td>
             <td> 1                                                                </td>
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
             <td style="vertical-align: top; text-align: center;">mclk<br>
or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
 
<td> Non-maskable interrupt (asynchronous and non-glitchy)<br>
 
Set to 0 if unused.<br>
 
                            </td>
                            </td>
 
<td> Direct Memory Access enable (high active)                                 </td>
        </tr>
        </tr>
        <tr>
        <tr>
             <td> irq_acc                                                          </td>
             <td> dma_priority                                                     </td>
 
             <td> Input                                                            </td>
 
             <td> 1                                                                </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Direct Memory Access priority (0:low / 1:high)                            </td>
 
        </tr>
 
        <tr>
 
             <td> dma_ready                                                        </td>
             <td> Output                                                           </td>
             <td> Output                                                           </td>
             <td> `IRQ_NR-2<b><sup><font color="#ff0000">1</font></sup></b>        </td>
             <td> 1                                                                </td>
             <td style="vertical-align: top; text-align: center;">mclk<br>
             <td style="vertical-align: top; text-align: center;">mclk<br>
      </td>
      </td>
<td> Interrupt request accepted (one-hot signal)                      </td>
<td> Direct Memory Access is complete                                          </td>
 
        </tr>
 
        <tr>
 
             <td> dma_resp                                                         </td>
 
             <td> Output                                                           </td>
 
             <td> 1                                                                </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Direct Memory Access response (0:Okay / 1:Error)                          </td>
 
        </tr>
 
        <tr>
 
             <td> dma_we                                                           </td>
 
             <td> Input                                                            </td>
 
             <td> 2                                                                </td>
 
             <td style="vertical-align: top; text-align: center;">mclk<br>
 
      </td>
 
<td> Direct Memory Access write byte enable (high active)                      </td>
 
        </tr>
 
        <tr>
 
             <td> dma_wkup                                                         </td>
 
             <td> Input                                                            </td>
 
             <td> 1                                                                </td>
 
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
 
      </td>
 
<td> ASIC ONLY: DMA Wake-up (asynchronous and non-glitchy)                     </td>
        </tr>
        </tr>
 
 
        <tr> <td colspan="5" align="center"> <b><i>Serial Debug interface</i></b>         </td></tr>
        <tr> <td colspan="5" align="center"> <b><i>Serial Debug interface</i></b>         </td></tr>
        <tr>
        <tr>
             <td> dbg_en                                                           </td>
             <td> dbg_en                                                           </td>

powered by: WebSVN 2.1.0

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