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」から購入ができます。
↓の様に型番と個数を入力すれば価格が表示されます。
支払いはクレジットカードが使えました。(私はVISAで大丈夫でした。)
以下は注文から受け取りまでの流れです。
12/5 :注文 注文ありがとうメールが来た
12/11:Order Acknowledgement(注文確認書?)がメールで来た
(クレジットカードの履歴だとこの日に支払い)
12/13:UPSで発送したメールと請求書がメールで来た
12/14:UPSから不在電話がかかってきた
12/16:無事受け取り
早速開封箱にはsamtecのロゴが書いていました。
厳重に包まれていました。
1個取り出してZedboardに刺してみましたが
(当たり前ですが)特に問題なく刺さりました。
Xilinx DDS Compilerを使ってみた-2-
前回の続き
DDSに入力する加算量と周波数は以下数式の関係がある。
変形するとこんなかんじ
この式から実際にAMラジオで使える周波数の搬送波を作成してみる。
中波放送は531kHzから1602kHzまで9kHz刻みで放送されている。
Excelを使って中波帯の加算量を計算した。
では531kHzと1602kHzをRTLシミュレーションで出力してみる。
テストベンチ内で$fwriteを使ってファイルにsineの値をダンプして
Excelでグラフにした。
まずは531kHz
続いて1602kHz
理論値では問題無さそうです。
今DACを注文しているので受け取り次第これを外部へ出力してみます。
Xilinx DDS Compilerを使ってみた-1-
AM送信波の元となる搬送波をDDS Compilerで作成してみる。
いつも通りPlanAheadを立ちあげてIPを追加します。
Project Managerの所にある「IP Catalog」を選択
IP Catalogが表示されたら、Searchに「DDS」を入力すると
DDS Compilerが出てくる。
今回はAXIに接続しないIPを使うので4.0の方をダブルクリック
これからDDSの設定をしていく。
System Clockは10MHz
Output Width 16bit
中波の音質を考えるとここまで必要ではないと思うが一応16bitにしておく。
Phase Incrementは周波数を可変にするので「Programmable」にする。
Phase Offsetは必要ないのでFixid
Output Selectionはサイン波だけあれば良いので「Sine」を選択
Phase Out出力は必要ないのでチェックを外す
Nextを何回か押すと一覧が表示される。
問題なければ「Generate」でIPを生成する。
これでIPが生成される。
次にIPをインスタンスする方法を記載する。
「IP Sources」の中に.veoというファイルがあり
これがインスタンスするテンプレートファイルになっている。
開くと以下記述があるのでこれを使う
//----------- 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になっている。
オシロスコープSDS7102(V)を買ってみた-1-
AM変調した信号を波形で確かめたいのでオシロスコープを買いました。
OWON(オウオン)社のDS7102(V)という製品です。
amazonなら5万円切って売っていますがオウオンジャパン正規販売品だと
保証やサポート、日本語マニュアルもあるようなので別の所で買いました。
(送料込みで51200円程)
箱もオサレです。
早速開封しプローブ補正用の信号を観測してみた。
ふむふむ、5V 1kHzになってるね。
このオシロスコープは外部接続としてUSBと有線LANとVGAがついています。
USBはUSBメモリに保存するホストとPCに接続する2ポート搭載されています。
いちいち波形をデジカメで写真取るもの面倒なのでまずUSBメモリに保存してみる。
この時気をつけるのはUSBメモリがFAT32フォーマットしか認識しないことである。
次にPCへ接続してみた。
Windows7 64bitだとソフトはインストールできたけどUSBドライバがうまく入らなかった。
仕方ないのでデバイスマネージャーから直接ドライバを指定してインストールできた。
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変調の数式は↓の通り(昔のメモからコピー。ちょっと変形しているはずです。)
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への実装を考えます。