日曜技術者のメモ

趣味でやった事のメモ書きです。

FMCコネクタを買ってみた-注文から受け取りまで-

ZedboardにPmod以外の選択肢を追加するためFMCコネクタを注文してみました。

FMCコネクタはsamtec社が製造しているコネクタです。
(高速コネクタでは有名な会社みたいです。)

HPはこちら
http://www.samtec.com/search/vita57fmc.aspx

Zedboardについているコネクタは回路図によると
ASP-134603-01」というメス側のコネクタです。

今回はオス側の「ASP-134604-01」を買いました。
ネットで調べてみるとDigikeyで購入している人がいた様ですが、
Digikeyでは販売中止品になっていますのでsamtec社から直接購入しました。

samtec社のHPにある「Price & Delivery」から購入ができます。
↓の様に型番と個数を入力すれば価格が表示されます。
f:id:ginnyu-tei:20121216223455j:plain

支払いはクレジットカードが使えました。(私はVISAで大丈夫でした。)

以下は注文から受け取りまでの流れです。
12/5 :注文 注文ありがとうメールが来た
12/11:Order Acknowledgement(注文確認書?)がメールで来た
(クレジットカードの履歴だとこの日に支払い)
12/13:UPSで発送したメールと請求書がメールで来た
12/14:UPSから不在電話がかかってきた
12/16:無事受け取り

早速開封箱にはsamtecのロゴが書いていました。
f:id:ginnyu-tei:20121216112106j:plain
厳重に包まれていました。
f:id:ginnyu-tei:20121216112202j:plain

1個取り出してZedboardに刺してみましたが
(当たり前ですが)特に問題なく刺さりました。

Xilinx DDS Compilerを使ってみた-2-

前回の続き

DDSに入力する加算量と周波数は以下数式の関係がある。

f:id:ginnyu-tei:20121202000252j:plain

変形するとこんなかんじ

f:id:ginnyu-tei:20121202000408j:plain


この式から実際にAMラジオで使える周波数の搬送波を作成してみる。
中波放送は531kHzから1602kHzまで9kHz刻みで放送されている。
Excelを使って中波帯の加算量を計算した。

f:id:ginnyu-tei:20121202000628j:plain

では531kHzと1602kHzをRTLシミュレーションで出力してみる。
テストベンチ内で$fwriteを使ってファイルにsineの値をダンプして
Excelでグラフにした。

まずは531kHz
f:id:ginnyu-tei:20121202001345j:plain

続いて1602kHz
f:id:ginnyu-tei:20121202001420j:plain

理論値では問題無さそうです。
今DACを注文しているので受け取り次第これを外部へ出力してみます。

Xilinx DDS Compilerを使ってみた-1-

AM送信波の元となる搬送波をDDS Compilerで作成してみる。

いつも通りPlanAheadを立ちあげてIPを追加します。
Project Managerの所にある「IP Catalog」を選択

f:id:ginnyu-tei:20121201224628j:plain

IP Catalogが表示されたら、Searchに「DDS」を入力すると
DDS Compilerが出てくる。
今回はAXIに接続しないIPを使うので4.0の方をダブルクリック

f:id:ginnyu-tei:20121201225117j:plain

これからDDSの設定をしていく。
System Clockは10MHz
Output Width 16bit
中波の音質を考えるとここまで必要ではないと思うが一応16bitにしておく。

f:id:ginnyu-tei:20121201225159j:plain

Phase Incrementは周波数を可変にするので「Programmable」にする。
Phase Offsetは必要ないのでFixid
Output Selectionはサイン波だけあれば良いので「Sine」を選択

f:id:ginnyu-tei:20121201225458j:plain

Phase Out出力は必要ないのでチェックを外す

f:id:ginnyu-tei:20121201230049j:plain

Nextを何回か押すと一覧が表示される。
問題なければ「Generate」でIPを生成する。

f:id:ginnyu-tei:20121201230211j:plain

これでIPが生成される。
次にIPをインスタンスする方法を記載する。

「IP Sources」の中に.veoというファイルがあり
これがインスタンスするテンプレートファイルになっている。

f:id:ginnyu-tei:20121201230826j:plain

開くと以下記述があるのでこれを使う

//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
dds_compiler_v4_0_0 your_instance_name (
  .clk(clk), // input clk
  .we(we), // input we
  .data(data), // input [15 : 0] data
  .sine(sine) // output [15 : 0] sine
);
// INST_TAG_END ------ End INSTANTIATION Template ---------

さくっとテストベンチ書いて動作させたのが以下波形
dataとweで加算量を指定するとsineから値が出力される。
遅延量は特に指定していないので9Clockになっている。

http://cdn-ak.f.st-hatena.com/images/fotolife/g/ginnyu-tei/20121201/20121201231833_original.jpg

オシロスコープSDS7102(V)を買ってみた-2-

今回は手持ちの信号をいろいろ見てみます。

まずはこれ

f:id:ginnyu-tei:20121201171216j:plain

学生の時に作成した5VTTLお試しセット
これには4.194304MHzのクリスタルオシレータを載せていて
プログラマブルdivider(分周器)がに接続しています。
ではさっそく観測

f:id:ginnyu-tei:20121201172925j:plain

これで4分周しています。
オーバーシュート/アンダーシュートがよく分かる。

次は手持ちで一番早い60MHzのオシレータを観測

f:id:ginnyu-tei:20121201180100j:plain

あれ、三角波

オシロスコープSDS7102(V)を買ってみた-1-

AM変調した信号を波形で確かめたいのでオシロスコープを買いました。
OWON(オウオン)社のDS7102(V)という製品です。
amazonなら5万円切って売っていますがオウオンジャパン正規販売品だと
保証やサポート、日本語マニュアルもあるようなので別の所で買いました。
(送料込みで51200円程)

箱もオサレです。
f:id:ginnyu-tei:20121130192713j:plain

早速開封しプローブ補正用の信号を観測してみた。

f:id:ginnyu-tei:20121130194215j:plain

ふむふむ、5V 1kHzになってるね。
このオシロスコープは外部接続としてUSBと有線LANとVGAがついています。
USBはUSBメモリに保存するホストとPCに接続する2ポート搭載されています。

いちいち波形をデジカメで写真取るもの面倒なのでまずUSBメモリに保存してみる。

f:id:ginnyu-tei:20121201162511j:plain

この時気をつけるのはUSBメモリがFAT32フォーマットしか認識しないことである。

次にPCへ接続してみた。
Windows7 64bitだとソフトはインストールできたけどUSBドライバがうまく入らなかった。
仕方ないのでデバイスマネージャーから直接ドライバを指定してインストールできた。
f:id:ginnyu-tei:20121201163442j:plain

PCからオシロスコープを操作できるがちょっと使いにくい。
有線LANは試してみたけどうまく繋がらない。
USBがあるから今は別にいいけど。

VGAはPCモニタで見れるのを確認しました。
800x600@60Hzのようです。固定なのかな?

次は別の波形を見てみます。

FPGAでAM送信機を作ってみた-2-

今回はZedboardへの実装を考えます。

必要なのは
・音源の取り込み
・乗算器
・DDS
・DAC
・BPF

になります。
ZedboardにはADAU1761というオーディオ・コーデックICが
実装されているので音源の取り込みにはこれを使います。
乗算器はFPGA内の乗算器を使うか自作するかですがこれは両方試してみます。

DDSは昔と同じ様にサイン波テーブルから自作を考えていましたが
coregenにDDSのIPがあったのでこれを使います。
今回は加算量を外部から変更出来るように作成します。

DACが一番の問題です。
ZedboardにはDACが実装されていません。
今回は16bit10MHz出力を考えているのでR-2Rラダー抵抗で
自作するのは大変です。
しかも、Zedboardで使えるPmodは8bitなので最低2ポート必要です。
今検討しているのが以下方法
・Pmod 2つで16bit出力
・シリアル出力のDACを探す。
FMCコネクタを何とか使う。
・PWM変調をして1bit出力+LPF
DACを実装して出力するのはかなり後になるのでおいおい考えます。

BPFは昔と同じRCで作るかOPアンプを使うか考え中です。
まともなフィルターを作ったことがないので
真面目に作るのもおもしろそうです。

次回からは前段階としてADAU1761を動かしてみます。

FPGAでAM送信機を作ってみた-1-

大学の卒論で作成したAM送信機のVHDLコードが見つかった。
卒論発表会の時AMラジオを横において実演したのを覚えている。

今読むといろいろひどいコードなので作りなおす事にした。
(非同期対策をしてなかったりROMテーブルをswich case文で長々書いてたり・・・)

すっかり忘れているので理論から
AM変調の数式は↓の通り(昔のメモからコピー。ちょっと変形しているはずです。)

f:id:ginnyu-tei:20121113193049j:plain

sinが搬送波でcosが信号mが変調度(だったと思う)
この式を元に作成した回路が下図

この時は確かm=1にして+1は8bitPCMを使って回避しました。
この1+は信号にマイナスの値が無いようにオフセットしています。
(cos(pt)は-1~1の値をとる。1をたして0~2になりマイナス値が無くなる)
8bitPCMは0~255の値をとるのでマイナス値がなくそのまま乗算できます。

搬送波はDDSを作成して526.5kHz~1606.5kHzを生成しています。
当時は可変にする時間がなかったので固定で使用していました。
Nの値を変化させる事で周波数を自由に変更できます。

あと大切なのは帯域です。AM放送の帯域は15kHzまでです
AM放送は9kHz間隔なので上下合わせて18kHzまでありますが
ガードバンドとして少し余裕をもたせています。
AM変調の帯域は大体信号の帯域×2位なので7.5kHzまでとなり
PCMだとサンプリング周波数が15kHz位まで使えます。

必要な理論はこの位かな

改善点としては
・PCM16bit化
・サンプリング周波数を上げる(?)
・周波数を可変にする(ロータリーエンコーダーとか使う)

AMステレオ放送とか面白そうだけど受信できるラジオがない。

次回はZedboardへの実装を考えます。