-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchap4.tex
452 lines (388 loc) · 21.5 KB
/
chap4.tex
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
\chapter{マイコンの操作\label{sousa}}
この章では,
マイコン(TeC)の操作方法を学習します.
併せてマイコンの内部にあるレジスタや記憶装置も憶えましょう.
操作方法を解説したビデオ\footnote{
\begin{minipage}[t]{0.9\columnwidth}
\begin{minipage}{0.75\columnwidth}
TeCの操作方法を詳しく説明したビデオが
%\url{https://youtu.be/xb56FZielhs}に公開してあります.
\url{https://youtu.be/dJyAiVjx9mA}に公開してあります.
\end{minipage}\hfill
\begin{minipage}{0.2\columnwidth}
\myincludegraphics{Img/QR2.png}{scale=0.3}
\end{minipage}
\end{minipage}
}も参考にして下さい.
%この章に掲載している写真はTeC7のものです.
%TeC6とはコネクタの構成が異なりますが,
%コンソールパネルの構成,操作方法,内部構造は共通です.
\section{各部の名称}
\figref{chap4:kakubu}に,マイコン各部の名称(または役割り)を示します.
各部の役割りは次の通りです.
\myfigureNA{tbp}{scale=0.5}{Keynote/kakubu-crop.pdf}{各部の名称}{chap4:kakubu}
\begin{enumerate}
\item コンソールパネル \\
マイコンにプログラムを入力したり,
マイコンの内部を観察したり,
プログラムの実行を指示したりするために使用する部分です.
データの入力や表示は2進数を用います.
本マイコンの顔です.
\item リセットスイッチ \\
マイコンをリセットする押しボタンスイッチです.
\item ジャンパ \\
マイコンのモードを切替えます.
通常は,「TeC」の位置にジャンパーを挿して「TeC モード」で使用します.
高学年で「TaC モード」を使用します.
「DEMO1 モード」,「DEMO2 モード」は,
電子オルゴールのデモプログラムが予め入力された状態になるモードです.
\item スピーカー \\
コンソールパネルを操作したとき,
操作を確認するための音を出します.
また,マイコンに入力したプログラムで音を出すこともできます.
\item 電源コネクタ \\
マイコンに電力を供給するコネクタです.
付属のアダプタに USB ケーブルを用いて接続します.
USB ケーブルでパソコンと接続して通信させることも可能です.
\item マイクロ SD スロット \\
携帯電話などで使用するマイクロ SD カードを挿入します.
この機能は,「TaC モード」で使用します.
\item JTAGコネクタ \\
マイコン本体の回路を変更するとき使用します.
\item 入出力ポートコネクタ \\
マイコンの外部に追加の回路を接続するために使用します.
\item Bluetoothモジュール \\
スマホ,タブレットやPCと Bluetooth を用いた通信ができます.
\end{enumerate}
\section{コンソールパネル}
\figref{chap4:console}にコンソールパネルの様子を示します.
この図を見ながら以下を読んで下さい.
\myfigureNA{tbp}{scale=1.2}{chap4/console.pdf}
{コンソールパネル}{chap4:console}
\subsection{コンソールパネルの構成}
コンソールパネルは,以下のランプやスイッチにより構成されています.
コンソールパネルが,マイコンボードの約半分の面積を使用していますが,
これは,操作性を考慮した結果です.これ以上,小さくするとスイッチの
間隔が狭くなり過ぎ,操作性が悪くなります.
\subsubsection{アドレスランプ}
最上段の8個の赤ランプはアドレスランプです.
アドレスランプは,
主記憶を操作するとき,
操作対象となる主記憶の番地(アドレス)を表示します.
ランプは点灯している状態が2進数の`1',
消灯している状態が2進数の`0'を表現しています.
\subsubsection{データランプ}
上から2段目の8個の緑ランプは,
選択されたレジスタまたは主記憶の内容を表示します.
\subsubsection{ロータリースイッチ}
上から3段目の6個の黄色ランプと左右の押しボタンスイッチは,
ロータリースイッチの代用です.
通常のロータリースイッチは背が高く,
ビデオカセットケースにマイコンを収めるための障害になるのでこのようにしました.
ランプのうち一つが点灯し,
レジスタ(G0,G1,G2,SP,PC)または主記憶(MM:Main Memory)のどれ
が選択されているか表示します.
左右の押しボタンスイッチ(←,→)によって,
点灯するランプを変更することができます.
ロータリースイッチで選択されたものの内容が,
データランプに表示されます.
\subsubsection{データスイッチ}
8個のトグルスイッチはデータやアドレスの値を入力するためのものです.
トグルスイッチを上に倒して2進数の'1'を,
下に倒して2進数の'0'を入力します.
\subsubsection{機能スイッチ}
一番下の列の8個のスイッチには,
様々な機能が割り当てられています.
左から順に,ブレークポイントモード(BREAK),
ステップ実行モード(STEP),
プログラム実行する(RUN),
プログラム停止する(STOP),
アドレスをセットする(SETA),
アドレスを進める(INCA),
アドレスを戻す(DECA),
書き込む(WRITE)
の機能を持ちます.
押しボタンスイッチは,長押しでリピート機能が働きます.
\subsubsection{実行ランプ}
右上のRUNランプは,CPUがプログラムを実行中であることを表します.
CPUが正しくない命令を実行した場合は点滅して異常を知らせます.
\subsubsection{フラグランプ}
実行ランプ下の三つの黄色ランプC(Carry),S(Sign),Z(Zero)は,
フラグの値を表示します.
\subsection{コンソールパネルの操作方法}
\label{operation}
コンソールパネルから
プログラムを実行させたり実行を途中で止めたりすることができます.
また,\figref{chap4:naibu}に示すTeC内部の情報にアクセスすることができます.
TeCの内部には3ビットのフラグ,8ビットのレジスタが5個,
$8ビット \times 256$の主記憶(メモリ)が内蔵されています.
以下では,コンソールパネルの操作方法を目的別に説明します.
\myfigureN{tbp}{width=\columnwidth}{Keynote/naibu-crop.pdf}
{TeCの記憶装置}{chap4:naibu}
\subsubsection{フラグの表示}
フラグの状態はC,S,Zの三つのランプに常時表示されています.
フラグの値を表示するために何も操作をする必要はありません.
フラグの値をコンソールパネルから変更する方法は用意されていません.
\subsubsection{レジスタの表示と書き換え}
五つのレジスタ(G0,G1,G2,SP,PC)を表示する方法と,
書き換える方法を説明します.
レジスタの値は緑色のデータランプに表示されます.
8個のランプで8ビットの情報を表現します.
どのレジスタをデータランプに表示するかは
ロータリースイッチで選択します.
\vspace{0.3cm}
レジスタの値を書き換える手順は,次の通りです.
\begin{enumerate}
\item ロータリースイッチで目的のレジスタを選択する.
\item 書き込むデータをデータスイッチにセットする.
\item WRITEスイッチを押す.
\end{enumerate}
\subsubsection{主記憶(メモリ)のアドレス指定}
\figref{chap4:naibu}を見ると分かるように,
メモリには $00_{16}$ 〜 $FF_{16}$
(2進数で表現すると $0000~0000_{2}$ 〜 $1111~1111_{2}$)
の番地(アドレス)が付けられています.
メモリへ対する表示や書き換え等の操作は1アドレス(8ビット)毎に行います.
%操作対象となるメモリのアドレスを指定した上で行う必要があります.
メモリ・アドレスは,アドレスランプにセットすることで指定します.
アドレスランプにアドレスをセットする方法は次の通りです.
\begin{enumerate}
\item ロータリースイッチをMMに合わせる.
\item アドレスをデータスイッチにセットする.
\item SETA(Set Address)スイッチを押す.\\
(アドレスがアドレスランプに表示される.)
\item アドレスを次の番地に進めたいときは,\\
INCA(Increment Address)スイッチを押す.
\item アドレスを前の番地に戻したいときは,\\
DECA(Decrement Address)スイッチを押す.
\end{enumerate}
\subsubsection{主記憶(メモリ)の表示}
アドレスランプにアドレスをセットするだけです.
\begin{enumerate}
\item ロータリースイッチをMMに合わせる.
\item 目的のアドレスをアドレスランプで指定する.
\item データランプにメモリの内容が表示される.
%\item 別の番地の内容を表示したいときは
%SETA,INCA,DECA等のスイッチでアドレスランプの表示を変更する.
\end{enumerate}
\subsubsection{主記憶(メモリ)の書き換え}
アドレスを指定して書き換えます.
\begin{enumerate}
\item 上の手順で目的のメモリ番地の内容を表示する.
\item データスイッチに書き込みたい値をセットする.
\item WRITEスイッチを押す.
\item メモリにデータが書き込まれる.
\end{enumerate}
なお,WRITEスイッチを押したとき,
アドレスが自動的に次の番地に変化します.
これは,連続したデータの書き込みに便利だからです.
\subsubsection{プログラムの実行}
%ノイマン型のコンピュータは,
%「プログラム内蔵方式(ストアードプログラム方式)」を
%採用しているのが特徴です.
%「プログラム内蔵方式」とは,データだけでなくプログラムもメモリに
%記憶する方式です.
%TeCもプログラム内蔵方式ですので,
%ノイマン型コンピュータのもう一つの特徴として,
%「逐次実行」があげられます.
%「逐次実行」とは,メモリに記憶したプログラムの命令を
%アドレス順に一つ一つ順番に実行することを言います.
%次に実行する命令のアドレスは,
%PCレジスタが記憶しています.
%つまり,コンソールパネルからデータを書き込む方法を知っていれば,
%プログラムを書き込むこともできます.
プログラムはメモリにデータと同様に書き込みます.
プログラムの開始番地をPCにセットすることでTeCがプログラムの場所を認識します.
以下にプログラムを実行する手順を,\reiref{4_1}に実行例を示します.
\begin{enumerate}
\item プログラムをメモリに書き込む.
\item プログラムの開始番地をPCに書き込む.
\item BREAK,STEPスイッチを下に倒す.
\item RUNスイッチを押す.(RUNランプ点灯)
\item プログラムの実行終了.(RUNランプ消灯)
\end{enumerate}
\begin{figure}[tb]
\begin{rei}{最も簡単なプログラムの実行}{4_1}
何もしない命令(NO命令)を三つ実行した後,
停止命令(HALT命令)を実行して停止するプログラムを
打ち込んで実行します.
{\ttfamily\small\begin{center}
最も簡単なプログラムのリスト
\begin{tabular}{|c|c|c|} \hline
番地 & 命令 & 命令の種類\\
\hline
$00_{16}$ & $00_{16}$ & NO \\
$01_{16}$ & $00_{16}$ & NO \\
$02_{16}$ & $00_{16}$ & NO \\
$03_{16}$ & $FF_{16}$ & HALT \\
\hline
\end{tabular}
\end{center}}
\subsubsection{プログラムの打ち込み手順}
\begin{enumerate}
\item ロータリースイッチをMMに合わせる.
\item アドレスランプに$00_{16}$をセットする.
\item データスイッチに$00_{16}$をセットする.
\item WRITEスイッチを3回押し
メモリ$00_{16}$番地〜$02_{16}$番地に$00_{16}$を書き込む.
\item データスイッチに$FF_{16}$をセットする.
\item WRITEスイッチを押しメモリ$03_{16}$番地に$FF_{16}$を書き込む.
\end{enumerate}
\subsubsection{プログラムの実行手順}
\begin{enumerate}
\item ロータリースイッチをPCに合わせる.
\item データスイッチに$00_{16}$をセットする.
\item WRITEスイッチを押しPCを$00_{16}$にする.
\item BREAK,STEPスイッチを下に倒す.
\item RUNスイッチを押し実行を開始する.
\item 一瞬でプログラム実行が終了する.
\item PCは,HALT命令実行後なので,その次の番地 $04_{16}$を指している.
\item 何もしない命令と停止命令しか実行していないので,
PC以外のレジスタ,フラグ,メモリに変化はない.
\end{enumerate}
\end{rei}
\end{figure}
\subsubsection{プログラムのステップ実行}
\label{step}
プログラム中の命令を
1命令ずつ実行することをステップ実行と言います.
作ったプログラムが予定通りに動かないとき
原因を調べるために使用します.
(このような作業をデバッグと言います.)
以下にステップ実行の手順を,
\reiref{4_2}にステップ実行の例を示します.
\begin{enumerate}
\item プログラムをメモリに書き込む.
\item プログラムの開始番地をPCレジスタに書き込む.
\item STEPスイッチが上に倒れていることを確認する.
(倒れていなかった場合は倒す.)
\item RUNスイッチを押す.
\item PCにセットしてあった番地の1命令が実行され,プログラムが停止する.
\item レジスタやメモリの状態が予想通りか確認する.
\item 確認が終わったらRUNスイッチを押して,次の命令を実行させる.
\item プログラムの終わりまで以上の操作を繰り返す.
\end{enumerate}
\begin{figure}[tb]
\begin{rei}{プログラムのステップ実行}{4_2}
前の例と同じプログラムをステップ実行モードで実行してみます.
\subsubsection{プログラムの実行手順}
\begin{enumerate}
\item 前の例と同様にプログラムを打ち込む.
\item STEPスイッチを上に倒して(ステップ実行モードにして),
前の例と同様にプログラムの実行を開始する.
\item ステップ実行モードなので
$00_{16}$番地の命令だけを実行し停止する.
このとき,PCは次命令の番地 $01_{16}$を指している.
\item 再度RUNスイッチを押すと,
$01_{16}$番地の命令を実行しPCが $02_{16}$ を指して停止する.
\item 以後,RUNスイッチを押す度に,1命令実行しては停止する.
\end{enumerate}
\end{rei}
\end{figure}
\subsubsection{ブレークポイントを使用した実行}
デバッグをするときに目的の命令まで一気に進んでから,
ステップ実行をしたい場合があります.
そのとき,一気に目的の命令まで進むためにブレークポイントを使用できます.
ブレークポイントとは,プログラムの実行を停止する場所(アドレス)のことです.
以下にブレークポイントモードでの実行手順を,
\reiref{4_3}にブレークポイントモードでの実行例を示します.
\begin{enumerate}
\item プログラムをメモリに書き込む.
\item プログラムの開始番地をPCレジスタに書き込む.
\item BREAKスイッチが上にSTEPスイッチが下に倒れていることを確認する.\\
(倒れていなかった場合は倒す.)
\item プログラムの実行を停止させる命令のアドレスをデータスイッチにセットする.
\item RUNスイッチを押す.
\item データスイッチで指定したアドレスの命令を実行後,停止する.
\end{enumerate}
\begin{figure}[tb]
\begin{rei}{ブレークポイントモードでの実行}{4_3}
前の例と同じプログラムをブレークポイントモードで実行してみます.
\subsubsection{プログラムの実行手順}
\begin{enumerate}
\item 前の例と同様にプログラムを打ち込む.
\item 実行を停止したい命令のアドレス(今回は,$01_{16}$)を
データスイッチにセットする.
\item STEPスイッチを下に,BREAKスイッチを上に倒して
(ブレークポイントモードにして),前の例と同様にプログラムの実行を開始する.
\item ブレークポイントモードなので$01_{16}$番地の命令を実行したら停止する.
このとき,PCは次命令の番地 $02_{16}$を指している.
\item 再度RUNスイッチを押すと $02_{16}$番地からプログラムの実行を再開する.
\item $03_{16}$番地にはHALT命令が格納されているので実行が停止する.
\end{enumerate}
\end{rei}
\end{figure}
\section{リセットスイッチ}
基板の左下にあるRESETと書かれた押しボタンスイッチのことです.
TeCをリセットしたいときに使用します.
リセットスイッチを押すと,フラグ,レジスタ,アドレスランプ,
TeCに内蔵された入出力装置の状態が(`0'に)クリアされます.
メモリの内容と,ロータリースイッチの状態はクリアされません.
\section{操作音を小さくする}
押しボタンスイッチを押すと,
ボタンが押されたことが確認できるように,
「ピッ」と短い電子音が鳴るようになっています.
しかし,静かな部屋で使用する場合,この音が邪魔になります.
このようなときは,
STOPスイッチを押しながらRESETスイッチを押して下さい.
電子音が,かすかに聞こえる「プッ」という音に変わります.
\section{モード}
これまで操作方法を説明してきたマイコンボード(TeC7と呼びます.)は,
TeCとして使用できるだけではなく,
2進数の入力練習用に楽譜を打込める電子オルゴールとして使用したり,
もっと高度な学習をするためにパソコンのように使用したりすることができます.
以下のようにジャンパの設定を変更してから電源を入れることで
モードを切替えることができます.
\myfigureNA{tb}{scale=0.8}{chap4/data.pdf}{電子オルゴールデータ}{chap4:doremi}
\subsubsection{TeCモード}
ジャンパをTeCの位置(上側)に挿入してから電源を入れます.
TeC7をTeCとして使用できる通常のモードです.
\subsubsection{DEMO1モード}
ジャンパをDEMO1の位置(左側)に挿入してから電源を入れます.
このモードはTeCモードの変形バージョンです.
TeCの主記憶の80H番地からBFH番地に,
予め電子オルゴールプログラムを書き込んだ状態になります.
音楽データを00H番地から打ち込んでRESET,
RUNの順にボタンを押すと演奏が始まります.
2進数データをTeCに入力する練習用に使用します.
\subsubsection{DEMO2モード}
ジャンパをDEMO2の位置(右側)に挿入してから電源を入れます.
このモードもTeCモードの変形バージョンです.
TeCの主記憶の00H番地からBFH番地に,
予め電子オルゴールプログラムと音楽データを書き込んだ状態になります.
RESET,RUNの順にボタンを押すと
予め書き込まれた音楽データの演奏が始まります.
\subsubsection{TaCモード}
ジャンパをTaCの位置(下側)に挿入してから電源を入れます.
このモードでは,TeC7が16ビット版TeCとして動作します.
16ビット版TeCのことをTaCと呼びます.
TaCはTacOS(\url{https://github.com/tctsigemura/TacOS})を実行できる
パソコンのようなコンピュータです.
%\newpage
\subsection*{演習}
電子オルゴールのデータをTeCに打ち込みなさい.
手順は次の通りです.
\begin{enumerate}
\item ジャンパをDEMO1の位置に差し込んで電源を投入し
TeCをDEMO1モードにする.
\item 電子オルゴールデータは\figref{chap4:doremi}を参照し
自分の好きな曲を入力する.
例えば,4分音符の「ド」,「レ」,「ミ」を連続して入力する場合は,
次の表のように主記憶にデータを打込む.
{\ttfamily\small\begin{center}
\begin{tabular}{| c | c | l }\cline{1-2}
アドレス & データ \\\cline{1-2}
0000 0000 & 1000 0011 & ド \\
0000 0001 & 1110 1000 & \\
0000 0010 & 1001 0011 & レ \\
0000 0011 & 1101 0001 & \\
0000 0100 & 1010 0101 & ミ \\
0000 0101 & 1011 1010 & \\
0000 0110 & 0000 0000 & 終了 \\
... & ... & \\
1111 1111 & 0000 0000 & \\\cline{1-2}
\end{tabular}
\end{center}}
\item RESET,RUNの順にボタンを押し演奏を試す.
\item 演習が終わったらジャンパーをTeCの位置に戻す.
\end{enumerate}