File: simulpic.doc

package info (click to toggle)
simulpic 19960826-5
  • links: PTS
  • area: main
  • in suites: woody
  • size: 280 kB
  • ctags: 381
  • sloc: cpp: 2,494; perl: 1,836; makefile: 22
file content (226 lines) | stat: -rw-r--r-- 7,913 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
[Sorry -- this file is in italian]

Introduzione

  SimulPIC e` un simulatore a linea di comando del microchip PIC16C84.
Si prevedono tutte le funzioni standard di debugging, con la possibilita`
di fornire le transizioni dei pin d'ingresso sia a linea di comando, sia
da file di ingresso. E' possibile monitorare su file sia le transizioni dei
pins di output, sia gli stati dei pins campionati con periodo di campionamento
variabile.



1. Simulazione


1.1. Transizioni degli ingressi

  La simulazione e` legata al ciclo d'istruzione (4 tosc), la cui durata 
dipende dalla frequenza di clock, definibile con opportuno comando. 
La risoluzione temporale della simulazione pone dei limiti sulle possibili
transizioni fornibili in ingresso. Con riferimento alla figura, si assume
che la transizione fornita al passo corrente (B)  avvenga tra Q2 del ciclo 
d'istruzione precedente (A) e la fine di Q1 del corrente, in modo che il 
nuovo valore sia subito disponibile in lettura (istruzione B).


                                  |   Ciclo Istruzione    |
                                  |<--------------------->|
                                  |                       |
          | Q1  | Q2  | Q3  | Q4  | Q1  | Q2  | Q3  | Q4  |
          |__    __    __    __   |__    __    __    __   |
   CLKIN  /  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__|
          |                       |                       |
          |      _________________|_______________________|
    PIN   |_____/_/_/_/_/_/_/_/_/_/_/_/                   |
          |                                               |
          |     <-----Transizione----->                   |
          |                                               |
          |<----- istr. A ------->|<----- istr. B ------->|
                                     (passo corrente)
   

1.2. RTCC in 'Counter Mode'

  Non sono simulabili transizioni multiple, all'interno dello stesso ciclo 
di instruzione, del pin RA4/RTCC ( con prescaler 1:256 le specifiche ammettono
centinaia di transizioni). La transizione fornita si assume che avvenga tra Q1
e Q4 del ciclo corrente. In definitiva in modalita` counter senza prescaler
RTCC incrementa al piu` ogni due cicli d'istruzione.


1.3. Fusibili di configurazione

  I fusibili di abilitazione del timer di POWER-UP, di protezione del codice e
di selezione dell'oscillatore non sono simulati per ovvi motivi. L'unico
considerato e` il fusibile di abilitazione del Watchdog Timer.


1.4. Porte in ingresso non pilotate

  Per semplicita` i pins configurati in ingresso non pilotati (HZ) vengono 
letti come uno logico, ovvero, dove previsti, i pull-ups si considerano sempre 
attivi.


1.5. EEPROM 

  Il ciclo di scrittura della memoria di programma non  simulato, mentre la
EEPROM data memory e` stata simulata con un ciclo di scrittura di 10ms (tempo
nominale).


1.6. Watchdog

  Il periodo di watchdog  assunto di 18ms (tempo nominale).




2. Formati dei files


2.1. File di ingresso

  Il file di ingresso contiene tutte le transizioni dei pin con la seguente
sintassi:

{ [# <Commento>] }

"begin"

{ [# <Commento>] 
  <Time> [MCLR = m] [RA = ppppp] [RAn = p] [RB= pppppppp] [RBn = p] }

"end"
  
  ove:  n = {0..4} per la porta A
            {0..7} per la porta B
  
        m = 0 : forza il livello logico 0 (RESET)
            1 : forza il livello logico 1

        p = 0 : forza il livello logico 0
            1 : forza il livello logico 1
            - : non forza alcun livello logico
            u : conserva lo stato precedente inalterato
        
        se si cerca di forzare il livello di un pin di uscita, durante la
        simulazione viene visualizzato un messaggio di errore.

La successione dei tempi deve essere strettamente monotona; le transizioni
fornite nello stesso ciclo di istruzione devono trovarsi su di un'unica riga.
Il file viene compilato, mediante il compilatore IEC, in un formato leggibile
dal simulatore. IEC segnala tutti gli errori sintattici.


2.2. File di uscita: Report File

  E' previsto il monitoring delle singole transizioni delle porte d'uscita, su
di un file (Report File) nel formato:


>aaaaa bbbbbbbb TIME   -   transizioni dei registri delle porte

      a,b = 0 : pin in uscita, a livello logico 0
            1 : pin in uscita, a livello logico 1
            . : pin in ingresso
      
      TIME : Tempo in ms.


<aaaaa bbbbbbbb TIME   -   cambiamenti sullo stato dei pin d'ingresso

      a,b = 0 : pin in ingresso, a livello logico 0
            1 : pin in ingresso, a livello logico 1
            - : pin in ingresso, non pilotato
            . : pin in uscita
        

Taaaaa bbbbbbbb TIME   -   cambiamenti nello stato dei tristate
      
      a,b = 0 : Relativo pin in uscita.
            1 : Relativo pin in ingresso.


2.3. File di uscita: Graphic_File 

  E' previsto il monitoring del campionamento dello stato dei pin d'uscita
con periodo di campionamento fissato a linea di comando. 
Si riporta direttamente un esempio, nel quale e` mostrato il pin RA1 ad 1
logico, il pin RA0 allo 0 logico, mentre RB6 subisce una transizione dal
livello alto a quello basso; i punti segnalano pin d'ingresso:

----------------------------------------------------------------------------
RA4  RA3  RA2  RA1  RA0    RB7  RB6  RB5  RB4  RB3  RB2  RB1  RB0     Time
 .    .    .     |  |       .     |   .    .    .    .    .    .      0.1096
 .    .    .     |  |       .     |   .    .    .    .    .    .      0.1140
 .    .    .     |  |       .     |   .    .    .    .    .    .      0.1184
 .    .    .     |  |       .     |   .    .    .    .    .    .      0.1228
 .    .    .     |  |       .   |     .    .    .    .    .    .      0.1272
 .    .    .     |  |       .   |     .    .    .    .    .    .      0.1316
 .    .    .     |  |       .   |     .    .    .    .    .    .      0.1360
 .    .    .     |  |       .   |     .    .    .    .    .    .      0.1404
 .    .    .     |  |       .   |     .    .    .    .    .    .      0.1448
----------------------------------------------------------------------------
                
                 

3. Comandi del simulatore

  Al prompt dei comandi e` mostrato il tempo corrente che incrementa ad ogni
ciclo di istruzione simulato. Il caricamento di un nuovo programma determina
l'azzeramento dell'orologio.
  
  
  "h"   visualizza l'help 

  "l"   carica un file oggetto in formato IHX8M nella memoria di programma
        configurando il fusibile WDTE

  "dr"  visualizza lo stato dei registri speciali, lo stato del processore 
        (SLEEP, RESET, NORMAL) e la prossima istruzione da eseguire
      
  "dg"  visualizza il contenuto dei registri generali

  "dee" visualizza il contenuto della EEPROM Data Memory

  "dpm" visualizza il contenuto della Program Memory

  "ds"  visualizza il contenuto dello stack (Sono previsti, in simulazione,
        i messaggi di errore "Stack overflow" e "Pop on empty stack")
        
  "dp"  visualizza lo stato attuale dei pins di ingresso.

  "d [<addr>]" disassembla dieci istruzioni a partire da PC o addr

  "s [<num>]" simula uno (o <num>) cicli d'istruzione del PIC16C84 

  "g <time>" porta avanti la simulazione fino al tempo <time> in ms

  "bp [<address>]" set/clear breakpoint.

  "pa ppppp" configura lo stato dei pin della porta A:

  "pm p"  forza il livello logico sul pin MCLR (p = 0,1)

  "io [<filename>]"  apre il file di ingresso contenente le transizioni 
                     dei pin

  "ic" chiude il file di ingresso contenente le transizioni dei pin
   
  "ro [<filename>]"  apre il file di uscita di monitoring delle sole 
                     transizioni

  "rc" chiude il file di uscita di monitoring delle sole transizioni  
   
  "eo [<filename>]" apre il "Graphic File"

  "ec" chiude "Graphic File"  
   
  "por" genera un Power-On-Reset e azzera l'orologio di simulazione

  "q" uscita dal simulatore