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

Download Report

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

計算機構成 第1回
ガイダンス
VerilogHDLのシミュレーション環境
情報工学科
天野英晴
いまさらだが、、、
• コンピュータはIT社会の基盤部品
– ノートブック、スマートフォーン、タブレット
– サーバー、クラウド、スーパーコンピュータ
– ビデオ機器、テレビ、ゲーム機器
– ネットワーク機器
– 冷暖房、冷蔵庫、電気釜、洗濯機、掃除機だって
制御はコンピュータ
しかし、概観の話は「計算機基礎」でやっている
何をやるか?
• CPU(中央処理装置)の設計をやり、シミュレーションをやりながら、内部構
成を理解する。
• RISC (Reduced Instruction Set Computer)の命令セット、構成を中心に据
える
• ハードウェア記述言語でのディジタル回路設計を学ぶ
• 設計したCPUは秋学期の実験で使う
• FPGAでもASICでも実装可能
–
–
–
–
–
–
–
–
–
Verilog-HDLの記述方式、シミュレーション方法
演算回路
ALUと選択構文
CPUのデータパス、レジスタとメモリ
プログラム格納型計算機
RISCの命令セットアーキテクチャ
分岐命令
サブルーチンコールとスタック
論理合成と設計最適化
授業のやり方
• テキスト:「作りながら学ぶコンピュータアーキテクチャ」
天野、西村著 培風館
• 授業資料はhttp://www.am.ics.keio.ac.jpに掲示
• 授業を90分、演習を90分→3単位はやや単位効率が悪いが
その分調整する
• 演習はTAが面倒見てくれる。
• 6時15分には基本的に終わる。多くの人は6時前に帰る。
• 成績の付け方
– 試験+演習(各回5点、間違うと0点)により付ける
– 休んだ場合、後から提出してもよい
– この科目は楽に単位が取れるという意味で楽勝科目ではないが、A
の比率は高い→普通に演習を提出し、試験前にちょっと勉強すれば
Aが取れる!
SoC設計論
SoC設計演習
マイクロプロセッサアーキテクチャ特論
コンピュータアーキテクチャ特論
VLSI設計論 (MIPSの設計、レイアウト)
情報工学実験第2 (I/Oを含んだマイクロプロセッサ)
コンピュータアーキテクチャ
ディジタル回路
授業の流れ
計算機構成同演習
計算機基礎
大学院
4年春
3年秋
3年春
2年秋
2年春
コンピュータの構成
この授業で
やるところ
Disk
Key
CPU
Display
System
Bus
Bridge
I/O Bus
Memory
System
コンピュータの3要素
コンピュータのクラス
数値計算用
特殊コンピュータ
性能
スーパー
コンピュータ
データセンター用
クラスタ
信頼性重視
スループット重視
サーバー
デスクトップ、ラップトップ
タブレット
スマートフォン
最新のCPUを利用
性能価格比
グラフィック性能が重要
組み込みプロセッサ
特定のプログラムのみ動作
コスト、消費電力が重要
100
10000
100万
価格帯
1億
100億
コンピュータの歴史
2度の大変革
単体コアの性能向上
性能
マルチコアの時代
マイクロプロセッサ ×1.22/年
性能爆発時代
メインフレームの時代
×1.5/年
ムーアの法則
×1.3/年
1960
1970
1980
1990
2000
2010
年
ハードウェア記述言語
• HDL (Hardware Description Language)
• 「計算機基礎」で習ったゲート接続図を使ったハード
ウェア設計は今は使われない
– スケマティック設計と呼ばれる
• Verilog-HDLとVHDLの二つが標準
– 最近は多くのCAD (Computer Aided Design)が両方を
受け付ける
– CADによる論理合成、圧縮によってゲート接続図(ネット
リスト)に変換される
• 最近はCレベル設計も一般化
– 将来は用途によって使い分けられるだろう
– 大学院の授業で紹介、演習もある
VerilogとVHDL
Verilog-HDL
出自
VHDL
標準化
論理シミュレーション記 仕様書
述
デファクトスタンダード 国際標準
記述
Pacal風(嘘)
PL/I→ADA
特徴
広い範囲でシミュレー
ションは可能
記述が厳格
情報工学科ではVerilog HDLを採用
Verilogの基本文法
/* 1bit adder */
module adder (
input a,b, output s);
assign s = a+b; // add a,b
endmodule
コメントはC言語と同じ
日本語キャラクタはトラブルの
元なので止めて下さい
なぜかセミコロンが要る
ハードウェアモジュールは
モジュール文で定義、
パラメータの書き方はC言語
と似ている。
assign文は信号の「接続」
「出力」を示す。
endmoduleで終わる
ここにはセミコロンをつけては
ダメ
adder.v: 拡張子は.v、ファイル名は
トップモジュール名と同じにする
テストベンチ(test.v)
• シミュレーション制御のための記述
module test;
parameter STEP=10;
reg ina, inb;
wire outs;
adder adder_1(.a(ina), .b(inb), .s(outs));
initial begin
$dumpfile(“adder.vcd”);
$dumpvars(0,adder_1);
ina <= 1’b0;
inb <= 1’b0;
#STEP
$display(“a:%b b:%b s:%b”, ina,inb,outs);
ina <= 1’b0;
inb <= 1’b1;
#STEP
…
テストベンチの記述
parameter文は後に述べるdefine
文と似ているがより柔軟
parameter STEP=10;
reg文での宣言では値を記憶できる。
reg ina, inb;
wire文は信号に名前を付けるだけ。
これは後の授業で紹介する。
wire outs;
adder adder_1(.a(ina), .b(inb), .s(outs));
インスタンス名
別ファイルで宣言したモジュール名
入出力への接続
ピリオド以下はローカルな名前を使う
シミュレーションの制御
initial文はシミュレーションを一回実行
initial begin
$dumpfile(“adder.vcd”); 波形ファイルを指定
$dumpvars(0,adder_1); 記録する範囲を指定
ina <= 1’b0;
reg文にはブロッキング代入<=
inb <= 1’b0;
(これも後に紹介する)
ここでは入力を制御
#STEP 時間消費
$display(“a:%b b:%b s:%b”, ina,inb,outs);
ina <= 1’b0;
値の表示、プリント文と似ている
%bで2進数表示
inb <= 1’b1;
リターンは自動的に入る
#STEP
Verilog-HDLのシミュレーション
• Ikarus Verilogを利用
〇コンパイラ型のフリーソフトウェア
• Linux, Windowsマシンにインストール可能
• iverilog XX.vでコンパイル、必要なファイルを全部書く
• vvp a.outで実行、かなり高速
〇Verilog2000に対応
×遅延付シミュレーションができない
• 波形Viewerはgtkwave
〇フリーソフトウェア
Linux,Windowsマシンにインストール可能
gtkwave XX.vcdで起動
基本的なViewerの機能は全て持つ
×他のViewerに比べて少し使いにくいかも、、
後は実際にやってみよう
演習
加算を論理AND(&)に置き換えてシミュレーションを
実行しよう
andは予約語なので注意
Webからtar fileを取って来る
tar xvf 1kai.tarで解凍
提出は
[email protected]
Subject: PARTHENON 学籍番号 名前
名前はローマ字で書いてください