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

2019年度 3回生前期 前半

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


実験の概要

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

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

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

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

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

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


連絡

なにかお知らせがある場合はここに書きます。随時でご確認ください。

What's New

過去の更新履歴


受講上の注意

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


カレンダー

実験日 常駐TA イベント 進度の目安
4/11(木)午後矢野・北村・祐源・清水導入講義1
(HDL,CAD)
CADの習熟を兼ねた導入課題の実施
方式設計、機能設計
作業分担の決定、設計期間のスケジューリング
4/12(金)午前今西・祐源・清水グループ決定
4/12(金)午後矢野・今西・山口導入講義2
(Git,SIMPLE)
4/18(木)午後矢野・北村・新田・祐源・清水導入レポート 各機能ブロックの論理設計
4/19(金)午前今西・祐源・田村・清水
4/19(金)午後矢野・今西・新田・田村
4/25(木)午後矢野・北村・新田・祐源・清水 プロセッサ全体の論理設計、デバッグ
4/26(金)午前今西・祐源・田村・清水
4/26(金)午後矢野・今西・新田・田村
5/02(木)午後調整日
5/09(木)午後矢野・北村・新田・祐源・清水中間レポート 中間デモの準備(命令の実行、表示方法の検討)
+ 拡張したアーキテクチャの機能設計
5/10(金)午前今西・祐源・田村・清水
5/10(金)午後矢野・今西・新田・田村中間デモ
5/16(木)午後矢野・北村・新田・今西・清水 拡張したアーキテクチャの論理設計、デバッグ
5/17(金)午前今西・祐源・田村・清水
5/17(金)午後矢野・祐源・新田・田村
5/23(木)午後矢野・北村・新田・今西・清水 応用プログラムの作成、デバッグ
5/24(金)午前今西・祐源・田村・清水
5/24(金)午後矢野・祐源・新田・田村
5/30(木)午後矢野・北村・新田・今西・清水 最終デモの準備(応用プログラムの実行)
+ 性能評価、アーキテクチャの洗練
5/31(金)午前今西・祐源・田村・清水
5/31(金)午後矢野・祐源・新田・田村最終デモ
6/14(金)最終レポート

スタッフ

教員

  役職 居室 内線
山田 誠 准教授 総合研究7号館204号室 5985
松原 繁夫 准教授 総合研究7号館428号室 4819
小林 靖明 助教 総合研究7号館327号室 5996
高瀬 英希 助教 総合研究7号館335号室 5393
加藤 和成 技術職員 総合研究7号館301号室 5966
高木 一義 非常勤

TA

  学年 所属 コアタイム
矢野 泰正 M2 高木研 木午後・金午後
今西 洋偉 M2 高木研 金午前・金午後
北村 圭 M2 高木研 木午後
新田 泰大 M2 高木研 木午後・金午後
田村 爽 M2 高木研 金午前・金午後
祐源 英俊 M1 高木研 木午前・金午前
清水 亮太 M1 湊研 木午後・金午前

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

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

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

導入課題

レポート
個人単位で7SEG LED駆動回路およびカウンタの設計を行い、 その内容をレポートで提出する。 試験の答案ではなく実験レポートであることに注意すること。
締切
4/18(木) 14:00
提出方法
GitLabの各個人のリモートリポジトリにintroという名前のプロジェクトを作成し、intro.pdfのファイル名で文書(形式はPDFのみ)を配置して提出する。文書には表紙を付けること。表紙には、文書名、学籍番号と氏名、提出日などを記す。
設計データもGitLabの各個人のintroに含めて上げること。
GitLabの注意点
提出先は各個人のリモートリポジトリのintroという名前のプロジェクトである。Groups以下には作らないこと。
プロジェクト作成時のVisibility LevelはPrivateとすること。
プロジェクトのMembersにTA用アカウントのle3hw2019をMasterの権限で追加すること。Settings > Members から追加できる。

プロセッサ設計演習

中間報告

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

最終報告

デモンストレーション [完成したプロセッサの動作実証]
日時: 5/31(金) 13:00-16:15
製作したコンピュータの特長などについて発表(セールストーク)を行い、完成したコンピュータ上で応用プログラムを実行するデモンストレーションを行う。
レポート [(A,B,C,D) 完成したプロセッサに関するドキュメント、(E) 実施報告]
締切: 6/14(金) 16:00
提出方法:GitLabの各グループのリモートリポジトリにfinalという名前のプロジェクトを作成し、masterブランチのプロジェクトのトップディレクトリに、それぞれ以下に指定する青字のファイル名で文書(形式は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部] 機能設計仕様書 (ファイル名:function_status-[学籍番号].pdf)
    • 設計を担当したコンポーネントの機能設計仕様 (中間レポートからの追加分がある場合)
    • 設計を担当したコンポーネントのうち主要なものの、単体での性能評価 (LUT数、遅延時間(CADでの予測値)、クリティカルパス、など)
    • 考察および感想
      • 設計全体に関する考察、ならびに、特に自分が担当した部分に関する詳細な考察を行う。
      • 本実験を通して得られた知見や実験の感想などを記す。
  5. [グループ毎に1部] 実施報告書 (ファイル名:implementation_report.pdf)
    • 中間報告時点で検討したアーキテクチャ設計の目標に対して、どこまで達成できたか。目標・計画を変更した場合は、その経緯や意図など。
    • 分担状況:プロセッサを構成する各ブロックの設計を、各グループ構成員がどのように分担したか。
    • 最終的な設計データのGitLab上のプロジェクトSIMPLEのタグ名
[提出前にチェック] TA用最終報告チェックポイント一覧 (txt形式、UTF-8)

資 料

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

講義資料

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

* Verilog HDL による回路設計記述
代表的なHDLの紹介と、Verilog HDLの基本的な文法について解説しています。
* CADツールを用いた設計フロー (実験3HW編)
Quartus Primeについて、HDL設計での使い方と実機での実行方法までの設計フローを解説しています。
* タイミング制約の設定と検証
タイミング制約の解説とTimeQuest Timing Analyzerの使用方法に関する補足資料です。
* SIMPLEアーキテクチャ
SIMPLEアーキテクチャについて、命令セットと基本的な実装を解説しています。
* Gitの使い方
Gitの基本的な使い方と演習室サーバに用意されているGitLabについて解説しています。
* 2018年度後期 実験及演習2HW「CADツール上での論理設計」
春休みで全て忘れてしまった方へ、、、
Quartusのバージョンが古いので適宜読み替えること

SIMPLE

* SIMPLE 設計資料 (ver 3.2: 20190404)
設計するプロセッサのアーキテクチャ、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はIntel PSG (旧Altera)のQuartus Prime 17.1を使います。バージョン違いでネットの情報があてにならないことが多いので、注意してください。
FPGAはAltera社のCycloneIV EP4CE30F23I7Nを使用します。

* Quartus Primeダウンロード・センター
本実験で使用するツール・バージョンであるQuartus Prime 17.1のライト・エディションのダウンロードページです。(演習室にはスタンダード・エディションがインストールされています)
* オンライン資料: インテル FPGA開発ツールのサポート
Intel Quartus Primeのオンライン資料です。 基本的には最新バージョンのツールについて掲載されているため、日本語化が追いついていません。古いものを探せば日本語版もありますが、バージョンが異なると説明が通らない解説もあることに注意してください。
尻込みするくらい多くの資料があって困りますが、以下の物を重点的に見るのが役に立つと思います。
  • Quartus Prime Standard Edition Handbook
    Volumeごとに3つのファイルに分かれていますが、今回の実験の内容で役に立つのは以下のあたりです。
    • Volume 1, Chapter 17: Optimizing the Design Netlist
    • Volume 2, Chapter 1: Constraining Designs
    • Volume 2, Chapter 10: Design Optimization Overview
    • Volume 2, Chapter 12: Timing Closure and Optimization
    • Volume 2, Chapter 13: Power Optimization
    • Volume 2, Chapter 14: Area Optimization
    • Volume 3, Chapter 8: The Intel Quartus Prime Timing Analyzer
    • (Volume 1, Chapter 3: Intel Quartus Prime Incremental Compilation for Hierarchical and Team-Based Design.
    • (Volume 2, Chapter 2: Managing Device I/O pins)
  • Timing Analyzer Quick Start Tutorial
  • Simulation Quick-Start for ModelSim-Intel FPGA Edition (Intel Quartus Prime Standard Edition)
* Cycloneデバイス・ファミリのドキュメント
Altera Cycloneデバイス・ファミリのデバイス・ハンドブックやデータシートがあります。
* Altera Forum
どうせなら英語で世界中に質問しましょう。

過去の参考資料

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

* CAD立ち上げからFPGAへのダウンロードまでの操作
CAD立ち上げからFPGAへのダウンロードまでの操作を箇条書きでまとめたものです。講義資料と内容はだいたい重複しています。
* プロセッサの構成に必要となる論理ゲート
最低限覚えておきたいゲートとその真理値表。 (論理システムを履修した皆さんには常識ですよね。)
* プロセッサの構成に必要となる回路
基本的な回路を挙げておきます。 (論理システムを履修した皆さんには常識ですよね。)

参考文献

* 富田眞治, 中島浩 共著: コンピュータハードウェア, 昭晃堂, 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, 共立出版

リンク

* 京都大学
* 工学部
* 情報学科計算機科学コース
* 情報学科計算機科学コース 計算機室(学生実験)
* 情報学研究科
* Intel PSG (Altera)

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