2009年7月30日木曜日

Spartan-6  Evaluation Kit を発注しました。

以前から、購入を考えていた、Xilinx Spartan-6 Evaluation Kit をDigi-Keyで発注しました。
 価格 35,057円(税別) 発送予定 10月中旬 たぶん忘れた頃届くと思われます。

Xilinxの発売と同時にAVNET等で購入した人は既に手に入れらたのではと思います。(当時 納期は6週間待ち)

 購入目的は、「このキットをただ触ってみるだけ」、そんな訳でDigi-Keyや、東京エレクトロンデバイスなどで取り扱いが始まってから購入しようと思っていました。

 先日まで、Digi-Keyのホームページで、Xilinxの新製品情報が無いか、こまめにチェックしていたのですが、このキットの情報にたどりつくことはありませんでした。
 
 本日たまたま、このホームページでDC/DCコンバータの価格を調べたついでに、Xilinxの開発キットを見てみると、検索フィルターにSpartan@6のエントリがあったので、検索をかけると、Spartan-6 Evaluation Kit にたどりつけました。で 早速発注。

 今回は、品番EK-S6-SP601-G-Jを発注しました、Digi-Keyでは非在庫なので、10月中旬の納期予定になりました。
 品番EK-S6-SP601-Gを発注したほうが、遥かに早い納期(7月30日発注で8月中旬納期)なのですが、今ひとつ勇気が無く-Jを発注しました。(多分、マニュアルの一部が日本語と言う程度の差だとは思うのですが。)

余談
 あとは、評価キットが届くころ、思いっきりの円高になっていると、ガックリ(予想) 日ごろ為替レート(ドル/円)には無縁の経済音痴なのですが、Digi-Keyで物を購入すると、ニュースの経済情報(為替レート)に思わず注目している自分がいます。

2009年7月9日木曜日

LPC2388 GNU GCC 浮動小数点の扱い

CQ出版、Interface誌 付録基板 LPC2388 を あいも変わらず、暇をみてはいじっています。
 以前に組み込んだプログラムの一つに不具合があり、これを調べていて、その原因が浮動小数点(float、double)の扱いにあることが判りました。

 今のところ、まだ解決の目途は立っていません。

1.コンパイルオプション -mhard-float について。
 LPC2388を触り始めたころ、浮動小数点の扱いで、-mhard-float  をコンパイルオプションに加えるようになった。
 どうもこのコンパイルオプションが問題と思われるようになった。
 1)コンパイルオプション -mhard-float なしで、問題のプログラムを Make する。
   標準Cライブラリ(libc.a、libm.a、、)の関数を使用しているサブルーチン、関数、では、依然、不具合は解消されず。しかし、標準Cライブラリ(libc.a、libm.a、、)の関数を使用しないサブルーチンでは不具合は解消していた。
 2)コンパイルオプション -msoft-float を加えて、問題のプログラムを Make する。
   Make時、リンクでエラーが起こる。(標準Cライブラリが不適合)

2.msoft-float 環境のgcc開発環境について、
  標準Cライブラリを msoft-float で構成すれば、問題解決と思い。gcc開発環境の再インストールを行った。
 (gccのインストールで、configure の オプションに --with-float=soft を加えた。)
 1.2)のMakeエラーは解消、でも不具合は残った。


3.ARM7TDMI-Sの浮動小数点対応について。
 Interface 2009/5 P58 の 「機能を拡張するコプロセッサ」の節 表2 コプロセッサ番号 CP11、CP12 で 倍精度/単精度浮動小数点 の記載があり、LPC2388が浮動小数点処理機能をハードで実現すると思われ、コンパイルオプション -mhard-float  は妥当と思われた。
 しかし ARM7TDMI-S Revision r4p3 Technical Reference Manual の 4.1.1 「Coprocessor abailability」では、CP14 Debug controller と CP15 System contorol だけの記載  やはり コンパイルオプション -msoft-float が正解なのか。。。


※ もともと、gccの開発環境は、同じCQ出版 DW誌の STM32F103(Cortex-M3)の開発環境です。
 LPC2388で使う場合、CPUのアーキテクチャの差異を考慮して、gccの再インストールしなければならないと思います。

 今回、-msoft-float 対応 で gccのインストールのみ、configure の オプションに --with-float=soft を加えたが、newlibについては行わなかった。(makeが通ったのでかまわなかったと判断)
 次は、newlibの再インストールでも行おうと思います。(指定可能かどうか不明ながら)。。

 現時点では コンパイルオプション -mhard-float  の適否は不明。(-msoft-floatが正解と言い切る自信無し。)


ひまを見てボチボチと、、、、

 >>追加検証 
  gccとnewlibのインストール configureオプションに --with-float=soft を追加。 + コンパイルオプション -msoft-float の make。
   浮動小数点でこけていた箇所が通るようになった。 一応動作確認。(7/10)

2009年7月6日月曜日

デジタル・デザイン・テクノロジ(付録Lattice XP2)を眺めてみる。


以前、購入していたCQ出版デジタル・デザイン・テクノロジ①を眺めています。
感想を言えば、付録FPGA基板を使えるまでが大変!

ネックとなりそうな点
部品
 ・水晶発信器
 ・フラッシュメモリ
ダウンロードケーブル


 今回、ダウンロードケーブルにこだわってみました。
まず、P24の図2 「Lattice社FPGAをプログラミングするための回路」について。
1.部品をチェック
 ・ロジックIC 74VHC244 1ヶ
 ・抵抗 10KΩ 6ヶ 100Ω 5ヶ
 ・コンデンサー 100pF 5ヶ
 ※ここまでは、手持ちのパーツでまかなえますが。
 パラレルポートのP7(JTAG)、74VHC244のP1、P17に接続している論理回路記号 NOT + AND が何気なく書いてある。
 どうすればよいのか???

2.論理回路 NOT + AND について。
 まず、調べる。トランジスタとダイオードで回路が組めそうです。

3.論理回路 NOT + AND を検証する。

 真理値表は

 入力A   入力B   出力C
74HVC-P17  JTAG 74HVC-P1
  真     真     偽
  真     偽     真
  偽     真     偽
  偽     偽     偽   

 手持ちの トランジスタ 2SC1815 、ダイオード ショットキーバリア VRM 60V で上記の NOT + AND 部の回路を組む。
 抵抗は ほどほどの結果が R1 1KΩ、R2 200Ω、R3 20KΩ の組み合わせて得られた。

Vccおよび 入力Hiは 3.3Vで試した。(今回は回路の動作を検証することがせいぜい) 

 1)論理を検証
   真理値表に従い 入力/出力を確認
 2)入力B(パラレルポート P7(JTAG))でファンクションジェネレータで生成した方形波(デューティ比50%)を受ける。入力Aは Hi(真)。


  出力Cで得られる結果

     入力方形波  結果(出力Cの波形チェック)   
      10KHz ◎
      20KHz ◎
      40KHz ○
      50KHz △ デューティ比 45%
     100KHz △ デューティ比 40%
     200KHz × デューティ比 10% で かなり波形は崩れる。かろうじて周波数が検出できる。


 とりあえず、論理回路の動作が検証できたところで、ひと満足、ダウンロードケーブルの完成は先のまた先、FPGAの検証は果てしなく遠い彼方、、、

 PCのパラレルポートの規格から言うと、数MHzの動作が欲しいが、果たして、LatticeのFPGAのダウンローダーがどの程度の転送レートか、まだ調べてもいない。 (今後要チェック)

 19200のボーレートでの書き込みが出来ればよいのですが、高周波に対応するためのトランジスタ、ダイオードの選定が必要になるかも知れません。(パラレルポートでボーレートというのも変ですが、、)

 また、信号のレベルに応じて、抵抗を選び直さなければいけないかも知れません。

 ロジックIC 74VHC04 (NOT) 74VHC08 (AND)で 組むことも 選択枝のひとつになります。