まずは、MAXⅡに5つのLEDを順番に点灯させていく簡単なプログラムを登録して動作確認。
VHDLソース
アクエリアスの時代到来、そして新たな時代に合った文明や科学、人のありかたなどを探求してみたい。そして、太陽の国である日本は地球人類のリーダー的存在となる必要があります。その一助を担えれば幸いです。
2009年12月27日日曜日
2009年12月20日日曜日
パルスジェネレータ&カウンタの製作(その2)
先週作ることができずに残っていた周波数カウンタ用のプリアンプとプリスケーラ部分を作った。
NEC製のuPB1507GVというプリスケーラは、3GHzまでカウントできるものなので、高周波でも大丈夫なようにしなければならない。そのため、写真のように、25mm×35mmに切った両面生基板の上にカッターナイフでプリントパターンを削りだした。
プリスケーラのピンは0.5mmピッチなので、とても手間のかかる作業だ。手作業なので、何度も勢いあまって、基板上の余分なところまで切ってしまったりして、傷だらけの配線。こういうのは、早いところCNCフライスを作って自動化したいところ。
部品を慎重に配置しながら半田づけ。そしてテスターでチェック。
何箇所か半田ブリッジをつくってしまう。8本足のプリスケーラをいったん外してカッターナイフでパターンを削り直してリトライ。
左の画像は、なんとか、形になった状態。あちこちにあけた穴は、表面と裏面のグランドをつなぐためのスルーホール代わりのもので、ここにスズめっき線を通して半田づけする予定。
そして、左の画像がRFアンプ部と合体したところ。
レギュレーターの上を配線が乗っかっているのが多少気になるが、それほど発熱しないだろうと思うので、そのまま放置。
最後にケース本体に収めて、ようやくハードウェアの出来上がり。
さて、このままではただの箱。PICとCPLDのプログラムを完成させなくては。。。
ということで、製作は、まだまだ続くのであった。
NEC製のuPB1507GVというプリスケーラは、3GHzまでカウントできるものなので、高周波でも大丈夫なようにしなければならない。そのため、写真のように、25mm×35mmに切った両面生基板の上にカッターナイフでプリントパターンを削りだした。
プリスケーラのピンは0.5mmピッチなので、とても手間のかかる作業だ。手作業なので、何度も勢いあまって、基板上の余分なところまで切ってしまったりして、傷だらけの配線。こういうのは、早いところCNCフライスを作って自動化したいところ。
部品を慎重に配置しながら半田づけ。そしてテスターでチェック。
何箇所か半田ブリッジをつくってしまう。8本足のプリスケーラをいったん外してカッターナイフでパターンを削り直してリトライ。
左の画像は、なんとか、形になった状態。あちこちにあけた穴は、表面と裏面のグランドをつなぐためのスルーホール代わりのもので、ここにスズめっき線を通して半田づけする予定。
そして、左の画像がRFアンプ部と合体したところ。
レギュレーターの上を配線が乗っかっているのが多少気になるが、それほど発熱しないだろうと思うので、そのまま放置。
最後にケース本体に収めて、ようやくハードウェアの出来上がり。
さて、このままではただの箱。PICとCPLDのプログラムを完成させなくては。。。
ということで、製作は、まだまだ続くのであった。
2009年12月13日日曜日
パルスジェネレータ&カウンタの製作
パルスジェネレータ&カウンタを作っていた。
ケースの加工を先週行って、昨日今日と配線を行った。
ケースがそれほど大きいものではなかったので、いつもとは逆の工程で、先にケースと各パーツのレイアウトを決めて、そこに配線をしていくというやり方にした。
今日中に全ての配線が終わるだろうと思っていたら、カウンタ用の入力アンプ部で、コンデンサが2つ足りないことに気がついた。
しかし、すでに日が暮れてしまっていたので、不足パーツは今度の休みに買いに行くことにする。
とりあえず、いま出来上がっている部分の配線をテスターでチェック。1箇所配線忘れを発見した。
そして、PICとCPLDのコーディングへと。。。
今度の日曜日には完成するかな?
ケースの加工を先週行って、昨日今日と配線を行った。
ケースがそれほど大きいものではなかったので、いつもとは逆の工程で、先にケースと各パーツのレイアウトを決めて、そこに配線をしていくというやり方にした。
今日中に全ての配線が終わるだろうと思っていたら、カウンタ用の入力アンプ部で、コンデンサが2つ足りないことに気がついた。
しかし、すでに日が暮れてしまっていたので、不足パーツは今度の休みに買いに行くことにする。
とりあえず、いま出来上がっている部分の配線をテスターでチェック。1箇所配線忘れを発見した。
そして、PICとCPLDのコーディングへと。。。
今度の日曜日には完成するかな?
2009年12月6日日曜日
ダイアルゲージなど購入
ダイアルゲージ、マグネットベース、曲尺、スコヤをMonotaRoで購入した。ダイアルゲージとマグネットベースは中国製。だから日本製に比べるととても安い。機械系はまったくの素人なので高価なものは必要ないでしょう。
基板切削用のCNCフライスをつくるのに最低これぐらいは必要だろうと。
ついでに手持ちのボール盤の切り先のブレも直しておきたいところ。
自作CNCフライス1号は木製ベースだからそれほど高い精度を追求していない。できるだけローコストにして、どこまで出来るか。それで、もっと高い精度のものが必要であれば、ベース部分を作り変えるだけのこと。それまでに基本的なノウハウなどを習得できるだろうから、次に作るものはさらに良くなるはずだ。
基本的なスペックは、
・200x200x200mmの可動範囲
・精度は、5/100~10/100
ぐらいを想定。
そろそろ、CNCフライスの図面を引こうかな。
基板切削用のCNCフライスをつくるのに最低これぐらいは必要だろうと。
ついでに手持ちのボール盤の切り先のブレも直しておきたいところ。
自作CNCフライス1号は木製ベースだからそれほど高い精度を追求していない。できるだけローコストにして、どこまで出来るか。それで、もっと高い精度のものが必要であれば、ベース部分を作り変えるだけのこと。それまでに基本的なノウハウなどを習得できるだろうから、次に作るものはさらに良くなるはずだ。
基本的なスペックは、
・200x200x200mmの可動範囲
・精度は、5/100~10/100
ぐらいを想定。
そろそろ、CNCフライスの図面を引こうかな。
2009年11月29日日曜日
万能作業台の購入
2009年11月23日月曜日
CNCフライス自作の下調べ
ホームセンターをまわって工具や部品などを下調べした。
調べているうちに、少しずつ作ろうとしているもののイメージが膨らんでくる。
とりあえず、木製で安くしようと思う。
先ずは作業台を買うところから。
でも今日は調査だから買わない。
調べているうちに、少しずつ作ろうとしているもののイメージが膨らんでくる。
とりあえず、木製で安くしようと思う。
先ずは作業台を買うところから。
でも今日は調査だから買わない。
パルスジェネレータ&カウンタの設計
パルスジェネレータ&カウンタを作るにあたり、まずは設計からはじめる。とりあえず、仕様は以下のような感じ。
■パルスジェネレータ部
UHF帯は、高周波を意識する必要があるので入力を独立させた。
■その他
次に、回路図を作っていて、あちこちのサイトの情報を寄せ集め状態で作るとPICのIOピンが足りなくなるということに気が付いた。
そこで、IOへの出力はいったんCPLD側で受けて、PICはIOを操作するための仮想レジスタへREAD/WRITEで対応することにした。機能を欲張ったらつくりが大変になるということか。今までに作った回路をそのまま使う訳にはいかないので、ここが今回の製作上の課題となりそうだ。
2日かけてようやく図面の第1版が出来上がった。
■パルスジェネレータ部
- パルス出力は3チャンネル
- パルス幅は100nsec~100msec、パルス幅刻みは100nsec、デューティー範囲は1~100%、デューティー刻みは100nsec
- 出力電圧は3.3V、74AC04でバッファ
- RF入力とUHF入力の2入力を切り替えてカウント
- RFの周波数測定範囲は1~100MHz、UHFはプリスケーラ(uPB1507GV)入力で、周波数測定範囲は500MHz~3GHz
UHF帯は、高周波を意識する必要があるので入力を独立させた。
■その他
- CPUはPIC24F、CPLDはMAXⅡを使う
- インターフェースは、LCD16文字×2行と、タクトスイッチ4つ、ロータリーエンコーダ1、圧電スピーカー1個とLED6個
- RF入力は2SK241と2SC1815で作るアンプ、UHF入力はプリスケーラuPB1507GVへ信号を入力
- ケースはダイソーのはがき入れケースとする。
- 006P電池と外部9V電源を利用可能
次に、回路図を作っていて、あちこちのサイトの情報を寄せ集め状態で作るとPICのIOピンが足りなくなるということに気が付いた。
そこで、IOへの出力はいったんCPLD側で受けて、PICはIOを操作するための仮想レジスタへREAD/WRITEで対応することにした。機能を欲張ったらつくりが大変になるということか。今までに作った回路をそのまま使う訳にはいかないので、ここが今回の製作上の課題となりそうだ。
2日かけてようやく図面の第1版が出来上がった。
2009年11月21日土曜日
秋葉でパーツを買ってきた
今日はパルスジェネレーターを作るために必要なパーツを買ってきた。
今回、MAXⅡというCPLDを使って作る予定なのだが、MAXⅡの570ものロジックエレメントの大半が使われないままではもったいないので、周波数カウンターも一緒に組み込んでしまう予定。パルスジェネレーターとカウンターは同時に使うこともなかろうという想定だ。そして2IN1にすることでPICを1つで済ませようというわけ。
周波数カウンターは、去年MAX038というファンクションジェネレータICとセットにしたものをPIC16F648Aで作った。だから2作品目になる。この周波数カウンター1号は、プリスケーラーなしで20MHz程度までカウントできている。50MHzまで使えるかも知れないという情報があるけれど試していない。
周波数カウンター2作目は、秋月で売っていたuPB1507GVという500MHz~3GHzのプリスケーラーをつける予定。200MHzぐらいまで測定できたという情報もあるので、MAXⅡと組み合わせて、1Hz~3GHzまでシームレスに測定出来るものになったらいいなぁと思う。MAXⅡで作るカウンターがどこまでパフォーマンスが出るかということになる。
それから、左の画像のものも、ついでに買ってしまった。
秋月で購入したステッピングモーター3つ。一番大きなやつ。
さて、これはいったい何に使うのでしょうか?
これは、CNCフライスを自作しようと考えていて、そのパーツの一部になる予定。
プリント基板の製造をCADから自動化したいと前々から思っていて、CNCフライスがそういう目的に使えることが分かってきた。
プリント基板のエッチングとか、その前のパターンの転写とか、結構手間がかかるのだ。高周波用になると、パーツは小さいし、パターンでフィルターを描いたりしなければならない。それに廃液の処理とか考えると、削ったほうが環境にも良さそう。だから、CNCの方が良いという結論に至った。
それから、レーザー光線を使うと、消耗品のエンドミルが不要になるので、その方面も調査中。
でも、市販のものはどれも値段が高い。ホビー向けの小さなものが9万円台からあるが、それでも高い。せいぜい4~5万円程度に抑えたい。だから、自作。
今はまだ構想段階だけれど、こうやって実際にものを少しずつ集め始めて、今後作るもののイメージを具体化していきたいと思っている。
ドットインパクトプリンターのヘッドを載せてスライドさせている部分のシャフトがほしいなぁと思って、今日は、ジャンク屋も探して歩いたが、掘り出し物は見つからず。いまどき、ドットインパクトプリンターなんてどの店にも置いてないようだった。となると、別な方法になるか。
CNCフライス本体は、剛性をだすためにアルミでベースを作っている方が多いのだけど、中にはMDFなどの集成材をつかったものもYouTubeなどでたくさん見かける。特に海外に木製が多い。日本人は精度に細かいという国民性がでているのかもしれない。
どちらのタイプにするのかはまだ迷っている。はじめは安上がりのMDFでも良いかと思うのだが、どちらにしても、家にはボール盤しかなくフレームを加工するための道具や計測道具は持っていない。だから道具の購入からスタートだ。
【CNCフライスの参考】
きゃのん・えんじにありんぐ
やりくりアクロフライヤー
CNCおもちゃの掲示板
CNCプリント基板作製機の自作に挑戦
オリジナルマインド
NCフライスへの道
「工房モコ」NCマシン
PCB Drill
CNC Router
weblog_seyo
CNCの件はこの程度にして、パルスジェネレーター&周波数カウンターをつくるとするか。。。
2009年11月19日木曜日
三相信号発生器の改造(その2)
昨日、今日と、仕事から戻ってから信号が出力されない問題を修正して、ようやく出力が得られた。
結果として、出力波形はSin波形には程遠いものだ。LPFの出来が悪いのかもしれない。
信号が出力されなかったのは、ひとつは追加したリセット回路。RCで作った簡易な回路だったため、また調整が不十分なのもあるかもしれないが、リセットが解除されない状態だった。リセットは専用ICにするのがいいのかもしれない。とりあえず、リセットなしでも動くので問題はなさそうだけれど。
もうひとつ問題だったのは、FPGAのデータ入力ピンの指定が間違っていたため、データが伝送されなかった。これはかなり初歩的なミスだった。
以上の問題を解決し、PICから希望する周波数を設定すると、周波数が変わることをオシロスコープにて確認。周波数は正確に測ったわけではなく、波形の周期から大まかな状態を確認した程度。
これで一応基本的な部分は出来たようなので、あとは電子ボリュームの実装とLPFを含めて出力波形の検討だ。PDM方式だと、取り出せる周波数はCLOCKの1/10ぐらいかと思ったが、もっと低くしたほうがいいのかもしれない。これはLPFとの組み合わせなど調整が必要に思う。
それから、PICでつくったI/F部は、他にも流用できるので、次に製作予定のパルスジェネレーターなどにも使おうかと思う。
トップの画像は、1波を表示したもので、この左の画像は2波を重ねたもの。
この3枚目の画像は、3波を重ねたもの。ひとつだけ波が低いのだが、これは、オシロスコープの電圧設定が0.1Vと0.5Vの2つしかなく、しかもプローブの1本が壊れていて、かわりに高圧用の1/100プローブをつないだためにこうなっている。実際は同じ3.3Vの出力レベル。
2009年11月16日月曜日
PIC24Fのコンフィギュレーションが間違っていた
三相信号発生器がうまく動作しないので、その原因を追跡した。
今日はひとつ問題が見つかった。それは、PIC24Fのコンフィギュレーションが間違っていた点。
最初、スパルタンボードへ送る線にノイズが多いせいだろうかとか、信号のレベルがおかしいのだろうかと考えて、ケーブル周りを作りなおしたり、FPGAにパワーオンリセットがかかるように回路を追加してみたり、あるいはラインにプルアップ抵抗をつけてみたりしたが、変化なし。
信号を出しているPIC側に問題があるかもしれないと思って、ロジアナをPICの出力につないでみた。3線で信号を与えるのだが、2線の信号が出力されていないように見えた。MPLAB IDEのデバッグモードで確かめるとファイルレジスタの値はちゃんと変化している。たまたま、ケーブルを作りなおしたときに、出力ピンの担当を入れ替えてみた。すると、RA2とRA3からまったく信号が出ていないことが分かってきた。
このRA2とRA3の2つは外部オシレーター用のピンだった。何か設定忘れがあるかもしれないと思って、マニュアルをチェックした。すると、コンフィギュレーションのところで発信器の設定によってこれらのピンがデジタルI/Oにならなくなることが分かった。
以下のサイトに詳しく書いてあった。
C30コンパイラ(= PIC24 MCUs コンパイラ )でのコンフィギュレーションの設定
やはり、設定が間違っていた。具体的には、発信器関係の設定で、間違って、OSCIOFNC_OFFとPOSCMOD_HSを指定してしまっていた。
これらをOSCIOFNC_ONとPOSCMOD_NONEを指定するとRA2とRA3がI/Oになるのだ。
ついでに、8MHzの内臓オシレーターをx4-PLLを指定して32MHzで動作するように変更する。あわせてRTOSのTICタイムやdelayルーチンの設定なども変更。
リビルドしてPickit2で修正プログラムを書き込んでみた。すると、信号がちゃんと出力されるようになった。それに速度も速くなっている。
コンフィギュレーションは、PICを使い始めた頃によくわからなくて、誰かが書いたソースについていた設定をみようみまねで書いていた。それでも一応動いていたからそれで放置していた訳だが、ここにきて問題が発覚したということだった。当時は分からなかったとはいえ無智だった。
さて、ひとつ問題が解決した訳だが、まだ発信器からの出力が確認できない。PIC側の問題が解決したので次はFPGA側のデバッグや問題発見に集中だ。
今日はひとつ問題が見つかった。それは、PIC24Fのコンフィギュレーションが間違っていた点。
最初、スパルタンボードへ送る線にノイズが多いせいだろうかとか、信号のレベルがおかしいのだろうかと考えて、ケーブル周りを作りなおしたり、FPGAにパワーオンリセットがかかるように回路を追加してみたり、あるいはラインにプルアップ抵抗をつけてみたりしたが、変化なし。
信号を出しているPIC側に問題があるかもしれないと思って、ロジアナをPICの出力につないでみた。3線で信号を与えるのだが、2線の信号が出力されていないように見えた。MPLAB IDEのデバッグモードで確かめるとファイルレジスタの値はちゃんと変化している。たまたま、ケーブルを作りなおしたときに、出力ピンの担当を入れ替えてみた。すると、RA2とRA3からまったく信号が出ていないことが分かってきた。
このRA2とRA3の2つは外部オシレーター用のピンだった。何か設定忘れがあるかもしれないと思って、マニュアルをチェックした。すると、コンフィギュレーションのところで発信器の設定によってこれらのピンがデジタルI/Oにならなくなることが分かった。
以下のサイトに詳しく書いてあった。
C30コンパイラ(= PIC24 MCUs コンパイラ )でのコンフィギュレーションの設定
やはり、設定が間違っていた。具体的には、発信器関係の設定で、間違って、OSCIOFNC_OFFとPOSCMOD_HSを指定してしまっていた。
これらをOSCIOFNC_ONとPOSCMOD_NONEを指定するとRA2とRA3がI/Oになるのだ。
ついでに、8MHzの内臓オシレーターをx4-PLLを指定して32MHzで動作するように変更する。あわせてRTOSのTICタイムやdelayルーチンの設定なども変更。
リビルドしてPickit2で修正プログラムを書き込んでみた。すると、信号がちゃんと出力されるようになった。それに速度も速くなっている。
コンフィギュレーションは、PICを使い始めた頃によくわからなくて、誰かが書いたソースについていた設定をみようみまねで書いていた。それでも一応動いていたからそれで放置していた訳だが、ここにきて問題が発覚したということだった。当時は分からなかったとはいえ無智だった。
さて、ひとつ問題が解決した訳だが、まだ発信器からの出力が確認できない。PIC側の問題が解決したので次はFPGA側のデバッグや問題発見に集中だ。
2009年11月15日日曜日
三相信号発生器の改造
1年ほど前に購入したSpartan-3Aキット。これで三相信号発生器を作ってあったのだが、ボードむき出しのままだったので、取り扱いが面倒だった。
せっかく豊富なゲートを構成できるにもかかわらず、使い勝手の面倒さのために、あまり使われることなく放置。そして、AlteraのMAXⅡばかりに気をとられていては駄目だと思い、ケースに収め利用率を向上させることにした。
もともと、開発用に購入したボードだったので、きちんとしたケースに入れようという気持ちがあまり起こらなかったせいもあって、結局安いケースにすることにした。
ダイソーに行き、150円のA4書類ケースがちょっと大きめだったけど、とりあえずこれにしてみた。
プラスチック製なので加工は簡単。とは言うものの、それなりに時間がかかってしまった。
しかし、ケースに収めるとなかなかすっきりとしてしまって、使い勝手も良くなりそうだ。もっと早くやっておけばよかったと反省。
今回、このプラケースに入れるにあたって、FPGAのロジックもいくつか手を加えることにした。
その第一が、外付けだったD/Aコンバータをなくすことだった。
ネットを調べていたら、Neo-Tech-LabさんのサイトでPDM(Pulse Density Modulation)によるD/Aコンバータが紹介されていた。
ちなみに、このサイトを知るきっかけになったのは、MAXⅡを使った自作記事を探しているときだった。
このPDMを使ったDACだが、とてもシンプル、加算器だけでつくれるということで、CPLDやFPGAの中に入れることができるというとても素晴らしいものだった。
原理的に周波数をそれほど高く設定できないという欠点はあるが、外付けDAC回路がなくなるというメリットが魅力的だった。ただし、LPFが必要となるのだけれど、簡単なRC型のフィルターが使えるのでそれほどではない。というわけで、これを試してみることにした。
第二は、三相をより精密に作ること。
以前のヴァージョンは、Sin波テーブルは1/4波形分だけ格納する形にして、データ量を少なくするようにしたのだが、ごくわずかだが位相誤差がどうして出てしまい、正確に同期の取れた三相にはならなかった。
そのため、思い切ってSin波形を3つ用意することにした。あわせて、出力Bit数も6から12にあげてみることにした。
以上の点を踏まえて、VHDLの修正を行った。
PDMの回路は入手できたが、VHDLソースはなかったのでうまく組めるだろうか?という多少の不安がある。
念のためModelSimで動作チェックを行ってみようとしたが、シミュレーションが途中で止まってしまう。どうやら、無料バージョンでは実行できるコード量に制限があり、今回の修正でSin波形をたくさん入れたため動かなくなってしまったようだ。
仕方なく、1相だけにして挑戦してみることに。。。
せっかく豊富なゲートを構成できるにもかかわらず、使い勝手の面倒さのために、あまり使われることなく放置。そして、AlteraのMAXⅡばかりに気をとられていては駄目だと思い、ケースに収め利用率を向上させることにした。
もともと、開発用に購入したボードだったので、きちんとしたケースに入れようという気持ちがあまり起こらなかったせいもあって、結局安いケースにすることにした。
ダイソーに行き、150円のA4書類ケースがちょっと大きめだったけど、とりあえずこれにしてみた。
プラスチック製なので加工は簡単。とは言うものの、それなりに時間がかかってしまった。
しかし、ケースに収めるとなかなかすっきりとしてしまって、使い勝手も良くなりそうだ。もっと早くやっておけばよかったと反省。
今回、このプラケースに入れるにあたって、FPGAのロジックもいくつか手を加えることにした。
その第一が、外付けだったD/Aコンバータをなくすことだった。
ネットを調べていたら、Neo-Tech-LabさんのサイトでPDM(Pulse Density Modulation)によるD/Aコンバータが紹介されていた。
ちなみに、このサイトを知るきっかけになったのは、MAXⅡを使った自作記事を探しているときだった。
このPDMを使ったDACだが、とてもシンプル、加算器だけでつくれるということで、CPLDやFPGAの中に入れることができるというとても素晴らしいものだった。
原理的に周波数をそれほど高く設定できないという欠点はあるが、外付けDAC回路がなくなるというメリットが魅力的だった。ただし、LPFが必要となるのだけれど、簡単なRC型のフィルターが使えるのでそれほどではない。というわけで、これを試してみることにした。
第二は、三相をより精密に作ること。
以前のヴァージョンは、Sin波テーブルは1/4波形分だけ格納する形にして、データ量を少なくするようにしたのだが、ごくわずかだが位相誤差がどうして出てしまい、正確に同期の取れた三相にはならなかった。
そのため、思い切ってSin波形を3つ用意することにした。あわせて、出力Bit数も6から12にあげてみることにした。
以上の点を踏まえて、VHDLの修正を行った。
PDMの回路は入手できたが、VHDLソースはなかったのでうまく組めるだろうか?という多少の不安がある。
念のためModelSimで動作チェックを行ってみようとしたが、シミュレーションが途中で止まってしまう。どうやら、無料バージョンでは実行できるコード量に制限があり、今回の修正でSin波形をたくさん入れたため動かなくなってしまったようだ。
仕方なく、1相だけにして挑戦してみることに。。。
2009年11月8日日曜日
ByteBlasterⅡでMaxⅡへの書き込みが出来た
自作したByteBlasterⅡのTDIでエラーが出ていたので、それを追跡していた。
ノートPCを一度再起動した後、Dサブ用のケースに収めてあったByteBlasterⅡ基板を取り出して、テスターで回路をチェック。念のため、MaxⅡボード側のJTAGラインも確認。
その後、もう一度QuartusⅡを立ち上げて、ケーブルを手にぶら下げたままProgramerから書き込みスタートをしたら、あっさり動いてくれた。
どうも、空中配線が災いしたようだ。ケースに収めたときに圧迫されてエナメル線がどこかに刺さったか何かでショートしたのかも知れない。
MaxⅡボードの疑いも晴れ、2枚買ったMaxⅡを捨てなくて済んだ。ホッとひと安心。(^^;
これでシグナルジェネレータの製作が可能になった。
でも、どうしようか。。。もう一度ByteBlasterⅡをきちんと作り直したほうが良いのかもしれない。
そういえば、ITプラザでMaxⅡと一緒に購入したByteBlasterMVキットだけど、結果的にキットの組み立てに失敗しているということだなぁ。集合抵抗の半田付けに失敗しているのかもしれない。。。
ノートPCを一度再起動した後、Dサブ用のケースに収めてあったByteBlasterⅡ基板を取り出して、テスターで回路をチェック。念のため、MaxⅡボード側のJTAGラインも確認。
その後、もう一度QuartusⅡを立ち上げて、ケーブルを手にぶら下げたままProgramerから書き込みスタートをしたら、あっさり動いてくれた。
どうも、空中配線が災いしたようだ。ケースに収めたときに圧迫されてエナメル線がどこかに刺さったか何かでショートしたのかも知れない。
MaxⅡボードの疑いも晴れ、2枚買ったMaxⅡを捨てなくて済んだ。ホッとひと安心。(^^;
これでシグナルジェネレータの製作が可能になった。
でも、どうしようか。。。もう一度ByteBlasterⅡをきちんと作り直したほうが良いのかもしれない。
そういえば、ITプラザでMaxⅡと一緒に購入したByteBlasterMVキットだけど、結果的にキットの組み立てに失敗しているということだなぁ。集合抵抗の半田付けに失敗しているのかもしれない。。。
ここ1ヶ月を振り返ると
ちょっと、この1ヶ月ほどの出来事を振り返ってみた。
ここのところ、すっかりAlteraのMaxⅡにハマッている。
でもちょっと待てよ、そもそも、何がきっかけだったんだっけ・・・と振り返ってみたら、Spartan3AボードとPICボードの通信がうまくできないことが原因だった、と思い出した。
随分とわき道に逸れてしまっている。自分自身の性格が発散するタイプなので、いつものことなのだけれど、ちょっと軌道修正しなければいけないようだ。
AlteraのMaxⅡは、使えると便利はいいのだが、目的がほかにあるのでほどほどにしておく必要があるなぁ。。。と反省。こんなところで遊んでいる場合ではなかった。
やるべきことをまとめると、
①まずは、PICからSpartanボードの周波数変更ができるようになること。
②これが終わったら、MOS-FETドライバを作ること。
③スペアナでソリッドステートテスラコイルの特性を測定すること。
だった。
③は、テスラコイルの動作周波数とおそらくたくさん出ているであろう高調波などの存在確認が目的だ。ここで得られた情報をベースに、この後の周波数解析部をつくる予定。
手っ取り早く、壊れたSSTCを修理すれば良いのだが、MOS-FETが燃えたため、回路を作りなおす必要があるのと、電源トランスからウナリ音がでるようになってしまったので不安がある。それに、MOS-FETが燃えないように対策をする必要もある。だから、コイル部分を除いてほとんど作り直しに近いから設計から見直してみようと思っている。
①のSpartanボードがB5サイズぐらいの大きさで扱いにくいから、ついついMaxⅡに心奪われてしまった。FPGAとCPLDは比較にならないぐらい組み込めるロジック量が違うのにかかわらず。
とりあえず、Spartanを簡易ケースにでも入れて使い易くすることにする。
パルスジェネレーターは②で必要なものなので、MaxⅡが駄目なら他の方法も検討することにしよう。100ロジック強ぐらいの規模で良いのでザイリンクスのCPLDチップXA95108でも可能。ただし、ザイリンクスのダウンロードケーブルが必要なので、もう少しMaxⅡで頑張ってみることにする。
パルスジェネレーターの後は、MOS-FETの負荷実験用に0~30V可変で10A程度までの直流電源が必要かもしれない。手持ちの菊水は1~15V、2Aまでなのでちょっと足りない感じ。
あと、出来ればトリガーで波形観測したいので、デジタルストレージオシロが必要になるかも。
ここのところ、すっかりAlteraのMaxⅡにハマッている。
でもちょっと待てよ、そもそも、何がきっかけだったんだっけ・・・と振り返ってみたら、Spartan3AボードとPICボードの通信がうまくできないことが原因だった、と思い出した。
随分とわき道に逸れてしまっている。自分自身の性格が発散するタイプなので、いつものことなのだけれど、ちょっと軌道修正しなければいけないようだ。
AlteraのMaxⅡは、使えると便利はいいのだが、目的がほかにあるのでほどほどにしておく必要があるなぁ。。。と反省。こんなところで遊んでいる場合ではなかった。
やるべきことをまとめると、
①まずは、PICからSpartanボードの周波数変更ができるようになること。
②これが終わったら、MOS-FETドライバを作ること。
③スペアナでソリッドステートテスラコイルの特性を測定すること。
だった。
③は、テスラコイルの動作周波数とおそらくたくさん出ているであろう高調波などの存在確認が目的だ。ここで得られた情報をベースに、この後の周波数解析部をつくる予定。
手っ取り早く、壊れたSSTCを修理すれば良いのだが、MOS-FETが燃えたため、回路を作りなおす必要があるのと、電源トランスからウナリ音がでるようになってしまったので不安がある。それに、MOS-FETが燃えないように対策をする必要もある。だから、コイル部分を除いてほとんど作り直しに近いから設計から見直してみようと思っている。
①のSpartanボードがB5サイズぐらいの大きさで扱いにくいから、ついついMaxⅡに心奪われてしまった。FPGAとCPLDは比較にならないぐらい組み込めるロジック量が違うのにかかわらず。
とりあえず、Spartanを簡易ケースにでも入れて使い易くすることにする。
パルスジェネレーターは②で必要なものなので、MaxⅡが駄目なら他の方法も検討することにしよう。100ロジック強ぐらいの規模で良いのでザイリンクスのCPLDチップXA95108でも可能。ただし、ザイリンクスのダウンロードケーブルが必要なので、もう少しMaxⅡで頑張ってみることにする。
パルスジェネレーターの後は、MOS-FETの負荷実験用に0~30V可変で10A程度までの直流電源が必要かもしれない。手持ちの菊水は1~15V、2Aまでなのでちょっと足りない感じ。
あと、出来ればトリガーで波形観測したいので、デジタルストレージオシロが必要になるかも。
ByteBlasterⅡを自作した
AlteraのByteBlasterⅡを作ってみた。
先週からMaxⅡのProgramができないままの状態。ダウンロードケーブルが問題なのか、MaxⅡキットに問題があるのか良くわからない。それで、まず問題の切り分けをしてみようということで、ひとつは、別のダウンロードケーブルを作ってみること、もうひとつはMaxⅡキットをもうひとつ購入することにしてみた。
ByteBlasterMVについては、Altera社がその回路図を公開しているのだが、ByteBlasterⅡは未公開ということだった。ただし、先達たちの努力により、互換性のある回路を幾つか見つけることはできた。
えんぽん研究所さんのところにByteBlasterⅡに関する情報がまとめてあるのを見つけた。ここのリンクから回路図を探したりした。最終的にはALTERA ByteBlasterIIの相互品の作成の回路図を参考にさせて頂いた。
出来上がったものは、写真のとおりかなり見栄えの悪いものになってしまった。早く作り上げて、とりあえず動けばいい、という気持ちで作ったので、基板をつくったりはしなかった。ICの向きが反対だったので、配線が鳥の巣のようになってしまっている。(汗;)
ByteBlasterⅡを作り終えた後、MaxⅡボードも組み立てた。
そして、出来上がった自家製ByteBlasterⅡを動かしてみた。QuartusⅡ側では認識できた。しかし、MaxⅡへの書き込みはエラーだった。これは両方のMaxⅡボードともエラー。
ProgramerからAutoDetectを押下すると、エラーとなり、JTAGのデバッグモード画面が立ち上がる。このとき、ByteBlasterMVでは出てこなかった情報が出てきていた。ByteBlasterⅡの方が少しグレードが高いんだと知る。その情報によると、10pinのJTAGコネクタの9番のTDIがGNDになっているということらしい。
もう少し、追いかける必要がありそうだ。
2009年11月2日月曜日
パルスジェネレーター&ALTERA MAX2
2009年10月26日月曜日
パルスジェネレーターとMAX2 CPLD
実は、ロジアナを作っている最中に、実験用のパルスジェネレーターが必要だと感じ始めていた。
何に使うのかというと、このあと控えているMOS-FETをHブリッジ構成で駆動させる1次コイル用のドライバ回路の製作で、MOS-FETの負荷短絡テストなどにどうしても必要だから。
それで、どうせ作るならCPLDをベースにしようということになった。そしたら、今回このロジアナを購入したオプティマイズさんのところで、MAX2というCPLDをかなりリーズナブルで出しているではありませんか。
それで、早速、雨の振る中を秋葉原のITプラザさんまで買いに出かけていった。ちょっと早く行き過ぎてしまって、お店がまだ開いてない。12:00になってようやくお店の女性の方がこられた。どこかのブログにも同じような経験をされた方がいたことを思い出しながら、目的のものを買った。
このMAX2 CPLDキットは1600円で、ByteBlaster MV互換JTAGライターが1000円だった。
細かなパーツを注意しながら組み立てる。
できあがり。
ちょっと写真をみて変なのが、ケーブル。よく見るとセンターからずれている。
このケーブル、実は秋月で150円で売っていた14ピン用のものなのだ。4ピン余分なのだが、安さと手間を考えて、見た目は眼をつぶることにしたのだった。
作り終えたあと、パーツをチェックしていたら、なんと!黄色い色のタンタルに極性があることをすっかり忘れていて、向きが逆だった。
それで修正するために、いったんつけたものを取り外すのに無理な力を加えてしまったため、端子が根元から折れてしまった。ああ・・・
なんとか半田技でくっつかないものかと、写真のように団子状態にしてみた。しかし心配だ・・・
このタンタルコンデンサは16V10uF。レギュレーター用のものだったので、別にタンタルでなくても問題ないだろうからと、手持ちの35V10uFの無極性の電解コンデンサに交換した。
ご覧のとおり、またもや見た目が悪くなってしまった。(汗)
このあと、ALTERAのサイトからフリーの開発ツール Quartus Ⅱ Web Editionをダウンロードしてインストールした。
さあ、VHDLでパルスジェネレーターの回路を作るとするか。。。
でも、まだPICとFPGA間のシグナルの問題が解決してないなぁ。。。
何に使うのかというと、このあと控えているMOS-FETをHブリッジ構成で駆動させる1次コイル用のドライバ回路の製作で、MOS-FETの負荷短絡テストなどにどうしても必要だから。
それで、どうせ作るならCPLDをベースにしようということになった。そしたら、今回このロジアナを購入したオプティマイズさんのところで、MAX2というCPLDをかなりリーズナブルで出しているではありませんか。
それで、早速、雨の振る中を秋葉原のITプラザさんまで買いに出かけていった。ちょっと早く行き過ぎてしまって、お店がまだ開いてない。12:00になってようやくお店の女性の方がこられた。どこかのブログにも同じような経験をされた方がいたことを思い出しながら、目的のものを買った。
このMAX2 CPLDキットは1600円で、ByteBlaster MV互換JTAGライターが1000円だった。
細かなパーツを注意しながら組み立てる。
できあがり。
ちょっと写真をみて変なのが、ケーブル。よく見るとセンターからずれている。
このケーブル、実は秋月で150円で売っていた14ピン用のものなのだ。4ピン余分なのだが、安さと手間を考えて、見た目は眼をつぶることにしたのだった。
作り終えたあと、パーツをチェックしていたら、なんと!黄色い色のタンタルに極性があることをすっかり忘れていて、向きが逆だった。
それで修正するために、いったんつけたものを取り外すのに無理な力を加えてしまったため、端子が根元から折れてしまった。ああ・・・
なんとか半田技でくっつかないものかと、写真のように団子状態にしてみた。しかし心配だ・・・
このタンタルコンデンサは16V10uF。レギュレーター用のものだったので、別にタンタルでなくても問題ないだろうからと、手持ちの35V10uFの無極性の電解コンデンサに交換した。
ご覧のとおり、またもや見た目が悪くなってしまった。(汗)
このあと、ALTERAのサイトからフリーの開発ツール Quartus Ⅱ Web Editionをダウンロードしてインストールした。
さあ、VHDLでパルスジェネレーターの回路を作るとするか。。。
でも、まだPICとFPGA間のシグナルの問題が解決してないなぁ。。。
2009年10月25日日曜日
カメレオンUSB+ロジアナその3
前回に引き続き、ロジアナの製作。
ボードまで完成していたので、ケースの加工とプローブを作った。
このプローブは、あちこちのサイトから得た情報により、IDE用ケーブルを使った。
ICクリップの手持ちがなかったので秋葉原の千石電商で購入。1個70円。15個買ったが、今回見たい波形は3つだけなので、とりあえず6個だけつけてみた。
←PICボードにつないで出力をチェック中。
ネットで調べていたら、myLAというオプティマイズ純正よりも使い勝手の良いソフトがあるらしいことを知った。しかし、ほとんどがリンク切れになっていて、どうやらサイトを閉じてしまったように思った。
それでも、どこかに落ちてないかと調べていたら、発見!
以下のサイトにアーカイブされて残っていた。
myLA入手先
なかなかよく出来ている。
そこで、このソフトを使ってPICのデータをのぞいてみた。
はじめ、プローブのIDEケーブルを20cmで作っていたのだが、どうもノイズが多いように見えた。そこで、ケーブルの長さを短くして10cmにした。若干減ったようにも見えたが、相変わらずあちこちでいろんなひげが出ている。サンプリング周波数を100MHzから10MHzぐらいに下げてみたり、いろいろ設定も変えてみた。それでノイズは完全に消えないが、データの形が見えてきた感じ。
全体を見て感じたのは、データがうまく出力されてないように見えた。ひょっとしたらPICのプログラム側に問題があったのかもしれない。
ボードまで完成していたので、ケースの加工とプローブを作った。
このプローブは、あちこちのサイトから得た情報により、IDE用ケーブルを使った。
ICクリップの手持ちがなかったので秋葉原の千石電商で購入。1個70円。15個買ったが、今回見たい波形は3つだけなので、とりあえず6個だけつけてみた。
←PICボードにつないで出力をチェック中。
ネットで調べていたら、myLAというオプティマイズ純正よりも使い勝手の良いソフトがあるらしいことを知った。しかし、ほとんどがリンク切れになっていて、どうやらサイトを閉じてしまったように思った。
それでも、どこかに落ちてないかと調べていたら、発見!
以下のサイトにアーカイブされて残っていた。
myLA入手先
なかなかよく出来ている。
そこで、このソフトを使ってPICのデータをのぞいてみた。
はじめ、プローブのIDEケーブルを20cmで作っていたのだが、どうもノイズが多いように見えた。そこで、ケーブルの長さを短くして10cmにした。若干減ったようにも見えたが、相変わらずあちこちでいろんなひげが出ている。サンプリング周波数を100MHzから10MHzぐらいに下げてみたり、いろいろ設定も変えてみた。それでノイズは完全に消えないが、データの形が見えてきた感じ。
全体を見て感じたのは、データがうまく出力されてないように見えた。ひょっとしたらPICのプログラム側に問題があったのかもしれない。
2009年10月18日日曜日
カメレオンUSB+ロジアナその2
まずは、カメレオンUSBの組み立てから取り掛かる。
パーツがかなり細かいので卓上用のルーペで念入りにチェックしながら作業を進めていく。
USB端子をつけたところでノートパソコンと接続確認を行う。しかし、ここでまず躓く。
EZ-USB Control Panelをインストールしたのだが、EZ-USBがきちんと認識されない。どうやらドライバーがうまく登録されていないようだ。
何度もドライバーの削除とUSBの抜き差しを繰り返したが駄目。ネットで調べると同様な現象が起きている人たちもいるようだった。iniファイルに1行追加するとか、どこか別なサイトで使われているiniファイルを使うと動くだとか、書いてあることを試したが現象は変わらず。
最後は、インストールしたEZ-USB Control Panelを削除して、もう一度インストールしなおす。
その間、もう一度基板の半田付けを確認してみたら、ひとつだけ半田がうまく流れていない感じだったのでこれも修正。
いろいろやってみて、ようやくうまく動作確認ができた。
(左の画像が出たらOKだ。)
EZ-USB Control Panelのインストールがうまく出来ていなかったようだ。
残りのヘッダーピンを基板に取り付けて完成。
この状態で、USBをPCに接続して、CPLDのプログラムを投入する。
コマンドプロンプトを立ち上げて、cusbwr.exeというプログラムでロジアナのバイナリーを転送する。
うまくいったみたいだ。
これでカメレオンUSBは完成。次はロジアナ基板の組み立て。
カメレオンUSBはCPLDがはじめからついていたが、こちらのロジアナは全てのパーツをつける必要がある。0.5mmピッチの半田付けなんて初めて。フラックスを塗るとうまくいくとの説明があるので塗る。
以前、どこかのサイトで半田をてんこ盛り状態にピンの上につけておいてから、半田吸い取り線で半田を取り除くとうまくいくんだという記事を見たことがあったので、この方法でやってみた。半田付けはかなり大雑把ながら出来たように見える。ただ、半田吸い取り線の松ヤニが基板についてしまって見た目が汚くなってしまった。それに、半田がきれいに取れすぎでちゃんとつながっているのか少し心配だ。
結局、キットについていた糸半田をつかって少しずつ端子に半田を流し込むことに。
集合抵抗やコンデンサ、ヘッダーピンなどをつけて、ようやく出来上がる。
カメレオンUSBとロジアナを接続。USBケーブルをつけてPCと接続。特に問題なさそうだ。
ロジアナソフトを起動して、動作確認をする。
32chあるのでそれなりに大変。ひとつづつ信号を入れて画面をみる。
う~ん、いくつかのピンで信号が重なっていたり、全然信号が出てこないものがある。簡単なテストなので接触不良もあるだろうから、あとでしっかりと調べることにしよう。
ボードの突起物もほとんどないためかなりコンパクト。
あらかじめ買っておいたプラスチックケースにもぴったりと収まりそうだ。
さあ、このあと、ケースの加工とロジアナ用プローブをつくれば完成だ。
でも、今日はここまでかな。
パーツがかなり細かいので卓上用のルーペで念入りにチェックしながら作業を進めていく。
USB端子をつけたところでノートパソコンと接続確認を行う。しかし、ここでまず躓く。
EZ-USB Control Panelをインストールしたのだが、EZ-USBがきちんと認識されない。どうやらドライバーがうまく登録されていないようだ。
何度もドライバーの削除とUSBの抜き差しを繰り返したが駄目。ネットで調べると同様な現象が起きている人たちもいるようだった。iniファイルに1行追加するとか、どこか別なサイトで使われているiniファイルを使うと動くだとか、書いてあることを試したが現象は変わらず。
最後は、インストールしたEZ-USB Control Panelを削除して、もう一度インストールしなおす。
その間、もう一度基板の半田付けを確認してみたら、ひとつだけ半田がうまく流れていない感じだったのでこれも修正。
いろいろやってみて、ようやくうまく動作確認ができた。
(左の画像が出たらOKだ。)
EZ-USB Control Panelのインストールがうまく出来ていなかったようだ。
残りのヘッダーピンを基板に取り付けて完成。
この状態で、USBをPCに接続して、CPLDのプログラムを投入する。
コマンドプロンプトを立ち上げて、cusbwr.exeというプログラムでロジアナのバイナリーを転送する。
うまくいったみたいだ。
これでカメレオンUSBは完成。次はロジアナ基板の組み立て。
カメレオンUSBはCPLDがはじめからついていたが、こちらのロジアナは全てのパーツをつける必要がある。0.5mmピッチの半田付けなんて初めて。フラックスを塗るとうまくいくとの説明があるので塗る。
以前、どこかのサイトで半田をてんこ盛り状態にピンの上につけておいてから、半田吸い取り線で半田を取り除くとうまくいくんだという記事を見たことがあったので、この方法でやってみた。半田付けはかなり大雑把ながら出来たように見える。ただ、半田吸い取り線の松ヤニが基板についてしまって見た目が汚くなってしまった。それに、半田がきれいに取れすぎでちゃんとつながっているのか少し心配だ。
結局、キットについていた糸半田をつかって少しずつ端子に半田を流し込むことに。
集合抵抗やコンデンサ、ヘッダーピンなどをつけて、ようやく出来上がる。
カメレオンUSBとロジアナを接続。USBケーブルをつけてPCと接続。特に問題なさそうだ。
ロジアナソフトを起動して、動作確認をする。
32chあるのでそれなりに大変。ひとつづつ信号を入れて画面をみる。
う~ん、いくつかのピンで信号が重なっていたり、全然信号が出てこないものがある。簡単なテストなので接触不良もあるだろうから、あとでしっかりと調べることにしよう。
ボードの突起物もほとんどないためかなりコンパクト。
あらかじめ買っておいたプラスチックケースにもぴったりと収まりそうだ。
さあ、このあと、ケースの加工とロジアナ用プローブをつくれば完成だ。
でも、今日はここまでかな。
2009年10月17日土曜日
カメレオンUSB+ロジアナ
ロジアナの必要性を感じて探していたら、アマチュア向けだが1万円以下で32ch、100MHzまで計測できるロジックアナライザがあることを知った。
それで、早速、秋葉原に行き、ITプラザで購入した。
カメレオンUSBが4980円で、ロジアナが4000円。
あわせて、千石でテイシン製のTB-50というモールドケースとIDE HDDなどで使われるL型40ピンコネクタを買った。
このキットは、説明書などは何もついておらず、ある程度こういうものに知識がないと難しいなと思う。しかし、発売元のオプティマイズのサイトには回路図など多くの情報が充実しているようなのでそれほど困らないだろうと感じた。
2009年10月12日月曜日
世の中そんなにあまくない
そう甘くないです。
ModelSimで検証ができて問題が解決したように見えたが、実機での検証は良くなるどころかますます悪化したように見える。
以前は、ごくわずかながらでも信号が出て動いていたけれど、まったく動かなくなってしまった。PIC側の周波数の設定を変更すると信号が届いて反応しているのだが、その結果が完全にZEROになってしまい、波形がでないのだ。
配線を再チェックすると、1箇所で間違いを発見した。けれど、その修正でも直らない。
まだまだ見えない問題が隠れている。それに、今の回路をいろいろ検討すると、異常時の対処がない点も気になり始めた。フェールセーフが不十分なのだ。配線が断線していても、安定しているのかどうかとか、信号に何かしらの強力なノイズがのった場合に、どういう挙動をするのかなどなど。
もう少しいろんなパターンをシミュレーションしてみるべきなのかもしれない。
あるいは、PICから伝送される信号を見るためのロジックアナライザー的な計測器が必要なのかもしれない。
ModelSimで検証ができて問題が解決したように見えたが、実機での検証は良くなるどころかますます悪化したように見える。
以前は、ごくわずかながらでも信号が出て動いていたけれど、まったく動かなくなってしまった。PIC側の周波数の設定を変更すると信号が届いて反応しているのだが、その結果が完全にZEROになってしまい、波形がでないのだ。
配線を再チェックすると、1箇所で間違いを発見した。けれど、その修正でも直らない。
まだまだ見えない問題が隠れている。それに、今の回路をいろいろ検討すると、異常時の対処がない点も気になり始めた。フェールセーフが不十分なのだ。配線が断線していても、安定しているのかどうかとか、信号に何かしらの強力なノイズがのった場合に、どういう挙動をするのかなどなど。
もう少しいろんなパターンをシミュレーションしてみるべきなのかもしれない。
あるいは、PICから伝送される信号を見るためのロジックアナライザー的な計測器が必要なのかもしれない。
ModelSimの使い方
ModelSimを使ってみた。以下、自分用の使い方の覚書。
まず、シミュレーション用のVHDLをISEで作成する。
ISEを立ち上げて、左上側のSourceウィンドウの中のデバイスのところでマウスを左クリックしてメニューを出す。メニューの中のNew Source...を選択する。
ウィザードが立ち上がるので、
左が側の"VHDL Test Bench"を選択し、右側のファイル名を入力する。今回は、'3ph_sg_test'とした。右側下のLocation:は、変更せずにNextを押下。
次に、VHDLソースが出てくるので適切なファイルを選択。
ここでは、一番上の'dds_3sg'を選択した。
Nextを押下。
Wizardの最後に確認画面がでるのでFinishを押下。
すると、VHDLのテスト用ソースが生成される。
80行目~102行目の部分を目的にあわせて修正する。
テスト用の信号をVHDLで記述するのだが、今回は左のような感じにしてみた。
ここまで出来たら、これらのVHDLソースを使って、ModelSimでシミュレーションを実行してみることになる。
これ以降のシミュレーションを実行するまでの手順は、
Help>PDF Documentation>tutorial
を参考にした。
チュートリアルには、「Create working Library」とある。
まず、ModelSimを立ち上げる。
プロジェクトがないとWizardが立ち上がるようなので、Create Projectをする。
ここでは、プロジェクト名を'dds_3sg_test'とした。
この後、Add items to the Projectというダイアローグが出てくる。
ここで、右上のAdd Existing Fileを選択する。
次のようなダイアローグが出てくるので、Browseボタンを押下する。
ファイル選択ダイアローグが出てくるので、ISEで作成したVHDLソースファイルを選択する。
複数のファイルが同時に選択可能だ。
選択したら、開くボタンを押下する。
Add items to the Projectというダイアローグがまだ残っているので右下のCloseボタンを押下。
画面右上のWorkspaceウィンドウに先ほど選択した4つのファイルが入っていることに気づく。
「Compile the Design」
この状態でコンパイルを実行
Complile>Compile All
あれれ、、、エラーが出ている。
赤くなったエラー行をダブルクリックすると詳細が表示される。
テスト用のVHDLの3行目がおかしいと言っている。
ここでも赤くなった行をダブルクリックする。
すると、ソースが表示された。オレンジ色で問題の箇所がマーキングされている。
うーん、このツールよく出来ているな~と関心。
ところで、3ph_sg_testというキーワードが重なってしまったのが原因??。よくわからないが、とにかく修正してみることにする。修正は、ModelSimから出来ないので、いったんISEに戻ことになる。
ところで、ちょっと、この状態でライブラリを作成してみた。
File>New>Library...
ライブラリ名を入力
すると、4つのファイルのうち、コンパイルが正常に終了した3つのファイルが、workspaceウィンドウのLibraryタブのリストの一番上にあるworkの中に入っていた。
どうやらコンパイルが出来たものだけライブラリとして登録されるようだ。
では、プログラムを作りなおしてみる。
ISEに戻って、上記と同じ要領でVHDLを生成。
ファイル名が数字で始まっているのが問題かもしれないので、今度は'dds_3sg_test.vhd'としてみた。
生成されたものを先ほどと同じ修正を加えて保存。
ModelSimに戻って、画面右上のWorkspaceウィンドウのProjectタブを選択。余白部分でマウスを右クリックしてメニューを表示
Add to Project>Existing File
でダイアローグを出して、Browsボタンを押下。
ファイル選択ダイアローグが出てくるので、先ほど作り直した'dds_3sg_test.vhd'ファイルを選択して開くボタンを押下。
WorkspaceウィンドウのProjectタブ内にファイルが追加されたことを確認。4ファイルになっている。
このあと、先ほどやったようにCompile Allを実行する。
WorkspeceウィンドウのLibraryタブに切り替える。
リスト一番上のwork左の+マークをマウスで押すとライブラリとして登録されたエンティティが表示される。ちゃんと4つ入っていることがわかる。
「Load the Design」
次にこの4つのうち、シミュレーションのターゲットとなるエンティティをダブルクリックして、Loadを行う。このLoadを行うことで、ModelSimに最新のファイル状態が取り込まれるようである。
「Run the Simulation」
ここまできてようやくシミュレーションがスタートできる状態になる。
<<画面の表示が変わった。
左上のWorkspaceウィンドウには、Sim, Files, memories, Capacityといったタブが増えている。
右上にはdds_3sg_test.vhdソースが表示されている。
ここでいったんwaveウィンドウを開いてみる。
View>Wave
すると、右上のソース表示ウィンドウがタブ表示になり、waveがタブとして表示された。
しかし、このままではシミュレーションを開始しても肝心の表示したい信号が登録されていないので見ることができない。
次に、右上のWorkspaceウィンドウのsimタブ中のリスト一番上のdds_3sg_testの上でマウスの右クリック、メニューを出す。そして
Add>To Wave>All items in region
を選択。
すると青い色のマークがついた信号名が追加される。
(もしもこれを行わずにRunしたら、本当になにも表示されないのだ)
このままだと、小さくて見づらいので、ウィンドウの右上端の
+マークとXマークの間にあるUnlockを押して、独立したウィンドウにすると都合が良い。
さあ、いよいよシミュレーションの開始だ。
その前に、ツールバーの中のシミュレーションバーで、実行したい時間を設定しておく。
今回は、おおよそ2000μsec必要なので、2000usをセットする。このツールバーは独立する前のウィンドウにも、独立して表示したwaveウィンドウの上にもある。
ツールバーの数字をセットしたすぐ右横のアイコンがRunボタン。これをクリックするとシミュレーションが実行され、2000usに達したらstopしてくれる。
画像は、ツールバーの虫眼鏡のマイナス記号がついたZoom Outを使って、結果の時間軸を圧縮した状態のもの。
テスト用の入力信号が上の3段に表示されている。
その下の緑色が50MHzのベースクロック。細かすぎて緑色につぶれている。さらにその下の白っぽい緑のライン3本が出力されている3相の周波数だ。これもつぶれてしまっている。でも、Zoom Inして時間軸を引き伸ばせば見えるようになる。
あと、便利な機能はカーソルだ。
黄色い色のカーソルを使うと、カーソル間の時間が詳細に表示される。マーキングしておくとスクロールで移動させたときもポイントがすぐにわかる。
それから、表示されたデータをアナログ表示することもできる。
信号をマウスで選択して、右クリックしてメニューを出す。
Format>Analog(automatic)
で波形となって表示される。
多少待たされる。その間、CPUファンがうなっている。
1本出来上がり。しかし、これもよく出来ている機能だ。。。素晴らしい。
3本完成。
画像の左側が100kHzの波形で、きれいな三相波形が見える。右は数十MHzの波形だが、周波数が高すぎて白くつぶれてしまっている。
2本の黄色いマーカーに注目。
FQLOAD信号がLOWに落ちてから5us後に周波数が切り替わっている。設計どおりだ。
こちらは同じポイントで時間軸を変えたところ。
右側の波を見た感想は、Sinカーブとはいえないが、周期のずれ方から一応3相にはなっているようだ。1サイクルが3クロックだから周波数は16.67MHzぐらいか。
はじめ、信号をアナログにしたときに波形がプラス側とマイナス側が逆転して凹型の組み合わせたもののような形になっていたので、VHDLのソースに問題があるのか・・・と思ったが、ModelSimが信号を符号付きとして扱っていたようだった。
それで、上記と同様に信号をマウスの右クリックでメニューを出して、
radix>unsigned
にした。すると画像のようなキレイな波形となって表示された。ホッと一安心。
【問題の解決】
さて、このModelSimを使っていて、先日の信号が0.01Hzに落ちてしまう現象を再現してみた。
シミュレーションから得られた結論は、外部であるPICから与えるENABLE信号のHIGHTレベルの時間が短かったということだった。PICでは2μsecに設定してあったのだが、テスト波形をこの2μsecにすると、見事に周波数が出てこなくなった。2μsecだとぎりぎり時間が足りなかったようだ。これを3μsecにしてやると上の画像のようにきちんと周波数の切り替えが出来た。
原因がわかって一安心。あとは、PICの時間を3μsecに修正して、実機で確認だ。
※しかし、今日は随分と長文になってしまったなぁ。。。
参考サイト:電子回路の豆知識
まず、シミュレーション用のVHDLをISEで作成する。
ISEを立ち上げて、左上側のSourceウィンドウの中のデバイスのところでマウスを左クリックしてメニューを出す。メニューの中のNew Source...を選択する。
ウィザードが立ち上がるので、
左が側の"VHDL Test Bench"を選択し、右側のファイル名を入力する。今回は、'3ph_sg_test'とした。右側下のLocation:は、変更せずにNextを押下。
次に、VHDLソースが出てくるので適切なファイルを選択。
ここでは、一番上の'dds_3sg'を選択した。
Nextを押下。
Wizardの最後に確認画面がでるのでFinishを押下。
すると、VHDLのテスト用ソースが生成される。
80行目~102行目の部分を目的にあわせて修正する。
テスト用の信号をVHDLで記述するのだが、今回は左のような感じにしてみた。
ここまで出来たら、これらのVHDLソースを使って、ModelSimでシミュレーションを実行してみることになる。
これ以降のシミュレーションを実行するまでの手順は、
Help>PDF Documentation>tutorial
を参考にした。
チュートリアルには、「Create working Library」とある。
まず、ModelSimを立ち上げる。
プロジェクトがないとWizardが立ち上がるようなので、Create Projectをする。
ここでは、プロジェクト名を'dds_3sg_test'とした。
この後、Add items to the Projectというダイアローグが出てくる。
ここで、右上のAdd Existing Fileを選択する。
次のようなダイアローグが出てくるので、Browseボタンを押下する。
ファイル選択ダイアローグが出てくるので、ISEで作成したVHDLソースファイルを選択する。
複数のファイルが同時に選択可能だ。
選択したら、開くボタンを押下する。
Add items to the Projectというダイアローグがまだ残っているので右下のCloseボタンを押下。
画面右上のWorkspaceウィンドウに先ほど選択した4つのファイルが入っていることに気づく。
「Compile the Design」
この状態でコンパイルを実行
Complile>Compile All
あれれ、、、エラーが出ている。
赤くなったエラー行をダブルクリックすると詳細が表示される。
テスト用のVHDLの3行目がおかしいと言っている。
ここでも赤くなった行をダブルクリックする。
すると、ソースが表示された。オレンジ色で問題の箇所がマーキングされている。
うーん、このツールよく出来ているな~と関心。
ところで、3ph_sg_testというキーワードが重なってしまったのが原因??。よくわからないが、とにかく修正してみることにする。修正は、ModelSimから出来ないので、いったんISEに戻ことになる。
ところで、ちょっと、この状態でライブラリを作成してみた。
File>New>Library...
ライブラリ名を入力
すると、4つのファイルのうち、コンパイルが正常に終了した3つのファイルが、workspaceウィンドウのLibraryタブのリストの一番上にあるworkの中に入っていた。
どうやらコンパイルが出来たものだけライブラリとして登録されるようだ。
では、プログラムを作りなおしてみる。
ISEに戻って、上記と同じ要領でVHDLを生成。
ファイル名が数字で始まっているのが問題かもしれないので、今度は'dds_3sg_test.vhd'としてみた。
生成されたものを先ほどと同じ修正を加えて保存。
ModelSimに戻って、画面右上のWorkspaceウィンドウのProjectタブを選択。余白部分でマウスを右クリックしてメニューを表示
Add to Project>Existing File
でダイアローグを出して、Browsボタンを押下。
ファイル選択ダイアローグが出てくるので、先ほど作り直した'dds_3sg_test.vhd'ファイルを選択して開くボタンを押下。
WorkspaceウィンドウのProjectタブ内にファイルが追加されたことを確認。4ファイルになっている。
このあと、先ほどやったようにCompile Allを実行する。
WorkspeceウィンドウのLibraryタブに切り替える。
リスト一番上のwork左の+マークをマウスで押すとライブラリとして登録されたエンティティが表示される。ちゃんと4つ入っていることがわかる。
「Load the Design」
次にこの4つのうち、シミュレーションのターゲットとなるエンティティをダブルクリックして、Loadを行う。このLoadを行うことで、ModelSimに最新のファイル状態が取り込まれるようである。
「Run the Simulation」
ここまできてようやくシミュレーションがスタートできる状態になる。
<<画面の表示が変わった。
左上のWorkspaceウィンドウには、Sim, Files, memories, Capacityといったタブが増えている。
右上にはdds_3sg_test.vhdソースが表示されている。
ここでいったんwaveウィンドウを開いてみる。
View>Wave
すると、右上のソース表示ウィンドウがタブ表示になり、waveがタブとして表示された。
しかし、このままではシミュレーションを開始しても肝心の表示したい信号が登録されていないので見ることができない。
次に、右上のWorkspaceウィンドウのsimタブ中のリスト一番上のdds_3sg_testの上でマウスの右クリック、メニューを出す。そして
Add>To Wave>All items in region
を選択。
すると青い色のマークがついた信号名が追加される。
(もしもこれを行わずにRunしたら、本当になにも表示されないのだ)
このままだと、小さくて見づらいので、ウィンドウの右上端の
+マークとXマークの間にあるUnlockを押して、独立したウィンドウにすると都合が良い。
さあ、いよいよシミュレーションの開始だ。
その前に、ツールバーの中のシミュレーションバーで、実行したい時間を設定しておく。
今回は、おおよそ2000μsec必要なので、2000usをセットする。このツールバーは独立する前のウィンドウにも、独立して表示したwaveウィンドウの上にもある。
ツールバーの数字をセットしたすぐ右横のアイコンがRunボタン。これをクリックするとシミュレーションが実行され、2000usに達したらstopしてくれる。
画像は、ツールバーの虫眼鏡のマイナス記号がついたZoom Outを使って、結果の時間軸を圧縮した状態のもの。
テスト用の入力信号が上の3段に表示されている。
その下の緑色が50MHzのベースクロック。細かすぎて緑色につぶれている。さらにその下の白っぽい緑のライン3本が出力されている3相の周波数だ。これもつぶれてしまっている。でも、Zoom Inして時間軸を引き伸ばせば見えるようになる。
あと、便利な機能はカーソルだ。
黄色い色のカーソルを使うと、カーソル間の時間が詳細に表示される。マーキングしておくとスクロールで移動させたときもポイントがすぐにわかる。
それから、表示されたデータをアナログ表示することもできる。
信号をマウスで選択して、右クリックしてメニューを出す。
Format>Analog(automatic)
で波形となって表示される。
多少待たされる。その間、CPUファンがうなっている。
1本出来上がり。しかし、これもよく出来ている機能だ。。。素晴らしい。
3本完成。
画像の左側が100kHzの波形で、きれいな三相波形が見える。右は数十MHzの波形だが、周波数が高すぎて白くつぶれてしまっている。
2本の黄色いマーカーに注目。
FQLOAD信号がLOWに落ちてから5us後に周波数が切り替わっている。設計どおりだ。
こちらは同じポイントで時間軸を変えたところ。
右側の波を見た感想は、Sinカーブとはいえないが、周期のずれ方から一応3相にはなっているようだ。1サイクルが3クロックだから周波数は16.67MHzぐらいか。
はじめ、信号をアナログにしたときに波形がプラス側とマイナス側が逆転して凹型の組み合わせたもののような形になっていたので、VHDLのソースに問題があるのか・・・と思ったが、ModelSimが信号を符号付きとして扱っていたようだった。
それで、上記と同様に信号をマウスの右クリックでメニューを出して、
radix>unsigned
にした。すると画像のようなキレイな波形となって表示された。ホッと一安心。
【問題の解決】
さて、このModelSimを使っていて、先日の信号が0.01Hzに落ちてしまう現象を再現してみた。
シミュレーションから得られた結論は、外部であるPICから与えるENABLE信号のHIGHTレベルの時間が短かったということだった。PICでは2μsecに設定してあったのだが、テスト波形をこの2μsecにすると、見事に周波数が出てこなくなった。2μsecだとぎりぎり時間が足りなかったようだ。これを3μsecにしてやると上の画像のようにきちんと周波数の切り替えが出来た。
原因がわかって一安心。あとは、PICの時間を3μsecに修正して、実機で確認だ。
※しかし、今日は随分と長文になってしまったなぁ。。。
参考サイト:電子回路の豆知識
登録:
投稿 (Atom)