2012年1月29日日曜日

FUNCTION GENERATORの作成 14

今回作成しているFunction Generatorは筐体に入れて今後も使用していこうと考えている。その筐体として利用するため近所のリサイクル店でDSP Sound Processorとか言うPA用装置を購入した。 ジャンク品で構わないので1000円くらいで買えればと考えていたのだがその値段で購入できる物は無く、結局3500円程度の物にした。中古品を購入したのは、筐体の他にもセンタータップ付きの電源トランスやスイッチ類も取れる(再利用できる)だろうと期待したからだ。これらを新規で購入すると何だかんだで高くつきそうな気がしたのだ。分解して中身を確認するまではどの程度の部品が再利用できるかは不明だが、今回は期待通りだった。筐体もフロントパネルとリアパネルは単板なので交換も間単に出来そうだし、フロントパネルは現状の物を若干追加工してそのまま利用できそうだ。

以下は組み立て中の様子


フロントから見るとこんな感じになる。周波数表示用にLCDが欲しい気もするが、周波数や波形選択などはUSB経由でPCから行うので、まっいっか! という感じだ。

左側にある2つボリュームはジャンク箱にあったロータリーエンコーダで、出力振幅の調整用にと考えており、その隣のLEDは出力ON/OFFの状態表示用にと考えているのだが、MicroBoardのUser I/Oは使い切っているので、ボード上のLEDとディップスイッチのポートを使うつもりだ。

2012年1月27日金曜日

FUNCTION GENERATORの作成 13

試行錯誤の挙句、3.3Vの電源にコンデンサを追加、データバスに33Ωのダンピング抵抗追加、FPGAのドライブ強度を4mAに下げる等の対策が必要だったが、これでも100MHzではうまく行かず、結局クロック周波数を50MHzに落とすことにした。目標に到達できなかった。うーん残念。



50Hz


1KHz


100KHz


1MHz


5MHz


後はFPGAの中身の完成度を上げることに注力しようと思う。

2012年1月23日月曜日

DACモジュール

昨日間違って換装した外した方のDAC904を使ってDACモジュールを作ってみた。(ている。)


1.27mmピッチの変換基板にDAC904を取り付け、その上に0.1mm厚の生基板を貼り、その上にオペアンプを載せている。

ハンダ付けって、没頭出きるのでストレス解消にいいですな。

2012年1月22日日曜日

FUNCTION GENERATORの作成 12

ようやく両CHの実装ができた。 配線ミスをCH1のDACを壊したと勘違いしてピン互換のAD9764に換装するというポカもやらかしたりしたが何とか形にはなった。以下は動作確認している様子。


どうもCH1とCH2で干渉があるみたいで、CH1とCH2で違う波形を出力させると以下の様になる。


両CHで同じ波形を出した場合は波形は乱れない。




Spartan6 LX9 MicroboardのUser I/Oのピン数の制約のため、14bitのデータバスにCH1とCH2の信号を時分割多重、つまりDDR方式で出力している。周波数は100MHzだ。DACのクロックはデータクロックに90度位相をずらしているので論理的にはセットアップ/ホールドは2.5nsはとれているはずだ。 DAC90のセットアップ/ホールド1.0ns/1.5ns、AD9764は2.0ns/1.5nsなので問題無いはずだ。 試しに周波数を50MHzや10MHzに落としてみたのだが干渉波形は消えないので、セットアップ/ホールドの問題では無いのかもしれない。クロストークか??それとも電源回りが弱いのかな・・・
う~~むゅ、むみゅみゅみゅみゅ・・・・楽しい。

2012年1月19日木曜日

FUNCTION GENERATORの作成 11

LPFはIV変換をしている作動アンプで兼ねることにした。fcは幾つか試したかったのだが、手持ち部品が20PFだけだったのでfc=20MHzにした。 で、もう片方のCHの実装に着手した。

2012年1月15日日曜日

FUNCTION GENERATORの作成 10

動作させてみた。


動作はした。
以下は正弦波 10MHzを出しているところ。


ただし、上記はオシロスコープで20MHzの帯域制限をかけて見ている。
これを外すと以下のような波形になる。


以下は100Hz。


オシロスコープの帯域制限を掛けた状態で撮影してしまったので一見綺麗に見えるが、帯域制限を外すと輝線が4倍程度に太くなってしまう。


現状DAC出力電流を電圧振幅にするアンプがあるだけで、LPFは実装していないがやっぱ必要だ。

FUNCTION GENERATORの作成 9

1CH分の実装が大体できた。




残りのCHを実装する前に、この段階で動かしてみようかな。

2012年1月14日土曜日

FUNCTION GENERATORの作成 8

部品が入手できたので実装を開始した。

基板の銅箔にカプトンテープを貼り、 IC類はその上に両面テープで貼り付けている。
GNDに接続する箇所はカッターナイフでテープをくり抜く。


抵抗・コンデンサ類の実装は以下のようにしている。

2012年1月9日月曜日

FUNCTION GENERATORの作成 7

オペアンプ等の部品を注文したのだが連休の関係でまだ入手できていない。
Spartan3A StarterKitでの動作確認は一応できているので、現状のRTLのスナップショットを以下に置いた。

http://www.hi-ho.ne.jp/bravo-fpga/

2012年1月8日日曜日

FUNCTION GENERATORの作成 6

FUNCTION GENERATORだが、プリント配線板は作らずにSDRAMCを作成した時のようにユニバーサル基板に部品を張り付けてUEW線で配線するという方法で作ろうと考えている。 ユニバーサル基板は使うがアナログ回路なので、グランドは広くベタ状にしたいと考えており、銅板かプリント基板の生板をユニバーサル基板に張り付けてその上に回路を組みたいと考えていた。 プリント基板の生板を販売しているところをネットで調べてみて、PCBマテリアルズ(http://pcb-materials.com/)というところで0.1mm厚の生板を販売していることが分かり購入した。

 (今後のことも考えて0.5mm, 1.6mmもついでに購入した。)

以下はユニバーサル基板に生板を貼り付けてDACを置いてみたところ。


DACはTIのDAC904Eを使うつもりでいる。また、FPGA部はメモリ上の波形データの再生なども可能としたいので、Spartan6 LX9 Microboardを使うことにした。 ただし、MicroboardのUser I/Oは16本、DAC904Eは14bit I/Fなので、出力が1CH分ならギリギリ足りる。しかし、出力は2CH欲しいのでDDR方式で制御しようと考えている。

以下はシミュレーション波形
PMOD1_P1~PMOD2_P8がデータ、PMOD2_P9がCH1用クロック、PMOD2_P10がCH2用クロック、dac_out_1, dac_out_2はDAC904E初段のF/Fのつもり。




System Architectureは以下の通り


無謀かなー? やってみりゃ判るか。

2012年1月3日火曜日

FUNCTION GENERATORの作成 5

生成波形の歪みを見てみた。 と言っても歪み率計やスペアナを持っているわけではないので、オシロスコープでリサージュ波形を表示させて観測した。結果は、周波数が高くなるに従って1周期内のサンプル点数も少なくなるので、高周波数では歪みが大きかった。

10Hz (サンプル点数100000)


100Hz (同、10000)


1KHz (1000)


10KHz (100)


100KHz (10)


リサージュ波形だが、Sweep mode、 DSB変調と正弦波、三角波、鋸波との組み合わせで表示させてみると、まるでアニメーションを見ているようでなかなか面白い。

正弦波+正弦波
video
正弦波+三角波
video
三角波+三角波
video
鋸波+鋸波
video

2012年1月1日日曜日

FUNCTION GENERATORの作成 4

DDSのRTLをSpartan3A StarterKitに実装して動作確認を行った。


以下は各モードの出力波形

正弦波


三角波


鋸歯状波


2波形の乗算(DSB変調)


2波形の加算(三角波+正弦波)



SWEEP 正弦波
video

SWEEP 三角波
video

TE0720 No.4 (BNN-PYNQを動かしてみる 2)

TE0720でBNN-PYNQを動かすことが出来た。 以下は前回に続いてBNN-PYNQが動くまでの記録。 gdb (GNU debugger)で例外が出る原因を調べてみた。 例外が発生しているのはシェアードライブラリ(python_hw-cnv-pynq.so)の中であ...