ラベル MAX2 CPLD の投稿を表示しています。 すべての投稿を表示
ラベル MAX2 CPLD の投稿を表示しています。 すべての投稿を表示

2012年7月5日木曜日

AlteraのBlasterⅡは問題があるようですな

オプティマイズさんのMaxⅡを買って組み立てた。
そして、コーディングしたVHDLをコンパイル。
しかし、MaxⅡへの書き込みに失敗した。
以前は、QuartusⅡのヴァージョンを下げて対応したのだが、PCの環境を変えるたびに同じことをするのも困る。

パラレルポートをつかうByteBlasterⅡは、どうなのだろうかとちょっと調べてみた。

Altera版問題

よく調べたものだなと感心した。

結論として得たのは、もう、パラレルポートがレガシーすぎること。
そろそろUSBに切り替えた方が良いようだ。

USB-Blasterもどき

を見つけた。
ほかにも、USB-Blasterを自作する記事も見つけたが、USBのICとCPLDが必要なのでパス。
ちょうどPIC18F14K50が手持ちであったので、つくってみることに。。。。

2010年11月15日月曜日

ALTERAのQuartusⅡでByteBlasterⅡが認識されない

QuartusⅡのバージョンを10.0にあげたところ、ByteBlasterⅡが認識されなくなってしまった。
FAQに、ドライバーをコマンドラインからインストールする方法が書いてあったので実行したけれど、症状は変わらなかった。

MAX2に書込みができないと困るので、ヴァージョンを以前使っていた9.1に下げたら、問題なく認識された。

以上、備忘録的に残しておく。

2010年2月1日月曜日

パルスジェネレーター&カウンターのバグ修正

ひとまず完了としたものの、バグが残っていたのが気持ち悪いため、修正した。

パルス信号が反転していたのは、出力バッファに74AC04をつけていたためで、このバッファがあることをすっかり忘れていた。これはCPLDの出力を反転して対応した。

あと、周波数カウンター用につけた12.8MHzのTCXOの出力レベルが低いため、ミスカウントする。これは、TCXOの出力にプルアップ&プルダウンの10kオームの抵抗をつけて、中心がVcc(3.3v)の1/2になるようにした。
ただ、まだゲートタイムが間延びするみたいなので、これが原因ではないのかもしれない。

周波数カウンターの入力にターミナルをつけてカウントしたら1Hzが表示されるものについては、RF入力をカウンター入力の手前で反転することで解消。表示は0Hzとなった。
これは、RF入力アンプが反転増幅しているためで、カウンターのゲートが開くとHighレベルに移るので必ず1カウント入ってしまっていた。

残った問題点は、UHF入力がオープン状態あるいはターミナルで終端した状態で、カウンターが数GHzに振り切ってしまう件。これは、プリスケーラーが発信しているように思われる。プリントパターンの浮遊容量を調整する必要があると思うが、すぐには解決しそうにない。

あとは性能テストか。。。

2010年1月17日日曜日

パルスジェネレータ&カウンタの製作(その6)


ようやく出来上がった。

CPLD側のデータ出力処理がおかしかったのと、PIC側の入力をIOポートではなくラッチからとっていたり、読み込んだ周波数のLSBとMSBを逆さまに処理していたりと、たくさんのバグを片付けた。



写真の1枚目と2枚目はパルス出力をオシロスコープで確認しているところ。3CH同時出力中で、どれも周期Tは1ms、デューティー比は上が10%、真ん中が50%、下が90%に設定。(おや、パルスが逆転している。写真を撮ったときは気がつかなかったが、まだバグがあるようだ・・・)
オシロスコープの電圧は、1Ch、2Chが2V/divで、3Chが0.5V/div。3Chは、20dBの自作アッテネーターをつけている。

パルスジェネレーターについては、パルスが逆転しているものの、そのほかは大きな問題はなさそうだ。

一方、周波数カウンタについては、いくつか問題が残った。

まず、外部入力を終端した場合に本来なら0Hzとなるはずなのに、1Hzの表示が出ていること。これは、CPLDのカウンター処理部のタイミングがおかしいようである。

それから、小さなケースに詰め込んだため、LCDケーブルの信号がノイズとなってカウンターに入ってしまっている。これは、カウンターの感度が良いために、微小なノイズも拾っているということだが、カウンター部分をシールドすれば何とかなりそうな気がする。
試しに外部入力にケーブルをつなぐと1Hzに落ち着くので、実際の測定にはあまり影響がないかもしれない。
それから、時々カウンターがビジー中に息をつくように止まることがある。これは、12.8MHzクロックが不安定なのかもしれない。

同様に、プリスケーラ側に切り替えると、外部入力をオープンにした状態で2.5GHzあたりをうろうろしている。これも感度が高いためと思われる。上記と同様に外部入力を終端してみたが0Hzにはならず、GHzあたりの数字をうろうろとしている。つぎに外部入力にケーブルをつなぎ、400MHz前後で発信する被測定物の信号を与えるてみた。(3枚目の写真)
すると、それなりの数字が出ているので、よほど微弱な信号でなければ大きな問題ではないかもしれない。ただ、もう少し詳細なデータが必要だ。

以上のような問題はあるものの、以前作成した周波数カウンターに比べると格段に性能がUPした。このことはMAX2の性能が大きく寄与しているように思う。それから、コンパクトな形にしたので、使い勝手も向上したように思う。そして何よりもパルスジェネレーターが出来たので、MOS-FETの負荷実験などをすることができる。

細かなバグ直しや調整、機能測定は後日にすることとして、いったんこの製作は終了することにする。

PIC24F+RTOSプロジェクトファイル
MAX2_VHDLソース
設計資料と回路図

最後に、あちこちウェブから参考にさせていただいたおかげで出来たような訳で、それもあまりに多いので特別記載しませんが、この場を借りて諸先達たちに感謝申し上げます。

2010年1月11日月曜日

パルスジェネレータ&カウンタの製作(その5)

もうあと少しなのだが、なかなか完成しない。
すでに、パルスジェネレータ部分は出来上がっていて、残りは周波数カウンターの表示のみ。

MAXⅡのロジック利用率も90%を超えている。はじめはロジックエレメント数が570もあるから大丈夫と思っていたが、すでに余裕はない。こちらも少しずつ余分な機能などを削った。

一方、PICのメモリー不足がまだ続いている。変数をグローバルにしたり、簡単な関数はマクロにしたり、関数呼び出し部をベタ書きにしたりして、パルスジェネレータ部分は動作した。

しかし、今度は周波数カウンタの読み取りで暴走が始まる。MAXⅡから得た周波数をいったんRTOSのキューに収めて別スレッドで表示させていたが、このキューの処理が意外とスタックを食うようだ。RTOSは、便利なのだが、その分メモリーを余分に消費してしまう。

2010年1月5日火曜日

パルスジェネレータ&カウンタの製作(その4)


PIC側のソフトウェアの製造とデバッグ中。。。進捗50%ぐらい。

LCDの表示とキー入力やメニューと各設定への遷移は完了。


PIC側の残りは
・パルス幅とデューティー比の編集部分。
・入出力アクティブ表示用LED点灯。

CPLD側は、
・パルス出力
・カウンター
・ブザー

さあ、また次の休みに頑張ろう。

2009年12月27日日曜日

CPLD MAX2の動作確認

まずは、MAXⅡに5つのLEDを順番に点灯させていく簡単なプログラムを登録して動作確認。



VHDLソース

2009年12月20日日曜日

パルスジェネレータ&カウンタの製作(その2)

先週作ることができずに残っていた周波数カウンタ用のプリアンプとプリスケーラ部分を作った。

NEC製のuPB1507GVというプリスケーラは、3GHzまでカウントできるものなので、高周波でも大丈夫なようにしなければならない。そのため、写真のように、25mm×35mmに切った両面生基板の上にカッターナイフでプリントパターンを削りだした。

プリスケーラのピンは0.5mmピッチなので、とても手間のかかる作業だ。手作業なので、何度も勢いあまって、基板上の余分なところまで切ってしまったりして、傷だらけの配線。こういうのは、早いところCNCフライスを作って自動化したいところ。

部品を慎重に配置しながら半田づけ。そしてテスターでチェック。
何箇所か半田ブリッジをつくってしまう。8本足のプリスケーラをいったん外してカッターナイフでパターンを削り直してリトライ。

左の画像は、なんとか、形になった状態。あちこちにあけた穴は、表面と裏面のグランドをつなぐためのスルーホール代わりのもので、ここにスズめっき線を通して半田づけする予定。


そして、左の画像がRFアンプ部と合体したところ。

レギュレーターの上を配線が乗っかっているのが多少気になるが、それほど発熱しないだろうと思うので、そのまま放置。





最後にケース本体に収めて、ようやくハードウェアの出来上がり。








さて、このままではただの箱。PICとCPLDのプログラムを完成させなくては。。。
ということで、製作は、まだまだ続くのであった。

2009年12月13日日曜日

パルスジェネレータ&カウンタの製作

パルスジェネレータ&カウンタを作っていた。

ケースの加工を先週行って、昨日今日と配線を行った。
ケースがそれほど大きいものではなかったので、いつもとは逆の工程で、先にケースと各パーツのレイアウトを決めて、そこに配線をしていくというやり方にした。

今日中に全ての配線が終わるだろうと思っていたら、カウンタ用の入力アンプ部で、コンデンサが2つ足りないことに気がついた。
しかし、すでに日が暮れてしまっていたので、不足パーツは今度の休みに買いに行くことにする。

とりあえず、いま出来上がっている部分の配線をテスターでチェック。1箇所配線忘れを発見した。

そして、PICとCPLDのコーディングへと。。。

今度の日曜日には完成するかな?

2009年11月23日月曜日

パルスジェネレータ&カウンタの設計

パルスジェネレータ&カウンタを作るにあたり、まずは設計からはじめる。とりあえず、仕様は以下のような感じ。

■パルスジェネレータ部
  1. パルス出力は3チャンネル
  2. パルス幅は100nsec~100msec、パルス幅刻みは100nsec、デューティー範囲は1~100%、デューティー刻みは100nsec
  3. 出力電圧は3.3V、74AC04でバッファ
■周波数カウンタ部
  1. RF入力とUHF入力の2入力を切り替えてカウント
  2. RFの周波数測定範囲は1~100MHz、UHFはプリスケーラ(uPB1507GV)入力で、周波数測定範囲は500MHz~3GHz
周波数の測定範囲で100MHz~500MHzは、測定対象外とするが、実際のところ入力信号のレベルなどに左右されるため、カタログの値よりも少し広い範囲もカバーできると思われる。
UHF帯は、高周波を意識する必要があるので入力を独立させた。

■その他
  1. CPUはPIC24F、CPLDはMAXⅡを使う
  2. インターフェースは、LCD16文字×2行と、タクトスイッチ4つ、ロータリーエンコーダ1、圧電スピーカー1個とLED6個
  3. RF入力は2SK241と2SC1815で作るアンプ、UHF入力はプリスケーラuPB1507GVへ信号を入力
  4. ケースはダイソーのはがき入れケースとする。
  5. 006P電池と外部9V電源を利用可能

次に、回路図を作っていて、あちこちのサイトの情報を寄せ集め状態で作るとPICのIOピンが足りなくなるということに気が付いた。

そこで、IOへの出力はいったんCPLD側で受けて、PICはIOを操作するための仮想レジスタへREAD/WRITEで対応することにした。機能を欲張ったらつくりが大変になるということか。今までに作った回路をそのまま使う訳にはいかないので、ここが今回の製作上の課題となりそうだ。

2日かけてようやく図面の第1版が出来上がった。

2009年11月8日日曜日

ByteBlasterⅡでMaxⅡへの書き込みが出来た

自作したByteBlasterⅡのTDIでエラーが出ていたので、それを追跡していた。

ノートPCを一度再起動した後、Dサブ用のケースに収めてあったByteBlasterⅡ基板を取り出して、テスターで回路をチェック。念のため、MaxⅡボード側のJTAGラインも確認。

その後、もう一度QuartusⅡを立ち上げて、ケーブルを手にぶら下げたままProgramerから書き込みスタートをしたら、あっさり動いてくれた。

どうも、空中配線が災いしたようだ。ケースに収めたときに圧迫されてエナメル線がどこかに刺さったか何かでショートしたのかも知れない。

MaxⅡボードの疑いも晴れ、2枚買ったMaxⅡを捨てなくて済んだ。ホッとひと安心。(^^;
これでシグナルジェネレータの製作が可能になった。

でも、どうしようか。。。もう一度ByteBlasterⅡをきちんと作り直したほうが良いのかもしれない。

そういえば、ITプラザでMaxⅡと一緒に購入したByteBlasterMVキットだけど、結果的にキットの組み立てに失敗しているということだなぁ。集合抵抗の半田付けに失敗しているのかもしれない。。。

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

MAX2のキットを組み立てて、QuartusⅡにてVHDLを書いてコンパイル。Programmerを起動してCPLDへの書き込みをしようとすると、画像のエラーメッセージが出る。

ByteBlasterMVの電源はCPLDのボードから供給されるので、CPLDの電源を確認したが、3.3V出ている。

原因はいまだ不明、ただいま調査中。。。

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間のシグナルの問題が解決してないなぁ。。。