目次 はじめに 1 第 1 章ゲームの内容 テトリス ルール 2 第 2 章設計方法 設計の概要 FPGA について VHDL について LCD SRAM 設計の流れ 5 第 3 章ゲーム

Size: px
Start display at page:

Download "目次 はじめに 1 第 1 章ゲームの内容 テトリス ルール 2 第 2 章設計方法 設計の概要 FPGA について VHDL について LCD SRAM 設計の流れ 5 第 3 章ゲーム"

Transcription

1 卒業研究報告 題目 FPGA と LCD を用いたゲームマシンの設計 指導教員 橘昌良助教授 報告者 笠原拓二 提出日平成 18 年 2 月 20 日 高知工科大学電子 光システム工学科 1

2 目次 はじめに 1 第 1 章ゲームの内容 テトリス ルール 2 第 2 章設計方法 設計の概要 FPGA について VHDL について LCD SRAM 設計の流れ 5 第 3 章ゲームマシン仕様定義 仕様検討 テトリス本体の仕様 テトリスの動作周波数 テトリスのアルゴリズム SRAM の動作 ディスプレイの仕様 大まかな機能分割 15 第 4 章 HDL 設計 VHDL による記述 VHDL 宣言部 同期回路設計とリセット信号 ディスプレイ制御回路 同期信号用のカウンタ設計 アドレス計算 LCD_controller の状態遷移 LCD_controller のシミュレーション結果 SRAM 制御部の設計 26 2

3 4.3.1 SRAM アクセスタイミング メモリーコントローラの状態遷移 Memory_controller のシミュレーション結果 テトリス本体の設計 テトリスの状態遷移回路 データ構造 アルゴリズム詳細 テトリスのモジュール構成 39 おわりに 40 謝辞 41 参考文献 42 付録 1 LCD_controller の VHDL 記述 43 付録 2 Memory_controller の VHDL 記述 48 3

4 はじめに 携帯電話に代表される情報端末やカーエレクトロニクスなどでは ソフトウェアとハードウェアから構成されている組み込みシステムとして製品化されている このような組み込みシステムでは 小型化 低価格化 低消費電力化への要求から 回路の高機能化とともに複雑化が進んできた そのため システム LSI の設計には 大規模な回路を短期間で設計し さらに設計資産を再利用できるような設計方法が考えられてきた 近年の LSI 設計 開発現場ではハードウェア記述言語 (HDL:Hardware Description Language) による設計が主流になってきている HDL は プログラミングの構文に似ていて 回路の機能を言語レベルで記述するだけで論理合成することができ 容易に回路の設計 シミュレーションを行うことができる これにより 従来のゲート レベルでの設計よりも大幅な設計期間の短縮がかなった [1] 本研究では HDL による回路設計を学ぶために プログラムによる回路の作成 書き換えが可能な FPGA を用いて テトリスというゲームマシンの設計を行なった 研究の概要 経過について本論文に報告する 本論文は全 4 章構成になっている まず 第 1 章で設計するゲームの内容について説明し 次の第 2 章で設計の流れ 各装置の概要などを説明する 第 3 章は 2 章の内容をより具体化したもので 第 4 章から実際の設計の内容についての解説になっている 最後に 付録として VHDL のソースを添付する 4

5 第 1 章 ゲームの内容 この章では 今回製作するゲーム テトリス の概要を簡単に紹介する 1.1 テトリス テトリス (Tetris, 露 Тетрис) は 1980 年代末から 1990 年代初めにかけ 世界各国で大流行したコンピューターゲームである もともとは旧ソ連の科学者アレクセイ パジトノフ (w:alexey Pajitnov) が教育用ソフトウェアとして開発したものであったが その後ライセンス供給が様々なゲーム制作会社に対してなされ 各種のプラットフォーム上で乱立する状態になった なお テトリスのもつ数学性 動的性 ならびに知名度から テトリスをゲームプログラミングの練習題材として用いられる例がしばしばみられた ゲームの内容は 1 つの画面を次々と落下してくるブロックを積み上げ それをひたすら消していくという単純なアルゴリズムのパズルゲームである 次に ゲームのルールについて解説する [10] 1.2 ルール フィールドは格子状のブロックを敷き詰めることが可能な領域からなる 片面型テトロミノ状のブロックピースがフィールド上方から 1 つずつ落下してくる プレイヤーは 落下中のブロックピースを 90 度単位で回転させるか 格子単位で左右に移動させるか ブロックピースを高速に落下させるかのいずれかの操作をすることができる ブロックピースがフィールド最下段 または他のブロックの上に着地すると そのブロックピースはブロックとしてフィールドに固定される そして新しいブロックピースがフィールド上方に出現し 再び同じ処理が繰り返される 格子の特定の行がすべてブロックで埋め尽くされると その行にあるブロックが消滅し得点となる 同時に多くの行を消去するほど高得点が得られる ( 特に 4 段消しを テトリス と呼ぶ ) 消滅した行の上にあったブロックは 消えた行数分落下する 固定されたブロックがフィールドの最上段まで積み重なるとゲームオーバーとなる 以上がテトリスの基本的なルールである 詳しいアルゴリズムについては第 3 章から解 説する 5

6 第 2 章 設計の方法 この章では 設計に関する概要や使用したデバイスについて説明する 2.1 設計の概要 本研究では 近年 デジタル回路設計手法として一般的になってきたハードウェア記述言語の 1 つである VHDL を用いて回路の機能設計を行う 設計した回路の実装には 源発振 30MHz ほどで動作する FPGA を用いる また ゲーム画面表示用として LCD フレームバッファ用として SRAM を使用する ( 図 2.1 参照 ) テトリスの動作 全体の制御 VHDL で記述 FPGA LCD SRAM Controller 図 2.1 全体の構成イメージ 6

7 2.1.1 FPGA について FPGA(Field Programmable Gate Array) とは PLC(Programmable Logic Device) の一種で その名前のとおり内部の倫理を回路設計者がプログラムできる LSI である プログラムによって容易に内部倫理を再構成できるため 回路実装後の動作シミュレーションをした後でも機能の変更 追加を行うことができる [1] VHDL について VHDL(Very high speed integrated circuit Hardware Description Language) とはアルゴリズム レベルからゲート レベルまでの抽象度の広い範囲においてデジタルシステムをモデル化することができるハードウェア記述言語である 言語レベルでの記述から 自動設計 (Design Automation : DA) ツールにより論理合成 配置配線を自動化できるため 従来の回路図入力に比べ大幅に設計期間を短縮することができる また 大きな特徴として C 言語のようにプログラムを先頭から順に処理するソフトウェア記述と違い ハードウェアを設計する上で欠かすことのできないデジタル回路での並列動作を 正確にモデリングすることができる 詳しい記述方法については第 4 章で解説する [1][2] LCD(Liquid Crystal Display) 液晶を利用した表示装置 2 枚の偏光板と液晶分子を利用して光の透過率を調整することにより 画像を表示する 液晶分子自体は発光しないため光源となるバックライトが必要となる CRT ディスプレイや PDP など他の表示装置に比べて薄くて軽いので 携帯用コンピュータや省スペースデスクトップパソコン等によく使われている 以前まで LCD を代表とする表示デバイスはコストが高く 自動車や民生機器などの組み込み機器で使われることはあまりなかったが 携帯電話や薄型テレビなどの普及により LCD のコストがかなり下がった そのため 最近では組み込み機器向けに必要十分な機能に絞り込んだグラフィックス LSI も生産されている SRAM(Static Random Access Memory) プログラムやデータを記録保持する装置の一種 記憶素子としてフリップフロップ回路を用いるもので アクセス速度が速く消費電力が小さいという特徴があるが 回路が複雑になり集積度を上げにくいという欠点を持つ 電源を切ると記憶内容は失われる 非同期 SRAM シンクロナス( 同期 )SRAM デュアル ポート SRAM などいろいろなバリエーションがあるが 本研究ではもっとも一般的な非同期 SRAM を使用する 7

8 2.2 設計の流れ 工程 設計データ 概念設計 仕様検討 仕様書 動作設計 ブロック分割 ブロック図 HDL コーディング ソースコード データパス設計 コンパイル テストベンチ RLT シミュレーション 論理設計 論理合成 配置配線 ネットリスト 物理設計 FPGA ダウンロード 回路情報 製造 実機検証 図 2.1 FPGA 開発フロー 図 2.1 は FPGA 設計の基本的な流れである 上位レベルの工程から順に設計を行ってい くが 下位レベルで問題がでたら上位レベルに戻って検討しなおす必要がある 次に 順 を追いながら各工程について簡単に解説していく [6] 1. 仕様検討これから作成する回路の機能を決める 実際の設計では要求仕様が提示されるので 制約事項を踏まえて設計に着手できるレベルまで仕様を詳細に決めていく この段階で どの機能をどのように実現するかのイメージがあれば 後の工程がスムーズに進められる 8

9 2. ブロック分割仕様が決定してもいきなり HDL で記述するのは困難なので 機能別にいくつかのブロックに分割する 機能の切り分けが終わったら それぞれの機能ブロック間でどのようにデータ 制御信号が流れているのかブロック図を書いて明らかにする 3. HDL コーディング 分割した機能モジュールごとに HDL を用いて RTL(Register Transfer Level ; レ ジスタ転送レベル ) で記述する 4. コンパイル FPGA 化できない HDL コードをシミュレーションしても意味がないので まずは記 述したコードに問題がないかどうかを FPGA 開発ツールでチェックする 5. RTL シミュレーション テストベンチを作成して シミュレーションで HDL コードの論理検証を行う 6. 論理合成 配置配線論理合成ツールを使用して RTL の HDL コードをゲート レベルのネットリストに変換する 生成されたネットリストに従って FPGA 開発ツールで部品を配置し 配線する 必要に応じてバック アノテーション ( 配置配線後の遅延情報を反映したシミュレーション ) を実施する 7. FPGA ダウンロード FPGA 開発ツールで FPGA へ渡す回路情報 ( ビットストリーム ) を生成し ダウン ロード ケーブルを介して回路情報を FPGA へ転送する 8. 実機検証 FPGA を実際に動作させて検証する 以上の手順で 次章から実際にテトリスを製作した流れにそって解説していく また 本論文では工程 1~2 が第 3 章 工程 2~5 が第 4 章 工程 6~8 が第 5 章にそれぞれ対応 する 9

10 第 3 章 ゲームマシン仕様定義 この章では 本研究で使用したデバイスの動作の仕組み 制約条件や テトリスの動作 仕様について大まかに説明する 3.1 仕様検討 初めに ゲームのルールや動作 各デバイスの仕様を解説する テトリス本体の仕様 まず ユーザーインターフェースの部分について下図に示す 左右回転 下 Start Reset 図 3.2 入力インターフェース 図 3.1 テトリス画面 図 3.3 使用するブロック 10

11 図 3.1 は実行中のゲーム画面である ゲームフィールド内は 10*24 段で構成され 画面の右上に次のブロック 右下に各データを表示する データの意味はそれぞれ次のとおりである SCORE : ゲームの得点 ブロックを消すと加算される 一度に消す段数に比例して多くの点数が加算される Lines : 消去した段数をカウントする 一定値に達すると Level を加算する Level : ブロックピースの自動落下速度に影響する 図 3.2 はゲームコントローラーである 以下に説明する 5つのキーで 回路全体を制御する Right_key : ゲーム実行中において ブロックピースの右方向移動を入力する Left_key : ゲーム実行中において ブロックピースの左方向移動を入力する Down_key : ゲーム実行中において ブロックピースの下方向移動を入力する Turn_key : ゲーム実行中において ブロックピースの回転を入力する Start/Stop_key : ゲーム待機状態の時 ゲーム開始信号 Start を入力する また ゲーム実行中の場合 ゲーム内容を保持したままゲーム待機状態へ遷移する その間ディスプレイの表示はオフになる Reset_key : ゲームを初期状態にもどす 図 3.3 はゲーム内で使用するブロックである 基本となる各色 7 種に回転後のブロックも 含め 計 19 個のブロックが登場する 回転後のブロックデータもそれぞれ SRAM に記憶 しておく テトリスの動作タイミングブロックの自動落下速度を 100ms~500ms くらいとして回路設計を考えた場合 内部クロック (30MHz=33.3ns) に比べて極端に遅い また キー入力による操作を考えても あまり高速で動作する回路だと設計しづらくなる よって テトリス本体の回路には内部クロックを分周した 1KHz 程度 (1ms) で設計する 11

12 3.1.3 テトリスのアルゴリズムここでは テトリスの動作について解説する テトリスのアルゴリズムについては すでに Web で C 言語によるソースコードが紹介されているので それを参考にアルゴリズム確認 動作検証をおこなった [9] まず テトリスの主な処理として 以下のようにまとめられる メイン トップモジュールとして 各処理の呼び出しとゲーム実行中か否かの判定を行う 初期化処理 ゲーム内の各データを初期化する ブロック生成処理 新しいブロックをランダムに生成する ブロック落下処理 ブロックの自動落下の処理 ブロック操作処理 キー入力に応じた制御を行う ブロック移動処理 ブロックを移動させる処理 ブロック回転処理 ブロックを回転させる処理 重なり検査処理 移動 回転後のブロックが壁と重なってないか判定する 画面描画処理 画面の表示を更新する ブロック固定処理 壁と接触したブロックを固定する 消去判定 消去処理 フィールド全段において消去判定を行い ブロックの横 1 列揃ったラインを消去し 得点を加える 図 3.4 はテトリスのプログラム構造を大まかにまとめた関係図である SPD(Structured Programming Diagrams) という表記法を使用している 基本的な処理の流れとしては 各ブロックを結んだ線上を上 > 右 > 下の優先順位で進んでいき 枝の端まできたら最初の枝の下方向へ進んでいく [3] 12

13 レベル 1 レベル 2 レベル 3 テトリス 前処理 ゲーム初期化処理 各初期値の設定 (WHILE : 否ゲームオーバー ) ブロック作成処理 ブロック座標初期化 (IF : キー入力検出 ) 画面更新処理 乱数発生 ブロック操作処理 入力キー判定 ブロックデータ再配置 (IF : カウント一定未満 ) then 時間をカウント else ブロック落下処理カウントの初期化後処理ゲーム終了 右 左 下 (SWITCH : 入力キー ) (IF : 重なり検査 ) 移動処理 (IF : 重なり検査 ) 移動処理 (IF : 重なり検査 ) (IF : 重なり検査 ) ゲームオーバー処理ブロック座標更新画面更新処理回転後ブロックロード 回転 移動処理回転処理 (IF : 重なり検査 ) 移動処理ブロック固定処理ブロック作成処理画面更新処理 (IF : 重なり検査 ) 回転前ブロックに戻す画面更新処理 (IF : 消去判定 ) 消去処理得点計算画面更新処理 図 3.4 テトリスプログラム SPD 13

14 3.1.4 SRAM の動作メモリとして 512k 8 ビット構成の非同期 SRAM を使用した アドレスバス幅 19 ビット データバス幅 8 ビットで CS( チップセレクト ) OE( アウトプット イネーブル ) WE( ライト イネーブル ) の 3 つの制御信号により動作を決定する 各制御入力と動作状態の関係は表 3.1 のようになっている [8] 表 3.1 FUNCTIONAL DESCRIPTION( データシートより ) CS OE WE I/O Pin Mode Power H X X High-Z Deselected Standby L H H High-Z Output disabled Active L L H Dout Read Active L X L Din Write Active CS はデバイスの選択状態をあらわす 制御信号は負極性であるので L のとき信号がオンとなり デバイスが選択状態になる 選択状態でないとき ほかの入力ピンはすべて無視される OE はデータ出力バッファを開く信号を意味し WE は SRAM への書き込み信号を意味する ただし WE と OE の両方を L にした場合 WE が優先されるため リード動作を行うときは WE を H にしておかなくてはならない 非同期 SRAM はその名のとおり 特定のクロック信号に同期して動くようなことはなく 入力信号の状態に対応して動作する また リード時に有効なデータが確定したことや ライト時にデータを受け取ったということを示す信号はないので データシートのタイミング図から読み取りながら設計する必要がある リード ライトサイクルについて それぞれ 2 パターン計 4 種類のアクセス方法を解説していく 14

15 OE コントロールド リードアドレスを制定させて CS= L WE= H とした状態で OE をアサート (L レベル ) することによりデータを I/O ピンに出力する また CS WE OE がリード状態の条件を満たさなくなると SRAM は I/O ピンのドライブをやめ ハイ インピーダンスになる ( 図 3.8 参照 ) アドレスコントロールド リード上記の CS= L WE= H OE= L の状態のままアドレスを変化させることにより 新しいアドレスのデータを I/O ピンに出力させる つまり アクセス状態のままアドレスだけを変えて違うアドレスのデータを読み込む ただし 高速 SRAM の一部にはデバイスが選択状態でアドレス変化をさせると誤動作するような物もあるので この使い方が許されるか否かは事前の確認が必要である WE コントロールド ライトアドレスを制定させて CS= L の状態で WE をアサート (L レベル ) すると I/O ピンはハイ インピーダンス状態になり その後ホストがデータを確定させる データの書き込み動作は WE の立ち上がりエッジで行われる CS コントロールド ライト WE をあらかじめアサートした状態で CS を利用してデータを書き込む WE が先にア サートされているので デバイスが選択状態になるのと同時にライト状態になる 15

16 3.1.5 ディスプレイの仕様 本研究では SHARP 製 5.5 インチパッシブカラー液晶モジュール LM32C041 を使用し た LCD の外形は 150mm(W) 116mm(H) 25mm(D) 表示画素は 320( 縦 ) 240( 横 ) RGB 間引き式階調コントロール回路を内蔵しており 垂直同期信号 水平同期信号 ド ットクロック RGB 各ビットの表示データ入力により RGB 各 8 階調 512 色を表示する 表 3.2 はタイミングの定格値 図 はそれぞれ同期信号に対するデータ入力のタイ ミングを示している [7] 表 3.2 インターフェースタイミング定格表 項目 定 格 値 MIN TYP MAX フレーム周期 12.5ms - 20ms クロック周期 100ns - - HSYNC H レベル幅 376DCK - - HSYNC H レベル幅 248HSYNC - - L レベル HSYNC 幅 3DCK - - L レベル VSYNC 幅 3HSYNC - - VSYNC HSYNC 3H 4H 240H +4H Line data Y=1 Y=240 (a) 水平方向のタイミング HSYNC DCK 3DCK 48DCK 320DCK +8DCK RGB data X=1 X=320 (b) 垂直方向のタイミング 図 3.5 データ入力タイミング図 16

17 y 座標 HSYNC (240.1) (1.1) 320DCK (1.1) (1.320) (2.1) 240H ( ) (240.1) ( ) ( ) (320,1) x 座標 VSYNC (a) 通常の配置画面 図 3.6 画面上での動作 (b) ゲームでの配置 タイミング図の動作の説明 VSYNC は画面縦方向の同期信号 HSYNC は横方向の同期信号を表している データ入力の流れとしては 図 3.5(a) に示すように まず VSYNC の立ち上がりから HSYNC4 周期 (379DCK) をカウントし その後 HSYNC1 周期ごとに 1 行分のデータ入力が開始される 1 行分のデータ入力に関しては 図 3.5(b) に示すように HSYNC の立ち上がりから DCK(dot clock)48 周期をカウントし その後 DCK( に同期して 1 画素のデータが LCD に入力される この流れを繰り返しながら 図 3.6(a) に示すように画面左上隅から掃引を開始し 右下隅で 1 画面分の掃引を完了する 本研究での使い方テトリスのゲーム画面は縦長であるので LCD を 90 度時計回りに回転した配置で使用し よって x,y 座標の進み方は図 3.6(b) のようになる また デジタル入力の液晶の場合 アナログ入力の液晶と違い画像データを送り続けなくても画面を保持し続けることができる 図 3.4 を見てもわかるとおり テトリスの場合 画面更新処理はそう多くない したがって 通常時 LCD の同期信号を止めておき テトリス本体回路からの画面描画要求があった時のみ1フレーム分動作するよう設計する 画面を連続して描画し続ける場合 DCK の 1 周期を LCD からの SRAM アクセスとテトリス本体からの SRAM アクセスに二分して割り当てなくてはならないため 連続描画よりかなり設計を簡素化できる LCD のフレーム周期 12.5ms~20ms と テトリス本体の動作周波数 (1KHz=1ms) を考えると ゲーム動作への影響も少ないと思われる V シンク (VSYNC:vertical synchronous) H シンク (HSYNC : horizontal synchronous) 17

18 3.2 大まかな機能分割 前節で得られた要求仕様をもとに 大まかな機能分割を行い 入出力を明確にする 1 つのモジュールだけで記述することもできるが 大規模で複雑な機能だと機能記述が散乱し 不具合が発生しやすくなりデバッグも大変になってしまう 設計データの再利用性を高めるという意味でも 見通しのよい機能ブロックへ分割していく まず 最上位ブロックの入出力を明らかにする ( 図 3.7 参照 ) 図 3.7 のブラックボックスを いくつか機能ブロックに分割したものが図 3.8 である 内部の主な回路はほとんど順序回路であるので 複数の有限状態機械 (finite state machine : FSM) で構成される Right key Left key Down key Turn key Start/Stop Reset key Clock FPGA h_sync v_sync DCK LCD data bus(9bit) CS OE WE SRAM data bus(8bit) LCD SRAM address bus(19bit) 図 3.7 最上位ブロックの入出力仕様 スイッチ パルス制御部 テトリス メイン回路部 LCD メモリ 制御部 LCD SRAM 図 3.8 大まかな機能ブロック図 18

19 DFF Controller DFF DFF DFF tetris FSM LCD 制御 FSM LCD DFF DFF T_CLK Memory 制御 FSM SRAM GEN 図 3.8 全体の機能ブロック図 図 3.8 について 右のモジュールから順に簡単に説明する LCD 制御 FSM テトリス本体からの制御信号により LCD 同期信号を発生し 画面を描画したり非表示に したりする L_con(LCD_controller) というモジュール名で設計する メモリ制御 FSM テトリス本体からの SRAM アクセスと LCD からのアクセスに対しバス調停を行い SRAM アクセス用の制御信号を操作する Mem_con(Memory_controller) というモジュール名で設計する tetris FSM テトリスの動作を記述します 図 3.4 のアルゴリズムを参考に さらにいくつかのステー トマシンで構成される Tetris_main というトップモジュールから設計していく DFF T_CLK コントローラーからの入力信号のチャタリングを防止するとともに 入力パルスを DFF によって保持する T_CLK では 源発振からのクロックを分周してテトリス本体用のクロック (1kHz 程度 ) を生成する 19

20 第 4 章 HDL 設計 この章では まず VHDL の基本的な記述のしかたについて説明する その後 各機能ブ ロックについて RTL で記述できるところまで詳細に設計する [1][2][4] 4.1 VHDL による記述 VHDL の基本構造は図 4.1 に示すように ライブラリ宣言とパッケージ宣言で始まり エンティティ宣言で入出力ポートを定義し アーキテクチャ宣言に動作を記述していく library ライブラリ名 ; use ライブラリ. パッケージ名.all; ライブラリ宣言 entity エンティティ名 is port( 信号 1 : in std_logic; 信号 2 : out std_logic); end エンティティ名 ; エンティティ宣言 architecture インプリメンテーション名 of エンティティ名 is signal node1 : std_logic; 内部信号宣言部 begin 動作記述部 end インプリメンテーション名 ; アーキテクチャ宣言 図 4.1 VHDL の言語構造 20

21 4.1.1 VHDL 宣言部 ライブラリ宣言ライブラリは あらかじめ定義されたデータの集まりである このライブラリを使用するための宣言を行う IEEE ライブラリは VHDL 記述において必須であり最初に必ず library IEEE; と記述する パッケージ呼び出しパッケージは データ タイプなどをまとめたものである とりあえず基本的な型が定義されている std_logic_1164 は必須 また 最後の all はパッケージ中のすべてを使うという意味である エンティティ宣言エンティティは 回路の入出力ポートを定義する entity エンティティ名 is と end エンティティ名 ; の間に信号の方向と属性を列挙する 信号の方向は 入力 (in) 出力(out) 双方向 (inout) の 3 種類 属性はビット (std_logic) とバス (std_logic_vector) を主に使用する std_logic_vector ではデータ幅を指定する このとき downto で定義すると最上位ビットが番号の大きい信号に割り当てられる to で定義した場合逆になる アーキテクチャ宣言アーキテクチャ宣言は architecture インプリメンテーション名 of エンティティ名 is で記述する 本体は ノード宣言部と動作記述部からなる ノード宣言部では 動作記述部で用いるノード名 ( モジュール内部でのみ使い 外部には出力しない内部信号名 ) を宣言する signal ノード名 : 属性 ; 動作記述部は 回路の動作について記述していく部分である begin と end で囲み この間に記述する 21

22 4.1.2 同期回路設計とリセット信号 同期回路大規模な回路を確実に動作させるためには すべてを同期回路で設計する必要がある 同期回路とは 一定周波数の信号 ( クロック ) に従ってすべてのフリップフロップが同じタイミングで動作する回路を意味する よって 一定の順序で処理していく回路やフリップフロップを使うような回路では プロセス文のセンシティビティリストに clk を記述する プロセス文については下記に説明している [1][2] リセット回路回路の電源投入時の過度状態では回路の内部状態がどう定まるかが全く不明である また プログラムが暴走して制御不能になった場合 回路を再び初期状態にしてリスタートする必要がある このような目的で回路を初期化するのがリセット信号である 上記の clk と同じくセンシティビティリストに加えて記述する 同期信号と非同期信号 D フリップフロップの一般的な記述を下に示す 1 process( CLK, reset ) 2 begin 3 if ( reset = 0 ) then 4 Q <= 0 ; 5 elsif ( CLK event and CLK = 1 ) then 6 Q <= D; 7 end if; 8 end process; 動作記述部の begin から end の間は全て同時に実行されるが process 文で囲まれた部分は上から順に実行され 下の process 文で最初に戻る 1 行目の () 内はセンシティビティリストと呼ばれ () 内に記述された信号の値が変化した時のみ process 文が実行される 5 行目の識別子 event は遅延属性というもので 信号 CLK が変化しているとき真 (TRUE) を返す すなわち 5 行目によりクロックの立ち上がりを検出し クロックに同期して入力を出力に伝盤させている 一方 reset 信号はクロックに同期した信号ではないため if 文の最初に記述している なお 同期信号によるデータ入力では 入力信号を保持 確定するための時間 ( セットアップ タイム ) と ( ホールド タイム ) が必要であるため クロックの周波数とデータの入力タイミングに注意しなければならない [1] 22

23 4.2 ディスプレイ制御回路の設計 第 3 章で分割した機能のうち 画面表示を制御するモジュール (LCD_controller) について 解説する 図 4.2 は信号入出力を表したブロック図であり 信号の内容については表 4.1 に 示している clk v_sync T_main reset LCDRD_en DISP_en LCD_controller h_sync DCK DISP RGBdata(9bit) LCD SRAM SD(8bit) LCDRD_en_off T_main A_count(17bit)_N Mem_con 図 4.2 LCD_controller のエンティティ図 表 4.1 LCD_controller の入出力仕様 信号 clk reset LCDRD_en DISP_en SD A_count_N LCDRD_en_off v_sync h_sync DCK DISP LCD_red LCD_green LCD_blue 意味システム内部クロック (30MHz) リセット入力テトリス本体からの画面更新要求テトリス本体からの画面表示 off 要求 SRAM 直結のデータ入力 (8bit) 表示画素アドレスの SRAM 出力 (17bit) テトリス本体への画面更新終了出力 LCD の垂直同期信号 LCD の水平同期信号 LCD の画素同期信号ディスプレイ表示オフ出力赤色画素データ (3bit) 緑色画素データ (3bit) 青色画素データ (3bit) 23

24 内部の動作は テトリス本体の制御信号によるステートマシンと v_sync1 周期分のカウンタで構成される SRAM へのデータアクセスについては SRAM をリード状態にしたままアドレスの値を変更することで 1 フレーム分のデータを連続で読み出す構成としている また LCD へ出力するデータ幅は 9bit であるが SRAM のデータ幅が 8bit であるため青色出力 3bit のうち B1 と B2 に同じ値を出力するようにしている [5] 同期信号用のカウンタ設計 LCD の画面表示は VSYNC HSYNC DCK の 3 つの同期信号により動作しているため それぞれの同期信号用の 3 つのカウンタが必要になる また 表示させる画素を選ぶための SRAM のフレームバッファ対するアドレスカウンタも必要である そのため モジュールの内部に次のような 4 つのカウンタを設計した S_count(2bit) DCK を発振させるためのシステム内部クロックの 2bit カウンタ clk の立ち上がりに同期して1ずつ加算されていき 0~3 の範囲を遷移していく S_count0~1 の間 DCK=0 S_count2~3 の間 DCK=1 という条件付信号代入により DCK を発生させる システムクロックが 30MHz なので DCK は 7.5MHz となる 133.3ns DCK S_count(3bit) System clock(30mhz) 33.3ns 図 4.3 DCK 発振タイミング図 24

25 D_count(10bit) HSYNC 用の DCK カウンタ 563 個のドットクロックをカウントする D_count0~2 の 時のみ HSYNC=0 として HSYNC を発生させる HSYNC DCK 3DCK 48DCK 320DCK 192DCK 562, 0, 1, 2, 3, 50, 51, 370,371 D_count 図 4.4 HSYNC 発生タイミング図 H_count(8bit) VSYNC 用の HSYNC246 進カウンタ DCK カウンタ により HSYNC をインクリメントする 247 カウントで 1 画面の表示終了であるので ここで全てのカウンタを初期化状態にして VSYNC と HSYNC を 1 に固定する VSYNC HSYNC 3H 4H 240H H_count 0, 1, 2,3,4, 5,6, 7, 図 4.5 VSYNC 発生タイミング図 A_count(17bit) 読み込む画素データのアドレスを計算する LCD の画素数が であるため のカウンタを作ればよいが テトリス本体から SRAM にアクセスする時のアドレス計算を簡潔にするため までカウントする 画像データの表示は VSYNC HSYNC の立ち上がりからそれぞれ 4H 48DCK 後となるため 図 のカウンタのタイミング図を参照に D_count=51,H_count=7 からカウントを開始する 25

26 4.2.2 アドレス計算 SRAM のアドレス幅は 19bit であり 0~ 番地までデータを格納することができる 本研究では x 座標に下位 9 ビットを割り当て 上位 10 ビットを y 座標に割り当てて使用する すなわち横方向 512 画素 縦方向 1024 画素のメモリ空間が作成される ( 図 4.6 参照 ) こうすることにより アクセスしたいアドレスの計算は y 座標の値を左に 9 ビットシフトした値とx 座標の値の or をとるだけで アクセスしたいアドレスを生成することができる ( 図 4.7 参照 ) (0.0) (319,0) (511,0) 1 フレーム (0,239) 他画像格納用 その他 (0,1023) (511,1023) 図 4.6 メモリ領域 アクセスしたいアドレス (10,1) x 座標 or y 座標 = アドレスの深さ 10 進数 =522 番地 y x = アドレス図 4.7 アドレス計算例 上記のアドレス計算を満たすため アドレスのカウント (A_count) は x 座標 9bit512 分までカウントしている 深さ (x,y) 0 (0,0) (0,0) (319,9) x 座標 9bit (511,0) 1 2 (1,0) (2,0) 表示領域 y 座標 8bit 表示領域 非表示領域 (320,0) (551,0) (511,0) 非表示領域 512 (0,1) 512*240-1 (511,239) 図 4.8 フレームバッファのアドレス空間 26

27 4.2.3 LCD_controller の状態遷移 LCD_controller の状態遷移図を下に示す 通常 LCD には同期信号をとめた Idle 状態であり 画面には前の画面更新処理で表示された画像が保持されている テトリス本体からの画面更新要求 (LCDRD_en=1) が入ると活性化状態となり 各種カウンタにより同期信号を発生し 1 画面表示処理をおこなう 1 画面の処理が終わるとテトリス本体へ終了信号 (LCDRD_en_off=1) を返し (LCDRD_en=0) の入力により Idle 状態へ遷移する また ユーザーインターフェース部のコントローラーの stop 信号入力により ディスプレイ表示オフ要求 (DISP_en) が入力されると DISP_off 状態へ遷移する テトリスの実行が停止している間 画面の表示がオフになる Idle 待機 DISP_en=1 LCDRD_en=0 not DISP_en=0 DISP_en=0 LCDRD_en=1 not LCDRD_en=0 DISP_off 画面表示 オフ LCD_act 画面描画 実行 図 4.9 LCD コントローラーの状態遷移図 27

28 4.2.4 LCD_controller のシミュレーション結果 VHDL コーディング 論理合成 シミュレーションには ALTERA 社の PLD 総合開発ツール QuartusⅡ WebEdition(v5.1) を使用した LCD_controller のシミュレーション結果を以下に示す なお VHDL コードについては論文末の付録 1 に示している (A) 0~1μs のシミュレーション結果 (B) 0~2ms のシミュレーション結果 図 4.10 LCD_controller のシミュレーション結果 28

29 4.3 SRAM 制御部の設計 SRAM アクセスに関する制御信号の発生 テトリス本体と LCD コントロール部からの SRAM アクセスの際のバス調停を行う回路を設計する この回路の入出力は以下のように なる LCDRD_en CS TR_en OE Tetris TW_en WE SRAM TD(8bit) SD(8bit) TA(19bit) A_count_N(17bit) Clock Reset LCD_controller Memory contoroller SA(19bit) 図 4.11 メモリコントローラーブロック図 表 4.2 メモリコントローラーの入出力仕様 信号 意味 clk システム内部クロック (30MHz) reset リセット入力 LCDRD_en テトリス本体からの画面更新要求 TR_en テトリス本体から SRAM へのデータ要求 TW_en テトリス本体から SRAM への書き込み要求 TD テトリス本体とのデータバス (8bit) TA テトリス本体とのアドレスバス (19bit) A_count_N LCD_cont からのフレームバッファアドレス (17bit) CS チップセレクト ( 非極性 ) OE アウトプットイネーブル ( 非極性 ) WE ライトイネーブル ( 非極性 ) SD SRAM とのデータバス (8bit) SA SRAM とのアドレスバス (19bit) 29

30 4.3.1 SRAM アクセスタイミング SRAM へのアクセスタイミングとして データシートのタイミング定格値を参考に次のようなアクセスサイクルを設計した [8] リードサイクル ライトサイクル共に3ステートでクロックに同期した制御信号の操作を行い 全 4クロックサイクルでの SRAM アクセスとなっている また LCD によるリードサイクルにはアドレスコントロールドリードで行っているため テトリス本体からのリードアクセスとは別のステートにより操作する R0 R1 R2 Idle R0 R1 R2 Idle clk Address 33.3ns taa=~70ns trc=70ns~ CS OE Data out Data Valid 図 4.12(a) テトリス本体からのリードサイクル 30

31 W0 W1 W2 Idle W0 W1 W2 Idle clk Address CS WE Data in Data Valid 図 4.12(b) テトリス本体からのライトサイクル clk DCK Address Data out Data Valid CS OE 図 4.12(c) LCD からのリードサイクル 図 4.12 SRAM アクセスタイミング図 31

32 4.3.2 メモリコントローラーの状態遷移 図 4.12 を参考に状態遷移図でまとめたものが図 4.13 である W0 CS=L WE=L TW_en=1 Idle CS=H OE=H WE=H TR_en=1 R0 CS=L OE=L W1 R1 LCDRD_en=0 LCDRD_en=1 W2 CS=H WE=H LCD_act CS=L OE=L R2 OE=H 図 4.13 メモリーコントローラーの状態遷移図 32

33 4.3.3 Memory_controller のシミュレーション結果 Memory_controller のシミュレーション結果を以下に示す なお VHDL コードについ ては論文末の付録 2 に示している 図 4.14 Memory_controller の単体シミュレーション結果 33

34 4.4 テトリス本体の設計 第 3 章でまとめたテトリスの仕様 大まかなアルゴリズムをもとに HDL で記述できる までに詳細に分析していく テトリスの状態遷移回路第 3 章では処理の内容 順序についてまとめてプログラム構造図 ( 図 3.4) を作成した しかし 逐次実行のソフトウェアプログラムから作成したものであり すべての回路が同時に動作するように記述する HDL でそのまま構成を設計するのは困難である そのため HDL では外部信号によって内部の状態が遷移する 状態遷移回路によって構成を考えていく 本状態遷移回路は 以下のような 11 種類の状態とする 状態遷移図を図 4.15 に示す 1 Init 各信号 レジスタの値を初期化する 2 Idle ゲーム開始の待機状態 画面表示はオフになっている 3 Run ゲーム実行状態 各種入力信号により複数のステートに分岐する 4 R_shift Right_key の入力により ブロックを右に移動させる 5 L_shift Left_key の入力により ブロックを左に移動させる 6 Rot Turn_key の入力により ブロックを回転させる 7 Drop Down_key 入力 もしくは一定時間経過により ブロックを下移動する 8 Check_L ブロックが横一列揃ったラインがないか調査する 9 Delet_L 横一列揃ったラインを消去し 上のブロックを 1 段ずらす 10 Create_B 新しいブロックを作成し 画面初期位置へ配置する 11 End ゲームオーバー画面を表示し 初期化の実行を待つ 各状態の詳しい処理については 節より順番に解説していく 34

35 1 Init start_key 初期化 初期化完了 11 2 End Idle 再開待機 実行待機 3 start_key ブロック配置 error ブロック Run 実行状態 ゲーム準備中サイクルゲーム実行中サイクル 10 Create_B 配置完了 Right_key 4 ブロック生成 Left_key R_shift 右移動 消去列なし 移動完了 5 8 Check_L line 調査 消去列消去完了発見 移動 error 時間経過 or Down_key 7 Turn_key 6 Rot 回転 L_shift 左移動 9 Delete_L Drop line 消去 下移動 図 4.15 テトリスの状態遷移図 35

36 4.4.2 データ構造 各状態についての解説の前に まず テトリスの画像データの扱い方について解説する ゲーム画面の構成を図 4.16 ブロックの構成について図 4.17 に示す 画面構成ゲーム画面は LCD を時計周りに 90 回転させた配置であるから ブロックの落下方向は x 座標系で考える事になる すなわち ブロックの下移動 =x 加算 右移動 =yの減算 左移動 =yの加算 という具合になる また ブロックの移動範囲は (40,100)~(279,199) の格子内とする ゲーム画面の右上は 次に出現するブロックを表示する ( 図 4.16 参照 ) x 座標 320 dot (0,0) (319,0) y 座標 240 dot (40,100) (279,100) (40,199) (279,199) (0,239) (319,239) 図 4.16 ゲーム画面の構成 36

37 ブロックデータの構成ブロックの取り扱いに関しては 図 4.17 左上のように ドットを 1 セルとし このセルを 4 つ組み合わせたものとして考える 各セルごとにそれぞれ位置情報を示すアドレスを持ち ブロックの移動 回転はこのセル単位ごとに管理する ブロックデータをフレームバッファに書き込む際も 1 セル分の処理を 4 回繰り返すことによりデータを書き込んでいく また ブロックには 7 つの種類があり さらにそれぞれ対応する回転後のデータがあるため ブロックの種類ごとに 7 つの識別子を用意する この識別子は ブロックの回転動作だけでなくブロックの色分けの判定にも使用する 1 8 ドット 1 (0,0) (10,0) 1 セル (0,10) (10,10) 保持する 座標 灰データ 黄データ 白データ 画素構成 図 4.17 ブロックの構成 37

38 4.4.3 アルゴリズム詳細 図 4.15 に示した状態遷移をもとに 各状態での処理内容について順に解説していく 1 Init 回路起動時 リセット信号入力時 または End 状態から start 入力があった時に実行する回路初期化状態 リセット信号のトグルにより各内部信号の値を初期化し SRAM のフレームバッファに対し初期画面データを書き込む 各レジスタに初期値を与え初期ブロックの作成が終わると 次の Idle 状態へと遷移する 2 Idle Init による初期化の終了 もしくは Run 状態から start 入力があった時の状態 LCD に対して画面表示オフ信号 (DISP_en) を出力する以外には特に何も処理をしない start 入力が入るまでゲームの実行を待機する 3 Run ゲーム実行中のメインとなる状態 start 入力でゲーム一時停止状態へ 各ブロック操作キー入力 および一定時間経過で それぞれ 4~7のブロック制御状態へ遷移する なお 時間経過による状態遷移にはカウンタを用いるが 時間のカウントは Run 状態時だけでなく移動 回転処理状態にもカウントしていくことにする こうすることで 移動信号を入力し続けることによるブロックの落下停止を防ぐことができる 各状態への遷移の制御と時間のカウントを許可するだけで メインとはいえ特に複雑な処理はしない 4 R_shift Run 状態から Right_key の入力により ブロックを 1 セル右方向へ移動させる すなわち レジスタに保持してある 4 つのアドレスに対し y 座標 -10の演算を行う 否背景色 ブロック消去 座標更新 画素検査 座標戻し 背景色 しかし 移動後の位置に壁や他のブロックがあった場合 移動を中止しなければならない そのため 右図 4.14 に示すような流れで処理を行う ブロック書き込み LCD 出力 図 4.18 ブロック移動処理の流れ 38

39 まず 制御中ブロックに対して重なり判定が起こらないように R_shift に状態遷移した時点で保持している 4 つのセルアドレスを参照して ブロックを消去する そして 4 つのアドレスに対しy 座標 +10 の演算を行う 演算後のアドレスが移動後のブロックの座標になるので SRAM からこの 4 つのアドレスの画素データをリードしてくる その画素データが 4 つとも背景データ ( 黒 ) だった場合 移動先にブロックはないと判断できるので このアドレスに対し画像データを書き込み LCD への出力を実行する 4 つの内どれか 1 つでも背景以外のデータが検出された場合 制御中ブロックと他のブロック 壁との重なりがおきてしまうので 4 つのアドレスに対しy 座標 -10 の演算を行い もとの座標にもどす その後 再びブロック画像データを書き込み Run 状態へと遷移する 5 L_shift R_shift と移動方向が逆なだけで処理の内容は同じであるので セルアドレス y 座標に対 する演算を +- 逆転させるだけでよい 6 Rot Run 状態から turn_key の入力により ブロックの回転を実行する 処理の流れは図 4.14 とほぼ同じであるが R/L_shift より座標の更新が少しだけ複雑になる A B C A B D C D block No=1 address register A (0,0) + (50,150) (50,150) B (10,0) + (50,150) (60,150) C (20,0) + (50,150) (70,150) D (0,10) + (50,150) (50,160) 回転前アドレス if (block No=1) then address register A (50,150) + (0,0) (50,150) B (60,150) + (0,0) (60,150) C (70,150) + (-10,10) (60,160) D (50,160) + (10,10) (60,170) 回転後アドレス 回転動作の座標の計算方法について 左のようなブロックを例に説明する 前節で解説したとおり 制御中のブロックに対し 4 つのアドレスを各セルごとに持っている ブロックのAセルの位置座標が (50,150) の時 それを基準に各セルのアドレスが計算される 各セルの位置はブロックの種類により異なっているため 全 19 種のブロック識別子を参照に計算を行う 移動処理ではこのアドレスに対し同じ数値の加算になるが 回転動作ではセルごとの位置が変更されるため もう一度ブロック識別子を参照してブロックごとの演算を行う その後 移動処理と同じように重なり判定を行い ブロックのデータを書き込んでいく 39

40 7 Drop Run 状態から Down_key 入力 もしくはゲーム実行サイクルにおける時間 ( テトリス用のクロック ) のカウントが一定数になった時 ブロックを下方向へ移動させる これもアドレスのx 軸に対する加算になるだけで あとの処理は R_shift と同じ流れである ただし ブロックの移動エラーが起きた場合 座標を移動前に戻してブロックの再描画を行った後 Run 状態ではなく Check_L 状態へと遷移する 8 Check_L この状態へ遷移したときに保持している 4 つのアドレスの x 座標に消える可能性のあるラインが含まれているので x 座標アドレスを別のレジスタへ格納しておき このアドレスをもとにそれぞれ 1~4 のラインに対し消去判定を行う 消去ラインの判定にはカウンタを用いる ゲームフィールド内のセルの y 軸に取りうる値の範囲は (100,110,120,130,140,150,160,170,180,190) だけであるので この y 座標と上記で格納したx 座標のアドレスをもとに SRAM からそれぞれ画素データをリードしてくる このときの画素データが背景色データでない時 ( ブロックのセルデータが存在する場合 ) 消去カウンタをカウントアップし カウンタの値が 10 の時 Delete_L へと遷移する 格納したx 座標の走査が終わると Create_B へと遷移する y 走査対象アドレスの保持 x y=100 否背景色 画素検査 ( 保持 x,y) A B count+1 C D 背景色 y+10 (A or B,C,D) の 3 つの x 座標で ライン検査 y=190 count=10 y,count 値 y=190 count 10 else Delete_L へ 次のライン or Create_B へ 図 4.19 消去判定フロー 40

41 9 Delete_L 消去判定がでたラインに対して消去を行う まず Check_L で消去判定がでたx 座標より上のフィールドデータを SRAM の空き領域へコピーする そして コピーしたデータを 1 段ずらしたところに上書きしていき 最後にゲームフィールド最上段を消去する 消去判定と消去処理は 1 ラインずつおこなうため Check_L で格納したx 座標アドレスを 1 セル分ずらして 再び Check_L へ遷移する 10 Create_B 1 度目の実行でも すでに Init で次に生成されるブロックは決定されてるため 次の次のブロックを乱数により決定する その後 ブロックの位置を示す 4 つのセルアドレスを次のブロックを表示する領域に書き換え 次の次に生成されるブロックを書き込む そして ブロックのアドレスを初期位置へもどし 初期配置位置の画素を検査して重なりがないか調べる 初期位置に他のブロックがないことが確認できれば 新しいブロックをフレームバッファに書き込む ここまでで一連の処理が終わり 再び Run 状態へ遷移する もし 初期配置位置で重なり判定が起きた場合 Game over となり End 状態へ遷移する 11 End Game over を知らせるメッセージを表示して start_key によるゲーム初期化の実行を待つ 41

42 4.4.4 テトリス内部のモジュール構成図 4.15 の状態遷移図をもとに テトリス本体のモジュール構成を以下のようにした コンポーネントによっては さらに下位レベルのステートマシン サブコンポーネントにより構成され 階層化したステートマシンによってテトリスの動作を実現する clk T_clk reset start turn down Left Right メイン FSM アドレス REG 画素 ROM Create Delete Tetris Control address Block Block Initialize Block BUS FSM FSM FSM FSM Data BUS DISP_en LCDRD_en TR_en TW_en TA TD 図 4.20 テトリス本体の機能ブロック図 42

43 おわりに 本研究の目標としては 回路を実装して動作確認をするところまでであったが 結局回路の構造や処理をまとめるだけで終わってしまった 処理の順序がわかってもゲート回路で信号がどのタイミングでどのように伝盤していくのか といったソフトウェアとハードウェアの動作の違いがなかなか呑み込めなかった しかし そのまま強引に下位レベルの設計へと進めようとしてしまったために 後の段階で回路の整合性がとれなくなってしまうなど 無駄が多かったように思える HDL により抽象的な段階からロジック回路を生成できるとはいえ トップレベルから具体的な機能ブロックとロジック回路を作っていくには 基礎的な知識が十分に必要であると感じた 全工程の半分程しか進められなかったが あきらめずできるとこまで取り組んだことによって知識や解析力が身についただけでなく ハードウェアの設計に関する興味も強くなった ゲームの設計には様々な要素が含まれるので 論理設計の学習に非常に有効であると思う 今後 完成させる事はもちろん アルゴリズムの最適化や回路規模の小型化 ゲーム性の向上など 時間があれば考えていきたい 43

44 謝辞 今回の卒業研究に際して 丁寧なご助言 ご鞭撻下さりました橘昌良助教授に心から感謝いたします 就職活動や大学生活についてご指導下さいました杉田彰久教育講師はじめ 本学入学以来ご教授賜りました電子 光システム工学科の教員 職員の皆様と共に ここに厚くお礼申し上げます また 共に最後まで卒業研究に励んだ橘研究室の皆さん 同期生諸氏にお礼を申し上げます 平成 18 年 2 月 20 日 44

45 参考文献 [1] VHDL によるマイクロプロセッサ設計入門 仲野巧著 CQ 出版 [2] VHDL によるハードウェア設計 長谷川裕恭著 CQ 出版 [3] 構造化プログラム設計図法 SPD 遠藤裕香著 共立出版 [4] Design Wave magazine 2002 年 5 月号 CQ 出版 [5] Design Wave magazine 2003 年 1 月号 CQ 出版 [6] Design Wave magazine 2005 年 4 月号 CQ 出版 [7] 5.5 インチ LCD LM32C041 仕様書 [8] CMOS SRAM K6T4008C1B Family 仕様書 [9] ゲーム & その他 プログラミング研究所 [10] テトリス - Wikipedia 45

46 付録 1 LCD_controller の VHDL 記述 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity LCD_controller is port ( ); clk : in std_logic; reset : in std_logic; LCDRD_en : in std_logic; DISP_en : in std_logic; SD : in std_logic_vector(7 downto 0); A_count_N : out std_logic_vector(16 downto 0); LCDRD_en_off : out std_logic; v_sync : out std_logic; h_sync : out std_logic; DCK : out std_logic; DISP : out std_logic; LCD_red : out std_logic_vector(3 downto 1); LCD_green : out std_logic_vector(3 downto 1); LCD_blue : out std_logic_vector(3 downto 1) end LCD_controller; architecture Behavior of LCD_controller is type LCDstatus is ( idle, DISP_off, LCD_act); signal state : LCDstatus; -- LCD Sequencer state signal DCK_I : std_logic; -- Internal dot clock -- clock counter signal S_count : std_logic_vector(1 downto 0); -- system clock count(0 to 3) signal A_count : std_logic_vector(16 downto 0); --address count(0 to 512*240-1) 46

47 signal D_count : std_logic_vector(9 downto 0); -- DCK count(0 to 562) signal H_count : std_logic_vector(7 downto 0); -- HSYNC count(0 to 246) begin -- LCD data out LCD_red <= SD(7 downto 5); LCD_green <= SD(4 downto 2); LCD_blue <= SD(1 downto 0) & SD(0); -- LCD state machine process(clk,reset) begin if( reset = '1' ) then state <= idle; DISP <= '1'; elsif( CLK'event and CLK = '1') then case state is when idle => if ( LCDRD_en = '1' ) then state <= LCD_act; elsif ( DISP_en = '1' ) then state <= DISP_off; DISP <= '0'; end if; when LCD_act => if ( LCDRD_en = '0' ) then state <= idle; end if; when DISP_off => if ( DISP_en = '0' ) then state <= idle; DISP <= '1'; end if; when others => 47

48 end process; end if; end case; null; -- state LCD_active ====================================== -- DCK generation,s_count(0~3) process(clk, reset, LCDRD_en) begin if( reset = '1' or LCDRD_en = '0') then S_count <= (others => '0'); elsif( clk'event and clk='1' ) then if( state = LCD_act ) then if( S_count = 3 ) then S_count <= (others => '0'); else S_count <= S_count + 1; end if; end if; end if; end process; DCK_I <= S_count(1); DCK <= DCK_I; -- H_COUNT(0~246),D_COUNT(0~562),A_COUNT(0~512*240-1) ---- process(dck_i, reset, LCDRD_en) begin if( reset = '1' or LCDRD_en = '0') then D_count <= (others => '0'); H_count <= (others => '0'); A_count <= (others => '0'); LCDRD_en_off <= '0'; elsif( DCK_I'event and DCK_I = '1' ) then if( state = LCD_act ) then if ( D_count = 562 ) then 48

49 end process; end if; end if; D_count <= (others => '0'); H_count <= H_count + 1; else D_count <= D_count + 1; end if; if ( A_count = ) then -- (512* ) LCDRD_en_off <= '1'; elsif ( H_count >= 7 and D_count >= 51 ) then A_count <= A_count + 1; end if; A_count_N <= A_count; -- HSYNC,VSYNC generation process (DCK_I, reset, LCDRD_en) begin if( reset = '1' or LCDRD_en = '0') then h_sync <= '1'; v_sync <= '1'; elsif( DCK_I'event and DCK_I ='1' ) then if( state = LCD_act ) then if ( D_count >= 0 and D_count < 3) then h_sync <= '0'; else h_sync <= '1'; end if; if ( H_count >= 0 and H_count < 3) then v_sync <= '0'; else v_sync <= '1'; end if; end if; end if; 49

50 end process; end Behavior; 50

51 付録 2 Memory_controller の VHDL 記述 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Memory_controller is port ( clk : in std_logic; reset : in std_logic; LCDRD_en : in std_logic; TR_en : in std_logic; TW_en : in std_logic; TD : inout std_logic_vector(7 downto 0); TA : in std_logic_vector(18 downto 0); A_count_N : in std_logic_vector(16 downto 0); CS : out std_logic; WE : out std_logic; OE : out std_logic; SD : inout std_logic_vector(7 downto 0); SA : out std_logic_vector(18 downto 0) ); end Memory_controller; architecture Behavior of Memory_controller is type MEMstatus is ( idle, R0, R1,R2, W0, W1, W2, LCD_act); signal state : MEMstatus; -- SRAM Sequencer state signal TD_OE_I : boolean; -- Tetris data bus output enable signal SD_OE_I : boolean; -- SRAM data bus output enable begin 51

52 -- tri state logic TD <= SD when TD_OE_I else (others => 'Z'); SD <= TD when SD_OE_I else (others => 'Z'); -- Mem_con state machine process(clk,reset) begin if( reset = '1' ) then state <= idle; CS <= '1'; OE <= '1'; WE <= '1'; TD_OE_I <= false; SD_OE_I <= false; elsif( CLK'event and CLK = '1') then case state is when idle => if ( LCDRD_en = '1' ) then state <= LCD_act; CS <= '0'; OE <= '0'; WE <= '1'; elsif ( TW_en = '1' ) then state <= W0; CS <= '0'; OE <= '1'; WE <= '0'; elsif ( TR_en = '1' ) then state <= R0; CS <= '0'; OE <= '0'; WE <= '1'; end if; -- LCD active when LCD_act => if (LCDRD_en = '0') then 52

53 end process; end if; state <= idle; CS <= '1'; OE <= '1'; end if; -- Read cicle when R0 => state <= R1; when R1 => state <= R2; OE <= '1'; TD_OE_I <= true; when R2 => state <= idle; CS <= '1'; TD_OE_I <= false; -- Wright cicle when W0 => state <= W1; SD_OE_I <= true; when W1 => state <= W2; CS <= '1'; WE <= '1'; when W2 => state <= idle; SD_OE_I <= false; when others => null; end case; process(a_count_n,lcdrd_en,ta) begin if (LCDRD_en = '1') then SA <= ("00") & A_count_N(16 downto 0); 53

54 end process; else end if; SA <= TA; end Behavior; 54

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用] 2007.11.12 集積回路工学 Matsuzawa Lab 1 集積回路工学 東京工業大学 大学院理工学研究科 電子物理工学専攻 2007.11.12 集積回路工学 Matsuzawa Lab 2 1. 1. ハードウェア記述言語 (VHDL で回路を設計 ) HDL 設計の手順や基本用語を学ぶ RTL とは? Register Transfer Level レジスタ間の転送関係を表現したレベル慣例的に以下のことを行う

More information

Microsoft PowerPoint LC_15.ppt

Microsoft PowerPoint LC_15.ppt ( 第 15 回 ) 鹿間信介摂南大学理工学部電気電子工学科 特別講義 : 言語を使った設計 (2) 2.1 HDL 設計入門 2.2 FPGA ボードの設計デモ配布資料 VHDL の言語構造と基本文法 2.1 HDL 設計入門 EDAツール : メンター社製品が有名 FPGAベンダーのSW 1 1 仕様設計 にも簡易機能あり 2 3 2 HDLコード記述 3 論理シミュレーション 4 4 論理合成

More information

Microsoft Word - 実験4_FPGA実験2_2015

Microsoft Word - 実験4_FPGA実験2_2015 FPGA の実験 Ⅱ 1. 目的 (1)FPGA を用いて組合せ回路や順序回路を設計する方法を理解する (2) スイッチや表示器の動作を理解し 入出力信号を正しく扱う 2. スケジュール項目 FPGAの実験 Ⅱ( その1) FPGAの実験 Ⅱ( その2) FPGAの実験 Ⅱ( その3) FPGAの実験 Ⅱ( その4) FPGAの実験 Ⅱ( その5) FPGAの実験 Ⅱ( その6) FPGAの実験 Ⅱ(

More information

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

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ 第 4 回 VHDL 演習 2 プロセス文とステートマシン プロセス文を用いるステートマシンの記述について学ぶ 回路 6 バイナリカウンタ (Fig.4-1) バイナリカウンタを設計し, クロック信号に同期して動作する同期式回路の動作を学ぶ ⅰ) リスト 4-1 のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のディップスイッチを用いて, 発生するクロック周波数を 1Hz

More information

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor VHDL を使った PLD 設計のすすめ PLD 利用のメリット 小型化 高集積化 回路の修正が容易 VHDL 設計のメリット 汎用の設計になる ( どこのデバイスにも搭載可能 ) 1/16 2001/7/13 大久保弘崇 http://www.aichi-pu.ac.jp/ist/~ohkubo/ 2/16 設計の再利用が促進 MIL 記号の D での設計との比較 Verilog-HDL などでも別に同じ

More information

if clear = 1 then Q <= " "; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst =

if clear = 1 then Q <=  ; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst = VHDL 2 1 VHDL 1 VHDL FPGA VHDL 2 HDL VHDL 2.1 D 1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; regs.vhdl entity regs is clk, rst : in std_logic; clear : in std_logic; we

More information

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

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな 第 回 VHDL 演習組み合せ論理回路 VHDL に関する演習を行う 今回は, 組み合せ論理回路の記述について学ぶ - 論理回路の VHDL 記述の基本 同時処理文を並べることで記述できる 部品の接続関係を記述 順番は関係ない process 文の内部では, 順次処理文を使う process 文 つで, つの同時処理文になる順次処理文は, 回路の動作を 逐次処理的 に ( 手続き処理型プログラム言語のように

More information

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

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE 差し替え版 第 7 回マイクロプロセッサの VHDL 記述 マイクロプロセッサ全体および主要な内部ユニットの,VHDL 記述の例を示す. 1)MPU(Micro Processor Uit) Module 1MPU のエンティティ記述とコントローラの例以下は, 簡単な MPU の VHDL 記述の例である ただし, アーキテクチャ部分は, 命令読み込みと実行の状態遷移のみを実現したステートマシンである

More information

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN 第 8 回中間試験前の演習 問.VHDL ソースコードを読む () 次の VHDL のソースコードが記述しているゲート回路の回路図を示せ. use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Logic is port ( A : in std_logic_vector(3

More information

-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

-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 第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道

More information

1 1 2 2 2-1 2 2-2 4 2-3 11 2-4 12 2-5 14 3 16 3-1 16 3-2 18 3-3 22 4 35 4-1 VHDL 35 4-2 VHDL 37 4-3 VHDL 37 4-3-1 37 4-3-2 42 i

1 1 2 2 2-1 2 2-2 4 2-3 11 2-4 12 2-5 14 3 16 3-1 16 3-2 18 3-3 22 4 35 4-1 VHDL 35 4-2 VHDL 37 4-3 VHDL 37 4-3-1 37 4-3-2 42 i 1030195 15 2 10 1 1 2 2 2-1 2 2-2 4 2-3 11 2-4 12 2-5 14 3 16 3-1 16 3-2 18 3-3 22 4 35 4-1 VHDL 35 4-2 VHDL 37 4-3 VHDL 37 4-3-1 37 4-3-2 42 i 4-3-3 47 5 52 53 54 55 ii 1 VHDL IC VHDL 5 2 3 IC 4 5 1 2

More information

Microsoft PowerPoint - 3.3タイミング制御.pptx

Microsoft PowerPoint - 3.3タイミング制御.pptx 3.3 タイミング制御 ハザードの回避 同期式回路と非同期式回路 1. 同期式回路 : 回路全体で共通なクロックに合わせてデータの受け渡しをする 通信における例 :I 2 C(1 対 N 通信 ) 2. 非同期式回路 : 同一のクロックを使用せず データを受け渡す回路間の制御信号を用いてデータの受け渡しをす 通信における例 :UART(1 対 1 通信 ) 2 3.3.1 ハザード 3 1 出力回路のハザード

More information

VHDL

VHDL VHDL 1030192 15 2 10 1 1 2 2 2.1 2 2.2 5 2.3 11 2.3.1 12 2.3.2 12 2.4 12 2.4.1 12 2.4.2 13 2.5 13 2.5.1 13 2.5.2 14 2.6 15 2.6.1 15 2.6.2 16 3 IC 17 3.1 IC 17 3.2 T T L 17 3.3 C M O S 20 3.4 21 i 3.5 21

More information

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

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?

More information

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

VelilogHDL 回路を「言語」で記述する 2. ソースを書く 数値表現 数値表現形式 : ss'fnn...n ss は, 定数のビット幅を 10 進数で表します f は, 基数を表します b が 2 進,o が 8 進,d が 10 進,h が 16 進 nn...n は, 定数値を表します 各基数で許される値を書くこ Verilog ビット幅 基数 2 進表現 1'b0 1 2 進 0 4'b0100 4 2 進 0100 4'd4 4

More information

untitled

untitled FPGA を使用した CMOS カメラ ディスプレイ回路の製作 小野雅晃 筑波大学 システム情報工学等支援室装置開発班 概要 CMOS カメラから出力されたデータを使用して ディスプレイに表示する回路を FPGA (Feild Programmable Gate Array) で作成した CMOS カメラから出力された YUV422 データのうちの Y ( 輝度 ) データを FPGA に取り込んで

More information

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続 CMOS リニアイメージセンサ用駆動回路 C13015-01 CMOS リニアイメージセンサ S11639-01 等用 C13015-01は当社製 CMOSリニアイメージセンサ S11639-01 等用に開発された駆動回路です USB 2.0インターフェースを用いて C13015-01と PCを接続することにより PCからC13015-01 を制御して センサのアナログビデオ信号を 16-bitデジタル出力に変換した数値データを

More information

スライド 1

スライド 1 1 1. 2 2. 3 isplever 4 5 6 7 8 9 VHDL 10 VHDL 4 Decode cnt = "1010" High Low DOUT CLK 25MHz 50MHz clk_inst Cnt[3:0] RST 2 4 1010 11 library ieee; library xp; use xp.components.all; use ieee.std_logic_1164.all;

More information

TECH_I Vol.25 改訂新版PCIデバイス設計入門

TECH_I Vol.25 改訂新版PCIデバイス設計入門 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity n is port( ); end entity n; architecture RTL of nis begin when : process begin end process :process begin end process

More information

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

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは? アルテラ FPGA 向け PLL リコンフィグの応用回路 1. PLL リコンフィグとは アルテラ FPGA は PLL 機能を内蔵しています PLL を利用して基本周波数を逓倍 分周したクロックを利用することができます 通常 FPGA 開発ツール Quartus2( 以下 Q2) の MegaWizard プラグインマネージャを利用して PLL を設定し 希望のクロック周波数を得ることができます

More information

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D> 今さら聞けない高位合成 ~ 一から学ぶ高位合成 ~ シャープ株式会社電子デバイス事業本部副参事山田晃久 1 ハードウェア設計と抽象度 要求仕様 動作仕様設計制約 ( コスト 性能 消費電力 ) システムの実現方式を決定システム設計 ( 動作レベル設計 ) ( アーキテクチャ アルゴリズム ) システム分割 (HW/SW) 機能ブロック RTL 記述 機能設計 (RTL 設計 ) 論理合成 ハードウェアの処理を設計

More information

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」 計数工学実験 / システム情報工学実験第一 ディジタル回路の基礎 ( 全 3 回 ) システム 8 研 三輪忍 参考資料 五島正裕 : ディジタル回路 ( 科目コード 400060) 講義資料 ( ググれば出てくる ) 高木直史 : 論理回路, 昭晃堂 Altera: Cyclone II FPGA スターター開発ボードリファレンス マニュアル Altera: Introduction to Quartus

More information

フリップフロップ

フリップフロップ 第 3 章フリップ フロップ 大阪大学大学院情報科学研究科 今井正治 imai@ist.osaka-u.ac.jp http://www-ise1.ist.osaka-u.ac.jp/~imai/ 2005/10/17 2006, Masaharu Imai 1 講義内容 フリップ フロップの基本原理 RS フリップ フロップ D ラッチ D フリップ フロップ JK フリップ フロップ T フリップ

More information

論理設計の基礎

論理設計の基礎 . ( ) IC (Programmable Logic Device, PLD) VHDL 2. IC PLD 2.. PLD PLD PLD SIC PLD PLD CPLD(Complex PLD) FPG(Field Programmable Gate rray) 2.2. PLD PLD PLD I/O I/O : PLD D PLD Cp D / Q 3. VHDL 3.. HDL (Hardware

More information

計算機アーキテクチャ

計算機アーキテクチャ 計算機アーキテクチャ 第 11 回命令実行の流れ 2014 年 6 月 20 日 電気情報工学科 田島孝治 1 授業スケジュール ( 前期 ) 2 回日付タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ

More information

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O) ALTIMA Corp. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) ver.1.0 2010 年 8 月 ELSENA,Inc. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) 目次 1. はじめに... 3 2. PIO 概要... 3 2-1. PIO 概要... 3 2-2. PIO

More information

TULを用いたVisual ScalerとTDCの開発

TULを用いたVisual ScalerとTDCの開発 TUL を用いた Visual Scaler と TDC の開発 2009/3/23 原子核物理 4 年 永尾翔 目次 目的と内容 開発環境 J-Lab におけるハイパー核分光 Visual Scaler TDC まとめ & 今後 目的と内容 目的 TUL, QuartusⅡ を用いて実験におけるトリガーを組めるようになる Digital Logic を組んでみる 内容 特徴 TUL,QuartusⅡ

More information

Microsoft PowerPoint - diip ppt

Microsoft PowerPoint - diip ppt 2006 年度デザイン情報学科情報処理 III 第 12 回マウスによる制御 ブロック崩し の部品 ボール直径 10pixel の円ラケット横 60pixel 縦 10pixel, マウスにより左右に移動ブロック横 50pixel 縦 20pixel,28 個 (7 個 4 段 ) 壁 ( フィールド ) 横 400pixel 縦 600pixel 2006 年度デザイン情報学科情報処理 III 2

More information

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

ソフトウェア基礎技術研修 算術論理演算ユニットの設計 ( 教科書 4.5 節 ) yi = fi (x, x2, x3,..., xm) (for i n) 基本的な組合せ論理回路 : インバータ,AND ゲート,OR ゲート, y n 組合せ論理回路 ( 復習 ) 組合せ論理回路 : 出力値が入力値のみの関数となっている論理回路. 論理関数 f: {, } m {, } n を実現.( フィードバック ループや記憶回路を含まない

More information

(Microsoft Word - \214\264\215e B_\217\221\202\253\215\236\202\335\225\224.docx)

(Microsoft Word - \214\264\215e B_\217\221\202\253\215\236\202\335\225\224.docx) トランジスタ技術 2009 年 3 月号特集気軽にはじめる FPGA 第 5 章マルチチャネル信号発生器信号発生器の製作 ~はんだ付け不要ロジックの自在さを生かす~ ISE WebPACK を使って FPGA にソースを書き込むまでの手順 坂本三直 プロジェクトプロジェクトの新規生成 / 読み込み : CQ 出版社の HP より本スタータキット用のプロジェクトをダウンロードしてください. パソコン上にコピーできたら,Xilinx

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介安全機能 ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ 安全機能の概要 フラッシュ メモリ CRC 演算機能 RAM パリティ エラー検出機能 データの保護機能 RAM ガード機能 SFR ガード機能 不正メモリ アクセス機能 周辺機能を使用した安全機能 周波数検出機能 A/D

More information

DDR2 SDRAM をフレームバッファに使用した CMOS カメラ表示回路の実装

DDR2 SDRAM をフレームバッファに使用した CMOS カメラ表示回路の実装 DD2 SDAM をフレームバッファに使用した CMOS カメラ表示回路の実装 小野雅晃筑波大学システム情報工学等技術室 305-8573 茨城県つくば市天王台 1-1-1 概要 CMOS (Complementary Metal Oxide Semiconductor) カメラの撮影画像を XA (extended raphics Array) サイズのディスプレイに表示する回路を Xilinx

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 電気 電子計測 第 3 回 第 8 章ディジタル計測制御システムの基礎 http://cobayasi.com/keisoku/3th/3th.pdf 今日の学習の要点 ( テキスト P85~P94). 計算機の基本的なしくみを学ぼう 2. 外部機器とのデータのやりとりについて知ろう 3. 計算機によるディジタル計測制御システムの構成法 物理量. 計算機の基本的なしくみを学ぼう ディジタル計測制御システムセンサから得た情報を

More information

Verilog HDL による回路設計記述

Verilog HDL による回路設計記述 Verilog HDL 3 2019 4 1 / 24 ( ) (RTL) (HDL) RTL HDL アルゴリズム 動作合成 論理合成 論理回路 配置 配線 ハードウェア記述言語 シミュレーション レイアウト 2 / 24 HDL VHDL: IEEE Std 1076-1987 Ada IEEE Std 1164-1991 Verilog HDL: 1984 IEEE Std 1364-1995

More information

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル 413180100 19.4 システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M21/M22/M23/M24/M25 テクニカルマニュアル 413556900 21.4 システムリセットコントローラ

More information

VLSI工学

VLSI工学 25/1/18 計算機論理設計 A.Matsuzawa 1 計算機論理設計 (A) (Computer Logic Design (A)) 東京工業大学大学院理工学研究科電子物理工学専攻 松澤昭 3. フリップフロップ回路とその応用 25/1/18 計算機論理設計 A.Matsuzawa 2 25/1/18 計算機論理設計 A.Matsuzawa 3 注意 この教科書では記憶回路を全てフリップフロップと説明している

More information

Unconventional HDL Programming ( version) 1

Unconventional HDL Programming ( version) 1 Unconventional HDL Programming (20090425 version) 1 1 Introduction HDL HDL Hadware Description Language printf printf (C ) HDL 1 HDL HDL HDL HDL HDL HDL 1 2 2 2.1 VHDL 1 library ieee; 2 use ieee.std_logic_1164.all;

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション マイコンプログラミング演習 I 第 04-05 回 LEDを用いたI/O 制御担当 : 植村 実験の目的 本実験ではマイコンシステムを用いた信号の入出力の制御方法を理解することを目的とし, マイコンのアーキテクチャを理解 実装するとともに, アセンブラによるプログラミング技術の習得を行う. 回路の構成として,PIC16F84A を用いてスイッチを入力とする LED の点灯 / 消灯の出力操作を行う回路ならびにアセンブラプログラムを実装する.

More information

三菱電機マイコン機器ソフトウエア株式会社

三菱電機マイコン機器ソフトウエア株式会社 MU500-RX サンプル回路仕様書 三菱電機マイコン機器ソフトウエア株式会社 2012-5-9 1 概要 1.1 目的本仕様書は MU500-RX と MU500-RK で実現する 1 秒カウンタの仕様について記述するものである マイコンで 1 秒を生成し 表示は 7 セグメント LED を用いる また 開始 / 停止は Push-SW を使う 1.2 関連文書 MU500-RX

More information

Microsoft Word - VBA基礎(3).docx

Microsoft Word - VBA基礎(3).docx 上に中和滴定のフローチャートを示しました この中で溶液の色を判断する部分があります このような判断はプログラムではどのように行うのでしょうか 判断に使う命令は IF 文を使います IF は英語で もし何々なら という意味になります 条件判断条件判断には次の命令を使います If 条件式 1 Then ElseIf 条件式 2 Then ElseIf 条件式 3 Then 実行文群 1 実行文群 2 実行文群

More information

デジタル回路入門

デジタル回路入門 Open-It FPGA トレーニングコース ( 初級編 ) 第 9 版 2. 組み合わせ回路入門 2.2. 実習 Verilog-HDL 記述 2013 年 5 月 10 日修正 デジタル回路の構成要素 O=A&B; O=~I; INV O=A B; 全てのデジタル回路はこの 4 つの要素 ( 回路 ) のみで構成されている 4 要素の HDL 記述を知っていれば最低限の知識としては十分 2 HDL:

More information

FPGA と LUPO その1

FPGA と LUPO その1 FPGA Lecture for LUPO and GTO Vol. 1 2010, 31 August (revised 2013, 19 November) H. Baba Contents FPGA の概要 LUPO の基本的な使い方 New Project Read and Write 基本的な Behavioral VHDL simulation Firmware のダウンロード FPGA

More information

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン 蓄積時間の可変機能付き 高精度駆動回路 は 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です センサの駆動に必要な各種タイミング信号を供給し センサからのアナログビデオ信号 を低ノイズで信号処理します 2 種類の外部制御信号 ( スタート クロック ) と 2 種類の電源 (±15 )

More information

スライド 1

スライド 1 RX62N 周辺機能紹介 TMR 8 ビットタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ TMR の概要 プログラムサンプル (1) パルス出力機能 (8 ビットモード ) プログラムサンプル (2) インターバルタイマ機能 (16 ビット コンペアマッチカウントモード ) プログラムサンプルのカスタマイズ

More information

Microsoft PowerPoint - 01_Vengineer.ppt

Microsoft PowerPoint - 01_Vengineer.ppt Software Driven Verification テストプログラムは C 言語で! SystemVerilog DPI-C を使えば こんなに便利に! 2011 年 9 月 30 日 コントローラ開発本部コントローラプラットフォーム第五開発部 宮下晴信 この資料で使用するシステム名 製品名等は一般にメーカーや 団体の登録商標などになっているものもあります なお この資料の中では トレードマーク

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果

More information

<91E63589F161>

<91E63589F161> ハードウェア実験 組み込みシステム入門第 5 回 2010 年 10 月 21 日 順序論理回路の実験 前回予告した今回の内容 次回も IC トレーナを使って 順序論理回路についての実験を行います 内部に 状態 を持つ場合の動作記述について 理解します 個々の IC を接続し SW 入力と LED の点灯表示とで論理回路としての動作を検証します それぞれの IC( 回路素子 ) ごとに真理値表を作成します

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART

More information

FPGAによる24時間時計回路

FPGAによる24時間時計回路 の設計 通信処理ネットワーク研究室 10ec062 志村貴大 1. まえがき今回 24 時間時計回路の設計を行った理由は FPGA を用いた論理回路設計の基礎を学ぶにあたり ハード及びソフト双方の基本技術を一度に習得できる題材であると推測したためである 24 時間時計を構成するモジュールの設計を終えた今 その推測は正しかったものと自負している 本レポートは 復習を兼ねた制作記録としてだけではなく 自分と同じ回路設計初心者が学習の参考にできるものにしたいと考えている

More information

Quartus II クイック・スタートガイド

Quartus II クイック・スタートガイド ALTIMA Corp. Quartus II クイック スタートガイド ver.3.0 2010 年 8 月 ELSENA,Inc. 目次 1. はじめに... 3 2. Quartus II の基本操作フロー... 3 3. Quartus II の基本操作... 4 ステップ 1. プロジェクトの作成... 4 ステップ 2. デザインの作成... 4 ステップ 3. ファンクション シミュレーション...

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

デジタルコンテンツ 1 最終レポート チーム名 :10 トリス 作品名 :10TRIS メンバー 飯田佳徳 下田圭介 丸山隆太 疋田暁大

デジタルコンテンツ 1 最終レポート チーム名 :10 トリス 作品名 :10TRIS メンバー 飯田佳徳 下田圭介 丸山隆太 疋田暁大 デジタルコンテンツ 1 最終レポート チーム名 :10 トリス 作品名 :10TRIS メンバー 5412003 飯田佳徳 5412025 下田圭介 5412039 丸山隆太 5412079 疋田暁大 作品の狙い アイディア 我々のチームは本作品を制作するにあたり, 子どもからお年寄りまで幅広い年齢層をユーザーの対象とすること, 子どもには正確かつ素早い計算能力の向上と長い間計算を続けるための集中力,

More information

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

書式に示すように表示したい文字列をダブルクォーテーション () の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf( 情報処理基礎 ); printf(c 言語の練習 ); printf 情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている

More information

電卓の設計 1

電卓の設計 1 電卓の設計 1 FPGA Express と MAXPLUS2 に よる FPGA 設計 FPGA EXPRESS RTL circuit.edf circuit.acf RTL MAXPLUS2 FPGA circuit.acf circuit.sof, ttf, pof SRAM 2 どうして電卓なの? その場で 10 キーを使って動かせる プロセッサだと プログラムを考えたり メモリとのインタフェースが必要

More information

Microsoft Word - XPC4ソフトマニュアル.doc

Microsoft Word - XPC4ソフトマニュアル.doc < XPC-4 映像ツール 簡易マニュアル> お試し版 Ver1.0 XPC-4 に USB ケーブルを接続する際の注意事項 ファームウェア アップデートの作業 もしくは XPC-4 映像ツール を使用するときは USB2.0 に対応した USB ケーブル (Type A[ オス ]-Type B[ オス ]) が 1 本必要です USB ケーブルはパソコンの OS(Windows) が完全に起動してから

More information

PIC の書き込み解説 PICライターを使うときに間違った使い方を見受ける 書き込み失敗の原因は知識不足にある やってはいけないことをしている 単に失敗だけならまだしも部品を壊してしまう 正しい知識を身に着けよう 書き込みに必要なピンと意味 ICSPを意識した回路設計の必要性 ICSP:In Cir

PIC の書き込み解説 PICライターを使うときに間違った使い方を見受ける 書き込み失敗の原因は知識不足にある やってはいけないことをしている 単に失敗だけならまだしも部品を壊してしまう 正しい知識を身に着けよう 書き込みに必要なピンと意味 ICSPを意識した回路設計の必要性 ICSP:In Cir PIC の書き込み解説 PICライターを使うときに間違った使い方を見受ける 書き込み失敗の原因は知識不足にある やってはいけないことをしている 単に失敗だけならまだしも部品を壊してしまう 正しい知識を身に着けよう 書き込みに必要なピンと意味 ICSPを意識した回路設計の必要性 ICSP:In Circuit Serial Programmming 原則論を解説 PIC の種類によって多少異なる 1

More information

CCD リニアイメージセンサ用駆動回路 C CCD リニアイメージセンサ (S11155/S ) 用 C は 当社製 CCDリニアイメージセンサ S11155/S 用に開発された駆動回路です S11155/S11156-

CCD リニアイメージセンサ用駆動回路 C CCD リニアイメージセンサ (S11155/S ) 用 C は 当社製 CCDリニアイメージセンサ S11155/S 用に開発された駆動回路です S11155/S11156- CCD リニアイメージセンサ用駆動回路 C11165-02 CCD リニアイメージセンサ (S11155/S11156-2048-02) 用 C11165-02は 当社製 CCDリニアイメージセンサ S11155/S11156-2048-02 用に開発された駆動回路です S11155/S11156-2048-02と組み合わせることにより分光器に使用できます C11165-02 は CCD 駆動回路

More information

<4D F736F F D2091B28BC68CA48B8695F18D902E646F63>

<4D F736F F D2091B28BC68CA48B8695F18D902E646F63> 卒業研究報告 題目 LED ディスプレイ用動画表示制御回路の設計と製作 指導教員 矢野政顕教授 報告者学籍番号 : 1060237 氏名 : 田中振宇 平成 18 年 2 月 21 日 高知工科大学電子 光システム工学科 目次 第 1 章はじめに 1 第 2 章 LED ディスプレイ 2 2-1 LED(Light Emitting Diode) 2 2-1-1 LED の発光原理 2 2-1-2

More information

PowerTyper マイクロコードダウンロード手順

PowerTyper マイクロコードダウンロード手順 必ずお読みください Interface Card 用マイクロコードを Ver 1.3.0 をVer 1.3.1 以降に変更する場合 または Ver 1.4.5 以前のマイクロコードを Ver 1.5.0 以降に変更する場合 ダウンロード前後に必ず以下の作業を行ってください ( バージョンは Webブラウザ上または付属ソフトウェア Print Manager のSystem Status 上で確認できます

More information

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

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB) コンピュータ工学講義プリント (12 月 11 日 ) 今回は ローテイト命令を用いて 前回よりも高度な LED の制御を行う 光が流れるプログラム 片道バージョン( 教科書 P.119 参照 ) 0.5 秒ごとに 教科書 P.119 の図 5.23 の様に LED の点灯パターンが変化するプログラムを作成する事を考える この様にすれば 光っている点が 徐々に右に動いているように見え 右端まで移動したら

More information

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V - CCD イメージセンサ S11850-1106, S11511 シリーズ用 は 当社製 CCDイメージセンサ S11850-1106, S11511 シリーズ用に開発された駆動回路です USB 2.0インターフェースを用いて とPCを接続することにより PCからの制御でセンサのアナログビデオ信号をデジタル出力に変換し PCに取り込むことができます は センサを駆動するセンサ基板 センサ基板の駆動と

More information

ディジタル電子回路 設計演習課題

ディジタル電子回路 設計演習課題 Arch 研究室スキルアップ講座 NEXYS4 による 24 時間時計 仕様書および設計例 1 実験ボード (NEXYS4) 外観 ダウンロード (USB) ケーブル接続端子 FPGA:Xilinx 社製 Artix7 XC7A100T-CSG324 7 セグメント LED8 個 LED16 個 リセット SW スライドスイッチ (16 個 ) 押しボタンスイッチ (5 個 ) 2 実験ボードブロック図

More information

機能検証トレーニング コース一覧

機能検証トレーニング コース一覧 機能検証トレーニング コース一覧 日本シノプシス合同会社 2016.03 トレーニング コース一覧 VCS/DVE 基本コース VCS-NLP/VC LP 基本コース VC Verification IP AXI 基本コース (UVM 版 ) VC Verification IP USB 基本コース (UVM 版 ) Verdi 3 基本コース SpyGlass Lint コース SpyGlass

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

ModelSim-Altera - RTL シミュレーションの方法

ModelSim-Altera - RTL シミュレーションの方法 ALTIMA Corp. ModelSim-Altera RTL シミュレーションの方法 ver.15.1 2016 年 5 月 Rev.1 ELSENA,Inc. 目次 1. 2. 3. はじめに...3 RTL シミュレーションの手順...4 RTL シミュレーションの実施...5 3-1. 3-2. 新規プロジェクトの作成... 5 ファイルの作成と登録... 7 3-2-1. 新規ファイルの作成...

More information

デザインパフォーマンス向上のためのHDLコーディング法

デザインパフォーマンス向上のためのHDLコーディング法 WP231 (1.1) 2006 1 6 HDL FPGA TL TL 100MHz 400MHz HDL FPGA FPGA 2005 2006 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx,

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2017 年 5 月 15 日 東邦大学金岡晃 前回の復習 (1) このプログラムを作成し実行してください 1 前回の復習 (2) このプログラムを作成し実行してください 2 前回の復習 (3) 3 前回の復習 演算子 代入演算子 インクリメント シフト演算子 型変換 4 場合に応じた処理 5 こういうプログラムを作りたい 5 教科のテスト

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2018 年度クラス C3 D1 D2 D3 情報科学基礎 I 10. 組合せ回路 ( 教科書 3.4~3.5 節 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ論理回路 x1 x2 xn 組合せ論理回路 y1 y2 ym y i = f i (x 1, x 2,, x n ), i

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

More information

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ 第5回 Arduino入門 I2C通信編 プレゼン by いっちー 目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラム 7 読込み 19 センサ読込み概要①

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2019 年 5 月 13 日 東邦大学金岡晃 場合に応じた処理 1 こういうプログラムを作りたい 5 教科のテスト 100 点以上各科目の点数の合計が 100 点未満 おめでとう! これで 100 点越えのプレゼントを獲得! というメッセージを出力 残念!100 点越えのプレゼントまであと ** 点! というメッセージを出力 5 教科の点数の合計が

More information

HW-Slides-05.ppt

HW-Slides-05.ppt ハードウェア実験 組み込みシステム入門第 5 回 2012 年 10 月 18 日 順序論理回路の実験 このスライドの ゲートの動作記述の部分は 藤井先生のスライドから多くをいただいています 藤井先生に慎んでお礼申し上げます 2 今日の内容! 以下の論理回路を動作させる 1. D フリップフロップ回路 2. 4 進カウンタ回路 ( 同期式 ) 3. 10 進カウンタ回路! シフトレジスタを作成して

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション コンピュータアーキテクチャ 第 13 週 割込みアーキテクチャ 2013 年 12 月 18 日 金岡晃 授業計画 第 1 週 (9/25) 第 2 週 (10/2) 第 3 週 (10/9) 第 4 週 (10/16) 第 5 週 (10/23) 第 6 週 (10/30) 第 7 週 (11/6) 授業概要 2 進数表現 論理回路の復習 2 進演算 ( 数の表現 ) 演算アーキテクチャ ( 演算アルゴリズムと回路

More information

OS

OS Operatig Systems カーネルとデバイスドライバ 2019-03 1 OS の構成要素 シェル ワープロ ブラウザ さまざまなソフトウェア ] ^ _ Z ` a b c d e ` f Y Z [ \ プロセス管理通信制御ファイルシステム メモリ管理割込み制御タイマ管理 デバイスドライバ 管理プログラム 基本ライブラリ デバイスドライバ CPU メモリ ストレージ さまざまなハードウェア

More information

TF Series with Tio1608-D System Setup Guide

TF Series with Tio1608-D System Setup Guide システムセットアップガイド 第 1 版 : 2016 年 6 月 このガイドでは ヤマハデジタルミキシングコンソール TF シリーズ と I/O ラック Tio1608-D を使用したミキシングシステムのセットアップ手順や Tio1608-D の台数に応じたシステム例を紹介します TF シリーズは単体でも使用することができますが Tio1608-D を併用することで簡単にシステムを拡張することができ

More information

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法 ver. 8.1 2009 年 3 月 1. はじめに Nios II 開発ボードに実装されているメモリ用のコンポーネントは SOPC Builder の中にあらかじめ用意されています しかし 実際に基板を作成した場合には Nios II 開発ボードに実装されているメモリと同じ仕様の製品でない限り SOPC Builder であらかじめ用意されたメモリ用のコンポーネントを使用することはできません この場合

More information

スライド 1

スライド 1 グラフィックスの世界第 3 回 サイバーメディアセンター サイバーコミュニティ研究部門安福健祐 Processing によるアニメーション setup と draw void setup() size(400, 400); void draw() ellipse( mousex,mousey,100,100); void とか setup とか draw とかはじめて見る が出てきてややこしい ellipseは円描く関数でした

More information

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx Smart Analog Stick をはじめて動かす RL78G1E STARTER KIT を始めて使う方のために インストールから基本的な使い方を体験する部分を順番にまとめました この順番で動かせば とりあえず体験できるという内容で作成してあります 2 度目からお使いの場合には Stick ボードを USB に接続した状態で 3 から始めてください 詳細な機能説明は ユーザーズマニュアルやオンラインヘルプを参考にしてください

More information

Microsoft Word - Updater

Microsoft Word - Updater ホスト ソフトウェアのアップデート Midas Digital System と関連するネットワーク機器のホスト ソフトウェアのアップデートについて説明します アップデータについて PRO2 にはシステムを簡単かつ明快にアップデートする方法を提供するアップデート機能があります この機能を利用して 最新版のホスト ソフトウェアをコントロールセンターとネットワーク接続した DLnnn または Klark

More information

Report Template

Report Template MachXO2 EFB(Embedded Function Block) 1 目次 1 このドキュメントの概要 3 2 EFB の構成 4 3 EFB とハードマクロの生成と注意事項 5 3.1 EFB Enables タブの設定... 5 3.2 I2C タブの設定... 6 3.3 SPI タブの設定... 7 3.4 Timer/Counter タブの設定... 9 4 Wishbone から

More information

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

ソフトウェア基礎技術研修 マルチサイクルを用いた実現方式 ( 教科書 5. 節 ) マルチサイクル方式 () 2 つのデータパス実現方式 単一クロックサイクル : 命令を クロックサイクルで処理 マルチクロックサイクル : 命令を複数クロックサイクルで処理 単一クロックサイクル方式は処理効率が悪い. CLK 処理時間 命令命令命令命令命令 時間のかかる命令にクロック サイクル時間をあわさなければならない. 余り時間の発生 クロック

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

<4D F736F F F696E74202D FEE95F18F88979D8B5A8F702E B93C782DD8EE682E890EA97705D205B8CDD8AB B83685D>

<4D F736F F F696E74202D FEE95F18F88979D8B5A8F702E B93C782DD8EE682E890EA97705D205B8CDD8AB B83685D> 第 4 回情報処理技術講義 コンピュータ計算の基本概念 ( 論理ハードウェア ) 60 これはなんだと思いますか? 携帯電話の開発ボードだそうです 61 ソフト開発をする人でも, ハードウェア知識は必要不可欠である コンピュータの最も基本的要素は論理電子回路であるその中でも以下の3 素子が基本となる (AN, ORは組合して作れる ) NOT NAN NOR 注意 :MOS トランジスタによる実現

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2016 年度 5 セメスター クラス C3 D1 D2 D3 計算機工学 10. 組合せ回路 ( 教科書 3.4~3.5 節 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ論理回路 x1 x2 xn 組合せ論理回路 y1 y2 ym y i = f i (x 1, x 2,, x

More information

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカプラ 750-306 を使ったリモート I/O システムとの接続に関するコンフィグレーション方法について説明いたします 2. システム構成本書で用いるシステム構成例の内容を以下の表に示します

More information

Microsoft PowerPoint - OS07.pptx

Microsoft PowerPoint - OS07.pptx この資料は 情報工学レクチャーシリーズ松尾啓志著 ( 森北出版株式会社 ) を用いて授業を行うために 名古屋工業大学松尾啓志 津邑公暁が作成しました 主記憶管理 主記憶管理基礎 パワーポイント 27 で最終版として保存しているため 変更はできませんが 授業でお使いなる場合は松尾 (matsuo@nitech.ac.jp) まで連絡いただければ 編集可能なバージョンをお渡しする事も可能です 復習 OS

More information

2. オプション設定画面で, 必要事項を記入 選択します. 少なくとも, タイトル に課題の見出しとなる文章を入力する他, 種別 を アンケート( 無記名式 ) に設定する必要があります. また, アクセス制限はここでは コースメニューで非表示にする に設定します. その他設定は必要に応じて行って下

2. オプション設定画面で, 必要事項を記入 選択します. 少なくとも, タイトル に課題の見出しとなる文章を入力する他, 種別 を アンケート( 無記名式 ) に設定する必要があります. また, アクセス制限はここでは コースメニューで非表示にする に設定します. その他設定は必要に応じて行って下 (WebClass チュートリアル ) 公開アンケートの実施 ここではアンケート, 特にメンバーを限定せず広く実施する無記名アンケート ( 以下, 公開アンケート ) の実施方法について解説します. 公開アンケートでは, 回答者が WebClass にログインすることなく回答できるというメリットがありますが, 回答資格の判別や, 同一人による複数回の回答をチェックすることが出来ない欠点がありますのでご注意下さい.

More information

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

ディジタル回路 第1回 ガイダンス、CMOSの基本回路 1 前回教育用の RISC POCO を導入しました 今日はその Verilog 記述を紹介します まず この復習をやっておきましょう 2 最も重要な点は メモリの読み書きで レジスタ間接指定の理解です これはポインタと一緒なので 間違えないように修得してください 3 RISC なので 基本の演算はレジスタ同士でしかできません MV はレジスタ間のデータ移動なので気をつけてください 4 イミーディエイト命令は

More information

「電子政府推奨暗号の実装」評価報告書

「電子政府推奨暗号の実装」評価報告書 2011 情財第 399 号 情報セキュリティ対策基盤整備事業 電子政府推奨暗号の実装 評価報告書 平成 24 年 12 月 [ 改訂履歴 ] 日付改訂内容 2012 年 12 月 11 日評価報告書初版発行 2012 年 12 月 21 日 2. 評価結果 内のデータを修正 ( 表 1-1 表 1-2 表 2-1 表 2-2 表 3-1 表 3-2 表 4-1 表 4-2 表 5-1 表 5-2

More information

0630-j.ppt

0630-j.ppt 5 part II 2008630 6/30/2008 1 SR (latch) 1(2 22, ( SR S SR 1 SR SR,0, 6/30/2008 2 1 T 6/30/2008 3 (a)(x,y) (1,1) (0,0) X Y XOR S (S,R)(0,1) (0,0) (0,1) (b) AND (a) R YX XOR AND (S,R)(1,1) (c) (b) (c) 6/30/2008

More information

スライド 1

スライド 1 2018 年 6 月 20 日 ( 水 ) 弘前工業高等学校情報技術科見学会 模擬講義 (40 分 09:45~10:30 458 プログラミング室 ) PLD 演習システム体験 弘前大学理工学部電子情報工学科一條健司 サポート学生浅野 (4 年 ) 日下部 (4 年 ) 高室 (4 年 ) 佐藤 ( 修士 2 年 ) 増田 ( 修士 2 年 ) 三ケ田 ( 修士 2 年 ) 印の椅子に着席して下さい

More information

スライド 1

スライド 1 isplever CLASIC 1.2 Startup Manual for MACH4000 Rev.1.0 isplever_ CLASIC Startup_for_MACH4000_Rev01.ppt Page: 1 1. Page 3 2. Lattice isplever Design Flow Page 4 3. Page 5 3-1 Page 6 3-2 Page 7 3-3 Page

More information

スライド 1

スライド 1 RX62N 周辺機能紹介 DAC D/A Converter ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ DACの概要 データフォーマット 変換開始と変換時間 転送時間 プログラムサンプル 2 DAC の概要 3 機能概要 項目 内容 分解能 出力チャネル 消費電力低減機能 10 ビット 2 チャネル モジュールストップ状態への設定が可能

More information

R1RP0416DIシリーズデータシート

R1RP0416DIシリーズデータシート Wide Temperature Version 4M High Speed SRAM (256-kword 16-bit) データシート RJJ03C0097-0201 Rev.2.01 概要 R1RP0416DI シリーズは 256k ワード 16 ビット構成の 4M ビット高速スタティック RAM です CMOS(6 トランジスタメモリセル ) プロセス技術を採用し, 高密度, 高性能, 低消費電力を実現しました

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2018 年度クラス C3 1 2 3 情報科学基礎 I 11. 順序回路の基礎 ( 教科書 4 章 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ回路と順序回路 x1 x2 xn 組合せ回路 y1 y2 ym 組合せ回路 : 出力は, その時点の入力の組合せのみで決まる x1 x2

More information

やさしくPDFへ文字入力 v.2.0

やさしくPDFへ文字入力 v.2.0 操作マニュアル やさしく PDF へ文字入力 v.2.0 基本操作 目次 1. はじめに 2. やさしく PDF へ文字入力の起動 3. スキャナの設定 4. 原稿の取り込み 4-1. スキャナから 4-2. ファイルから 5. プリンタの設定 6. フィールドの作成 6-1. フィールドの自動作成 6-2. フィールドの手動作成 7. フィールドの設定 8. 文字の入力 9. 印刷 便利な使い方付録

More information

ヤマハDante機器と他社AES67機器の接続ガイド

ヤマハDante機器と他社AES67機器の接続ガイド はじめに AES67 は 高性能なデジタル IP ネットワークの相互接続を実現するための標準規格です AES67 は や Ravenna Q-LAN Livewire WheatNet などの異なるネットワーク規格で構築されたシステム間で オーディオ信号を送受信する手段を提供します ヤマハも 機器のアップデートにより順次 AES67 への対応を開始し 第一弾としてデジタルミキシングコンソール CL/QL

More information

SimscapeプラントモデルのFPGAアクセラレーション

SimscapeプラントモデルのFPGAアクセラレーション Simscape TM プラントモデルの FPGA アクセラレーション MathWorks Japan アプリケーションエンジニアリング部 松本充史 2018 The MathWorks, Inc. 1 アジェンダ ユーザ事例 HILS とは? Simscape の電気系ライブラリ Simscape モデルを FPGA 実装する 2 つのアプローチ Simscape HDL Workflow Advisor

More information

NJU72501 チャージポンプ内蔵 圧電用スイッチングドライバ 概要 NJU72501はチャージポンプ回路を内蔵し 最大で3V 入力から 18Vppで圧電サウンダを駆動することができます このチャージポンプ回路には1 倍 2 倍 3 倍昇圧切り替え機能を備えており 圧電サウンダの音量を変更すること

NJU72501 チャージポンプ内蔵 圧電用スイッチングドライバ 概要 NJU72501はチャージポンプ回路を内蔵し 最大で3V 入力から 18Vppで圧電サウンダを駆動することができます このチャージポンプ回路には1 倍 2 倍 3 倍昇圧切り替え機能を備えており 圧電サウンダの音量を変更すること チャージポンプ内蔵 圧電用スイッチングドライバ 概要 はチャージポンプ回路を内蔵し 最大で3 入力から 18ppで圧電サウンダを駆動することができます このチャージポンプ回路には1 倍 2 倍 3 倍昇圧切り替え機能を備えており 圧電サウンダの音量を変更することができます また シャットダウン機能を備えており 入力信号を検出し無信号入力時には内部回路を停止することでバッテリーの長寿命化に貢献します

More information

Microsoft Word - TC4017BP_BF_J_P10_060601_.doc

Microsoft Word - TC4017BP_BF_J_P10_060601_.doc 東芝 CMOS デジタル集積回路シリコンモノリシック TC4017BP,TC4017BF TC4017BP/TC4017BF Decade Counter/Divider は ステージの D タイプ フリップフロップより成る 進ジョンソンカウンタで 出力を 進数に変換するためのデコーダを内蔵しています CLOCK あるいは CLOCK INHIBIT 入力に印加されたカウントパルスの数により Q0~Q9

More information