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: Hardware Description Language テキストファイルで回路表現する為の言語 ソフトウエア プログラムの様に書ける 代表的な言語は Verilog-HDL と VHDL 最近は HDL が主流ですが何故でしょう? ちなみに FPGA 実装時に回路図入力もできます 3
回路表現方法 部品とその配線情報が回路情報 4 要素の接続で決まるので その接続を表現できれば良い 主な表現方法 回路図 Hardware Description Language (HDL) Verilog-HDL, VHDL, SystemC など FPGA 回路は HDL で書く事が多い 4
何故 HDL を使うのか? 回路図入力には幾つかの問題がある 作業効率が悪い 基本的に 1 信号を 1 本の線で表現 入力ミスが多くなる 大規模回路では読みにくい 回路図が複数枚になると信号の接続先を調べるだけでも大変 5
HDL の魅力 設計作業を効率よく行うために誕生 効率良く入力できる事で 入力ミスを少なく 大規模回路が扱えるようになった 読みやすい 他には コードを仕様書に近づける 回路動作の理解は回路図の方が優れています ブロック図 回路図なども組み合わせて設計を進めてください 6
HDL の注意 魔法の言語ではありません HDL を使えばハードを知らなくてもハード設計ができると思っている人がいますが 作業効率を上げる為の手法です それ以上の期待をしてはいけません 回路図の接続をテキストファイルで表現しただけです 回路を理解しなければ設計はできません 7
Verilog HDL テキストファイルとして書きます テキストエディタを使って書きます 各自好きなエディタを使ってください 通常拡張子は.v 文法が C 言語に似ている しかし 動作はまったく異なるので注意!! 回路図からHDLへ書き直すと理解しやすい 8
最初に衝撃的な事実! HDL 文法的に正しくても 動かない回路が生成される事がある! この様な事が起きるのでハードウエア設計が難解だと思う人が少なくないようです 回路を考えずにコーディングしてはいけません 回路を考え その回路を HDL で記述して下さい 9
何故 その様な事が起きるのか? シミュレーション用の記述も含まれている シミュレーションのみで使用する時は PC 上の動作に限定されるので回路化する必要が無い 回路を言語で記述するために設計されている 言語で回路を記述 生成するためではない 10
どの様に対応するのか? 文を記述することで設計しない 回路を考えた後で言語を用いて回路を記述する 11
さっそく Verilog-HDL を使ってみましょう!! 12
トレーニングコースで使用する文法のみ解説します 詳細は付録 Verilog-HDL 入門 または参考文献を参照してください ここで紹介する書き方の他に様々な書き方があります 書籍に色々な書き方が紹介されていますので気に入った 凝った書き方や美しい書き方を見つけてください 13
最初の目標 AND を Verilog HDL で記述してみましょう FPGA SW_A SW_B LED0 R ある回路の集まりを回路ブロックと呼ぶ Verilog-HDL ではモジュールと呼びます 14
テキストファイルについて Verilog-HDLコードはテキストファイルとして作成する 拡張子は.V 通常 1ファイルで1 回路 ( モジュール ) 数字から始まるモジュール名は使用しない 文法では決まっていないが問題を起きにくくするために奨励 大文字 小文字は区別される コメントは /* から */ または// から行末まで 基本的に1 文は ; で終わる 15
演算子 O=A&B; A B O I O O=~I; O=A B; A B O A B O O=A^B; 16
Assign 文 assign 文をつかう 明示的に組み合わせ回路である事を示す 例 )AND 回路 Assign O = A &B; 17
AND ゲート回路 TSET.V SW_A SW_B LED0 入力信号 : SW_A, SWB モジュール名 :TEST ファイル名 :TEST.V 出力信号 : LED0 このモジュールを Verilog-HDL で書くと 18
AND ゲートの HDL コード コメント Module 名回路の名前区別できる好きな名前をつけてよい ファイル名と同じにした方が良い module で始まり endmodule で終わる () の中に入出力信号線リストを書く 信号名 + 入出力の属性定義 input, output, inout の 3 種類 ポートリストの最後は, が無いので注意 文の最後は ; で終わる コメント 回路は assign を使用して書く 右辺が入力 左辺が出力 19
ここから実習です 開発ツール Xilinx 社 ISE を使います 20
ISE ISE は Xilinx 社の FPGA 開発統合環境 様々なツールを ISE 画面から操作できる ISE を使って回路入力や FPGA データ生成を行います 21
プロジェクト作成 作業をするめに必要な環境を設定します作業内容 作業ディレクトリの作成 ISEプロジェクトの作成 作業ディレクトリの指定 使用デバイスの指定 プロジェクトは一つの FPGA で一つ作ります 22
ISE のプロジェクトについて 一つの FPGA で一つ作ります 異なる複数の回路を一つのプロジェクトに入れてはいけません 回路が異なればプロジェクトも分けます 新しいプロジェクトを作るときは新しいフォルダを作り その中に作ります 一つの作業ディレクト内に複数プロジェクトを作ってはいけません 23
作業ディレクトリの作成 以下を ISE 作業ディレクトリとします C: Temp FPGA_Seminar を作成して下さい この資料では上を作業ディレクトリして使用しますが 他のフォルダでも構いません フォルダ名に日本語やスペースがあるディレクトリはやめておいた方がよいです 24
ISE を起動しましょう! ISE Project navigator を立ち上げて下さい アイコンをダブルクリック! または 全てのプロブラム Xilinx Design Tools Xilinx ISE Design Suite 14.5 ISE Design Tools Project Navigator 25
ISE プロジェクトの作成 File 26
プロジェクトファイルの作成プロジェクト名と作業ホルダの指定 2 TEST と入力 1 Location ファイル選択画面からディレクトリを選択 C: Temp FPGA_Seminar まで選択 TEST は Name を入れると自動で付加される HDL で記述するのでこのまま 3 27
プロジェクトファイルの作成デバイスの指定 使用するデバイスを選択する Device 名の末尾は 50A ではなく 50AN 28
確認画面 設定内容が正しい事を確認間違っていたら Cancel ボタンでやり直し 29
プロジェクト作成終了 30
Verilog-HDL モジュール作成 AND 回路を HDL で記述します ファイル名 :TEST.v モジュール名 :TEST 31
新しいモジュールの追加 1xc3s50an-4tqg144 の上で右クリック 2New Source をクリック 32
ソースファイル名の指定 2 ファイル名 TEST.v を入力 1Verilog Module をクリック 3 チェックマークを確認 4 クリック 33
ポート名の指定 1 モジュール名 TEST を入力 2 ダブルクリックして信号を入力 3 信号の方向を設定 4 クリック 34
モジュール確認 1 正しいか確認 2 クリック 35
作成されたひな型 ここに AND 回路のコードを書く ここのタブで画面を切り替える事が出来ます 36
AND 回路の再確認 この部分のひな型が出来た TEST SW_A SW_B LED0 R AND を記述して下さい 37
TEST.v に AND 回路を追加 output は wire と同じ意味なので wire 宣言は要らない 書き加えるのはこの 1 行 組み合わせ回路は assign 文で書きます 38
書き終わったらセーブ クリック 39
履歴 2012/5/17 第 1 版 ISE13.4 対応内田智久 (Esys), 林達也 ( 大阪大学 ) 2013/5/10 第 9 版 ISE14.5 対応内田智久 (Esys) 40