2009年3月29日日曜日

テストベンチを修正!

先ほど、書いたテストベンチがダメダメだったので、
シリアルデータをつくるところと一緒に修正しました。
ついでに少しだけ説明も追加。
でも見ている人には、何やってるかさっぱりわからない気がします。ごめんなさい。

このテストベンチは、Texas InstrumentのPCM1803という24ビットの96ksps
A/Dコンバータに接続するシリ・パラ変換回路の動作確認のために作ったものです。
ここでは48kspsで動かすことを想定して、必要なクロックやシリアルデータをつくります。

テストベンチの出力
 SDIN   ・・・シリ・パラ変換回路にシリアルデータ信号(PCM1803の出力を想定)
 CLK12M ・・・シリ・パラ変換回路に与えるクロック信号
 CLK3M  ・・・シリ・パラ変換回路に与えるクロック信号
 CLK48K ・・・シリ・パラ変換回路に与えるクロック信号
 RST    ・・・シリ・パラ変換回路に与えるリセット信号

シリ・パラ変換回路の出力
 LRCKO ・・・PCM1803に与えるLRクロック
 BCKO  ・・・PCM1803に与えるビットクロック
 SCKO  ・・・PCM1803に与えるシステムクロック
 DOUT1 ・・・パラレルデータ出力(L)
 DOUT2 ・・・パラレルデータ出力(R)


以下、テストベンチのコード


module tb_adc;

// Inputs
reg SDIN;
reg CLK12M;
reg CLK3M;
reg CLK48K;
reg RST;

// Outputs
wire BCKO;
wire LRCKO;
wire SCKO;
wire [23:0] DOUT1;
wire [23:0] DOUT2;

// Instantiate the Unit Under Test (UUT)
ADC_IF uut (
.SDIN(SDIN),
.BCKO(BCKO),
.LRCKO(LRCKO),
.SCKO(SCKO),
.CLK12M(CLK12M),
.CLK3M(CLK3M),
.CLK48K(CLK48K),
.DOUT1(DOUT1),
.DOUT2(DOUT2),
.RST(RST)
);

reg [5:0] i;
parameter DATA = 64'h0012_3456_0078_9ABC; // Lch(32bit)/Rch(32bit)
                                    //・・・ MSBファースト、右詰めフォーマット

initial begin
// Initialize Inputs
SDIN = 0;
CLK12M = 1;
CLK3M = 1;
CLK48K = 1;
RST = 0;
i = 6'd63;

#8;          // ・・・スタートしてから8ns後にリセット
RST = 1;

// Add stimulus here
#230;        // ・・・さらに230ns後にリセットを解除
RST = 0;

end

always #40 begin //256fs 12.288MHz  ・・・A/Dコンバータのシステムクロック
CLK12M = ‾CLK12M;
end

always #160 begin //64fs 3.072MHz  ・・・ A/Dコンバータのビットクロック(BCK)
CLK3M = ‾CLK3M;
end

always #10240 begin //fs 48kHz
CLK48K = ‾CLK48K;
end

always #320 begin  // ・・・320ns(ビットクロックの周期)毎にシリアルデータを出力
if (i == 6'd0) begin
i = 6'd63;
end else begin
i = i - 6'd1;
end
SDIN = DATA[i];
end

endmodule



こんなのでいいのかどうかわかりませんが、
とりあえずそれらしく動いてくれました。


2009年3月28日土曜日

ISE Simulator

ISE SimulatorでVerilogのシミュレーション。
オーディオA/Dコンバータ出力を受ける部分ですが、
シリアルデータを生成するテストベンチ作成で悩んでいます。
とりあえずワンクロック毎に反転してみる。











initial begin
// Initialize Inputs
SDIN = 0;
CLK12M = 0;
CLK3M = 0;
CLK48K = 0;
RST = 0;

// Wait 8 ns for global reset to finish
#8;
RST = 1;

// Add stimulus here
#230;
RST = 0;
end

always #80 begin //256fs 12.288MHz
CLK12M = ‾CLK12M;
end

always #320 begin //64fs 3.072MHz
CLK3M = ‾CLK3M;
end

always #20480 begin //fs 48kHz
CLK48K = ‾CLK48K;
end

always #320 begin
SDIN = ~SDIN ;
end

2009年3月26日木曜日

洋菓子ブーム?

日頃の感謝(?)を込めて、職場の女性陣に差し入れをすることになった。
彼女らの希望は...
パティシェリー モンシュシュの「堂島ロール」。有名なロールケーキですが、
店内で頂くか、20~30分行列に並ぶしかない。並んでまで買うなんて勘弁してください。
ネットで買えるもの限定という条件では、ル パティシエ タカギのチーズケーキがご所望。
でもコレ、売り切れって書いてあります。
結局、チーズケーキなら、ということで京都のパパジョンズをセレクト。
濃厚で美味しいとわかっていますので、到着が待ち遠しいです。
このほか、浜松にまるたやというチーズケーキで有名な店があるそうです。
駅前の遠鉄デパートの地下にもお店があるとのことで、
近くに行くことがあれば購入することにしましょう。
チーズケーキのほかにもサクサク和風クッキー「あげ潮」というのが、
見た目いまいちながら、美味いらしい。

2009年3月21日土曜日

ISEのCORE Generatorで信号発生器

 FPGAを使った無線分野のアプリケーションとして雑誌で良く取り上げられるのが、
DDSを使った信号発生器です。無償で利用できるFPGA開発環境(XilinxのISE10.1)に
付属のDDS Compiler v2.1というIPコアを使ってみました。















 FPGAにはTIのDAC904という14ビットのDACを外付けしてあり、過去のDesign Wave Magazineの
記事やウェブの記事を参考に、とりあえず固定周波数として試してみます。
サンプル周波数は38.912MHzとして、DDSで64分の1の608kHzを生成するようにセットしました。


これがその波形。
何か変、というかめちゃくちゃな波形です。











配線間違いかと思いましたが、波形をみると意味ありげな並びかたです。
IPコアの出力は符号あり(2の補数)ですが、DACは符号なしだったというのが原因です。
さっそく、教科書をにらみながら最上位ビットを反転させれば符号なしに戻せるようなので、
その旨を追記。

 assign DDSO = sine ^ 14'b10_0000_0000_0000;



こんどは、それらしき波形になりました。

デジタル式のFMトランスミッタ

 FMトランスミッタで、電波に音を乗せる変調回路は最も音質などの性能に関わるところのひとつでしょう。この変調回路、PLL制御のVCOにバリキャップ・ダイオードで直接FM変調をかけるのが一般的でしたが最近では、FM変調回路やステレオ変調処理と言った周辺回路含めデジタル処理を行うタイプの専用チップが登場しています。
    3V動作、アナログ音声入力、送信周波数87.5-108MHz、歪み率0.4%、SN55dB、
   セパレーション35dB、パッケージは7mm角のモジュール。
    新潟精密はRF CMOSと呼ばれる、無線用のアナログICチップで有名だったようですが、
   残念なことに倒産してしまい、民事再生したいま同社のHPには、このチップのことは
   触れられていません。
    このチップは秋月電子で、チップ単体はもちろんキットまで売られています。ただ、
   送信周波数範囲が海外仕様のため、88MHz以上しか出ないのが残念なところです。

2.7~5.5V動作、アナログ/デジタル音声入力、送信周波数76-108MHz、
   歪み率0.1%、SN58dB、セパレーション35dB、パッケージは3mm角のQFN20ピン
    特筆すべきは、デジタル式のオーディオダイナミックレンジコントロール(コンプレッサ)を
   内蔵していることです。アタックタイム、リリースタイムをセットできるデジタルコンプが、

   こんな小さなチップに入ってしまうなんて信じがたいところがあります。

    このチップの問題点は、手ハンダをやりにくいことと、データシートが入手難なところでしょうか。
2.7~3.6V動作、アナログ/デジタル音声入力、送信周波数76-108MHz、
   歪み率0.1%、SN69dB、セパレーション規定なし、パッケージは5mm角のQFN32ピン
    2008年の新製品のようです。後発のため特性が改善されているように見えます。
   国産ですし、製品への採用が広がれば個人レベルでも入手できるようになるのでしょうか。

    ・・・2009.3.29追記
      ロームのデータシートをよく見たら、デジタル処理なのは
      ステレオコンポジット信号処理段までのようです。
      コンポジット処理部のDACからMOD ADJを通り、COMP OUTピンに接続されています。
      おそらく、FM変調をかけるところは従来通り外付けのバリキャップをVCOに装荷して
      使う形態なんでしょう。

2009年3月19日木曜日

トランスコ同軸リレーの内部

ジャンクでギガヘルツ帯の高周波回路用のリレーとして見かけることのあるトランスコ社。・・・ネットで検索しても出てこないと思ったらDow-Key Microwaveという会社の傘下に入っているみたいですね。
ジャンク箱整理中にかなり年季の入った同社の同軸リレーを見かけたので動作チェックをしてみました。が、スイッチを切り替えるたびに数デシベル単位で通過損失が変動します。アイソレーション特性はかなり優れているものの、リレーとしてはちょっと使える状態にはありません。どうせ捨てるならと、ふたをあけて中身を覗いてみました。


外観。年代物です。
4つの同軸ポートがあって、たとえば

 状態1: J1-J2接続, J3-J4接続
 状態2: J1-J3接続, J2-J3接続

のような感じで切り替わります。

この製品は上記のような接続ではないようですが・・・。








ふたを開けてみました。
意外にシンプルな中身。正直、つまらなくてがっかりです。
黄色いのはリレーのソレノイド(電磁石)です。









接点部分の拡大。白い球形部分です。
この白い玉は絶縁体みたいで、
ソレノイドの動きに合わせて電極の先の白い玉がくっついたり離れたりします。どうもリレーの接点は非接触型みたいで、白い玉部分の静電容量の増減でスイッチ動作が成り立っているようです。
接触していないなら接触不良の心配はなく、高信頼!といいたいところですが、電極が物理的に変形したりして、相互の距離が変化すれば静電容量も変わることが予想されます。
今回みたいに通過損失が変わるのは、落下などで電極が微妙に変形してしまった!?ため、切替のたびに電極の位置関係が一定していないのが原因?でしょうか。







このリレー、具体的なデータはなくしてしまいましたが、オフアイソーレーション特性が優れていました。確か、1GHzで70dB以上とかなりのものです。測定器とかに使うのでしょうか?

2009年3月14日土曜日

チップ抵抗キット

 少し前にチップワンストップから購入したチップ抵抗キットです。KOA製とROHM製がそれぞれサイズ別に揃っています。私は、「1608チップ抵抗器キット10Ω-100kΩ(KOA製)」を選びました。購入後すぐに、3/31までのセールとか言い出して5,980円に値下げされたので、ムッとしましたが、商品自体はもちろん良い物です。

 このキット、97型番 各50個・・・計4,850個ものチップが、銀塩写真フィルム整理用ファイルに整然と整理されて届きます。まあ趣味ベースでは一生ものですね。チップ抵抗キットは他店やヤフオクでも見かけますが、低価格のものは誤差5%が多いようですが、同社のものは誤差1%というところがポイントでしょうか。どうでもいいことですがKOAは、よ~く見ると色がブルーで気に入っています。

 さて、チップ抵抗キットを選ぶときに考え込んだのがサイズです。趣味用途なら、何を選んでも良いのですが世の中の流れは1005(1.0mm×0.5mm)サイズが主流のようです。でも、はんだ付けがしんどいのでワンサイズ大きな1608(1.6mm×0.8mm)としました。ちなみに、コンデンサについてはジャンク屋さんの店頭でよく見かける2012(2.0mm×1.2mm)サイズを個人的な標準にしています。