...

論理合成とシミュレーション

by user

on
Category: Documents
11

views

Report

Comments

Transcript

論理合成とシミュレーション
PLD ツール使用例
目次
1.更新の履歴とお願い
2.PLD ことはじめ(参考文献の紹介など)
3.ダウンロードケーブルの作成
4.ISE6使用例
5.エラーと対策
6.出力波形にノイズが載るとき
7.CPLD が熱くなるとき
8.プログラム事例の紹介
9.シミュレーションツール使用方法
お詫び
更新の履歴とお願い
このマニュアルには不備な点が多々あるかと思います。引き継いだ方一読しておかいしいと感じた
方は加筆修正の上下記の履歴に更新日、更新内容、氏名を書いてください。
更新履歴
2003
2004
11/28
仮完成
小澤
12/5
ピンの固定について
小澤
12/9
IC の熱くなる理由についての対策
小澤
4/4
シミュレーションツール使用方法
小澤
PLD ことはじめ
Xillnx のCPLD ならびにFPGA の開発ツールISE6を使用するまでの準備と使用方法を簡単に示す。
最初に、つまずいた時の参考に参考書籍ならびに参考ホームページを上げる。
・システム&LSI 設計アウタートアップ
(デザインウェブマガジン増刊号 1999 年 6 月 1 日発行)
:CQ 出版(図書館にある)
・FPGA/PLD 設計スタートアップ
(デザインウェブマガジン8月増刊号 2002 年 8 月 1 日発行)
:CQ 出版(図書館にある)
・http://www.hobby-elec.org/menu.htm
リンクを開けばわかるがいくつか書籍も書いている。
・トランジスタ技術 2003 年5月号(図書館にある)
・デザインウェブマガジン 2003 年1月号(付録つきで売り出されたのでないかもしれない。
)
・http://www.xilinx.co.jp/
今回使用したデバイスのメーカー開発ツールのダウンロード、セミナー案内、規格表など情
報満載である。
以上のものがよく見た資料である。大いに参考にするとよいと思う。
それでは最初に ISE をインストールします。
ISE をダウンロードする時にユーザーID を作るように言われます、
適当につくってください。
ただし、
メールで情報が送られてくるので、メールは受信可能なものにしておいてください。あとは流れに沿
って ISE をインストールしてください。
ダウンロードケーブルの作成
次に示す回路図と同じものを作ってください。
(JTAG Header のほうのみで可)材料は以下のもの
でできると思います。材料は教員に頼むなり、日本橋に買い出しに行くなりしてください。共立電子
産業とパソコンショップでそろうと思います。
ここで少し回路の説明をしたいと思います。回路図中左側の枠にあるのは、プリンターケーブルの配
線番号でコネクタ側に番号が振ってあると思いますので、線を切って中のせんを1本ずつテスターで
確認しながら作ってください。
右側のJTAG Header がCPLD 用ピン名なので下のFPGA Header
は無視してかましません。
IC の1番ピンはパッケージを上から見て丸いへこみがあるほう、もしくは、くぼみの左側から反時計
回りに番号が振られているのが普通です。基盤実装時にソケットの凹みと IC の凹みを同じ向きに持
ってくるのが一般的で、IC はソケットを半田付けしてから差し込むので向きを間違えないための慣例
でもあります。更に配線時に IC の中に使わないピンがいくつかあると思います。今回使う素子は C
‐mos タイプのものなので特に入力ピンを不安定な状態
(信号未入力、
H か L かはっきりしない状態)
にしておくと IC の加熱を引き起こし故障の原因となります。必ず使わない入力ピンは出力が変化し
ないように H か L に接続しておきましょう。あとは間違いなく正確に半田付けしてください。
作成回路図
必要部品
部品
数量
購入場所
小信号用ダイオード
2個
共立
74HC125
2個
共立
100Ω
7本
共立
300Ω
5本
共立
1kΩ
1本
共立
5.1KΩ
1本
共立
100pF
4本
共立
0.1μF
1本
共立
プリンタケーブル
1本
パソコン
カーボン抵抗
セラミックコンデンサ
(パソコン接続用)
ショップ
D-sub(25ピン)
など
6ピン以上のコネクタ
一対
共立
1枚
共立
(基板上に
取り付け可能な
オス、メス)
プリント基板
(回路が実装できるも
の)
※注コンデンサ、抵抗については
10%くらい表示値と異なっていても
支障ないと思われるが、保証はされていない。
ISE6使用例
ハードウェア記述言語を用いてプログラムを書きます。
プログラム言語は今回 Verilog-HDL(以下 Verilog)を用いましたが VHDL というものもあるそうで
す。
Verilog を選択した理由は同科コンピュータ応用研究室で同じ言語を使用しているからで言語の特
徴を考えてのものではないのでどちらを選んでもよいでしょう。
さてプログラムですが、僕自身勉強中なので飛ばします。
手順として次の事も書きたいのでサンプルプログラム(同フォルダ内の kozawa.v)を載せます。こ
れは3入力 AND 回路です。開きましたか?簡単でしょう。なんとなく記述の仕方もわかったかと思
います。ではついに開発ツールの使用方法を示します。
最初にスタートメニューXillinx ISE6の中の Project Navigator を起動した下さい。
(この背景はパワエレ研 Onion のものです。製作者の趣味ではありません。おそらく製作者と同期の
K.K 氏の趣味と思われる。)
これからが本番です。まず、File→newproject を選択してください。
そこで任意のプロジェクト名(ここでは「test」とする)を入れ次へをクリックしてください。
次に使用デバイスのファミリー・型番・パッケージ・スピードグレードを選択し、シミュレーション
言語に Verilog を選択して次へを選択してください。
以降は何も選択せず完了まで次ぎ経を選択してください。
次に Sources in Project ウインドウの任意のプロジェクト名「test」を選択し、みぎクリックから
New Source を選択してください。
そこで、ウインドウの表から Verilog Module を選択し、ファイル名を test として完了まで次ぎ経を
選択してください。
ついに HDL を打ち込むときがきました。test.v のウインドウが開いていると思うのでその中に打ち
込んでください。
(ここでは以下の記述があるものとして話を進めます。
)
ソースプログラム
module test (in1,in2,in3,out1);
input
in1,in2,in3;
output
out1;
assign
out1=in1&in2&in3;
endmodule
コンパイル
まず Processes for Source ウインドウのImplement Design → Synthesize-XST をダブル
クリックしてください。
そうするとコンパイルが始まります。
成功すると、Completed process "Synthesize".と最後に表示されると思います。もし出なくても成功
していることがありますが、警告が出れば必ずどこかが間違っているのでソース(書いた HDL のこ
と)を見直してください。
コンパイルに成功すると次は自分の作成した HDL が思い描いていた論理回路と同じかどうか確かめ
なくてはいけませんので Processes for Source ウインドウの Implement Design →
Synthesize-XST → View RTL Schematic をダブルクリックしてください。以下のような画面
がポップしてくると思います。
これでは入力と出力しか分かりませんので大きな図をダブルクリックしてください。
そうすると3入力の AND が形成できたことが分かります。この結果は今回書いた内容と一致するも
のだったのですが、もし異なっていたらソースを確かめてかきかえる必要があるます。書き換えが終
われば、コンパイル⇒論理回路の確認ともう一度手順を踏んでください。
次は、IC のピンの割り当てを決めます。と言っても IC の規格で最初から決まっているものもあるの
で、そういったものは私達が決めることは出来ないのですが、User I/O と呼ばれるピンについては
自由に決めることが出来ます。以下にその方法を記します。
まず、User Constraints → Assign Package pins をダブルクリックしてください。
すると、以下のようなウインドウがポップしてきますのでピン設定を始めます。
上図の中に、Design Object List‐I/0 Pins という、ウインドウの中に、I/O Nameの欄があ
りますので、
そこからI/O meをドラックしてTop Viewと書いてある枠に薄茶色の丸があるので、
ドラックしてください。そうすると、薄緑に色が変わると思います。そこでさきほどドラックしてき
たもとのウインドウを見てみると Loc の欄などに値が現れたと思います。このデータを保存してくだ
さい。そうすると、Edit Constraints ( Text ) 内容が変更されます。ピン数が少ないうちは毎回設定
してもいいのですが、増えてくると大変なので、これをコピーしておきましょう。
(回路をはんだ付け
し終わった後は必須です。
)
新しいプロジェクト名にしても少し書き換えるだけで入出力ピンを固定し
てくれるので便利です。
今回は IC のパッケージの 1 から 3 番ピンをそれぞれ、in1、in2、in3、に割り当て Out1 を 4 番ピン
に割り当てましたので Loc の欄にそれぞれ P1,P2,P3,P4 と振られているかと思います。これでピンの
選択は終わりましたのでデータをセーブしてください。次に IC に対してさきほどのピン配置を決定
させる作業に入りますので、Project Navigator のウインドウに戻ってください。今度は、Sources
in Project ウインドウの中の test.v を選択して、Implement Design → FIT をダブルクリック
してください。そうすると FIT の前に緑のチェックがつくと思います。
次に FIT → View Fitted Design (Chip Viewer)をダブルクリックしてください。
そうするウ
インドウがポップしてきますので、そのウインドウでピン配置が正確に達成されているか確かめてく
ださい。
(回路が大きくなりすぎると思い道理に配置できないことがあるそうです。
)ほとんどの場合
問題なく達成されていると思います。
最後に IC にデータを送る作業です。これが無事に終われば、完了です。
Generate Programming File → configure Device(iMPACT)をダブルクリックすると下の
ようなウインドウが出ますので次ぎへを選択してそのまま進んでください。
その後ウインドウがポップしてくるので OK を選択すると次のような選択画面が出てくるので、
tes.Jed を選択し開いてください。
(下のウインドウが開かない場合はライター基盤の製作ミス、ライ
ターの未接続、電源の未投入などが考えられます。ので、見直して再度行ってください。
)
次に下のウインドウが表示されたと思います。これで作業は完了です。また、再度焼きこむときはデ
バイスのアイコンをダブルクリックしてください。
本当に最後に製作回路の確認が待っています。がんばってください。
最後に今回は手順を追って示しましたが基本的な流れであってProcesses for Source ウインドウ
の項目の前に?マークもしくは、緑のチェックがついているかと思います。 ?マークは、完了して
いない項目、緑のチェックは、完了済みの項目、黄色のびっくりマークは警告、バツはエラーとなっ
ているので確認しながら進むと良いでしょう。このソフトには、シミュレーター機能もあるようなの
ですが、今のところ使いこなせていません。
HDL 言語についてはほとんど触れませんでしたがそれは書いている今の段階ではほとんど理解して
いないからです。余裕が出てくれば追記されるかもしれませんが今のところ予定はありません。最初
に挙げた資料をもとに勉強してください。
エラーと対策
チェックが無いときはクリックすべし
プログラムエラーのときに警告マークが出
る。ソースプログラムをもう一度見直す。
ピン配置の不備のときに出る。
Assign Package Pins を更新記録
することで直すことが出来る。
今のところ傾向と対策は無いが、ソース
から見直すと良いと思われる。
エラーと対処
出力波形にノイズが載るとき
CPLD を基盤に実装後波形を計測するとノイズが載っていることは良くあることです。CPLD におい
て改善策があります。それはポート割り当ての無いユーザーI/O を GND に CPLD 内部でつなぐよう
に指定することです。更に乗りにくくするためには、その GND に内部で繋がったものを外部でもつ
なげてやることが有効なようです。これからポート割り当ての無いユーザーI/O を GND に CPLD 内
部でつなぐ方法を説明します。
まず、Processes for Source ウインドウの Implement Design を右クリック次にプロパティ
propertiesを開きFittingのシートを選択しCreate Programmable GND Pins on Unused I/Oの項目
にチェックをつけて OK を選択し、もう一度コンパイルしなおしてください。これでノイズ対策はば
っちりのはずです。くれぐれも実装基盤で信号がショートしないように気をつけてください。
CPLD が熱くなるとき
ロジックテスト中 CPLD が熱くなることはありませんか? 回路の規模が大きいので発熱もハンパで
はありません。
それは、主に入力ピンを開放(入力判定がはっきりしない)時に起こります。それはどのような状況
下と言うと、入力ピンに判定ラインをまたぐような信号が高い周波数で入力されるとそれにあわせて
CPLD 内部で C‐MOS のアームが動きます。このとき電荷の充放電ならびに貫通電流と呼ばれるも
のが発生し通常の動作のときよりも明らかに多い電流を流すことになるのです。対策としては、入力
端子をフリーにしない。私も熱くしました。対策としては入出力をきっちりつないでから試験するか
もしくは入力ピンに抵抗を介して電源または GND につなげてしまうのが有効でしょう。これで入力
端子に信号が入らなくても電源かGNDに電位がくっつくのでCPLDが必要動作以上の熱を発するこ
とは無いでしょう。私は、これに気づいた後、CPLD への入力信号がコンパレーターでのみ作られて
いたので全ての入力ピンを抵抗を介して電源にくくりつけました。以降、熱くはなっていません。
プログラム事例の紹介
いまだプログラムの文法などわからない事が多い、しかし早く製作したいときに便利な事例集を公開
します。これは,ザイリンクス社のホームページ(ユーザー用)に掲載されていたものです。メーカー
側の推奨の記述方式なので信頼性が高いでしょう。それと私が個人的にファイル名を変更してしまっ
たためもとのファイル名は定かでない。
(確かローマ字)ので同フォルダ内に入れておきます。
片方が言語使用で、文法及びコンパイル時の制約などについて解説したもの、もう一方がライブラリ
で、メーカーが基本素子を言語記述しています。
この二つがあれば何とかなるでしょう。
シミュレーションツール使用方法
シミュレーション方法として ModelSim の Xillinx 社専用無料バージョンを用いて製作モジュールに
対し入力信号を定義して、出力信号を入力信号と共にグラフ表示するものを示す。
環境のインストール
ISE がインストールされている状態で、Xillinx の公式ページのから MXE_5.7g_Full_installer.exe を
ダウンロードし、インストールする。その過程でほとんどの項目は触らないでよいが、シミュレータ
ーのバージョンを free のものをラジオボタンで選択してください。その後ネット登録からライセンス
のファイルをメイルで受け取りインストール時にできた Modeltech_xe_starter フォルダにファイル
を入れてください。これでシミュレーション環境は、整ったはずです。
シミュレーションのための擬似信号生成ソースの作り方
これからは先に述べた3 入力アンドの回路を対象としたシミュレーション波形をつくり解説を進めた
い。おおまかな概念として回路を指定しているモジュールに対して上位階層として信号生成モジュー
ルを作るような感じで思っていただけると説明しやすいです。
手順として、シミュレーション対象のあるプロジェクトにおいて、Verilog のファイルを作ります。
Project→NewSurce から VerilogModule を選択しファイル名をつけます
(view.v として話を進める)
。
次に、入力信号は test.v を対象としたときの事例を書くと下の図のようになる。
内容は、
「`timescale 1ns/1ns」の一行は解析精度を決めているが、現在信号の変化速度は定義していないのでこ
の設定のままで OK
「parameter STEP = 100;」の一行は STEP を 100 と言う数字であると定義している。
最後に initial から end までに入力信号の変化がかかれている。
`timescale 1ns/1ns
module view;
reg
in1, in2, in3;
parameter STEP = 100;
test test( in1, in2, in3,out);
initial begin
#0
in1 = 0; in2 = 0; in3 = 0;
#STEP
in1 = 1; in2 = 0; in3 = 0;
#STEP
in1 = 0; in2 = 1; in3 = 0;
#STEP
in1 = 1; in2 = 1; in3 = 0;
#STEP
in1 = 0; in2 = 0; in3 = 1;
#STEP
in1 = 1; in2 = 0; in3 = 1;
#STEP
in1 = 0; in2 = 1; in3 = 1;
#STEP
in1 = 1; in2 = 1; in3 = 1;
#STEP
$finish;
end
endmodule
ついに、シミュレーション波形を出すにはまず、test.v が IC に書き込み可能な状況で Design Entry
Utilities のしたの Launch ModelSim Simulator をダブルクリックしてシミュレーターを起動して
ください。
するといくつかウインドウがポップしてくるのでそのなかからしたのウインドウを選択、Simulate→
Run→Run-All を実行してしたのウインドウがポップしてくるので、いいえを選択してくださいしな
いと、シミュレーターが終了してしまいます。
次に、下のウインドウにおいて、波形が見やすいように操作してください。
うまく操作すると、下のような見やすい波形が表示できると思います。
以上が、シミュレーションの操作手順ですが完全でない部分やいいかげんな部分が多いと思います。
もっと良い方法があると思います。加筆修正してください。
お詫び
いちお、仕様書マニュアルのような形の題になっていますが、掲載場所の開示などばかりになってし
まった事をお詫びします。これは私の技術の及ばないとことにあります。引継ぎをされた方は、ご苦
労も多いかと思いますが、がんばってください。
Fly UP