2012年2月21日火曜日

FUNCTION GENERATORの作成 番外編 2

ファイル読み込みの部分の実装も終わった。



これで制御プログラムも一応完成だ。

先日公開した設計データも更新した。
http://www.hi-ho.ne.jp/bravo-fpga/

2012年2月19日日曜日

FUNCTION GENERATORの作成 番外編

番外編として、FUNCTION GENRATORの制御プログラムを作っている。
wxWidgetsを使ったGUIなプログラムだ。



このプログラムを作ってみて、機能面で変更したいところが出てきた。 当初、位相(Phase)はフェーズアキュムレータの初期値としていた。そのため動作中に位相を変更することは出来なかったが、プログラムを操作してみて、これでは不便なので動的変更ができるようにした。 実装はLBUFのファイル読み込みの部分が残っている。もう一息。。。

デバッグ中…


PLLのCLKOUT3の件(AR #46141)は、workaround(問題の回避策)としてはCLKOUT3の位相シフトを止める(値を0にする)ということなので、CLKOUT3には位相シフトの必要の無い信号を割り当てるように変更した。

2012年2月14日火曜日

AR #46141

Twitterで、ある外国の方のtweetで知ったのだが、Spartan6のPLLのCLKOUT3には位相シフト設定に問題があり、answerが発行されているようだ。 おぃおぃ・・・
詳細は http://www.xilinx.com/support/answers/46141.htm に書いてある。

lpddrcのdesignではCLKOUT3はbc_vldで90°位相で使用している。
確認しなきゃ。

2012年2月12日日曜日

FUNCTION GENERATORの作成 16

FUNCTION GENERATORにDRAM上の任意の領域のデータをDACに出力する機能を追加した。
MicroBoardは64MByteのLPDDR-SDRAMを搭載しており、LPDDRコントローラは昨年の11月~12月に作成した。DRAMからデータをリードして出力する部分はこれまで何度も作っているVGA表示用のラインバッファモジュールをベースにした。このモジュールの名称だがFUNCTION GENERATOの機能モジュールとして作ったのでラインバッファという名称は適当でない気がするのだが、他に適当な名前が思いつかないため、fg_lbufという名称にした。 fg_lbufが扱うデータフォーマットは16bitモードと1bitモードを持たせた。このモードはDRAM上の16bitをそのままDACに出力する。(今回使用しているDACは14bit幅なので、正確には、上位14bitがDACに出力される。) また、1bitモードはDRAM上の1bitを16bitに変換してDACに出力する。つまり、1bitの0, 1それぞれに対応するDAC値をレジスタで設定しておき、DRAMからリードした値に応じて対応するレジスタ値を出力する。 DACは50MHzで動作させており、DRAMの容量は64MByteなので、理論上は16bitモードの場合670msec、1bitモードの場合10.7sec分のデータをDRAMに持つことが出来る。(ただし、現状DRAMにアクセスする手段はUSB経由のUART I/Fなので転送に非常に時間がかかる。) この1bitモードは、I2CやUART等シリアルI/Fの通信波形の再生等に使えると思う。

以下はシミュレーションの様子
DAC出力が2CHあるので、fg_lbufも2つ持っている。


fg_lbufを2CHもっているので、リサージュ図形で任意の幾何学図形を描画させることができる。


この波形をXY表示させると・・・☆になる。




調子にのって、漫画を描いてみた。
通常の波形としてみるとこんな波形だが・・・


XY表示にするとこんな絵になる。


異星から地球に到達する信号もこんな感じの信号だったら面白い。
オシロスコープでXY表示させてみたら、そこに現れたのは・・・・
「ヤッホー」ていう文字だったりして。。。 なーんていう妄想をしてしまった。

一応、これでFUNCTION GENERATORは完成ということで、
このプロジェクトを終えようと思う。 \(^_^)/ 


RTL一式はいつも通り以下に置いた。
http://www.hi-ho.ne.jp/bravo-fpga/

2012年2月4日土曜日

FUNCTION GENERATORの作成 15

先週入手した筐体だが、リアパネルはアルミ板を購入して新しく作ろうと考えていた。しかし、パネル寸法が430mm x 48mmで近所のホームセンターの販売品の場合この大きさを満たす板は畳半畳分位のものしかなかった。さすがに大きすぎるので方針を変更し、現在のリアパネルに0.1mm厚の銅シートを貼って(不要な穴を塞いで)使うことにした。このシートは以前、別の目的で購入しておいた物だ。 以下はリアパネルにその銅シートを貼ったところ。左側の穴は電源、ヒューズ関係の穴で、右側はMicroBoardのLAN、USBコネクタ用の穴だ。


以下はその反対面


組み上げたところ


MicroBoardのコネクタ。  幸いにも思ってたよりは上手く位置合わせできた。ラッキー




動作確認中


何とかここまでこれた。バンザーイ  \(^_^)/
とりあえず、切った貼ったはこれで終わりで、後はFPGAの中身の仕上げに集中しよう。

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...