93
1 マママママママママ 1マP. Ravindra S De Silva [email protected]

マイクロプロセッサ (第 1 回)

  • Upload
    nia

  • View
    57

  • Download
    0

Embed Size (px)

DESCRIPTION

マイクロプロセッサ (第 1 回). P. Ravindra S De Silva. はじめに. 情報・知能工学系 学生実験サイト http://www.cs.tut.ac.jp/jikken/ 実験の説明資料などは Web 上で公開中 http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html Report should submit to [email protected] ※ 実験レポートは PDF ファイルで提出すること. 日程 (p.25 参照 ). 第1回 イントロダクション - PowerPoint PPT Presentation

Citation preview

Page 1: マイクロプロセッサ (第 1 回)

1

マイクロプロセッサ(第 1 回)

P. Ravindra S De Silva [email protected]

Page 2: マイクロプロセッサ (第 1 回)

2

はじめに

情報・知能工学系 学生実験サイト http://www.cs.tut.ac.jp/jikken/ 

実験の説明資料などは Web 上で公開中 http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html

受け取りは、メールにて行う。 宛先は[email protected]

   ※実験レポートは PDF ファイルで提出すること

Page 3: マイクロプロセッサ (第 1 回)

3

日程 (p.26 参照 )

第1回イントロダクション

( 課題 3.1 加算 )

第2回基本プログラミング

( 課題 3.2 乗算 )

第3回応用プログラミング( 課題 3.3 図形描画, 課題 3.4(1) メロディ )

第4回応用プログラミン

グ( 課題 3.4(2) メロ

ディ )

※第 2 回以降は予習 ( プログラムの準備 ) が必須

Page 4: マイクロプロセッサ (第 1 回)

4

コンピュータの利用

ユーザ

コンピュータ

入力

出力

どのような仕組みで動いているのか ?

Page 5: マイクロプロセッサ (第 1 回)

5

コンピュータ・ハードウェア

入力装置

出力装置

記憶装置

処理装置

Page 6: マイクロプロセッサ (第 1 回)

6

コンピュータ・ソフトウェア

入力装置

出力装置

記憶装置

処理装置

アプリケー

ションプログラ

システムプログラム

Page 7: マイクロプロセッサ (第 1 回)

7

疑問

処理装置 (CPU) はプログラム (≒ ソフトウェア ) をどのように解釈しているのか ?

高級言語によるプログラム

機械語によるプログラム

Page 8: マイクロプロセッサ (第 1 回)

8

( 今のところの ) 回答

コンパイラ,アセンブラと呼ばれるプログラムを変換するプログラムを使う

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 9: マイクロプロセッサ (第 1 回)

9

ことばの整理:機械語

CPU が直接理解し実行できる言語のこと プログラムは 0 と 1 の列から構成される CPU ごとに異なる

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 10: マイクロプロセッサ (第 1 回)

10

ことばの整理:高級言語

人間が使いやすいプログラミング言語 C , C++ , Java , Perl など CPU ごとに異ならない ( 共通 )

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 11: マイクロプロセッサ (第 1 回)

11

ことばの整理:アセンブリ言語

機械語を人間にわかりやすくした言語 命令が機械語と ( ほぼ ) 1 対 1 に対応 CPU ごとに異なる

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 12: マイクロプロセッサ (第 1 回)

12

ことばの整理:コンパイル

高級言語によるプログラムをアセンブリ言語によるプログラムに( または機械語によるプログラムに )翻訳すること

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 13: マイクロプロセッサ (第 1 回)

13

ことばの整理:アセンブル

アセンブリ言語によるプログラムを機械語によるプログラムに

 翻訳すること

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 14: マイクロプロセッサ (第 1 回)

14

この実験の流れ

1. アセンブリ言語によるプログラミング2. 作成したプログラムのアセンブル ( 手作業 )3. 実行 ( 動作の理解 )

機械語によるプログラム

アセンブリ言語によるプログラム

アセンブ

Page 15: マイクロプロセッサ (第 1 回)

15

この実験で用いるハードウェア

KUE-CHIP2 教育用の 8 ビットマイクロプロセッサ

  ≒ CPU

8 ビット= 1 バイト

0 0 0 1 0 0 1 1

13h ←16 進数であることを示す 他にも 13H , 0x13 など

Page 16: マイクロプロセッサ (第 1 回)

16

KUE-CHIP2 の構造 (p.15 図 1)

Page 17: マイクロプロセッサ (第 1 回)

17

KUE-CHIP2 の各部:バス

入力バス:入力部分と CPU 内部を結ぶ 出力バス:出力部分と CPU 内部を結ぶ

Page 18: マイクロプロセッサ (第 1 回)

18

KUE-CHIP2 の各部: ALU

演算ユニット (Arithmetic and Logic Unit) 算術演算,論理演算,アドレスの計算を行う

Page 19: マイクロプロセッサ (第 1 回)

19

KUE-CHIP2 の各部: ACC

アキュムレータ (accumulator) 演算に利用するレジスタ. 8 ビット 演算対象,演算結果を保持

Page 20: マイクロプロセッサ (第 1 回)

20

KUE-CHIP2 の各部: IX

インデックスレジスタ (index register) 演算に利用するレジスタ. 8 ビット 演算対象,演算結果を保持 修飾アドレス指定のときのアドレス修飾にも

使用

Page 21: マイクロプロセッサ (第 1 回)

21

KUE-CHIP2 の各部: FLAG

フラグレジスタ (flag register) 演算・シフト結果により変化. 4 ビット

- - - - CF VF NF ZF

桁上がりフラグ

桁あふれフラグ負フラグ

ゼロフラグp.15 図 2

Page 22: マイクロプロセッサ (第 1 回)

22

KUE-CHIP2 の各部: PC

プログラムカウンタ (program counter) 次に実行する命令のメモリ上での

アドレスを保持. 8 ビット

Page 23: マイクロプロセッサ (第 1 回)

23

KUE-CHIP2 の各部: MAR

メモリアドレスレジスタ メモリ操作の対象とするアドレスを保持. 8 ビット

Page 24: マイクロプロセッサ (第 1 回)

24

KUE-CHIP2 の各部:内部メモリ

512 バイト.バイト単位の番地指定 プログラム領域: 0 ~ 255 番地 データ領域: 256 番地~ 511 番地

プログラム領域

データ領域

000

0FF

1FF

100

011000100

255256

511

~~

p.16 図 3

Page 25: マイクロプロセッサ (第 1 回)

25

KUE-CHIP2 のアセンブリ言語

命令の種類: p.17 表 1 を参照 言語仕様: p.28 ~ 30 付録 A を参照

機械語フォーマット: 1 バイトか 2 バイト p.16 図 4 を参照

Page 26: マイクロプロセッサ (第 1 回)

26

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0アセンブラ

プログラム例 (p.24 ,リスト 2)

02hBA001000000000001104:

ACCRLL0111010003:

OUT0---000102:

ACC, 01hLD00010000001-011000:

オペランド命令データアドレス

「 01」という値を ACC に格納するACC の内容を出力バッファ (OBUF) に出力するACC の内容を論理 左回転し, ACC に入れる常に 02 番地へ戻るアセンブリ言語によるプログラム

機械語によるプログラム

Page 27: マイクロプロセッサ (第 1 回)

27

アセンブル方法 (1/4)

p.30 , A.2 命令セットを参照「 LD ACC,01h」のアセンブル

Rsm 0 1 0 0 A 1 s m × Rotate sm

LD 0 1 1 0 A B ○ LoaD

ST 0 1 1 1 A B ◎ STore

SBC 1 0 0 0 A B ○ SuB with Carry

10000000-1000110

A BA = 0:ACC

A = 1:IX

B = 000:ACC

B = 001:IX

B = 01-:即値B = 100: 直接 (P)

B = 101: 直接 (D)

B = 110: 修飾 (P)

B = 111: 修飾 (D)

Page 28: マイクロプロセッサ (第 1 回)

28

アセンブル方法 (2/4)

p.30 , A.2 命令セットを参照「 OUT」のアセンブル

0 1 0 1 - - - - ×

OUT 0 0 0 1 0 - - - × OUTput

IN 0 0 0 1 1 - - - × INput

RCF 0 0 1 0 0 - - - × Reset CF

---01000

Page 29: マイクロプロセッサ (第 1 回)

29

アセンブル方法 (3/4)

p.30 , A.2 命令セットを参照「 RLL ACC」のアセンブル

Rsm 0 1 0 0 A 1 s m × Rotate sm

LD 0 1 1 0 A B ○ LoaD

ST 0 1 1 1 A B ◎ STore

SBC 1 0 0 0 A B ○ SuB with Carry

11100010

A sA = 0:ACC

A = 1:IX

m

RA 0 0 Right Arithmetically

LA 0 1 Left Arithmetically

RL 1 0 Right Logically

LL 1 1 Left Logically

Page 30: マイクロプロセッサ (第 1 回)

30

アセンブル方法 (4/4)

p.30 , A.2 命令セットを参照「 BA 02h」のアセンブル

RCF 0 0 1 0 0 - - - × Reset CF

SCF 0 0 1 0 1 - - - × Set CF

Bcc 0 0 1 1 c c ◎ Branch cc

Ssm 0 1 0 0 A 0 s m × Shift sm

00001100

cc

01000000

A 0 0 0 0 Always

VF 1 0 0 0 on oVerFlow

NZ 0 0 0 1 on Not Zero

Z 1 0 0 1 on Zero

Page 31: マイクロプロセッサ (第 1 回)

31

プログラム例 (p.24 ,リスト 2)

02hBA001000000000001104:

ACCRLL0111010003:

OUT0---000102:

ACC, 01hLD00010000001-011000:

オペランド命令データアドレス

「 -」は 0 か 1 で置き換 える ( どちらでもよい )

Page 32: マイクロプロセッサ (第 1 回)

32

プログラム例 (p.24 ,リスト 3)

02hBA001000000000001104:

ACCRLL0111010003:

OUT0000000102:

ACC, 01hLD000100000010011000:

オペランド命令データアドレス

アセンブル完了

04:

03:

02:

00:01:

05:

Page 33: マイクロプロセッサ (第 1 回)

33

第 2.5節に沿って行う (p.22 ~ 26)

注意点:電源器とボードを接続してからコンセントに繋ぐことコンセントは机に固定されたものに繋ぐこと ( 転落防止 )電源スイッ チ横のコンデンサに指をかけないことプログラムの実行前に RESET を押すこと

全員確認できたら次の説明へ( 次回からグループではなく一人 1台で行う )

プログラムの実行

Page 34: マイクロプロセッサ (第 1 回)

34

SS スイッ チで実行 さらに SS スイッ チを押すと停止,再開 CLKFRQ のダイヤルを回すと実行速度が変化

RESET SEL スイッ チを操作して ACC を表示 SI スイッ チでステップ実行 (1 命令ずつ )

SEL スイッ チを操作して PC を表示 SI スイッ チでステップ実行 (1 命令ずつ )

操作方法の補足

Page 35: マイクロプロセッサ (第 1 回)

35

命令はどのように実行されるか ?

クロックに沿って実行  クロック 1周期分 → 1つの実行フェーズ

KUE-CHIP2 の各命令は 3から 5フェーズP0 , P1 :各命令で共通P2 以降:各命令で異なる

p.18 表 2 を参照

Page 36: マイクロプロセッサ (第 1 回)

36

「 D1」を見たら「 80h」だと思う( 変数宣言,初期化のようなもの )メモリのプログラム領域 D1 番地の内容を ACC に格納する

実際に見てみる:リスト 1 (p.19)

アドレス データ ラベル 命令 オペランド

D1: EQU 80h

D2: EQU 81h

ANS: EQU 82h

00: 64 80 LD ACC,[D1]

02: B4 81 ADD ACC,[D2]

04: 74 82 ST ACC,[ANS]

06: 0F HLT

END

80: 03

81: FD

メモリのプログラム領域 D2 番地の内容と ACC の内容を加算するメモリのプログラム領域 ANS 番地にACC の内容を格納するプログラムの実行を停止するメモリ80 番地の内容を 03 とし,

メモリ81 番地の内容を FD とする

アセンブル結果の 16 進表示

Page 37: マイクロプロセッサ (第 1 回)

37

実行のトレース

LD ACC,[D1]

P0 P1 P2 P3 P4

LD

ACC

IX(PC)→MAR

PC++(Mem)→IR

(A)→B

d(PC)→MAR

PC++

(Mem)→A

[d]

(d)(Mem)→MAR (Mem)→A

B の部分

A Bp.18 表 2 を参照

Page 38: マイクロプロセッサ (第 1 回)

38

実行のトレース

00

00

00

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1]

Page 39: マイクロプロセッサ (第 1 回)

39

実行のトレース

00

00

00

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1] P0: (PC)→MAR, PC++

01

Page 40: マイクロプロセッサ (第 1 回)

40

00

実行のトレース

01

00

64

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1] P1: (Mem)→IR

Page 41: マイクロプロセッサ (第 1 回)

41

02

実行のトレース

01

00

64

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1] P2: (PC)→MAR, PC++

01

Page 42: マイクロプロセッサ (第 1 回)

42

80

02

実行のトレース

01

64

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1] P3: (Mem)→MAR

Page 43: マイクロプロセッサ (第 1 回)

43

80

02

実行のトレース

64

000000

000: 64001: 80002: B4...080: 03081: FD

LD ACC,[D1] P4: (Mem)→A

03

Page 44: マイクロプロセッサ (第 1 回)

45

実験課題 3.1 (p.26)

(1) について実行開始から実行終了まで,観測可能なレジスタ,バスをトレース

(2) ~ (6) についてADD開始前から ADD終了後まで,

フラグレジスタのみをトレースADD命令を ADC命令に変更して,ADC開始前から ADC終了後まで,フラグレジスタのみをトレースそれぞれの加算結果も確認・記録すること

Page 45: マイクロプロセッサ (第 1 回)

46

実験課題 3.1  注意

リスト 1 を利用 16 進数「 64」, 2 進数では? 80 番地に値を入れるには,まずMAR を操作 毎回,まず計算結果を確認 ( 記録 ) すること 「6 」と「 b 」の読み間違いに注意 負の数は「 2 の補数表現」

0 0 0 0 0 0 1 13

1 1 1 1 1 1 0 1-3

1 0 0 0 0 0 0 0 0

Page 46: マイクロプロセッサ (第 1 回)

47

検討事項のポイント

(1) について 各命令の各フェーズでの動作について

テキスト p.17 ~ 22 を参考に図などを使いながら文章で説明すること

レポート作成補助:図や資料のデータを配布中http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html

(2) ~ (6) について 各フラグがどのような時に変化するのか,ADD 命令と ADC 命令の違いもまとめること

Page 47: マイクロプロセッサ (第 1 回)

48

次回

実験課題 3.2  乗算プログラムの作成符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなく

ても良い 演算結果は 2 バイトに収まると仮定

必須の予習:プログラムの作成とアセンブル

80h81h

82h83h

84h85h

×

Page 48: マイクロプロセッサ (第 1 回)

49

1 0 1 0 1 0 1 10 0 0 0 0 0 1 1

0 0 1 0 0 1 0 10 0 0 0 0 0 0 0×

1 0 1 1 0 1 1 11 0 0 0 0 1 1 1

1 バイト = 8 ビット

MSB :最上位ビット ↓

LSB :最下位ビット↓

メモリ上での 順序に注意

補足:符号無し2バイトの乗算

Page 49: マイクロプロセッサ (第 1 回)

50

補足:アドレスモード

オペランド ( 引数 ) の表現方法のこと

KUE-CHIP2 のアドレスモード (p.28 ~ 30 参照 )ACC,IX : ACC,IX の内容がデータ即値:オペランドそのものがデータ直接:オペランドがメモリのアドレス

   そのアドレス上の内 容がデータ修飾:「オペランド+ IX の内容」が

   メモリのアドレス   そのアドレス上の内 容がデータ

Page 50: マイクロプロセッサ (第 1 回)

51

補足:命令について (p.17)

ADD :加算命令。 CF を考慮しない。 ADC :加算命令。 CF を考慮する。   ( 減算も同様 )

RCF : CF をリセット する。

Page 51: マイクロプロセッサ (第 1 回)

52

注意点

必ずプログラムを準備してくること!  次回からは各自 ( 一人一台 ) で実験を進める  すぐに開始できるように ( 機械語プログラム )

まずはフローチャートを作成すること 授業開始時 ( 入力中 ) に問題がないか確認する

  ※プログラムとフローチャートは別の紙に

遅刻や準備不足に対する救済は行わない できなかった分は減点,最悪の場合は不受理

Page 52: マイクロプロセッサ (第 1 回)

53

フローチャートの例

1 バイトの乗算

A

B

C

×

B を 1減らすB - 1 → B

C に A を足すC + A → C

初期化0 → C

終了HLT

終了判定B = 0 ?

Y

N

プログラムの流れを日本語で図示する

Page 53: マイクロプロセッサ (第 1 回)

54

2 バイトの加算の例

0 → CFA2 + B2 + 0 →

C2A1 + B1 + CF →

C1

加算

終了HLT

A2A1

B2B1

C2C1

+RCF

LD    ACC, [A2]ADC ACC, [B2]ST    ACC, [C2]

LD    ACC, [A1]ADC ACC, [B1]ST    ACC, [C1]

HLT

CF

繰り上げ

Page 54: マイクロプロセッサ (第 1 回)

55

プログラム作成時の注意点

000: 20 RCF

001: 64 80 LD    ACC, [A2]003: 94 82 ADC ACC, [B2]005: 74 84 ST    ACC, [C2]

007: 64 81 LD    ACC, [A1]009: 94 83 ADC ACC, [B1]00B: 74 85 ST    ACC, [C1]

00D: 08 HLT

他人が見て分かるように書くこと

紙の両面を使わない アセンブリ言語と

機械語は横に揃える 修正用のスペースも

用意しておく 機械語は 2 進・ 16 進の

どちらでも良いが,16 進数なら確認しやすい

必ず紙に手書き or 印刷してくること

Page 55: マイクロプロセッサ (第 1 回)

56

よくある間違い

2 バイトのデータの取扱い上位・下位バイトの番地の誤り

初期化のし忘れSUM += A

繰り上げの失敗ADD 命令と ADC 命令、 CF のリセット

終了判定の誤りLD 0 では ZeroFlag は立たない

データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている

80h81h

82h83h

84h85h

×

Page 56: マイクロプロセッサ (第 1 回)

57

マイクロプロセッサ(第 2 回)

Page 57: マイクロプロセッサ (第 1 回)

58

第 2 回

実験課題 3.2  乗算プログラムの作成符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなく

ても良い 演算結果は 2 バイトに収まると仮定

必須の予習:プログラムの作成とアセンブル

Page 58: マイクロプロセッサ (第 1 回)

59

よくある間違い ( 再確認 )

2 バイトのデータの取扱い上位・下位バイトの番地の誤り

初期化のし忘れSUM += A

繰り上げの失敗ADD 命令と ADC 命令、 CF のリセット

終了判定の誤りLD 0 では ZeroFlag は立たない

データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている 入力ミス,アセンブルの 誤り

80h81h

82h83h

84h85h

×

Page 59: マイクロプロセッサ (第 1 回)

60

進め方

各自の作成したプログラムを入力 入力中にフローチャートをチェック

  早く終わった人は他の人をサポートホワイトボードの (1) ~ (4) で動作確認それらが正しく計算できたら

(A) と (B) を計算.実行時間を計測ホワイトボードに実行時間とプログラムの メモリ消費量 ( 単位:バイト ) を記入   プログラム部分+データ格納部分

Page 60: マイクロプロセッサ (第 1 回)

61

実行時間の理論 値

自分のプログラムについて実行時間の理論 値を求め,実測値と比較せよ手順 1) 実行時間を決めるパラメータを特定

各命令のフェーズ数 (p.17 表 2)1 フェーズ = 1 クロック周期クロック周波数 = 100 Hz

手順 2) 実行時間を求める計算式を導出手順 3) 式から (A),(B) の実行時間理論 値を算出手順 4) 理論 値と観測値の比較

Page 61: マイクロプロセッサ (第 1 回)

62

検討事項のポイント

使用したプログラムのリストを 載せ,フローチャートを用いて説明せよ

他の人のプログラムと比較論点1:実行時間 ( 実測値で可 )論点2:プログラムのメモリ消費量

注意:他の人のプログラムは掲載不要だが,  簡単な説明は記述すること

Page 62: マイクロプロセッサ (第 1 回)

63

次回 (p.25-26)

課題 3.3 オシロスコープ への文字の出力必須の予習:

プログラムの作成とアセンブル

課題 3.4(1) メロディーの出力予習:軽く目を通しておく ( 付録 B.1 も -p.30-31)  ※電卓を持参すること

Page 63: マイクロプロセッサ (第 1 回)

64

オシロスコープ への文字の出力

出力バッファに DA コンバータを付けて出力信号をオシロスコープ へ

DA コンバータ:ディジタル信号をアナログ信号に変換する回路

1101

DA コンバータ 13(0,1 の 4 桁の信号 ) (16段階の値 )

Page 64: マイクロプロセッサ (第 1 回)

65

取り付ける DA コンバータの機能

出力バッファの 8 ビットの中の上位 4 ビットを x 座標下位 4 ビットを y 座標 とする

x 座標の取れる範囲は 0h ~ Fh y 座標の取れる範囲は 0h ~ Fh

Page 65: マイクロプロセッサ (第 1 回)

66

オシロスコープ への出力

LD ACC, 6BhOUT

0 F0

F

6

B

Page 66: マイクロプロセッサ (第 1 回)

67

オシロスコープ への出力

LD ACC, 6BhOUT

点を 1つずつ表示続けて表示すれば全てが同時に表示されるように見える

0 F0

F

6

B

Page 67: マイクロプロセッサ (第 1 回)

68

注意点

1. 1つの点は「・」として表示され「■」として表示されないので注意

2. ずっと表示されるようにすること( 図形表示部分を無限ループさせ,停止させる時は

   SSボタンを押す )

3. オシロスコープの 残像に注意 ( 表示点は「ジャンプ」ではなく「移動」する. そのため,一筆書きの図形になる )

4. 座標データを一箇所にまとめ,IX ( 修飾アドレス指定 ) を使うこと

Page 68: マイクロプロセッサ (第 1 回)

69

修飾アドレス指定

00: LD IX, 00h02: LD ACC, [IX+80h] ← IX を 0 ~ 4 としてルー

プ04: ADD IX, 01h

80: 座標 181: 座標 282: 座標 383: 座標 484: 座標 5

Page 69: マイクロプロセッサ (第 1 回)

70

余力がある場合

文字・図形を動かしてみる例:右から左

※まずは固定で   完成してから   ( 任意の課題は加点対象 )

  

Page 70: マイクロプロセッサ (第 1 回)

71

マイクロプロセッサ(第 3回)

Page 71: マイクロプロセッサ (第 1 回)

72

第 3回

課題 3.3 オシロスコープ への文字の出力必須の予習:

プログラムの作成とアセンブル

課題 3.4(1) メロディーの出力予習:軽く目を通しておく ( 付録 B.1 も p.30-31)  ※電卓を持参すること

Page 72: マイクロプロセッサ (第 1 回)

73

注意

使用する DA コンバータはとても壊れやすいので,大事に扱うこと ( むやみに触らない )

特に,取り付け部分周辺の配線に注意

取り付け&取り外しは教員・ TA が行います

Page 73: マイクロプロセッサ (第 1 回)

74

進め方

15:40終了を目処にオシロスコープと DA コンバータを接続

チャンネル 1 →  赤 チャンネル 2 →  青 グランド →  黒

ダイヤル CLKFRQ を「 1」にして実行

15:40頃に次の説明

Page 74: マイクロプロセッサ (第 1 回)

75

メロディーの出力

KUE-CHIP2 から波を出力しスピーカから 音を出す

今日:音を出す仕組みの基礎 次回:メロディー出力プログラムの実行

Page 75: マイクロプロセッサ (第 1 回)

76

音とは

音は空気の振動 ( 波 )音の三要素

大きさ高さ音色

スピーカ:電気信号を音 ( 空気振動 ) に変換する装置

←波の振幅の大きさ←波の周波数の高さ←波の形

Page 76: マイクロプロセッサ (第 1 回)

77

作る波

方形波:長方形の波

T = Ta + Tb

波の周期 T (秒 )

Ta (秒 )Tb (秒 )

On

Off

Page 77: マイクロプロセッサ (第 1 回)

78

音を出すプログラム (p.31 リスト 4)

アドレス ラベル 命令 オペランド フェーズ数

00: L0: LD ACC, FFh 4

02: OUT 4

03: LD ACC, a 4

05: L1: SUB ACC, 01h 4

07: BNZ L1 4

09: LD ACC, 00h 4

0B: OUT 4

0C: LD ACC, b 4

0E: L2: SUB ACC, 01h 4

10:

12:

BNZ

BA

L2

L0

4

4

波の On 部を作る

波の Off 部を作る

自分で決める

Page 78: マイクロプロセッサ (第 1 回)

79

作る波:長さ

方形波:長方形の波

Ta = (12+8a)T0 , Tb = (16+8b)T0

( ただし, T0 = クロック周期 )

波の周期 T (秒 )

Ta (秒 )Tb (秒 )

On

Off

Page 79: マイクロプロセッサ (第 1 回)

80

実験内容 3.4(1) p.26

(a) オシロスコープでクロック 周期を確認スイッ チ CLK を中立にダイヤル CLKFRQ の「 0 ~ 8」の周波数を測定信号はコネクタ JP3 より出力

(b) リスト 4 の a , b を設定出力する音の周波数: 440Hz 「ラ」最適な T0 , a , b を計算によって定める

    T = Ta + Tb    T = 1/440 ( 秒 )    Ta = (12+8a)T0 , Tb = (16+8b)T0

最も精度が高くなるT0 を選択

Page 80: マイクロプロセッサ (第 1 回)

81

実験内容 3.4(1) p.26

(c) 440Hz の音の出力リスト 4 の入力CLKFRQ の設定DA コンバータを通してスピーカから出力

出力音が 440Hz (誤差±1%) であることを計算によって確認

Page 81: マイクロプロセッサ (第 1 回)

82

検討事項のポイント

(3) オシロスコープによる 文字の出力 プログラムのリストを 載せて,

プログラムの特徴を説明修飾アドレス指定に ついてどうやって文字を描画したのか

Page 82: マイクロプロセッサ (第 1 回)

83

検討事項のポイント

(4) メロディーの出力(a) 誤差±1% の確認 どのように最適な T0, a, b を計算したか?

計算過程を記述すること どのように確認を行ったか?

実際に誤差を計算すること 他の精度確認方法は考えられるか

Page 83: マイクロプロセッサ (第 1 回)

84

検討事項のポイント

(4) メロディーの出力(b) 精度をより上げるための対策 KUE-CHIP2だけで対処する 場合

( ソフトウェア上,プログラム上の工夫 )その他の機器を KUE-CHIP2 に接続する場合

( ハードウェア上の工夫 )

※メロディー出力の基本的なアルゴリズムはそのまま  出力周波数を 440Hz に近づける方法

Page 84: マイクロプロセッサ (第 1 回)

85

次回

課題 3.4(2) メロディーの出力簡単なメロディーを出力させる 必須の予習: プログラムの作成とアセンブル 参考:付録 B.2 とリスト 5 (p.32)

※楽譜データを用意するだけではダメ リスト 5のプログラムに改造が必要

    時間内に完成しなかった場合は打ち切り    デバッグのサポートはできるが,    プログラムが無い場合はサポートできない

Page 85: マイクロプロセッサ (第 1 回)

86

注意

メロディーの出力は無限に繰り返すこと p.32 表 4「音階の周波数」を参考に

1オクターブ高い音 → 周波数が 2倍「休符」はどうすれば実現できるか

→ 音符と休符を判別し,別処理が必 要同じ音が続くと 1つの長い音に聞こえる

→ 音と音の間に空白が必要

※最も高周波・低周波な音でも可聴領域を超えない

リスト 5に改造が必要な部分

Page 86: マイクロプロセッサ (第 1 回)

87

メロディー出力プログラム例 ( リスト 5)

000: 62 00 LD ACC, dptr1002: 75 1A ST ACC, (dptr)

004: 65 1A L0: LD ACC, (dptr)006: 68 LD IX, ACC007: B2 03 ADD ACC, 0x3009: 75 1A ST ACC, (dptr)

00B: A2 18 SUB ACC, dptr200D: 31 13 BNZ L100F: 62 00 LD ACC, dptr1011: 75 1A ST ACC, (dptr)

013: 67 02 L1: LD ACC, (IX+2)015: 75 1C ST ACC, (n3)

プログラム領域

音の先頭

音の終わり

どの音を鳴らすか (3ずつ増える )

データ領域のアドレスを指している( 自分のプログラムに合わせて設定 )

実行時に使用

100: n1 n2 n3 dptr1: ド103: n1 n2 n3 レ106: n1 n2 n3 ミ109: n1 n2 n3 ファ10C: n1 n2 n3 ソ10F: n1 n2 n3 ラ112: n1 n2 n3 シ115: n1 n2 n3 ド118: dptr2: ( 未使用 )

119: 00 または ff image11A: ?? dptr11B: ?? n211C: ?? n3

データ領域

n1 は音の高さ, n2 n3 は長さ (2重ループ )

出力

Page 87: マイクロプロセッサ (第 1 回)

88

マイクロプロセッサ(第 4 回)

Page 88: マイクロプロセッサ (第 1 回)

89

第4回

3.4(2) メロディーの出力簡単なメロディーを出力させる 必須の予習:

プログラムの作成とアセンブル 参考:付録 B.2 とリスト 5 (p.32)

DA コンバータの取扱いに注意

Page 89: マイクロプロセッサ (第 1 回)

90

検討事項のポイント

(4)(c) 各自のデータ表現の特徴 プログラムのリストを 載せて説明せよ

例えば,「楽譜」は人間に理解しやすいように メロディーを表現している

どのような表現なら理解しやすいのか

Page 90: マイクロプロセッサ (第 1 回)

91

検討事項のポイント

(4)(d) 作成したメロディー出力法は  他の CPU にも流用できるか?

他の CPU の例を 1つ挙げて考察挙げた CPU の実行命令フェーズを調べ,それを踏まえて考察

Page 91: マイクロプロセッサ (第 1 回)

92

検討事項のポイント

(5) 自分が最も使用している CPU ( または,有名な CPU) について そのアーキテク チャを調べてまとめる ( 必須ではない )

レジスタ,命令セット,メモリ 空間の特徴乗算命令がどのように実行されているか

※任意の課題は加点対象

Page 92: マイクロプロセッサ (第 1 回)

93

まとめ

計算機の仕組みについて理解例えば,なぜ 32bit の OS では 4G 以上のメモリが使 えないのか?

プログラムの作り方やデバッグの練習

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

4G = 4×1024×1024×1024 = 22×210×210×210 = 232

Page 93: マイクロプロセッサ (第 1 回)

94

実験報告書について 指導書 p.5 をよく読むこと 受け取りは、メールにて行う。 宛先は

[email protected] 表紙は自作のものでも構わない 実験方法について,指導書を丸写しする必要はない この資料の「検討事項のポイント」を参考に 指導書の課題・検討事項の番号に沿ってまとめること 必ず自己点検票をチェック ( 提出は不要 ) 提出〆切は 1 週間後の 12:30 ( 時間厳守 )

病気等の例外を除き,〆切の延長はしない 受理されたもの への改善・修正は可 ( 一週間以内 ) 未完成のもの ( 途中までしかないもの ) は不受理