PowerPoint Presentation

Similar documents
Microsoft PowerPoint - H2.ppt [互換モード]

計算機アーキテクチャ

ソフトウェア基礎技術研修

.,. 0. (MSB). =2, =1/2.,. MSB LSB, LSB MSB. MSB 0 LSB 0 0 P

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

スライド 1

コンピュータ工学Ⅰ

Microsoft PowerPoint - 7.Arithmetic.ppt

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

PowerPoint プレゼンテーション

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

PowerPoint プレゼンテーション

1 ( ) 2 D-A D-A KUE-CHIP2 KUE-CHIP2 KUE-CHIPP2 KUE-CHIP (1) 2.2 D-A KUE-CHIP2 2.1 KUE-CHIP D-A

コンピュータの仕組み(1)ハードウェア

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

Microsoft Word - 実験4_FPGA実験2_2015

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

PowerPoint Presentation

Microsoft PowerPoint - ProcML-12-3.ppt

計算機アーキテクチャ

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

プログラミング基礎

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

PowerPoint プレゼンテーション

UNIX 初級講習会 (第一日目)

プログラミング入門1

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

VelilogHDL 回路を「言語」で記述する

プログラミング実習I

Microsoft PowerPoint ppt

Microsoft PowerPoint - OS07.pptx

ex05_2012.pptx

JavaプログラミングⅠ

CASL入門

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

ソフトウェア基礎技術研修

PowerPoint プレゼンテーション

スライド 1

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

目次 1. はじめに 1 2. マルチALUプロセッサ MAP MAP の構成 MAP 命令セットアーキテクチャ 並列 連鎖判定のアルゴリズムについて 5 3. Booth 乗算のアルゴリズム 次 Booth アルゴリズム 次 Bo

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

文法と言語 ー文脈自由文法とLR構文解析2ー

メソッドのまとめ

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

Microsoft PowerPoint - lego1.ppt [互換モード]

JavaプログラミングⅠ

VLSI工学

<chemsherpa-ai の入力について > (1) 発行者 承認者情報 発行者 承認者情報は 必須項目です 会社情報をクリックし 必要事項を入力します 5. 新規にデータを作成する (P.12 参照 ) 承認者情報も入力します (2) 日付の入力日付の入力規則で年月日は " ハイフン " でつ

PowerPoint プレゼンテーション

Microsoft PowerPoint - sp ppt [互換モード]

Microsoft Word - VBA基礎(3).docx

PowerPoint プレゼンテーション

Transcription:

マイクロプロセッサ ( 第 1 回 ) P. Ravindra S De Silva ravi@tut.jp 1

はじめに 情報 知能工学系学生実験サイト http://www.cs.tut.ac.jp/jikken/ 実験の説明資料などはWeb 上で公開中 http://www.icd.cs.tut.ac.jp/~ravi/mp/index.html 受け取りは メールにて行う 宛先は desilva.teaching@gmail.com 実験レポートは PDF ファイルで提出すること 2

日程 (p.26 参照 ) 第 1 回イントロダクション ( 課題 3.1 加算 ) 第 3 回応用プログラミング ( 課題 3.3 図形描画, 課題 3.4(1) メロディ ) 第 2 回基本プログラミング ( 課題 3.2 乗算 ) 第 4 回応用プログラミング ( 課題 3.4(2) メロディ ) 第 2 回以降は予習 ( プログラムの準備 ) が必須 3

コンピュータの利用 ユーザ 入力 どのような仕組みで動いているのか? 出力 コンピュータ 4

コンピュータ ハードウェア 入力装置 出力装置 記憶装置 処理装置 5

コンピュータ ソフトウェア 入力装置 出力装置 アプリケーションプログラム システムプログラム 記憶装置 処理装置 6

疑問 処理装置 (CPU) はプログラム ( ソフトウェア ) をどのように解釈しているのか? 高級言語によるプログラム 機械語によるプログラム 7

( 今のところの ) 回答 コンパイラ, アセンブラと呼ばれるプログラムを変換するプログラムを使う 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 8

ことばの整理 : 機械語 CPU が直接理解し実行できる言語のこと プログラムは 0 と 1 の列から構成される CPU ごとに異なる 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 9

ことばの整理 : 高級言語 人間が使いやすいプログラミング言語 C,C++,Java,Perl など CPU ごとに異ならない ( 共通 ) 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 10

ことばの整理 : アセンブリ言語 機械語を人間にわかりやすくした言語 命令が機械語と ( ほぼ ) 1 対 1 に対応 CPU ごとに異なる 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 11

ことばの整理 : コンパイル 高級言語によるプログラムをアセンブリ言語によるプログラムに ( または機械語によるプログラムに ) 翻訳すること 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 12

ことばの整理 : アセンブル アセンブリ言語によるプログラムを機械語によるプログラムに 翻訳すること 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 13

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

この実験で用いるハードウェア KUE-CHIP2 教育用の 8 ビットマイクロプロセッサ CPU 8 ビット =1 バイト 0 0 0 1 0 0 1 1 13h 16 進数であることを示す他にも 13H,0x13 など 15

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

KUE-CHIP2 の各部 : バス 入力バス : 入力部分と CPU 内部を結ぶ 出力バス : 出力部分と CPU 内部を結ぶ 17

KUE-CHIP2 の各部 :ALU 演算ユニット (Arithmetic and Logic Unit) 算術演算, 論理演算, アドレスの計算を行う 18

KUE-CHIP2 の各部 :ACC アキュムレータ (accumulator) 演算に利用するレジスタ.8 ビット 演算対象, 演算結果を保持 19

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

KUE-CHIP2 の各部 :FLAG フラグレジスタ (flag register) 演算 シフト結果により変化.4 ビット - - - - CF VF NF ZF 桁上がりフラグ桁あふれフラグ負フラグ p.15 図 2 ゼロフラグ 21

KUE-CHIP2 の各部 :PC プログラムカウンタ (program counter) 次に実行する命令のメモリ上でのアドレスを保持.8 ビット 22

KUE-CHIP2 の各部 :MAR メモリアドレスレジスタ メモリ操作の対象とするアドレスを保持. 8 ビット 23

KUE-CHIP2 の各部 : 内部メモリ 512 バイト. バイト単位の番地指定 プログラム領域 :0~255 番地 データ領域 :256 番地 ~511 番地 511 ~ 256 255 ~ 0 1FF 100 0FF 000 データ領域 プログラム領域 01100010 p.16 図 3 24

KUE-CHIP2 のアセンブリ言語 命令の種類 :p.17 表 1 を参照 言語仕様 : p.28~30 付録 A を参照 機械語フォーマット :1 バイトか 2 バイト p.16 図 4 を参照 25

プログラム例 (p.24, リスト 2) アドレス データ 命令 オペランド 00: 0110 001-0000 0001 LD ACC, 01h 02: 0001 0--- OUT 03: 0100 0111 RLL ACC 04: 0011 0000 0000 0010 BA 02h ACC 常に01 の内容を出力バッファの内容を論理左回転し 02 という値を番地へ戻る ACCに格納する,ACC (OBUF) に入れるに出力する機械語によるアセンブリ言語によるプログラム 0 0 0 0 0 プログラム 0 0 1 アセンブラ 0 0 0 0 0 0 1 0 26

アセンブル方法 (1/4) p.30,a.2 命令セットを参照 LD ACC,01h のアセンブル 0 1 1 0 0 0 1-0 0 0 0 0 0 0 1 A B B = 000:ACC Rsm 0 A = 1 0:ACC 0 0 A 1 s B = m 001:IX Rotate sm LD 0 A = 1 1:IX 1 0 A B = 01-: LoaD 即値 ST 0 1 1 1 A B = 100: STore 直接 (P) SBC 1 0 0 0 A B = 101: SuB 直接 with (D) Carry B = 110: 修飾 (P) B = 111: 修飾 (D) 27

アセンブル方法 (2/4) p.30,a.2 命令セットを参照 OUT のアセンブル 0 0 0 1 0 - - - 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 28

アセンブル方法 (3/4) p.30,a.2 命令セットを参照 RLL ACC のアセンブル 0 1 0 0 0 1 1 1 A s m Rsm 0 A = RA 1 0:ACC 00 00 A Right 1 s Arithmetically m Rotate sm LD 0 A = LA 1 1:IX 10 01 A Left Arithmetically B LoaD ST 0 RL 1 11 10 A Right B Logically STore SBC 1 LL 0 01 01 A Left Logically B SuB with Carry 29

アセンブル方法 (4/4) p.30,a.2 命令セットを参照 BA 02h のアセンブル 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 c c RCF 0 A 0 01 0 00 0 - Always - - Reset CF SCF 0 VF 0 1 0 01 0 - on - overflow - Set CF Bcc 0 NZ 0 01 01 0 1 c on c Not Zero Branch cc Ssm 0 Z 1 10 0 0 A 10 on s Zero m Shift sm 30

プログラム例 (p.24, リスト 2) アドレス データ 命令 オペランド 00: 0110 001-0000 0001 LD ACC, 01h 02: 0001 0--- OUT 03: 0100 0111 RLL ACC 04: 0011 0000 0000 0010 BA 02h - は 0 か 1 で置き換える ( どちらでもよい ) 31

プログラム例 (p.24, リスト 3) アドレス 00: データ 0110 0010 01: 0000 命令 0001 LD オペランド ACC, 01h 02: 0001 0000 OUT 03: 04: 0100 0011 0111 0000 05: 0000 RLL 0010 BA ACC 02h アセンブル完了 32

プログラムの実行 第 2.5 節に沿って行う (p.22~26) 注意点 : 電源器とボードを接続してからコンセントに繋ぐこと コンセントは机に固定されたものに繋ぐこと ( 転落防止 ) 電源スイッチ横のコンデンサに指をかけないことプログラムの実行前に RESET を押すこと 全員確認できたら次の説明へ ( 次回からグループではなく一人 1 台で行う ) 33

操作方法の補足 SSスイッチで実行 さらにSSスイッチを押すと停止, 再開 CLKFRQのダイヤルを回すと実行速度が変化 RESET SELスイッチを操作してACCを表示 SIスイッチでステップ実行 (1 命令ずつ ) SELスイッチを操作してPCを表示 SIスイッチでステップ実行 (1 命令ずつ ) 34

命令はどのように実行されるか? クロックに沿って実行 クロック 1 周期分 1 つの実行フェーズ KUE-CHIP2の各命令は3から5フェーズ P0,P1: 各命令で共通 P2 以降 : 各命令で異なる p.18 表 2を参照 35

実際に見てみる : リスト 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 80: 03 81: FD アセンブル結果の 16 進表示 END プログラムの実行を停止するメモリのプログラム領域 D1 を見たら 80 番地の内容を 80h だと思う 03ANS D1 D2 とし番地の番地に, メモリ ACC ( 内容を内容と変数宣言の内容を格納する 81 ACC 番地の内容を, に格納するの内容を加算する初期化のようなもの FDとする ) 36

実行のトレース LD ACC,[D1] A B p.18 表 2 を参照 B の部分 P0 P1 P2 P3 P4 LD ACC IX d [d] (d) (PC) MAR PC++ (Mem) IR (A) B (PC) MAR PC++ (Mem) A (Mem) MAR (Mem) A 37

実行のトレース LD ACC,[D1] 00 00 00 00 00 00 000: 64 001: 80 002: B4... 080: 03 081: FD 38

実行のトレース LD ACC,[D1] P0: (PC) MAR, PC++ 00 00 00 00 01 00 00 000: 64 001: 80 002: B4... 080: 03 081: FD 39

実行のトレース LD ACC,[D1] P1: (Mem) IR 00 00 00 00 64 01 00 000: 64 001: 80 002: B4... 080: 03 081: FD 40

実行のトレース LD ACC,[D1] P2: (PC) MAR, PC++ 00 00 00 64 02 01 01 00 000: 64 001: 80 002: B4... 080: 03 081: FD 41

実行のトレース LD ACC,[D1] P3: (Mem) MAR 00 00 00 64 02 80 01 000: 64 001: 80 002: B4... 080: 03 081: FD 42

実行のトレース LD ACC,[D1] P4: (Mem) A 00 00 03 00 64 02 80 000: 64 001: 80 002: B4... 080: 03 081: FD 43

実験課題 3.1 (p.26) (1) について 実行開始から実行終了まで, 観測可能なレジスタ, バスをトレース (2)~(6) について ADD 開始前から ADD 終了後まで, フラグレジスタのみをトレース ADD 命令を ADC 命令に変更して, ADC 開始前から ADC 終了後まで, フラグレジスタのみをトレース それぞれの加算結果も確認 記録すること 45

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

検討事項のポイント (1) について 各命令の各フェーズでの動作についてテキスト p.17~22 を参考に図などを使いながら文章で説明すること レポート作成補助 : 図や資料のデータを配布中 http://www.icd.cs.tut.ac.jp/~ravi/mp/index.html (2)~(6) について 各フラグがどのような時に変化するのか, ADD 命令と ADC 命令の違いもまとめること 47

次回 実験課題 3.2 乗算プログラムの作成 符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 81h 83h 80h 82h 必須の予習 : 85h 84h プログラムの作成とアセンブル 48

補足 : 符号無し 2 バイトの乗算 MSB: 最上位ビット 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 LSB: 最下位ビット 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1バイト = 8ビットメモリ上での順序に注意 49

補足 : アドレスモード オペランド ( 引数 ) の表現方法のこと KUE-CHIP2 のアドレスモード (p.28~30 参照 ) ACC,IX:ACC,IX の内容がデータ 即値 : オペランドそのものがデータ 直接 : オペランドがメモリのアドレスそのアドレス上の内容がデータ 修飾 : オペランド +IX の内容 がメモリのアドレスそのアドレス上の内容がデータ 50

補足 : 命令について (p.17) ADD: 加算命令 CF を考慮しない ADC: 加算命令 CF を考慮する ( 減算も同様 ) RCF:CF をリセットする 51

注意点 必ずプログラムを準備してくること! 次回からは各自 ( 一人一台 ) で実験を進めるすぐに開始できるように ( 機械語プログラム ) まずはフローチャートを作成すること授業開始時 ( 入力中 ) に問題がないか確認する プログラムとフローチャートは別の紙に 遅刻や準備不足に対する救済は行わないできなかった分は減点, 最悪の場合は不受理 52

フローチャートの例 1 バイトの乗算 A 初期化 0 C B C 終了判定 B = 0? Y 終了 HLT N C に A を足す C + A C プログラムの流れを日本語で図示する B を 1 減らす B - 1 B 53

2 バイトの加算の例 + A1 A2 B1 B2 C1 C2 CF 繰り上げ 加算 0 CF A2 + B2 + 0 C2 A1 + B1 + CF C1 終了 HLT RCF LD ADC ST LD ADC ST HLT ACC, [A2] ACC, [B2] ACC, [C2] ACC, [A1] ACC, [B1] ACC, [C1] 54

プログラム作成時の注意点 他人が見て分かるように書くこと 必ず紙に手書き or 印刷してくること 紙の両面を使わない アセンブリ言語と 機械語は横に揃える 修正用のスペースも 用意しておく 機械語は 2 進 16 進の どちらでも良いが, 16 進数なら確認しやすい 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 55

よくある間違い 2 バイトのデータの取扱い 上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令と ADC 命令 CF のリセット 終了判定の誤り LD 0 では ZeroFlag は立たない データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている 81h 83h 85h 80h 82h 84h 56

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

第 2 回 実験課題 3.2 乗算プログラムの作成 符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 必須の予習 : プログラムの作成とアセンブル 58

よくある間違い ( 再確認 ) 2 バイトのデータの取扱い 上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令と ADC 命令 CF のリセット 終了判定の誤り LD 0 では ZeroFlag は立たない データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている 入力ミス, アセンブルの誤り 81h 83h 85h 80h 82h 84h 59

進め方 各自の作成したプログラムを入力 入力中にフローチャートをチェック 早く終わった人は他の人をサポート ホワイトボードの (1)~(4) で動作確認 それらが正しく計算できたら (A) と (B) を計算. 実行時間を計測 ホワイトボードに実行時間とプログラムの メモリ消費量 ( 単位 : バイト ) を記入 プログラム部分 + データ格納部分 60

実行時間の理論値 自分のプログラムについて実行時間の理論値を求め, 実測値と比較せよ手順 1) 実行時間を決めるパラメータを特定 各命令のフェーズ数 (p.17 表 2) 1フェーズ = 1クロック周期 クロック周波数 = 100 Hz 手順 2) 実行時間を求める計算式を導出手順 3) 式から (A),(B) の実行時間理論値を算出手順 4) 理論値と観測値の比較 61

検討事項のポイント 使用したプログラムのリストを載せ, フローチャートを用いて説明せよ 他の人のプログラムと比較 論点 1: 実行時間 ( 実測値で可 ) 論点 2: プログラムのメモリ消費量 注意 : 他の人のプログラムは掲載不要だが, 簡単な説明は記述すること 62

次回 (p.25-26) 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4(1) メロディーの出力予習 : 軽く目を通しておく ( 付録 B.1 も -p.30-31) 電卓を持参すること 63

オシロスコープへの文字の出力 出力バッファに DA コンバータを付けて出力信号をオシロスコープへ DA コンバータ : ディジタル信号をアナログ信号に変換する回路 1101 DA コンバータ 13 (0,1 の 4 桁の信号 ) (16 段階の値 ) 64

取り付ける DA コンバータの機能 出力バッファの 8 ビットの中の上位 4 ビットを x 座標下位 4 ビットを y 座標とする x 座標の取れる範囲は 0h~Fh y 座標の取れる範囲は 0h~Fh 65

オシロスコープへの出力 F B LD ACC, 6Bh OUT 0 0 6 F 66

オシロスコープへの出力 F B 0 0 6 F LD ACC, 6Bh OUT 点を 1 つずつ表示 続けて表示すれば全てが同時に表示されるように見える 67

注意点 1. 1 つの点は として表示され として表示されないので注意 2. ずっと表示されるようにすること ( 図形表示部分を無限ループさせ, 停止させる時は SS ボタンを押す ) 3. オシロスコープの残像に注意 ( 表示点は ジャンプ ではなく 移動 する. そのため, 一筆書きの図形になる ) 4. 座標データを一箇所にまとめ, IX ( 修飾アドレス指定 ) を使うこと 68

修飾アドレス指定 00: LD IX, 00h 02: LD ACC, [IX+80h] IXを0~4としてループ 04: ADD IX, 01h 80: 座標 1 81: 座標 2 82: 座標 3 83: 座標 4 84: 座標 5 69

余力がある場合 文字 図形を動かしてみる 例 : 右から左 まずは固定で 完成してから ( 任意の課題は加点対象 ) 70

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

第 3 回 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4(1) メロディーの出力予習 : 軽く目を通しておく ( 付録 B.1 も p.30-31) 電卓を持参すること 72

注意 使用する DA コンバータはとても壊れやすいので, 大事に扱うこと ( むやみに触らない ) 特に, 取り付け部分周辺の配線に注意 取り付け & 取り外しは教員 TA が行います 73

進め方 15:40 終了を目処に オシロスコープとDAコンバータを接続 チャンネル1 赤 チャンネル2 青 グランド 黒 ダイヤルCLKFRQを 1 にして実行 15:40 頃に次の説明 74

メロディーの出力 KUE-CHIP2 から波を出力しスピーカから音を出す 今日 : 音を出す仕組みの基礎 次回 : メロディー出力プログラムの実行 75

音とは 音は空気の振動 ( 波 ) 音の三要素 大きさ 高さ 音色 波の振幅の大きさ 波の周波数の高さ 波の形 スピーカ : 電気信号を音 ( 空気振動 ) に変換する装置 76

作る波 方形波 : 長方形の波 波の周期 T ( 秒 ) On Ta ( 秒 ) Tb ( 秒 ) Off T = Ta + Tb 77

音を出すプログラム (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 部を作る 78

作る波 : 長さ 方形波 : 長方形の波 波の周期 T ( 秒 ) On Ta ( 秒 ) Tb ( 秒 ) Off Ta = (12+8a)T 0,Tb = (16+8b)T 0 ( ただし,T 0 = クロック周期 ) 79

実験内容 3.4(1) p.26 (a) オシロスコープでクロック周期を確認 スイッチCLKを中立に ダイヤルCLKFRQの 0~8 の周波数を測定 信号はコネクタJP3より出力 (b) リスト 4 の a,b を設定 出力する音の周波数 :440Hz ラ 最適な T 0,a,b を計算によって定める T = Ta + Tb T = 1/440 ( 秒 ) Ta = (12+8a)T 0,Tb = (16+8b)T 0 最も精度が高くなる T 0 を選択 80

実験内容 3.4(1) p.26 (c) 440Hzの音の出力 リスト4の入力 CLKFRQの設定 DAコンバータを通してスピーカから出力 出力音が 440Hz ( 誤差 ±1%) であることを計算によって確認 81

検討事項のポイント (3) オシロスコープによる文字の出力 プログラムのリストを載せて, プログラムの特徴を説明 修飾アドレス指定について どうやって文字を描画したのか 82

検討事項のポイント (4) メロディーの出力 (a) 誤差 ±1% の確認 どのように最適な T 0, a, b を計算したか? 計算過程を記述すること どのように確認を行ったか? 実際に誤差を計算すること 他の精度確認方法は考えられるか 83

検討事項のポイント (4) メロディーの出力 (b) 精度をより上げるための対策 KUE-CHIP2 だけで対処する場合 ( ソフトウェア上, プログラム上の工夫 ) その他の機器を KUE-CHIP2 に接続する場合 ( ハードウェア上の工夫 ) メロディー出力の基本的なアルゴリズムはそのまま出力周波数を 440Hz に近づける方法 84

次回 課題 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2とリスト5 (p.32) 楽譜データを用意するだけではダメリスト5のプログラムに改造が必要 時間内に完成しなかった場合は打ち切りデバッグのサポートはできるが, プログラムが無い場合はサポートできない 85

注意 メロディーの出力は無限に繰り返すこと p.32 表 4 音階の周波数 を参考に 1 オクターブ高い音 周波数が 2 倍 休符 はどうすれば実現できるか 音符と休符を判別し, 別処理が必要 同じ音が続くと1つの長い音に聞こえる 音と音の間に空白が必要リスト5に改造が必要な部分 最も高周波 低周波な音でも可聴領域を超えない 86

メロディー出力プログラム例 ( リスト 5) プログラム領域 000: 62 00 LD ACC, dptr1 002: 75 1A ST ACC, (dptr) 004: 65 1A L0: LD ACC, (dptr) 006: 68 LD IX, ACC 007: B2 03 ADD ACC, 0x3 009: 75 1A ST ACC, (dptr) 00B: A2 18 SUB ACC, dptr2 00D: 31 13 BNZ L1 00F: 62 00 LD ACC, dptr1 011: 75 1A ST ACC, (dptr) 013: 67 02 L1: LD ACC, (IX+2) 015: 75 1C ST ACC, (n3) データ領域のアドレスを指している ( 自分のプログラムに合わせて設定 ) データ領域 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 image 出力 11A:?? 音の終わり dptr 11B:?? n2 11C:?? n3 どの音を鳴らすか実行時 (3ずつ増える) に使用 n1は音の高さ,n2 n3は長さ (2 重ループ ) 87

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

第 4 回 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2 とリスト 5 (p.32) DA コンバータの取扱いに注意 89

検討事項のポイント (4)(c) 各自のデータ表現の特徴 プログラムのリストを載せて説明せよ 例えば, 楽譜 は人間に理解しやすいように メロディーを表現している どのような表現なら理解しやすいのか 90

検討事項のポイント (4)(d) 作成したメロディー出力法は他の CPU にも流用できるか? 他の CPU の例を 1 つ挙げて考察 挙げた CPU の実行命令フェーズを調べ, それを踏まえて考察 91

検討事項のポイント (5) 自分が最も使用している CPU ( または, 有名な CPU) についてそのアーキテクチャを調べてまとめる ( 必須ではない ) レジスタ, 命令セット, メモリ空間の特徴 乗算命令がどのように実行されているか 任意の課題は加点対象 92

まとめ 計算機の仕組みについて理解 例えば, なぜ 32bit の OS では 4G 以上のメモリが使えないのか? プログラムの作り方やデバッグの練習 4G = 4 1024 1024 1024 = 2 2 2 10 2 10 2 10 = 2 32 高級言語によるプログラム コンパイラ アセンブラ アセンブリ言語によるプログラム 機械語によるプログラム 93

実験報告書について 指導書 p.5 をよく読むこと 受け取りは メールにて行う 宛先は desilva.teaching@gmail.com 表紙は自作のものでも構わない 実験方法について, 指導書を丸写しする必要はない この資料の 検討事項のポイント を参考に 指導書の課題 検討事項の番号に沿ってまとめること 必ず自己点検票をチェック ( 提出は不要 ) 提出〆切は 1 週間後の 12:30 ( 時間厳守 ) 病気等の例外を除き, 〆切の延長はしない 受理されたものへの改善 修正は可 ( 一週間以内 ) 未完成のもの ( 途中までしかないもの ) は不受理 94