マイクロプロセッサ 第1回 ガイダンス VerilogHDLのシミュレーション環境 慶應義塾大学理工学部 天野英晴 [email protected] http://www.am.ics.keio.ac.jp 授業資料はC-plus いまさらだが、、、 • コンピュータはIT社会の基盤部品 – ノートブック、スマートフォーン、タブレット – サーバー、クラウド、スーパーコンピュータ – ビデオ機器、テレビ、ゲーム機器 – ネットワーク機器 – 冷暖房、冷蔵庫、電気釜、洗濯機、掃除機だって 制御はコンピュータ しかし、概観の話は学部の計算機の授業でやっているだろう 何をやるか? • CPU(中央処理装置)の設計をやり、シミュレーションをやりながら、内部構 成を理解する。 • RISC (Reduced Instruction Set Computer)の命令セット、構成を中心に据 える • ハードウェア記述言語でのディジタル回路設計を学ぶ • FPGAでもASICでも実装可能 – – – – – – – – – – Verilog-HDLの記述方式、シミュレーション方法 演算回路 ALUと選択構文 CPUのデータパス、レジスタとメモリ プログラム格納型計算機 RISCの命令セットアーキテクチャ 分岐命令 サブルーチンコールとスタック パイプライン処理 論理合成と設計最適化 授業のやり方 • テキスト:「作りながら学ぶコンピュータアーキテク チャ」 天野、西村著 培風館 • 授業資料はhttp://www.am.ics.keio.ac.jp/chuo_aki に掲示(C-plusにも一応掲示) • 授業を70分、演習を20分 • 演習は次の回までにメールで提出すれば問題ない – 休んだら資料をダウンロードして演習をやれば良い。 – 週一回しか来ないが、メールによる質問は歓迎 • 成績の付け方 – 最終演習+毎回の演習によって付ける – 最終演習を提出しないと単位は取れない – 最後まで付いてこれればほとんどAが付く コンピュータの構成 この授業で やるところ 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で終わる ここにはセミコロンをつけては ダメ テストベンチ • シミュレーション制御のための記述 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: Chuo 学籍番号 名前 名前はローマ字で書いてください Verilogの実行 • ファイルの解凍 – tar xvf XX.tar • シミュレーションのコンパイル – – – – iverilog *.v ディレクトリ内に同一モジュールがある時は、ファイルを全て指定する iverilog test_poco.v poco1.v rfile.v alu.v など エラーが出た場合、メッセージを良く読んで! • シミュレーションの実行 – vvp a.out • 波形の表示 – – – – gtkwave XX.vcd モジュールを選択すると信号名が表示される これをクリックして選択→Appendをクリックすると波形が表示される スケールがpsecなのでマイナス(-)をクリックしまくってスケールを 調整
© Copyright 2024 ExpyDoc