計算機科学実験及演習3(ハードウェア)

2017年度 3回生前期 前半

─── マイクロコンピュータの作成 ───


実験の概要

本実験では、FPGAと呼ばれるプログラマブルなLSIを用いて、 マイクロコンピュータを作成します。

マイクロコンピュータは、PowerMedusaボードを使用して作成します。 PowerMedusaボード上のFPGAをプロセッサとしてプログラムすることによって、 ボード全体を1つのマイクロコンピュータとして動作させることができるわけです。

実装するプロセッサのアーキテクチャは、SIMPLEアーキテクチャに準拠するものとします。
本実験では、このプロセッサの方式設計から論理設計までを行います。 論理設計には論理CADツールQuartus II 13.0sp1を使用します。

レポートは計3回提出してもらいます。7SEG LED駆動回路とカウンタの設計の導入課題、プロセッサ設計演習の中間報告最終報告です。中間報告と最終報告ではデモンストレーションとセールストークも課します。

実験は2名1グループで行います。グループ内での設計データの共有とバージョン管理にはGit (GitLab)を用います。
中間・最終レポートの設計データの提出やデバッグ相談の際にもGitを利用します。

最後に、最終デモにて完成したマイクロコンピュータ上で、応用プログラムを実際に動作させます。
ソート速度コンテストで作成したプロセッサの性能を競います (任意ですが是非参加して下さい)。


連絡


What's New

過去の更新履歴


受講上の注意

以下のページ、資料をよく読んで受講してください。


カレンダー

実験日 常駐TA イベント 進度の目安
4/13(木)午後加藤直、森、廣瀬、松井導入講義1
(HDL,CAD)
CADの習熟を兼ねた導入課題の実施
方式設計、機能設計
作業分担の決定、設計期間のスケジューリング
4/14(金)午前森、廣瀬、竹田グループ決定
4/14(金)午後豊島、松井、中村、伊藤導入講義2
(Git,SIMPLE)
4/20(木)午後森、廣瀬、松井導入レポート 各機能ブロックの論理設計
4/21(金)午前森、廣瀬、馬場慧、竹田
4/21(金)午後豊島、松井、馬場慧、伊藤
4/27(木)午後加藤直、森、松井、馬場慧 プロセッサ全体の論理設計、デバッグ
4/28(金)午前森、加藤直、竹田
4/28(金)午後豊島、松井、馬場慧、中村
5/11(木)午後加藤直、森、廣瀬、松井中間レポート 中間デモの準備(命令の実行、表示方法の検討)
+ 拡張したアーキテクチャの機能設計
5/12(金)午前森、廣瀬、馬場慧、竹田
5/12(金)午後豊島、松井、馬場慧、伊藤中間デモ
5/18(木)午後加藤直、森、廣瀬、松井 拡張したアーキテクチャの論理設計、デバッグ
5/19(金)午前森、廣瀬、馬場慧、竹田
5/19(金)午後豊島、松井、馬場慧、中村
5/25(木)午後加藤直、森、廣瀬、松井 応用プログラムの作成、デバッグ
5/26(金)午前森、廣瀬、馬場慧、竹田
5/26(金)午後豊島、松井、馬場慧、伊藤
6/ 1(木)午後加藤直、森、廣瀬、松井 最終デモの準備(応用プログラムの実行)
+ 性能評価、アーキテクチャの洗練
6/ 2(金)午前森、廣瀬、馬場慧、竹田
6/ 2(金)午後豊島、松井、馬場慧、中村最終デモ
6/16(金)最終レポート

スタッフ

教員

  役職 居室 内線 E-mail
高木 一義 准教授 総合研究7号館334号室 5383 ktakagi@lab3.kuis.kyoto-u.ac.jp
高瀬 英希 助教 総合研究7号館335号室 5393 takase@lab3.kuis.kyoto-u.ac.jp
馬場 雪乃 助教 総合研究7号館301号室 5397 baba@i.kyoto-u.ac.jp
加藤 和成 技術職員 総合研究7号館301号室 85397 k_kato@kuis.kyoto-u.ac.jp

TA

  学年 所属 コアタイム
加藤 直 M1 鹿島研 木午後
豊島 悠紀夫 M1 高木研 金午後
森 智也 M2 高木研 木午後、金午前
廣瀬 秀樹 M2 高木研 木午後、金午前
松井 健太郎 M1 高木研 木午後、金午後
馬場 慧 M2 吉川研 金午前、金午後
中村 玄貴 M1 吉川研 金午後(隔週)
伊藤 博典 M1 吉川研 金午後(隔週)
竹田 創 M2 吉川研 金午前

レポート課題/デモンストレーション

レポート課題/デモンストレーションは、導入課題、中間報告、最終報告の3回ある。
導入課題はレポートのみ、中間報告と最終報告は、デモンストレーションとレポート提出からなる。

最終デモを除き、期限より前のレポートの提出やデモの実施を認める。

導入課題

締切
4/20(木) 13:00(実験開始時に回収)
提出方法
A4用紙に印刷し、実験時間にスタッフへ提出
レポートの様式は「レポートの様式」 として別ページに記す。
レポート
個人単位で7SEG LED駆動回路およびカウンタの設計を行い、 その内容をレポートで提出する。 試験の答案ではなく実験レポートであることに注意すること。

プロセッサ設計演習

中間報告

デモンストレーション [プロトタイプの動作実証]
日時: 5/12(金) 13:00-16:15
PowerMedusaボード上に設計したプロセッサをダウンロードしたうえ、何らかの命令が動作していることを示す。 示し方は各自で工夫すること。
レポート [最終的に設計するプロセッサの仕様]
締切: 5/11(木) 16:00
提出方法:GitLabの各グループのリモートリポジトリにmiddleという名前のプロジェクトを作成し、それぞれ以下に指定する青字のファイル名で文書(形式はPDFのみ)を作成すること。各文書には表紙を付けること。表紙には、文書名、グループ番号、構成員の学籍番号と氏名(個人毎のものはその作成者のみ)、提出日などを記す。
 
内容:設計するプロセッサに関して、以下の内容をまとめる。 方式設計と機能設計レベルの仕様書も参照すること。
  1. [グループ毎に1部] アーキテクチャ検討報告書 (ファイル名:architecture_study_report.pdf)
    1. 要求仕様、設計目標、方針、特長
      • 実現する機能、性能の目標値、など
    2. 高速化/並列処理の方式
      • 拡張命令、動作周波数、パイプライン化、並列化、など
    3. 性能/コストの予測
      • SIMPLE/Bに比べて性能、ハードウェア量が何倍程度か、ソート速度コンテストでの計算時間、サイクル数の予測、など
    4. 考察等
  2. [グループ毎に1部] 方式設計仕様書 (ファイル名:system_design_spec.pdf)
    • 概要
    • 命令セット・アーキテクチャ
    • 構造と動作
  3. [グループ毎に1部] 実施状況報告書 (ファイル名:status_report.pdf)
    • 最終目標に対する現在の進捗状況
    • 分担状況:プロセッサを構成する各ブロックの設計を、各グループ構成員がどのように分担していく計画か
    • 中間報告時点での設計データのGitLab上のプロジェクト名とリビジョン番号・ハッシュ値
  4. [個人毎に1部] 機能設計仕様書 (ファイル名:function_design_spec-[学籍番号].pdf)
    • 全体をどのようにコンポーネントに分割したか (方式設計仕様書のブロック図を再掲して説明)
    • 設計を担当するコンポーネントの外部仕様
    • 実装を担当するコンポーネントの内部仕様
[提出前にチェック]

最終報告

デモンストレーション [完成したプロセッサの動作実証]
日時: 6/2(金) 13:00-16:15
製作したコンピュータの特長などについて発表(セールストーク)を行い、完成したコンピュータ上で応用プログラムを実行するデモンストレーションを行う。
TA用最終デモチェックポイント一覧 (txt形式、UTF-8)
レポート [完成したプロセッサに関するドキュメント]
締切: 6/16(金) 16:00
提出方法:GitLabの各グループのリモートリポジトリにfinalという名前のプロジェクトを作成し、それぞれ以下に指定する青字のファイル名で文書(形式はPDFのみ)を作成すること。各文書には表紙を付けること。表紙には、文書名、グループ番号、構成員の学籍番号と氏名(個人毎のものはその作成者のみ)、提出日などを記す。
 
内容:完成したプロセッサに関して、以下の内容をまとめる。
中間報告時点で検討したアーキテクチャ仕様に追加や変更がある場合は、変更後の各文書(ファイル名はそのまま)もfinalプロジェクトに含めること。
  1. [グループ毎に1部] 最終成果物のユーザーズマニュアル (ファイル名:user_manual.pdf)
    • 説明書、リファレンスマニュアル、あるいはデータブックのことを指す
    • IPコア(ソフトコアプロセッサ)として提供することを想定し、プロセッサを使用するうえで必要十分な情報を記載すること
    • 概要、性能と特長、命令セット・アーキテクチャ、構造と動作、など
    • (SIMPLE/Bを参照せず) これだけで完結した資料とすること
  2. [グループ毎に1部] アーキテクチャ拡張仕様書 (ファイル名:extended_spec.pdf)
    • SIMPLE/B基本アーキテクチャからの拡張仕様の説明
      • どのような拡張を行ったか
      • 本文書のみで拡張した仕様や機能が分かるように説明する
    • その拡張を行うとどのように嬉しいかを説明
      • どのようなことが新たにできるようになるか?(サンプル・コード等を交えて説明するのもよい)
  3. [グループ毎に1部] 性能評価報告書 (ファイル名:evaluation_report.pdf)
    • それぞれの性能指標について、本演習の最終成果物のプロセッサを評価して報告する。実現した拡張仕様によって各指標がどう変わったか(どのくらい改善されたか)についても報告するとよい。
      • 回路面積:ゲート数(LUT数)
      • クロック周波数(実動作/CADでの予測値)、クリティカルパス
      • 応用プログラムの性能:プログラムの命令数/実行命令数/実行サイクル数
  4. [グループ毎に1部] 実施報告書 (ファイル名:implementation_report.pdf)
    • 中間報告時点で検討したアーキテクチャ設計の目標に対して、どこまで達成できたか。目標・計画を変更した場合は、その経緯や意図など。
    • 分担状況:プロセッサを構成する各ブロックの設計を、各グループ構成員がどのように分担したか。
    • 最終的な設計データのGitLab上のプロジェクト名とリビジョン番号・ハッシュ値
  5. [個人毎に1部] 機能設計仕様書 (ファイル名:function_status-[学籍番号].pdf)
    • 設計を担当したコンポーネントの機能設計仕様 (中間レポートからの追加分がある場合)
    • 設計を担当したコンポーネントのうち主要なものの、単体での性能評価 (LUT数、遅延時間(CADでの予測値)、クリティカルパス、など)
    • 考察および感想
      • 設計全体に関する考察、ならびに、特に自分が担当した部分に関する詳細な考察を行う。
      • 本実験を通して得られた知見や実験の感想などを記す。

資 料

資源保護のため、印刷するのは最小限にし、また、 将来のため、オンラインで閲覧することに慣れましょう。

講義資料

初週に実施する各講義の資料です。

* Verilog HDL による回路設計記述
代表的なHDLの紹介と、Verilog HDLの基本的な文法について解説しています。
* CADツールを用いた設計フロー (実験3HW編)
Quartus IIについて、HDL設計での使い方と実機での実行方法までの設計フローを解説しています。
* SIMPLEアーキテクチャ
SIMPLEアーキテクチャについて、命令セットと基本的な実装を解説しています。
* Gitの使い方
Gitの基本的な使い方と演習室サーバに用意されているGitLabについて解説しています。
* 2016年度後期 実験及演習2HW「CADツール上での論理設計」
春休みで全て忘れてしまった方へ、、、

SIMPLE

* SIMPLE 設計資料
設計するプロセッサのアーキテクチャ、SIMPLEの仕様書。

設計のためのTips

CAD上での設計に参考となるので、特に注意して見ておいてほしい資料です。

* よくある質問とその答え
要はFAQです。困ったらとりあえず見て下さい。随時追加。
* HDLてにをは集
HDLの設計で特に注意してほしいことやFAQをまとめました。随時追加。
* 主記憶用のRAMの作り方
megafunctionでプロセッサの主記憶を作る方法です。SIMPLE設計にも必須です。
* 設計のヒント
多少発展的な内容も含む設計のヒントがあります。 理解できない項目については、無理に利用する必要はありません。
* 同期設計
同期設計に関する tips。 (現在とは違う実験機材について書いているが、参考まで)

FPGAボード

三菱電機マイコン機器ソフトウエア株式会社のFPGAボードであるPowerMedusa MU500-RX/RKの説明書です。
載っているFPGAはAltera社のCyclone IVファミリのEP4CE30F23I7Nです。
(RX210マイコンも搭載されています。本実験では使いませんが、興味のある人は遊んでみてください。)

[pdf] MU500-RXセット_ユーザーズマニュアルVer1.1.pdf
PowerMedusaボードMU500-RX/RKの取扱説明書。 なお、学外からはダウンロードできません.
[xls] MU500-RX_ピンアサイン表.xls
PowerMedusaボードMU500-RX/RKのピンアサイン表 なお、学外からはダウンロードできません.
[pdf] MU500-7SEGマニュアルVer2.pdf
PowerMedusaに追加する,7セグメントLEDボードの取扱説明書。 なお、学外からはダウンロードできません。
[xls] マニュアル用RX_7SEGピンアサイン.xls
PowerMedusaに追加する,7セグメントLEDボードのピンアサイン表 なお、学外からはダウンロードできません.

CAD・FPGA

CADはAltera社のQuartusII 13.0sp1を使います。バージョン違いでネットの情報があてにならないことが多いので、注意してください。
FPGAはAltera社のCycloneIV EP4CE30F23I7Nを使用します。

* Quartus II ダウンロード・センター
本実験で使用するツール・バージョンであるQuartus II 13.0sp1ウェブ・エディションのダウンロードページです。
* オンライン資料: Quartus II開発ソフトウェア
日本アルテラ社のQuartusIIのオンライン資料です。 ツールのバージョンが最新のものになっていますが、バージョンが異なると説明が通らない解説もあります。頑張って13.0sp1の資料を探してください。
日本語の資料としては、以下の物が役に立つと思います。
  • Introduction to Quartus II マニュアル
  • QuartusIIハンドブック
    多くのファイルに分かれていますが、今回の実験の内容で役に立つのは以下のあたりです。
    • Volume 1, Chapter 17: Quartus IIネットリスト・ビューワによるデザインの解析
    • Volume 2, Chapter 13: 面積&タイミングの最適化
    • Volume 2, Chapter 14: 消費電力の最適化
    • Volume 3, Chapter 6: Quartus II TimeQuestタイミング・アナライザ
    • Volume 3, Chapter 15: FPGAメモリおよび定数のインシステム・アップデート
    • (Volume 1, Chapter 2: 階層およびチームベース・デザインのための Quartus II インクリメンタル・コンパイル)
    • (Volume 2, Chapter 5: I/O管理)
* Cycloneデバイス・ファミリのドキュメント
Altera Cycloneデバイス・ファミリのデバイス・ハンドブックやデータシートがあります。

過去の参考資料

旧カリキュラムにて本ページに掲載していた参考資料です。当時はスケマ設計推奨だったので現在のHDL設計では必要になることは少ないですが、参考になることがあるかもしれません。

* CAD立ち上げからFPGAへのダウンロードまでの操作
CAD立ち上げからFPGAへのダウンロードまでの操作を箇条書きでまとめたものです。講義資料と内容はだいたい重複しています。
* プロセッサの構成に必要となる論理ゲート
最低限覚えておきたいゲートとその真理値表。 (論理回路を履修した皆さんには常識ですよね。)
* プロセッサの構成に必要となる回路
基本的な回路を挙げておきます。 (論理回路を履修した皆さんには常識ですよね。)
[pdf] PowerMedusaユーザーズマニュアルMU200-EC6S
旧カリキュラムで使用していたPowerMedusa MU200-EC6Sの取扱説明書です。載っているFPGAはAltera社のCycloneファミリのEP1C6Q240C8です。 なお、学外からはダウンロードできません。
在庫はありますが、特段の理由が無い限りは使うことはないでしょう。
[pdf] PowerMedusaユーザーズマニュアルMU2007SEG
PowerMedusa MU200-EC6S(旧ボード)に追加する,7セグメントLEDボードの取扱説明書。 なお、学外からはダウンロードできません。

参考文献

* 富田眞治, 中島浩 共著: コンピュータハードウェア, 昭晃堂, ISBN4-7856-2044-7.
* D.A.パターソン,J.L.ヘネシー著, 成田光彰訳: コンピュータの構成と設計(上) 第3版 ISBN 4-8222-8266-X, 第4版 ISBN 4-8222-8478-6, 第5版 ISBN 4-8222-9842-5, 日経BP社
* D.A.パターソン,J.L.ヘネシー著, 成田光彰訳: コンピュータの構成と設計(下) 第3版 ISBN 4-8222-8267-8, 第4版 ISBN 4-8222-8479-4, 第5版 ISBN 4-8222-9843-5, 日経BP社
* 小林優著: 入門Verilog HDL記述―ハードウェア記述言語の速習&実践 ISBN 4789833984, CQ出版
* 深山正幸著: HDLによるVLSI設計―VerilogHDLとVHDLによるCPU設計 ISBN4320120272, 共立出版

リンク

* 京都大学
* 工学部
* 情報学科計算機科学コース
* 情報学科計算機科学コース 計算機室(学生実験)
* 情報学研究科
* 工学部シラバス
* 工学部シラバス 計算機科学実験及演習3
* Altera

質問の宛先・本ページへの問合せは le3a@lab3.kuis.kyoto-u.ac.jp
このコンテンツは、最初に 嶋田 創 先生が作成されたものをベースにしています。
ここに感謝の意を表します。