汎用実験基板 APB−1

おじさん工房 TOP へ     サポート掲示板へ     APB-1 キット頒布中      English Translation

■応用例

多目的測定器(スペアナ、ネットアナ、ロジアナ、周波数カウンタ、SGなど)
ラジオ受信機
SSB信号発生器


■最新の設計資料・ソフトなど

回路図 ver. 1.10 (PDF 971KB)
基板 ver. 1.10 (PDF 2.1MB)(レイヤーごとに表示できます)
マウント図 ver. 1.10 (PDF 273KB)
組み立てマニュアル ver. 1.00 (PDF 803KB)

ソフトウェア20090717 (ZIP 127KB)

ソフトウェアソース20090726 (ZIP 1MB)
ソフトウェアソース ARM 20090730 (ZIP 185kB)
周波数カウンターVHDLソース20090909 (ZIP 5KB)

オーディオ出力バッファ改修 (PDF 106KB) ←修正しました
オーディオ帯域から使えるようにする改造 20090818 (PDF 105KB)

キットのサポートは掲示板にておこなっています。


■APB−1 基板 開発過程

2009/04/11 APB−1 汎用実験基板プロジェクト開始
2009/05/25 v1.00 基板動作確認中 途中経過
2009/05/31 SPI デバイス動作確認終了
2009/06/08 性能確認中
2009/06/14 ロジアナテスト中、ケース塗装
2009/06/17 ver. 1.10 基板発注しました。
2009/06/22 ブロックダイアグラム説明と制御ソフト
2009/06/28 ver. 1.10 基板最終確認中
2009/07/05 キット頒布開始します
2009/07/07 キット頒布開始しました。 掲示板を開始しました。
2009/12/31 20090710 以降の記事を多目的測定器の開発ページに移動しました。


2009/04/11

いままでいろいろ作ったもの(NSA−1とか)をみるとハードウェアとしてはかなり共通性が高いことに気づきました。 そこで汎用的に使える基板を設計し、それを今後の工作に使っていこうと考えました。


この汎用基板にのせる回路として以下のものを選定しました。
  CPU     AT91SAM7S321(USB ROM32KB RAM8KB)
  FPGA    XC3S250E(25万ゲート)
  A/D     ADC12L080(12ビット 80Msps 450MHzBW)
  D/A     AD9740 or DAC900E(10ビット 165Msps)
  D/A     PCM1754(24ビット 200Ksps)
  Buffer  SN74LVC245
  Flash   AT26F004(4Mビット)
  MicroSDコネクター
  その他レギュレーター、バッファなど

これらの中でCPU(ARM)は始めて使いますが、他のICは今までの工作で使ってきたものと同じなのでまず問題なく動かせると思います。 使うARM CPUはシリーズのなかで一番小さいものですがそれでもNSA−1で使ったAT90USB162と比べるとROMが2倍、RAMが8倍、クロック周波数は3倍です。 このCPUを選んだのはARMであること、USB接続だけでダウンロードできることからです。

プログラム開発はPCとUSB接続するだけでARMもFPGAも行えます。 いままででしたらそれぞれにJTAG接続したり、シリアルでつないだりと基板の周りがそれらアダプターで囲まれますがこの基板ではUSB1本ですべてOKです。 いざというときのためJTAGの端子も引き出してあります。

この基板を使って以下のものが作れると思います。
  スペアナ(30MHzまで) NSA−1と同等性能
  ネットワークアナライザーVNA(30MHzまで)
  ロジックアナライザー(16ビット)
  レシプロカル周波数カウンター
  パルスジェネレーター
  高周波シグナルジェネレーター(DC〜60MHz 10ビット精度 サイン波)
  低周波シグナルジェネレーター(10〜90KHz 24ビット精度 各種波形) ANA−1と同性能
  受信機(〜450MHz) AM/SSB/CW/FM
  FMステレオチューナー
  データーロガー
  MP3/AACプレイヤー(AT91SAM7S256に変更必要)
  1ビットD/A実験
  DRMのフロントエンド(復調はPCで行う)
  ...

スタンドアローンで使う場合、LCD用の端子や汎用ポートの端子をだしてありますのでそれらにLCD、SW、ロータリーエンコーダー、LEDなどをつなぎます。 FPGAのコンフィグはデーターをFlashから読み出してCPUから行います。 


■つくった基板

APB-1 基板写真

基板の大きさは100mmx80mmです。


■ARMCPU周辺を組み立てました

APB-1 マウント写真

SAM−BAを使ってプログラム転送できますが、プログラム開発の際は何回も書き直しが必要でSAM−BAでは毎回面倒なのでまず簡単なブートローダーを書き込みます。 起動時にポート10がLだったらローダーへ、そうでなかったら通常動作へ移行します。



2009/05/25

最初に作った Ver1.00 基板は設計に大きな問題もなかったので次回(Ver 1.10)はキット用も含めて基板発注する予定です。

■現状の基板

APB-1 マウント写真

USB の横につないである赤と黄色のコードの先には電源 SW をつないであります。 ARM をプログラムするときに PA10 のタクト SW を押しながら電源を入れる必要がありますが、電源 SW で ON/OFF することによりいちいち USB コネクターを抜き差ししなくても良くなります。

今現在、基板上の SPI デバイス( AT25DF041 と MICROSD )以外は動作確認できています。 SPI デバイスの確認を終えたら AD コンバーター(ADC12L080)へのかぶりを減らす対策(シールド板追加、グランド変更・強化など)をおこなう予定です。 現状 FPGA から出力している各種信号からのかぶりや、DA コンバーターからのフィードスルーが -80dB ぐらいあります。 シールドやグランド強化であと何 dB ぐらい改善されるかを見極めたいと思っています。 一枚基板なので大幅な改善は難しいと思いますが...


■ケースをつくりました

APB-1 ケースにいれた写真

アルミを折り曲げてケースを作りました。 大きさは 幅(110)x 高さ(30)x 奥行き(85) です。
穴開け用の型紙を貼ったままですが、形になってくるとうれしいものです。 底板にはゴム足の代わりにコルク板を両面テープで貼り付けてあります。

■回路図、基板

特に大きな問題もなかったので次の基板は微修正して ver1.10 とし、ほぼ設計を終えました。
 回路図 ver. 1.10 (PDF 160KB) ←古いです(20090617)
 基板 ver. 1.10 (PDF 1912KB) ←古いです(20090617) (レイヤーごとに表示できますが、全部重ねるとちょっと表示がおかしい)

■ARM ソフトウェア

ブートローダーは yboot を1部変更して使うことにしました。
最初の1回のみ SAM-BA を使ってアドレス 0x00100000 からの 4KB に書き込みます。

ブートローダー書き込み後は、電源 ON するときに PA10 につないであるタクト SW を押している場合はフラッシュ書き込みでアドレス 0x00101000 以降にユーザープログラムを書きこみます。 SW を押していなければ 0x00101000 からのユーザープログラムを実行します。 いまのユーザープログラムは、FPGA のコンフィグや、FPGA の READ / WRITE などを行う程度のシンプルなものです。

■閑話休題

その1
FPGA(XC3S250E) のコンフィグをスレーブパラレルモードでおこなっていますが、スレーブパラレルモードでは、bitファイルとデータバスで bit 順が逆になり、bit ファイルでの D7 が D0 に、D6 が D1 に... となります。 このことについては日本語の資料では記述が見つかりませんでしたが、UG332 の p.185 SelectMAP Data Ordering に書いてありました。

その2
今回の基板では、FPGA(XC3S250E) のポート数が足りないのでいくつかのピンはコンフィグ用ピンと共用していますが、そのなかに M[2..0] があります。 コンフィギュレーションの説明ドキュメント(たとえば DS312-2)には、これらのピンはコンフィギュレーション後はユーザーI/O(入出力)として使用可能と書いてありますが、実際には M[2] は入力専用でした。 どうも Xilinx のドキュメントでは複数のドキュメントに何回も同じことが書いてあるわりには、大事なことは書かれていない傾向があります。

その3
レギュレーターの温度がかなり上がります。 放射温度計で測ってみたところ、3.3V のレギュレーターは 儺=25℃、2.5V のレギュレーターは 儺=20℃、1.2V のレギュレーターは 儺=31℃、でした。 この基板では、外形の大きなレギュレーターIC + 放熱用パターン面積を大きく取ってあるにもかかわらずです。 雑誌の付録基板のレギュレーターは超小型品でパターンも小さいようですが本当に大丈夫なんでしょうか? パスコンをケチって正常に動かなかった基板も過去にあったようですし...

その4
USB を通して FPGA のコンフィグをおこなっており、それには約 400ms かかっています。 コンフィグデータは、169305 バイトあるので、転送速度は 423kB/s(3.4Mbps) となります。 あと倍ぐらいになればいいのですがもう限界かな...

その5
ATMEL から提供されている USBLibrary.dll を C# から使おうと思いましたがうまく動かせませんでした。 C++ のクラスを使った DLL は C# では使えないらしく、Windows の API を直接呼出すプログラムを別途作成する羽目になりました。 DLL っていろんなプログラムから共通に使えるように構造が標準化されているものだとてっきり思っていました。

その6
チップフェライトビーズをノイズフィルターとして電源ラインに使っていますが、意外と直流抵抗が大きいことがわかりました。 今回の基板に使ったものは 0.5オームありましたので、300mA で 0.15V 電圧降下します。 チップではないフェライトビーズではただの銅線なので限りなく 0 オームなのですが、チップでは構造が違う(TDK のチップビーズ説明)んですね。 次の基板からは直流抵抗 0.15オームのものに変更することにしました。

その7
PDF 作成ソフトとして、BullZip PDF Printerというのを使い始めました。 メニューが文字化けするのはネット上に修正ソフトがありました。 広告ページを見せられることもなく快適です。
また、dxf から PDF を作成するソフトとして、AutoDePDF D&D for Windowsというのを見つけました。 基板の設計データのようにレイヤーに分かれているもののときはレイヤー1枚ずつ見ることができるので便利かと思います(上の基板の PDF はこれで作成しました)。 ただ、すべてのレイヤーを見たときにレイヤーの上下関係が一貫していないように見えます(Acrobat Reader の問題?)。 PDF の中に広告が入るのもいやです。


2009/05/31

SPI を使うデバイス( AT25DF041 と MICROSD )の動作確認をおこないました。 AT25DF041 の書き込みと読み出し、SD カードの SPI モードへの移行およびブロック読み出しができていますのでハードウェアとしては問題ないといえます。
AT25DF041 と MICROSD はSPI バスを共有しており、それぞれ NPCS0 と NPCS1 で選択するようになっています。 AT91SAM の SPI モジュールには CS を L(アクティブ)にしたままにするという設定( CSR レジスターの CSAAT ビット)がありますので最初はこれを使っていたのですが、SD カードとのやりとりでは SD カードからの応答時間が一定ではないため CS を H にするタイミングが面倒なので CS はすべて PIO として制御することにしました。

■SDカードの制御

SD カードの仕様書は、SD カードアソシエーションから Simplified_Physical_Layer_Specification ver2.00 がダウンロードできます。 また SanDisk の ProdManualSDCardv1.9.pdf というファイルがネットから落とせます。
SD カードは SPI モードで動かせることになっていますが、実はどちらの資料をみても CS とデータのタイミングや、SPI のどのモードで動くのかについての記述がありません。 ネットで SD カードを動かしているサイトでは SPI のモード 0、もしくはモード 3 で動くとありましたので、モード 0、モード 3 の双方で実際に実験してみましたがどちらのモードでも CMD1 や CMD17 を複数回送ると 1 回おきに無反応になるという不可解なことがおきました。
わけがわからず上記資料を読み直していると「コマンドやデータのビットストリームは Start bit で始まり、Stop bit で終わる」という記述(Simplified Physical Layer Specification p.93)に気がつきやっとわかりました。 SD カードは純粋な SPI ではなく CS が L の間ずーっとデータを読み取り Start bit がきたらそこで 8 ビット単位の同期をとるビットシリアル通信なのです(そういえば SD モードのときは CS がなくビットパターンで同様に同期を取っています)。

そこで、確実に同期が取れるように CS を L にした直後、CMDn を送る前に 0xFF(データラインを H にしたままクロック)を送ることでコマンドを何回送っても正常に動作するようになりました。

■フラッシュのファイル構造

AT25DF041( Data Flash ) のファイル構造は、単純でかつ汎用性が高い形式として下記のようなチャンク形式にします。

DataFlash のファイル構造

ID は、間違えて書き込んだときに同じビットパターンにならないように上位 4 ビットと下位 4 ビットで反転してあります。 サイズフィールドは 3 バイトなので最大サイズは 16MB となります。

スタンドアローン動作させるときは電源 ON で Flash 上のデータで FPGA をコンフィグしますが、コンフィグデータは 165kB なので 512kB ある Data Flash の大半があまってしまいます。 コンフィグデータを複数もって状況に応じて切り替えるとか、仮想記憶のようにプログラムを SRAM に転送して実行するとか、漢字 ROM データを持つとか、いろいろ応用ができそうです。

ちなみに、Ver1.10 の基板ではグラフィック液晶もつなげられるように LCD コネクターに AT91SAM からポートを 2 本余分に配線してあります。 これで漢字表示も OK です。

■閑話休題

その1
SD カードを動かしているサイトをみても SD カードの SPI モードがビットシリアルだということに言及したサイトはなく、偶然動いているんでしょうか。
無反応時は 0xFF が返ってくるので無視してリトライしているとか、「SD カードを動かすときは 0xFF を最初に送るべし」というのがノウハウとしてあるのかもしれません。
たとえば、トラ技 2007 年 2 月号 p.117 にセットアップ時間をかせぐために最初に 0xFF を 1 バイト送るという記述がありました。 しかし SanDisk の仕様書 5.4.4 には NCS(CS からコマンドまで)は最低 0 となっていますのでセットアップ時間をかせぐ必要はありません。 もっとも仕様書に NCS の項目がある(CS を L にしてから CMDn を送るまでの時間はいつでも良い)こと自体、不思議と思うべきでした。

その2
AT91SAM の仕様書の CSR レジスターの説明が分かりにくいです。 CPOL ビットと NCPHA ビットで SPI モードを決めるのですが、文章で書いてあるだけなので非常にわかりにくいです(最初のクロックエッジでデータが変わり、次のクロックエッジでキャプチャされるというように)。 しかも NCPHA は定義が普通と逆(わざわざ N をつけている)で余計にわかりにくいです。 ちなみにモード 0 にするには、CPOL=0、NCPHA=1 にするようです。
英語の仕様書などでは図で説明してくれればすぐに理解できるようなことを文章で長々と説明していることがよくあります。 英語圏の人はそのほうが分かりやすいのかもしれませんが、私はいつも文章を読みながら図を余白に書いています。 えっ、このサイトも図が少ないって...

その3
フラッシュ上のファイル形式として上記のようにチャンク構造を選びました。 このフラッシュは 4kB 単位での消去ができますのでチャンクは 4kB の整数倍としています。 これでファイルを変更するときでもサイズが同じなら単純に書き換えすればよくなります。 そんなに頻繁に書き換えることもないでしょうからウェアレベリングは考慮しなくても大丈夫でしょう。
ちなみにチャンクは、クイックタイムや AVI でも使われている由緒正しいフォーマットで、上記はそれを簡略化したものです。

その4
AT91SAM の内蔵プルアップ抵抗は仕様書のリーク電流(143uA 〜 600uA)から類推すると 23k 〜 5.5k のはずですが、1k で GND につないでも1.8V ぐらいまでしか下がらないところをみると何か非線形な素子を使っているようです。 最初 SD カードの DAT0 にはバス衝突保護のため 1kΩをつけていたのですが十分にドライブできないため 100 Ωに変更しました。
AT91SAM 仕様書 p.693 Errata 40.14.2.2 にプルアップを使うときには 500Ω以下でドライブしろって書いてありました。 チップの設計ミスのようです。

その5
同じく AT91SAM 仕様書 p.694 Errata 40.14.5.1 によると、SPI をリセットするには 2 回 SWRST を実行します。 郵便配達は 2 度リセットを押す...はい、おじさんギャグでした。
それにしても Errata が長い、8 ページもある。


2009/06/08

以前にかぶりがあることを伝えましたが、その対策を行いました。 またフィードスルーについてはスペアナモード時には DA 出力をしない(スペアナでいうところのトラッキングジェネレーター出力をしない)ことにしました。 スペクトラムを測定するときは周波数特性測定に使うトラッキングジェネレーター出力は必要ないからです。 当然ネットワーク測定時には必要なのでフィードスルーはなるべく小さくしないといけませんが...


■かぶり対策後の基板

かぶり対策後の基板写真

入力端子、およびアンチエイリアシングフィルターまわりを徹底的にシールドしました。 特にアンチエイリアシングフィルターはかぶりに弱く(たぶんインダクターにかぶっている)、デジタル回路からできるだけ隔離する必要があります。 次回の基板では BNC コネクターの下の狭い部分に押し込みデジタル回路からできるだけ離すようにしました。

また GND まわりも一部変更しました。 GND はデジタル回路とアナログ回路を分離するように引いてありますが、高周波ではベタにしたほうが良いなどカットアンドトライしないとどちらがいいのか分かりません。 変更すると良くなる項目と悪くなる項目があり妥協点を探る必要がありますので次回の基板ではいろいろ変更できるようにソルダーマスクを何箇所か剥がしてあります。

無信号時測定

無信号でのスペクトラム測定です。 20MHz のかぶりは FPGA から出しているオーディオ DA コンバーター用の SCK です。 スペアナモードのときにはこの信号も出さないようにしたほうがいいのかもしれません。 25 〜 35 MHz にかけての櫛歯のように見えているノイズの持ち上がりは周波数変換後のゼロ周波数の持ち上がりで FPGA 内部での演算誤差に起因するようです。 これは今後の検討課題です


■10.752MHzの矩形波のスペクトラム測定
矩形波スペクトラム

基本波の 10.752MHz とその高調波がありますが、矩形波なので奇数次が主になります。 第 4 高調波以降は折り返して低い周波数に見えています。 これを阻止するのがアンチエイリアシングフィルターでもう少し特性を良くしたいところですが、狭い場所に押し込んでいますので難しいです。 もっと急峻な特性が必要なときは外付けフィルターを追加して使うというのがよさそうです。


■お決まりの水晶の測定
水晶測定

16MHz 水晶の測定です。 特に言うことはありません。

水晶測定ヌル点

ヌル点付近を拡大してみました。 RBW=50kHz です。 S/N が悪いです

水晶測定ヌル点

RBW=50Hz (1/1024 デシメーション)にするとノイズが大幅に減って滑らかになります。

■閑話休題

その1
かぶり対策でシールドするのに銅箔テープを使いました
銅箔テープ写真

上はサンハヤト製で 430 円、下はダイソーで園芸用として売っていたもので当然105 円です。
サンハヤト製は裏に糊がついていますが、ダイソーのものは糊なしです。 場所によって使い分けています。 たとえば片面基板の銅箔の無い面に貼り付けると簡単にベタグランド付両面基板にできます。




2009/06/14

ロジアナ部分をいじりました。 前に APM-3 のときつくったロジアナ用ソフトを移植しようと思ったのですが、無駄な部分やクラス分けの良くない部分が目に付き、VHDL、C# ともに大幅に手をいれました。

■ロジアナ操作ソフトのテスト中

ロジアナ

ロジアナの最高サンプリング周波数は 160MHz(6.25ns) です。 スペアナやネットアナと一緒に動かす関係で、メインクロックが 80MHz になり、IDDR2 プリミティブで 2 倍速読み込みしますので 160MHz になりました。
ロジアナ専用に設計すれば、メインクロックを 200MHz とし、最高サンプリング周波数を 400MHz にできます。 FPGA のコンフィグが 0.4 秒ぐらいと高速なので使う機能によってコンフィグをやりなおすようにしてもいいかもしれません。

ロジアナ

オーディオ DA コンバーターの信号を見ています。



■ケースにいれました
ケースに入れた写真

以前にケースのアルミ折り曲げをしましたが、今回は塗装とレタリングをしました。
フロントパネルはダイソーのアイボリー色塗料で塗装し、文具用フィルムシールに印刷したものを貼ってあります。 このフィルムは 60um と薄くて貼りやすく、気泡が残ってもカッターの先でちょんと小さな穴を開ければOK で、おすすめです。

BNC の横が狭くちょっと窮屈な感じがしたので両端にはサイドウッドをつけてみました。 また上面はダイソーの突き板(木を薄くしたもの、最近売っていないような...)を貼って木製っぽくしました。 サイドウッドと突き板はマホガニー色のステインで色をつけてあります。 



2009/06/17

Ver1.10 基板の発注をしました。
この基板で試作をおこない、問題がないようでしたらキットの頒布を開始します。


■回路図、基板

 回路図 ver. 1.10 (PDF 971KB)
 基板 ver. 1.10 (PDF 2.1MB)(レイヤーごとに表示できます)

前にアップした回路図、基板から一部修正が入っています。


2009/06/22

作っている基板の説明をいままであまりしてこなかったので、以下、簡単に説明します。


■ブロックダイアグラム

ブロックダイアグラム

AD 変換、DA 変換、ロジック入力など高速信号を扱うものは FPGA に、FLASH や SDカードなどの低速、もしくはプロトコルが複雑なものは ARM CPU につながっています。 PC と ARM CPU は USB を介して通信を行い、ARM CPU がそれに応じて FPGA を制御します。 この場合は ARM CPU は単純にプロトコル変換しているだけです。
スタンドアローン動作のときは、ARM CPU がヒューマンインターフェースを担い、キー入力処理や LCD への出力をします。 開発時は PC と接続しソフトのダウンロードをします。


■ソフトウェア開発
ソフトウェア開発ブロックダイアグラム

FPGA、ARM CPU、PC はそれぞれ動かすためのソフトウェアが必要です。 現在、私が使っているのは上記のものですが、ほかの言語、開発ツールを使うこともできます。
FPGA はほかには verilog があります。 ARM CPU は C 言語以外はアセンブラぐらいしかないと思います。 PC は C、C++、Visual Basic、Java などいろいろあります。


■プログラムダウンロード
ソフトウェアダウンロード

FPGA、ARM CPU それぞれプログラムダウンロードが必要です。 いままでは FPGA は JTAG、ARM は JTAG もしくはシリアル、でダウンロードするのが普通で基板の周りがいろんなケーブルでいっぱいになっていました。 また、それらアダプターを用意するのも大変でした。

今回は USB ケーブル1本で APB-1 制御ソフトウェアから FPGA、ARM CPU にダウンロードすることができます(ARM CPU は最初に1回 SAM-BA を使ってブートローダーをダウンロードする必要があります)。 また非常に高速です。


現在製作中の C# でつくったAPB-1 制御ソフト(実行ファイル 170kB )です。 このソフトだけでプログラムダウンロードと、スペアナ、ネットアナ、ロジアナなどの操作ができます。


■信号レベルに対する表示精度
リニアリティ画面

10.752MHz -30dB の信号を ATT を通して入力し10dB ずつ順次アッテネート量を増やして、信号レベルに対する表示を確認しました。
-100dB ぐらいまではきれいに 10dB おきに並んでいます。 このスペアナでは、昔のスペアナで苦労したログアンプではなく、純粋に計算でやっているので当然です。


■閑話休題

窓関数としてガウス窓を使っています。 ガウス窓ではサイドローブ(side lobe)の大きさがパラメーターで制御できるからですが、メインローブ(main lobe)は上記のように紡錘型になり周波数分解能は低くなります。 メーカー製のスペアナをみるともっと周波数分解能の良い窓関数を使っているように思えます。 ブラックマンハリスとかナットールとかかなぁ、それともオリジナル?。 スペアナメーカーで使っている窓関数が知りたーーい!!!



2009/06/28

基板や発注していた部品が届いたので最終確認をしています。 いまのところ大きな問題はありません。 たぶん来週ぐらいにはキットの頒布案内をだせると思います。



■現状の基板

現状の基板写真

基本的なレイアウトは v1.00 と変わりませんが、AD 変換 IC の上が全部 GND になったとか、電源レギュレーターの放熱用パターンが大きくなったとか、細かく変更しています。


■ハードウェア診断ソフトウェア
ハードウェア診断ソフトウェア

ハードウェアをチェックするこまごまとしたソフトをそのたびに作ってきましたが、簡単に使えるように1画面に統合して APB-1 制御ソフトから呼び出せるようにしました。
基板上の LED と合わせてハードウェアがうまく動いているか確認しながら組み立てていくことができます。


■閑話休題

□ToDo

・組み立てマニュアル作成
・アンチエイリアシングフィルターの特性改善
・制御ソフト作成
・FPGAソフト作成
・スタンドアローン動作応用例

組み立てマニュアルは本当に悩ましいです。 この基板は1608チップ部品や0.5mmピッチQFPなど実装の難しいものがたくさんあります。 なるべく多くの方に工作を楽しんでもらおうと企画したキットですが組み立ての難しさがネックになってしまいそうです。 とはいっても小さい部品の実装方法は言葉で説明するのは難しく、各自が思考錯誤しながら習得するしかないという一面もあります。

アンチエイリアシングフィルターですが、使用帯域内で特性をフラットにするのは難しいです。 DA側のアパーチャ効果(aperture effect)も含めて補正しようとすると現状の回路では不可能のような気がします。

制御ソフトは現状のものでも大きな不都合はなくおいおい作り上げていけばよいかなと思っています。 画面だけ作って未実装のものがたくさんあります。

FPGAソフトでいま一番気になっているのはオーディオ用のサイン波生成です。 現状はDDSを2つ実装していてスペアナやネットアナの周波数変換や高周波信号発生器、オーディオ信号発生器に使っていますが、もうひとつ追加してAM/FM変調に使いたいと思っています。 ただ、FPGAのメモリーリソースがもう残っていないのでCORDICや級数展開で生成する必要があります。




2009/07/05

キットの頒布を開始します。



■マウント図、組み立てマニュアル、ソフトウェア

 マウント図 ver. 1.10 (PDF 273KB)
 組み立てマニュアル ver. 1.00 (PDF 803KB)
 ソフトウェア (ZIP 118KB)


■AM変調
AM変調波形

400Hzのノコギリ波で100%AM変調した波形です。


AM変調スペクトラム

上記AM変調した信号をそのままスペアナ入力したものです。
変調度を100%から50%、25%と順次半分にしたものを重ねています。 サイドバンドが6dB刻みで減っているのが分かります。 ただし変調度が1%を切った(上から8本目より下)あたりから6dB刻みからずれてきているようです。 DA変換が10ビットなのでそろそろ限界なのかもしれません。


■閑話休題

信号発生器にAM変調、FM変調を実装しました。
最初は設定をかなり自由に行えるようにしようと思ったのですが、エンベッド乗算器が使えないことがわかりちょっと端折ってしまいました(変調度やデビエーションが6dB刻みでしか選べないようにしました)。 スパルタンのエンベッド乗算器は内蔵メモリーと直結していて使い方に制約があるようで、まだ半分ぐらい残っていたはずなのに使えないのは悲しいです。 しかもWebPackは乗算器がフィットできないというエラーを返すだけで自動的にスライスを使ってフィットさせようと努力してくれないし... 結局、CoreGenでスライスを使う乗算器を作ってAM変調(振幅を掛け算する)に使用しました。

AT91SAMのローダーでの書き込み後にRegion Lockするようにしようとしたのですが、Region Unlock でエラーが起きて書き込みに失敗するようになってしまいました。 仕様書に書いてあるとおりにやっているのだけど、また何か仕様書にはない情報が必要なのかも... 結局、Region Lock はあきらめました。



2009/07/07

キットの発送を開始しました。
EXPACK500で発送しましたので早い人で明日には着くと思います。



いままで掲示板は書き込み停止にしていましたが、これを機に新たな掲示板を立ち上げました。 今回の掲示板は書き込み時に画像認証が入りますのでロボットでの書き込みができなくなると思われます。
一般的な質問等はこちらでサポートしていきたいと思いますのでよろしくお願いします。

新しい掲示板はこちらです。



これ以降は多目的測定器のページに移動しました。



inserted by FC2 system