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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [doc/] [html/] [integration.html] - Blame information for rev 149

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

Line No. Rev Author Line
1 50 olivier.gi
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 135 olivier.gi
<html><head><title>openMSP430 Integration and Connectivity</title>
3
 
4
 
5
<meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body><br>
6 50 olivier.gi
<a name="TOC"></a>
7
<h3>Table of content</h3>
8
<ul>
9 135 olivier.gi
        <li><a href="#1.%20Overview">              1. Overview</a></li>
10
        <li><a href="#2.%20Clocks">                2. Clocks</a></li>
11
        <li><a href="#3.%20Resets">                3. Resets</a></li>
12
        <li><a href="#4.%20Program%20Memory">        4. Program Memory</a></li>
13
        <li><a href="#5.%20Data%20Memory">           5. Data Memory</a></li>
14
        <li><a href="#6.%20Peripherals">           6. Peripherals</a></li>
15
        <li><a href="#7.%20Interrupts">            7. Interrupts</a></li>
16
        <li><a href="#8.%20Serial%20Debug%20Interface">8. Serial Debug Interface</a></li>
17 50 olivier.gi
</ul>
18
 
19
<a name="1. Overview"></a>
20
<h1>1. Overview</h1>
21 135 olivier.gi
This chapter aims to give a comprehensive description of all openMSP430
22
core interfaces in order to facilitate its integration within an ASIC
23
or FPGA.<br><br>The
24
following diagram shows an overview of the openMSP430 core connectivity
25
in an FPGA system (i.e. all ASIC specific pins are left unused):<br><br>
26
<img src="usercontent,img,1319891132" alt="Core Integration" title="Core Integration" width="100%">
27
<br><br>
28
The full pinout of the core is summarized in the following table.<br>
29
<br>
30 50 olivier.gi
<table border="1">
31 135 olivier.gi
        <tbody><tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b>    </td> <td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;">Clock</span><br style="font-weight: bold;">
32
      <span style="font-weight: bold;">Domain</span><br>
33
      </td>
34
<td align="center"><b>Description</b></td> </tr>
35 50 olivier.gi
 
36 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>Clocks</i></b>                         </td></tr>
37 116 olivier.gi
        <tr>
38 135 olivier.gi
             <td> <a href="#2.%20Clocks">cpu_en</a>                                 </td>
39
             <td style="text-align: center;"> Input                                                            </td>
40
             <td style="text-align: center;"> 1                                                                </td>
41
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
42
 
43
or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
44
<td><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">Enable CPU code execution (asynchronous and non-glitchy).<br>Set to 1 if unused.</span>                         </td>
45 116 olivier.gi
        </tr>
46 50 olivier.gi
        <tr>
47 135 olivier.gi
             <td> <a href="#2.%20Clocks">dco_clk</a>                                </td>
48
             <td style="text-align: center;"> Input                                                            </td>
49
             <td style="text-align: center;"> 1                                                                </td>
50
             <td style="vertical-align: top; text-align: center;">-<br>
51
      </td>
52
<td><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">Fast oscillator (fast clock)</span>                          </td>
53 50 olivier.gi
        </tr>
54
        <tr>
55 135 olivier.gi
             <td> <a href="#2.%20Clocks">lfxt_clk</a>                               </td>
56
             <td style="text-align: center;"> Input                                                            </td>
57
             <td style="text-align: center;"> 1                                                                </td>
58
             <td style="vertical-align: top; text-align: center;">-<br>
59
      </td>
60
<td><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">Low frequency oscillator (typ. 32kHz)<br>Set to 0 if unused.</span></td>
61 50 olivier.gi
   </tr>
62
        <tr>
63 135 olivier.gi
             <td> <a href="#2.%20Clocks">mclk</a>                                   </td>
64
             <td style="text-align: center;"> Output                                                           </td>
65
             <td style="text-align: center;"> 1                                                                </td>
66
             <td style="vertical-align: top; text-align: center;">-<br>
67
      </td>
68
<td> Main system clock                                                </td>
69 50 olivier.gi
        </tr>
70
        <tr>
71 135 olivier.gi
             <td> <a href="#2.%20Clocks">aclk_en</a>                                </td>
72
             <td style="text-align: center;"> Output                                                           </td>
73
             <td style="text-align: center;"> 1                                                                </td>
74
             <td style="vertical-align: top; text-align: center;">mclk<br>
75
      </td>
76
<td><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">FPGA ONLY: ACLK enable</span>                                                      </td>
77 50 olivier.gi
   </tr>
78
        <tr>
79 135 olivier.gi
             <td> <a href="#2.%20Clocks">smclk_en</a>                               </td>
80
             <td style="text-align: center;"> Output                                                           </td>
81
             <td style="text-align: center;"> 1                                                                </td>
82
             <td style="vertical-align: top; text-align: center;">mclk<br>
83
      </td>
84
<td> <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">FPGA ONLY: SMCLK enable</span>                                                     </td>
85 50 olivier.gi
   </tr>
86
 
87
        <tr>
88 135 olivier.gi
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">dco_enable</a></td>
89
      <td style="vertical-align: top; text-align: center;">Output<br>
90
      </td>
91
      <td style="vertical-align: top; text-align: center;">1<br>
92
      </td>
93
      <td style="vertical-align: top; text-align: center;">dco_clk<br>
94
      </td>
95
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: Fast oscillator enable</span></td>
96
    </tr>
97
    <tr>
98
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">dco_wkup</a></td>
99
      <td style="vertical-align: top; text-align: center;">Output</td>
100
      <td style="vertical-align: top; text-align: center;">1<br>
101
      </td>
102
      <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
103
      </td>
104
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: Fast oscillator wakeup (asynchronous)</span></td>
105
    </tr>
106
    <tr>
107
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">lfxt_enable</a></td>
108
      <td style="vertical-align: top; text-align: center;">Output</td>
109
      <td style="vertical-align: top; text-align: center;">1<br>
110
      </td>
111
      <td style="vertical-align: top; text-align: center;">lfxt_clk<br>
112
      </td>
113
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: Low frequency oscillator enable</span></td>
114
    </tr>
115
    <tr>
116
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">lfxt_wkup</a></td>
117
      <td style="vertical-align: top; text-align: center;">Output</td>
118
      <td style="vertical-align: top; text-align: center;">1<br>
119
      </td>
120
      <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
121
      </td>
122
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: Low frequency oscillator wakeup (asynchronous)</span></td>
123
    </tr>
124
    <tr>
125
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">aclk</a></td>
126
      <td style="vertical-align: top; text-align: center;">Output</td>
127
      <td style="vertical-align: top; text-align: center;">1<br>
128
      </td>
129
      <td style="vertical-align: top; text-align: center;">-<br>
130
      </td>
131
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: ACLK</span></td>
132
    </tr>
133
    <tr>
134
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">smclk</a></td>
135
      <td style="vertical-align: top; text-align: center;">Output</td>
136
      <td style="vertical-align: top; text-align: center;">1<br>
137
      </td>
138
      <td style="vertical-align: top; text-align: center;">-<br>
139
      </td>
140
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: SMCLK</span></td>
141
    </tr>
142
    <tr>
143
      <td style="vertical-align: top;"><a href="integration.html#2.%20Clocks">wkup</a></td>
144
      <td style="vertical-align: top; text-align: center;">Input<br>
145
      </td>
146
      <td style="vertical-align: top; text-align: center;">1<br>
147
      </td>
148
      <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
149
      </td>
150
      <td style="vertical-align: top;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">ASIC ONLY: System Wake-up (asynchronous and non-glitchy)<br>Set to 0 if unused.</span></td>
151
    </tr>
152
<tr> <td colspan="5" align="center"> <b><i>Resets</i></b>                         </td></tr>
153
        <tr>
154
             <td> <a href="#3.%20Resets">puc_rst</a>                                </td>
155
             <td style="text-align: center;"> Output                                                           </td>
156
             <td style="text-align: center;"> 1                                                                </td>
157
             <td style="vertical-align: top; text-align: center;">mclk<br>
158
      </td>
159
<td> Main system reset                                                </td>
160 50 olivier.gi
   </tr>
161
        <tr>
162 135 olivier.gi
             <td> <a href="#3.%20Resets">reset_n</a>                                </td>
163
             <td style="text-align: center;"> Input                                                            </td>
164
             <td style="text-align: center;"> 1                                                                </td>
165
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
166
      </td>
167
<td><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">Reset Pin (active low, asynchronous and non-glitchy)</span>                             </td>
168 50 olivier.gi
        </tr>
169
 
170
 
171 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>Program Memory interface</i></b>       </td></tr>
172 50 olivier.gi
        <tr>
173 135 olivier.gi
             <td> <a href="#4.%20Program%20Memory">pmem_addr</a>                      </td>
174
             <td style="text-align: center;"> Output                                                           </td>
175
             <td style="text-align: center;"><small> `PMEM_AWIDTH</small><sup style="color: red; font-weight: bold;">1</sup>                                        </td>
176
             <td style="vertical-align: top; text-align: center;">mclk<br>
177
      </td>
178
<td> Program Memory address                                           </td>
179 50 olivier.gi
        </tr>
180
        <tr>
181 135 olivier.gi
             <td> <a href="#4.%20Program%20Memory">pmem_cen</a>                       </td>
182
             <td style="text-align: center;"> Output                                                           </td>
183
             <td style="text-align: center;"> 1                                                                </td>
184
             <td style="vertical-align: top; text-align: center;">mclk</td>
185
<td> Program Memory chip enable (low active)                          </td>
186 50 olivier.gi
        </tr>
187
        <tr>
188 135 olivier.gi
             <td> <a href="#4.%20Program%20Memory">pmem_din</a>                       </td>
189
             <td style="text-align: center;"> Output                                                           </td>
190
             <td style="text-align: center;"> 16                                                               </td>
191
             <td style="vertical-align: top; text-align: center;">mclk</td>
192
<td> Program Memory data input<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"> (optional<span class="Apple-converted-space">&nbsp;</span><b><sup><font color="#ff0000">2</font></sup></b>)</span>                                        </td>
193 50 olivier.gi
        </tr>
194
        <tr>
195 135 olivier.gi
             <td> <a href="#4.%20Program%20Memory">pmem_dout</a>                      </td>
196
             <td style="text-align: center;"> Input                                                            </td>
197
             <td style="text-align: center;"> 16                                                               </td>
198
             <td style="vertical-align: top; text-align: center;">mclk</td>
199
<td> Program Memory data output                                       </td>
200 50 olivier.gi
        </tr>
201
        <tr>
202 135 olivier.gi
             <td> <a href="#4.%20Program%20Memory">pmem_wen</a>                       </td>
203
             <td style="text-align: center;"> Output                                                           </td>
204
             <td style="text-align: center;"> 2                                                                </td>
205
             <td style="vertical-align: top; text-align: center;">mclk</td>
206
<td> Program Memory write byte enable (low active) <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">(optional<span class="Apple-converted-space">&nbsp;</span><b><sup><font color="#ff0000">2</font></sup></b>)</span>                    </td>
207 50 olivier.gi
        </tr>
208
 
209 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>Data Memory interface</i></b>          </td></tr>
210 50 olivier.gi
        <tr>
211 135 olivier.gi
             <td> <a href="#5.%20Data%20Memory">dmem_addr</a>                         </td>
212
             <td style="text-align: center;"> Output                                                           </td>
213
             <td style="text-align: center;"><small> `DMEM_AWIDTH</small><sup style="font-weight: bold; color: red;">1</sup>                                        </td>
214
             <td style="vertical-align: top; text-align: center;">mclk</td>
215
<td> Data Memory address                                              </td>
216 50 olivier.gi
        </tr>
217
        <tr>
218 135 olivier.gi
             <td> <a href="#5.%20Data%20Memory">dmem_cen</a>                          </td>
219
             <td style="text-align: center;"> Output                                                           </td>
220
             <td style="text-align: center;"> 1                                                                </td>
221
             <td style="vertical-align: top; text-align: center;">mclk</td>
222
<td> Data Memory chip enable (low active)                             </td>
223 50 olivier.gi
        </tr>
224
        <tr>
225 135 olivier.gi
             <td> <a href="#5.%20Data%20Memory">dmem_din</a>                          </td>
226
             <td style="text-align: center;"> Output                                                           </td>
227
             <td style="text-align: center;"> 16                                                               </td>
228
             <td style="vertical-align: top; text-align: center;">mclk</td>
229
<td> Data Memory data input                                           </td>
230 50 olivier.gi
        </tr>
231
        <tr>
232 135 olivier.gi
             <td> <a href="#5.%20Data%20Memory">dmem_dout</a>                         </td>
233
             <td style="text-align: center;"> Input                                                            </td>
234
             <td style="text-align: center;"> 16                                                               </td>
235
             <td style="vertical-align: top; text-align: center;">mclk</td>
236
<td> Data Memory data output                                          </td>
237 50 olivier.gi
        </tr>
238
        <tr>
239 135 olivier.gi
             <td> <a href="#5.%20Data%20Memory">dmem_wen</a>                          </td>
240
             <td style="text-align: center;"> Output                                                           </td>
241
             <td style="text-align: center;"> 2                                                                </td>
242
             <td style="vertical-align: top; text-align: center;">mclk</td>
243
<td> Data Memory write byte enable (low active)                       </td>
244 50 olivier.gi
        </tr>
245
 
246 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>External Peripherals interface</i></b> </td></tr>
247 50 olivier.gi
        <tr>
248 135 olivier.gi
             <td> <a href="#6.%20Peripherals">per_addr</a>                          </td>
249
             <td style="text-align: center;"> Output                                                           </td>
250
             <td style="text-align: center;"> 14                                                               </td>
251
             <td style="vertical-align: top; text-align: center;">mclk</td>
252
<td> Peripheral address                                               </td>
253 50 olivier.gi
        </tr>
254
        <tr>
255 135 olivier.gi
             <td> <a href="#6.%20Peripherals">per_din</a>                           </td>
256
             <td style="text-align: center;"> Output                                                           </td>
257
             <td style="text-align: center;"> 16                                                               </td>
258
             <td style="vertical-align: top; text-align: center;">mclk</td>
259
<td> Peripheral data input                                            </td>
260 50 olivier.gi
   </tr>
261
        <tr>
262 135 olivier.gi
             <td> <a href="#6.%20Peripherals">per_dout</a>                          </td>
263
             <td style="text-align: center;"> Input                                                            </td>
264
             <td style="text-align: center;"> 16                                                               </td>
265
             <td style="vertical-align: top; text-align: center;">mclk</td>
266
<td> Peripheral data output                                           </td>
267 50 olivier.gi
        </tr>
268
        <tr>
269 135 olivier.gi
             <td> <a href="#6.%20Peripherals">per_en</a>                            </td>
270
             <td style="text-align: center;"> Output                                                           </td>
271
             <td style="text-align: center;"> 1                                                                </td>
272
             <td style="vertical-align: top; text-align: center;">mclk</td>
273
<td> Peripheral enable (high active)                                  </td>
274 50 olivier.gi
        </tr>
275
        <tr>
276 135 olivier.gi
             <td> <a href="#6.%20Peripherals">per_we</a>                            </td>
277
             <td style="text-align: center;"> Output                                                           </td>
278
             <td style="text-align: center;"> 2                                                                </td>
279
             <td style="vertical-align: top; text-align: center;">mclk</td>
280
<td> Peripheral write byte enable (high active)                       </td>
281 50 olivier.gi
        </tr>
282
 
283 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>Interrupts</i></b>                     </td></tr>
284 50 olivier.gi
        <tr>
285 135 olivier.gi
                  <td> <a href="#7.%20Interrupts">irq</a>                                </td>
286
                  <td style="text-align: center;"> Input                                                            </td>
287
                  <td style="text-align: center;"> 14                                                               </td>
288
                  <td style="vertical-align: top; text-align: center;">mclk</td>
289
<td> Maskable interrupts (one-hot signal)                             </td>
290 50 olivier.gi
   </tr>
291
        <tr>
292 135 olivier.gi
             <td> <a href="#7.%20Interrupts">nmi</a>                                </td>
293
             <td style="text-align: center;"> Input                                                            </td>
294
             <td style="text-align: center;"> 1                                                                </td>
295
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
296
 
297
or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
298
<td> Non-maskable interrupt (asynchronous)                            </td>
299 50 olivier.gi
        </tr>
300
        <tr>
301 135 olivier.gi
             <td> <a href="#7.%20Interrupts">irq_acc</a>                            </td>
302
             <td style="text-align: center;"> Output                                                           </td>
303
             <td style="text-align: center;"> 14                                                               </td>
304
             <td style="vertical-align: top; text-align: center;">mclk</td>
305
<td> Interrupt request accepted (one-hot signal)                      </td>
306 50 olivier.gi
        </tr>
307
 
308 135 olivier.gi
        <tr> <td colspan="5" align="center"> <b><i>Serial Debug interface</i></b>         </td></tr>
309 50 olivier.gi
        <tr>
310 135 olivier.gi
             <td> <a href="#8.%20Serial%20Debug%20Interface">dbg_en</a>                 </td>
311
             <td style="text-align: center;"> Input                                                            </td>
312
             <td style="text-align: center;"> 1                                                                </td>
313
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
314
 
315
or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
316
<td> Debug interface enable (asynchronous)<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-converted-space">&nbsp;</span><b><sup><font color="#ff0000">3</font></sup></b></span>                            </td>
317 116 olivier.gi
        </tr>
318
        <tr>
319 135 olivier.gi
             <td> <a href="#8.%20Serial%20Debug%20Interface">dbg_freeze</a>             </td>
320
             <td style="text-align: center;"> Output                                                           </td>
321
             <td style="text-align: center;"> 1                                                                </td>
322
             <td style="vertical-align: top; text-align: center;">mclk</td>
323
<td> Freeze peripherals                                               </td>
324 50 olivier.gi
        </tr>
325
        <tr>
326 135 olivier.gi
             <td> <a href="#8.%20Serial%20Debug%20Interface">dbg_uart_txd</a>           </td>
327
             <td style="text-align: center;"> Output                                                           </td>
328
             <td style="text-align: center;"> 1                                                                </td>
329
             <td style="vertical-align: top; text-align: center;">mclk</td>
330
<td> Debug interface: UART TXD                                        </td>
331 50 olivier.gi
        </tr>
332
        <tr>
333 135 olivier.gi
             <td> <a href="#8.%20Serial%20Debug%20Interface">dbg_uart_rxd</a>           </td>
334
             <td style="text-align: center;"> Input                                                            </td>
335
             <td style="text-align: center;"> 1                                                                </td>
336
             <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
337
      </td>
338
<td> Debug interface: UART RXD (asynchronous)                         </td>
339
        </tr><tr align="center">
340
      <td colspan="5" rowspan="1" style="vertical-align: top;"><b><i>Scan</i></b></td>
341
    </tr>
342
    <tr>
343
      <td style="vertical-align: top;">scan_enable<br>
344
      </td>
345
      <td style="vertical-align: top; text-align: center;">Input<br>
346
      </td>
347
      <td style="vertical-align: top; text-align: center;">1<br>
348
      </td>
349
      <td style="vertical-align: top; text-align: center;">dco_clk<br>
350
      </td>
351
      <td style="vertical-align: top;">ASIC ONLY: Scan enable (active during scan shifting)</td>
352
    </tr>
353
    <tr>
354
      <td style="vertical-align: top;">scan_mode<br>
355
      </td>
356
      <td style="vertical-align: top; text-align: center;">Input<br>
357
      </td>
358
      <td style="vertical-align: top; text-align: center;">1<br>
359
      </td>
360
      <td style="vertical-align: top; text-align: center;">&lt;stable&gt;<br>
361
      </td>
362
      <td style="vertical-align: top;">ASIC ONLY: Scan mode</td>
363
    </tr>
364 50 olivier.gi
 
365 135 olivier.gi
</tbody></table>
366
<br>
367
<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><b><sup><font color="#ff0000">1</font></sup></b>: This parameter is declared in the "openMSP430_defines.v" file and defines the RAM/ROM size.<br><b><sup><font color="#ff0000">2</font></sup></b>:
368
These two optional ports can be connected whenever the program memory
369
is a RAM. This will allow the user to load a program through the serial
370
debug interface and to use software breakpoints.<br><b><sup><font color="#ff0000">3</font></sup></b>: When disabled, the debug interface is hold into reset (and clock gated in ASIC mode). As a consequence, the<span class="Apple-converted-space">&nbsp;</span><b><i>dbg_en</i></b><span class="Apple-converted-space">&nbsp;</span>port can be used to reset the debug interface without disrupting the CPU execution.<br><b><sup><font color="#ff0000">4</font></sup></b>: Clock domain is selectable through configuration in the "openMSP430_defines.v" file (see Advanced System Configuration).</span><sup></sup><br>
371
<br>
372 50 olivier.gi
 
373 135 olivier.gi
 
374 50 olivier.gi
<a name="2. Clocks"></a>
375 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
376 50 olivier.gi
<h1>2. Clocks</h1>
377
 
378 135 olivier.gi
The different clocks in the design are managed by the Basic Clock Module as following in the FPGA configuration:
379
<br><br>
380
<img src="usercontent,img,1319831724" alt="Clock structure diagram" title="Clock structure diagram" width="75%">
381
<br>
382
<br>
383
or as following in the ASIC configuration:<br>
384
<br>
385
<img src="usercontent,img,1319832480" alt="Clock structure diagram" title="Clock structure diagram" width="75%">
386
<br>
387 50 olivier.gi
<ul>
388 116 olivier.gi
        <li>
389 135 olivier.gi
             <b><font color="#0000b0">CPU_EN</font></b>: this input port provides a hardware mean to stop or resume CPU execution. When unused, this port should be set to 1.
390
             <br><br>
391 116 olivier.gi
        </li>
392
        <li>
393 135 olivier.gi
             <b><font color="#0000b0">DCO_CLK</font></b>: this input port is typically connected to a PLL, RC oscillator or any clock resource the target FPGA/ASIC might provide.<br>For the FPGA configuration, from a synthesis tool perspective (ISE, Quartus, Libero, Design
394
Compiler...), this the only port where a clock needs to be declared. <br><br>
395 50 olivier.gi
        </li>
396 135 olivier.gi
 
397
  <li>
398
             <b><font color="#0000b0">LFXT_CLK</font></b>:
399
in an FPGA system, if ACLK_EN or SMCLK_EN are going to be used in the project (for example
400
through the Watchdog or TimerA peripherals), then this port needs to be
401
connected to a clock running at least two time slower as DCO_CLK
402
(typically 32kHz). It can be connected to 0 or 1 otherwise.<br>
403
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><title></title><meta name="generator" content="Bluefish 2.0.1" ><style type="text/css">
404
        <!--
405
                @page { margin: 0.79in }
406
                P { margin-bottom: 0in }
407
        --></style>
408
In an ASIC, if ACLK or SMCLK are used and if the clock muxes are
409
included, then this port can be connected to any kind of clock source
410
(it doesn't need to be low-frequency. The name was just
411
kept to be consistent with TI's documentation).<br><br>
412 50 olivier.gi
        </li>
413 135 olivier.gi
 
414 50 olivier.gi
        <li>
415 135 olivier.gi
        <b><font color="#00b000">MCLK</font></b>:
416
the main system clock drives the complete openMSP430 clock domain,
417
including program/data memories and the peripheral interfaces. <br><br>
418 50 olivier.gi
        </li>
419
        <li>
420 135 olivier.gi
             <b><font color="#00b000">ACLK_EN / SMCLK_EN</font></b>:
421
these two clock enable signals can be used in order to emulate the
422
original ACLK and SMCLK from the MSP430 specification when the core is
423
targeting an FPGA.<br>
424
            An example of this can be found in the Watchdog and TimerA modules, where it is implemented as following:<br><br>
425
<img src="usercontent,img,1246434793" alt="Clock implementation example" title="Clock implementation example"><br>
426
</li>
427 50 olivier.gi
</ul>
428 135 olivier.gi
<ul>
429
  <li>
430
             <b><font color="#00b000">ACLK / SMCLK</font></b>: ACLK and MCLK are available through these two ports when targeting an ASIC.<br>&nbsp;</li>
431
  <li>
432
             <b><font color="#00b000">DCO_ENABLE / DCO_WKUP</font></b>: ASIC specific signals controlling the fast clock generator for low power mode support (SCG0 bit in the status register).<br><br></li>
433
  <li>
434
             <b><font color="#00b000">LFXT_ENABLE / LFXT_WKUP</font></b>:
435
ASIC specific signals controlling the low frequency clock generator for
436
low power mode support (OSCOFF bit in the status register).<br>&nbsp;</li>
437
  <li><b><font color="#0000b0">WKUP</font></b>:
438
When activated, this signal allows a peripheral to restore all CPU
439
clocks (i.e. wakeup the cpu) prior IRQ generation.&nbsp; Note that IRQs
440
MUST always be generated from the MCLK clock domain. </li>
441
</ul>
442 50 olivier.gi
 
443 135 olivier.gi
As an FPGA system illustration, the following waveform shows the different
444
clocks where the software running on the openMSP430 configures the
445
BCSCTL1 and BCSCTL2 registers so that <i>ACLK_EN</i> and <i>SMCLK_EN</i> are respectively running at <i>LFXT_CLK/2</i> and <i>DCO_CLK/4</i>.<br><br>
446
<img src="usercontent,img,1263320613" alt="Waveforms: Clocks - Jan 12. 2010" title="Waveforms: Clocks - Jan 12. 2010" width="100%">
447
<br><br>
448
 
449 50 olivier.gi
<a name="3. Resets"></a>
450 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
451 50 olivier.gi
<h1>3. Resets</h1>
452
 
453
<ul>
454
        <li><b><font color="#0000b0">RESET_N</font></b>: this input port is typically connected to a board push button and is generally combined with the system power-on-reset.
455 135 olivier.gi
             <br><br>
456 50 olivier.gi
        </li>
457
        <li>
458 135 olivier.gi
            <b><font color="#00b000">PUC_RST</font></b>: the Power-Up-Clear signal is asynchronously set with the reset pin (<i>RESET_N</i>),
459
the watchdog reset or the serial debug interface reset. In order to get
460
clean timings, it is synchronously cleared with MCLK. As
461
a general rule, this signal should be used as the reset of the <i>MCLK</i> clock domain.
462
             <br><br>
463 50 olivier.gi
        </li>
464
</ul>
465 135 olivier.gi
The following waveform illustrates this:<br><br>
466
<img src="usercontent,img,1263320655" alt="Waveforms: Resets - Jan 12. 2010" title="Waveforms: Resets - Jan 12. 2010" width="100%">
467
 <br><br>
468 50 olivier.gi
 
469
<a name="4. Program Memory"></a>
470 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
471 50 olivier.gi
<h1>4. Program Memory</h1>
472
 
473 135 olivier.gi
Depending on the project needs, the program memory can be either implemented as a ROM or RAM.<br>
474
<br>
475
If a ROM is selected then the <i>PMEM_DIN</i> and <i>PMEM_WEN</i>
476
ports won't be connected. In that case, the software debug capabilities
477
are limited because the serial debug interface can only use hardware
478
breakpoints in order to stop the program execution. In addition,
479
updating the software will require a reprogramming of the FPGA... or a new ROM mask for an ASIC.<br>
480
<br>
481
If the program memory is a RAM, the developer gets full flexibility
482
regarding software debugging. The serial debug interface can be used to
483
update the program memory and software breakpoints can be used.<br>
484
<br><br>
485 50 olivier.gi
That said, the protocol between the openMSP430 and the program memory is quite standard. Signal description goes as following:
486
<ul>
487
        <li><b><font color="#00b000">PMEM_CEN</font></b>: when this signal is active, the read/write access will be executed with the next <i>MCLK</i> rising edge. Note that this signal is LOW ACTIVE.
488 135 olivier.gi
             <br><br>
489 50 olivier.gi
        </li>
490
        <li>
491 135 olivier.gi
            <b><font color="#00b000">PMEM_ADDR</font></b>: Memory address of the 16 bit word which is going to be accessed.<br>
492 50 olivier.gi
            <b>Note:</b> in order to calculate the core logical address from the program memory physical address, the formula goes as following: <i>LOGICAL@=2*PHYSICAL@+0x10000-PMEM_SIZE</i>
493 135 olivier.gi
             <br><br>
494 50 olivier.gi
        </li>
495
        <li>
496
            <b><font color="#0000b0">PMEM_DOUT</font></b>: the memory output word will be updated with every valid read/write access (i.e. <i>PMEM_DOUT</i> is not updated if <i>PMEM_CEN</i>=1).
497 135 olivier.gi
             <br><br>
498 50 olivier.gi
        </li>
499
        <li>
500 135 olivier.gi
            <b><font color="#00b000">PMEM_WEN</font></b>:
501
this signal selects which byte should be written during a valid access.
502
PMEM_WEN[0] will activate a write on the lower byte, PMEM_WEN[1] a
503
write on the upper byte. Note that these signals are LOW ACTIVE. <br><br>
504 50 olivier.gi
        </li>
505
        <li>
506
            <b><font color="#00b000">PMEM_DIN</font></b>: the memory input word will be written with the valid write access according to the <i>PMEM_WEN</i> value.
507 135 olivier.gi
             <br><br>
508 50 olivier.gi
        </li>
509
</ul>
510 135 olivier.gi
The following waveform illustrates some read accesses of the program
511
memory (write access are illustrated in the data memory section):<br><br>
512
<img src="usercontent,img,1263320706" alt="Waveforms: Program memory - Jan " title="Waveforms: Program memory - Jan " width="100%">
513
<br><br>
514 50 olivier.gi
<a name="5. Data Memory"></a>
515 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
516 50 olivier.gi
<h1>5. Data Memory</h1>
517
 
518 135 olivier.gi
The data memory is always implemented as a RAM.<br>
519
<br>
520
The protocol between the openMSP430 and the data memory is the same as
521
the one of the program memory. Therefore, the signal description is the
522
same:
523 50 olivier.gi
<ul>
524
        <li><b><font color="#00b000">DMEM_CEN</font></b>: when this signal is active, the read/write access will be executed with the next <i>MCLK</i> rising edge. Note that this signal is LOW ACTIVE.
525 135 olivier.gi
             <br><br>
526 50 olivier.gi
        </li>
527
        <li>
528 135 olivier.gi
            <b><font color="#00b000">DMEM_ADDR</font></b>: Memory address of the 16 bit word which is going to be accessed.<br>
529 50 olivier.gi
            <b>Note:</b> in order to calculate the core logical address from the data memory physical address, the formula goes as following: <i>LOGICAL@=2*PHYSICAL@+0x200</i>
530 135 olivier.gi
             <br><br>
531 50 olivier.gi
        </li>
532
        <li>
533
            <b><font color="#0000b0">DMEM_DOUT</font></b>: the memory output word will be updated with every valid read/write access (i.e. <i>DMEM_DOUT</i> is not updated if <i>DMEM_CEN</i>=1).
534 135 olivier.gi
             <br><br>
535 50 olivier.gi
        </li>
536
        <li>
537 135 olivier.gi
            <b><font color="#00b000">DMEM_WEN</font></b>:
538
this signal selects which byte should be written during a valid access.
539
DMEM_WEN[0] will activate a write on the lower byte, DMEM_WEN[1] a
540
write on the upper byte. Note that these signals are LOW ACTIVE. <br><br>
541 50 olivier.gi
        </li>
542
        <li>
543
            <b><font color="#00b000">DMEM_DIN</font></b>: the memory input word will be written with the valid write access according to the <i>DMEM_WEN</i> value.
544 135 olivier.gi
             <br><br>
545 50 olivier.gi
        </li>
546
</ul>
547 135 olivier.gi
The following waveform illustrates some read/write access to the data memory:<br><br>
548
<img src="usercontent,img,1263320770" alt="Waveforms: Data memory - Jan 12." title="Waveforms: Data memory - Jan 12." width="100%">
549
<br><br>
550 50 olivier.gi
 
551
<a name="6. Peripherals"></a>
552 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
553 50 olivier.gi
<h1>6. Peripherals</h1>
554 135 olivier.gi
The protocol between the openMSP430 core and its peripherals is the
555
exactly same as the one with the data and program memories in regard
556
to write access and differs slightly for read access.<br>
557
<br>
558
On the connectivity side, the specificity is that the read data bus of
559
all peripherals should be ORed together before being connected to the
560
core, as showed in the diagram of the <a href="#1.%20Overview">Overview</a> section.<br>
561
From the logical point of view, during a read access, each peripheral
562
outputs the combinatorial value of its read mux and returns 0 if it
563
doesn't contain the addressed register. On the waveforms, this
564
translates by seeing the register value on <i>PER_DOUT</i> while <i>PER_EN</i> is valid and not one clock cycle afterward as it is the case with the program and data memories.<br>
565
In any case, it is recommended to use the templates provided with the core in order to develop your own custom peripherals.<br>
566 50 olivier.gi
The signal description therefore goes as following:
567
<ul>
568
        <li><b><font color="#00b000">PER_EN</font></b>: when this signal is active, read access are executed during the current <i>MCLK</i> cycle while write access will be executed with the next <i>MCLK</i> rising edge. Note that this signal is HIGH ACTIVE.
569 135 olivier.gi
             <br><br>
570 50 olivier.gi
        </li>
571
        <li>
572 135 olivier.gi
            <b><font color="#00b000">PER_ADDR</font></b>:
573
peripheral register address of the 16 bit word which is currently
574
accessed. It is to be noted that a 14 bit address will always be
575
provided from the openMSP430 to the peripheral in order to accommodate
576
the biggest possible PER_SIZE Verilog configuration option (i.e. 32kB
577
as opposed to 512B by default).<br>
578 50 olivier.gi
            <b>Note:</b> in order to calculate the core logical address from the peripheral register physical address, the formula goes as following: <i>LOGICAL@=2*PHYSICAL@</i>
579 135 olivier.gi
             <br><br>
580 50 olivier.gi
        </li>
581
        <li>
582
            <b><font color="#0000b0">PER_DOUT</font></b>: the peripheral output word will be updated with every valid read/write access, it will be set to 0 otherwise.
583 135 olivier.gi
             <br><br>
584 50 olivier.gi
        </li>
585
        <li>
586 135 olivier.gi
            <b><font color="#00b000">PER_WE</font></b>:
587
this signal selects which byte should be written during a valid access.
588
PER_WE[0] will activate a write on the lower byte, PER_WE[1] a write on
589
the upper byte. Note that these signals are HIGH ACTIVE. <br><br>
590 50 olivier.gi
        </li>
591
        <li>
592
            <b><font color="#00b000">PER_DIN</font></b>: the peripheral input word will be written with the valid write access according to the <i>PER_WEN</i> value.
593 135 olivier.gi
             <br><br>
594 50 olivier.gi
        </li>
595
</ul>
596 135 olivier.gi
The following waveform illustrates some read/write access to the peripheral registers:<br><br>
597
<img src="usercontent,img,1263320825" alt="Waveforms: Peripherals - Jan 12." title="Waveforms: Peripherals - Jan 12." width="100%">
598
<br><br>
599 50 olivier.gi
 
600
 
601
<a name="7. Interrupts"></a>
602 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
603
<h1>7. Interrupts</h1> As with the original MSP430, the interrupt
604
priorities of the openMSP430 are fixed in hardware accordingly to the
605
connectivity of the <i>NMI</i> and <i>IRQ</i> ports.<br>
606
If two interrupts are pending simultaneously, the higher priority interrupt will be serviced first.<br>
607
The following table summarize this:<br><br>
608 50 olivier.gi
<table border="1">
609 135 olivier.gi
<tbody><tr>
610 50 olivier.gi
   <td align="center"><b>&nbsp;&nbsp;Interrupt Port&nbsp;&nbsp;</b></td>
611
   <td align="center"><b>&nbsp;&nbsp;Vector address&nbsp;&nbsp;</b></td>
612
   <td align="center"><b>&nbsp;&nbsp;Priority&nbsp;&nbsp;</b></td>
613
</tr>
614
<tr>
615
   <td align="center">RESET_N</td>
616
   <td align="center">0xFFFE</td>
617
   <td align="center">15 (highest)</td>
618
</tr>
619
<tr>
620
   <td align="center">NMI</td>
621
   <td align="center">0xFFFC</td>
622
   <td align="center">14</td>
623
</tr>
624
<tr>
625
   <td align="center">IRQ[13]</td>
626
   <td align="center">0xFFFA</td>
627
   <td align="center">13</td>
628
</tr>
629
<tr>
630
   <td align="center">IRQ[12]</td>
631
   <td align="center">0xFFF8</td>
632
   <td align="center">12</td>
633
</tr>
634
<tr>
635
   <td align="center">IRQ[11]</td>
636
   <td align="center">0xFFF6</td>
637
   <td align="center">11</td>
638
</tr>
639
<tr>
640
   <td align="center">IRQ[10]</td>
641
   <td align="center">0xFFF4</td>
642
   <td align="center">10</td>
643
</tr>
644
<tr>
645
   <td align="center">IRQ[9]</td>
646
   <td align="center">0xFFF2</td>
647
   <td align="center">9</td>
648
</tr>
649
<tr>
650
   <td align="center">IRQ[8]</td>
651
   <td align="center">0xFFF0</td>
652
   <td align="center">8</td>
653
</tr>
654
<tr>
655
   <td align="center">IRQ[7]</td>
656
   <td align="center">0xFFEE</td>
657
   <td align="center">7</td>
658
</tr>
659
<tr>
660
   <td align="center">IRQ[6]</td>
661
   <td align="center">0xFFEC</td>
662
   <td align="center">6</td>
663
</tr>
664
<tr>
665
   <td align="center">IRQ[5]</td>
666
   <td align="center">0xFFEA</td>
667
   <td align="center">5</td>
668
</tr>
669
<tr>
670
   <td align="center">IRQ[4]</td>
671
   <td align="center">0xFFE8</td>
672
   <td align="center">4</td>
673
</tr>
674
<tr>
675
   <td align="center">IRQ[3]</td>
676
   <td align="center">0xFFE6</td>
677
   <td align="center">3</td>
678
</tr>
679
<tr>
680
   <td align="center">IRQ[2]</td>
681
   <td align="center">0xFFE4</td>
682
   <td align="center">2</td>
683
</tr>
684
<tr>
685
   <td align="center">IRQ[1]</td>
686
   <td align="center">0xFFE2</td>
687
   <td align="center">1</td>
688
</tr>
689
<tr>
690
   <td align="center">IRQ[0]</td>
691
   <td align="center">0xFFE0</td>
692
   <td align="center">0 (lowest)</td>
693
</tr>
694 135 olivier.gi
</tbody></table>
695
<br><br>
696 50 olivier.gi
The signal description goes as following:
697
<ul>
698
        <li>
699 135 olivier.gi
            <b><font color="#0000b0">NMI</font></b>: The <b>N</b>on-<b>M</b>askable <b>I</b>nterrupt has higher priority than other IRQs and is masked by the NMIIE bit instead of GIE.<br>
700
It is internally synchronized to the <i>MCLK</i>
701
domain and can therefore be connected to any asynchronous signal of the
702
chip (which could for example be a pin of the FPGA). If unused, this
703
signal should be connected to 0. <br><br>
704 50 olivier.gi
        </li>
705
        <li>
706 135 olivier.gi
            <b><font color="#0000b0">IRQ</font></b>: The standard interrupts can be connected to any signal coming from the <i>MCLK</i> domain (typically a peripheral). Priorities can be chosen by selecting the proper bit of the <i>IRQ</i> bus as shown in the table above. Unused interrupts should be connected to 0.<br>
707
<b>Note</b>: <i>IRQ[10]</i> is internally connected to the Watchdog
708
interrupt. If this bit is also used by an external peripheral, they
709
will both share the same interrupt vector. <br><br>
710 50 olivier.gi
        </li>
711
        <li>
712 135 olivier.gi
            <b><font color="#00b000">IRQ_ACC</font></b>:
713
Whenever an interrupt request is serviced, some peripheral
714
automatically clear their pending flag in hardware. In order to do so,
715
the <i>IRQ_ACC</i> bus can be used by using the bit matching the corresponding <i>IRQ</i> bit. An example of this is shown in the implementation of the TACCR0 Timer A interrupt.
716
            <br><br>
717 50 olivier.gi
        </li>
718
</ul>
719 135 olivier.gi
The following waveform illustrates a TAIV interrupt issued by the Timer-A, which is connected to <i>IRQ[8]</i> :<br><br>
720
<img src="usercontent,img,1263320861" alt="Waveforms: Interrupts - Jan 12. " title="Waveforms: Interrupts - Jan 12. " width="100%">
721 50 olivier.gi
 
722 135 olivier.gi
<br><br>
723 50 olivier.gi
 
724
 
725
<a name="8. Serial Debug Interface"></a>
726 135 olivier.gi
<div style="text-align: right;"><a href="#TOC">Top</a></div>
727 50 olivier.gi
<h1>8. Serial Debug Interface</h1>
728 135 olivier.gi
The serial debug interface module provides a two-wires communication
729
bus for remote debugging and an additional freeze signal which might be
730
useful for some peripherals (typically timers).<br>
731
<br>
732 50 olivier.gi
<ul>
733
        <li>
734 135 olivier.gi
            <b><font color="#0000b0">DBG_EN</font></b>: this signal
735
allows the user to enable or disable the serial debug interface without
736
interfering with the CPU execution. It is to be noted that when
737
disabled (i.e. DBG_EN=0), the debug interface is held into reset. <br><br>
738 116 olivier.gi
        </li>
739
        <li>
740 135 olivier.gi
            <b><font color="#00b000">DBG_FREEZE</font></b>: this signal will be set whenever the debug interface stops the CPU (and if the <i>FRZ_BRK_EN</i> field of the <a href="http://www.opencores.org/project,openmsp430,serial%20debug%20interface#2.2.2%20CPU_CTL">CPU_CTL</a> debug register is set). As its name implies, the purpose of <i>DBG_FREEZE</i> is to freeze a peripheral whenever the CPU is stopped by the software debugger.<br>
741
For example, it is used by the Watchdog timer in order to stop its
742
free-running counter. This prevents the CPU from being reseted by the
743
watchdog every times the user stops the CPU during a debugging session.
744
<br><br>
745 50 olivier.gi
        </li>
746
        <li>
747
            <b><font color="#00b000">DBG_UART_TXD</font>&nbsp;/&nbsp;<font color="#0000b0">DBG_UART_RXD</font></b>: these signals are typically connected to an RS-232 transceiver and will allow a PC to communicate with the openMSP430 core.
748 135 olivier.gi
            <br><br>
749 50 olivier.gi
        </li>
750
</ul>
751 135 olivier.gi
The following waveform shows some communication traffic on the serial bus :<br><br>
752
<img src="usercontent,img,1263320887" alt="Waveforms: SDI - Jan 12. 2010" title="Waveforms: SDI - Jan 12. 2010" width="100%">
753
<br><br>
754
</body></html>

powered by: WebSVN 2.1.0

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