« 2011年2月 | トップページ | 2011年4月 »

2011.03.31

究極のRX62Nボード、もうすぐ出図

ようやく「究極のRX62Nボード」のパターン設計が完了しました。
いま、シルクを直したりポリゴンを貼ったりしています。

Rx62n_top

Rx62n_bot

ここまで来るのに長かった・・・
本当に大変でした。特にSDRAMの32bit接続。
設計ルールは、線幅/ギャップ 0.1mm/0.1mmで、6層です。

最後まで悩んだのは、RX62NのシリアルポートとJTAGをどうやって共有すれば良いかということ。
RX62Nは、JTAGとシリアルのTxD1、RxD1が同じ端子を使っているのです。
TxD1、RxD1は、内蔵ROMがまっさらな状態からでも書き込める「ブートモード」で使います。

ということは、ブートモードが使えるようにすると、JTAGが使えない。
JTAGを使うとなると、ブートモードやシリアルポートが使えない。
このボードはLinuxを動かす予定なので、やはりコンソールはほしい・・・

そんな感じで悩んでいました。

結局、シリアルポートはRxD0/TxD0という別のポートにつなぎ、JTAGと共有のRxD1/TxD1は78Kマイコンにつなぎました。78KマイコンがUSB-JTAGとUSB-UARTを兼ねれば万事OKでしょう。

これから面付けしたり、最後のチェックを行って、今日か明日には出図です!


| | コメント (0)

2011.03.29

RX62N QFP144用のBSDLファイルをリリースします

RX62N QFP144用のBSDLファイルを作成しました。
こちらからダウンロードできます。

このBSDLファイルを使うと、Interface誌付録基板に乗っているRXマイコンのI/O端子の状態を、JTAG経由で読み出したり、書き換えたりすることができるようになります。

端子の状態はこんなふうに見えます。

Rx62n_bscan

Lレベルの端子は水色、Hレベルの端子はピンク、入力端子は網掛け、出力端子は塗りつぶし。真っ赤と真っ黒は電源端子です。
Rx62n_addr

デバッグなどに便利ですので、ぜひともご活用ください。
BSDLファイルはこちらからダウンロードできます。

より詳しい説明は、一昨日の記事をご覧下さい。

| | コメント (0)

Spartan-6用のUSB-JTAGツールを更新しました

EXPARTAN-6TがWinbond製のSPI ROMを採用したので、Spartan-6用のUSB-JTAGツールも更新しました。バージョンは1.40になりました。

Sp6jtagw140

更新箇所は以下のとおりです。
WinbondのSPI ROM(W25Q02~W25Q128BV)に対応した。
書き込み開始アドレスを自由に設定できるようにした。

書き込みの開始アドレスが設定できるようになったので、ROMの前半にFPGAのBitstreamを格納して、ROMの後半にMicroBlazeのプログラムを格納する、といったことができるようになりました。
もう、iMPACTを使う必要は完全になくなりました。

最新のツールは下記のURLからダウンロードできます。
http://www.tokudenkairo.co.jp/login/login.php?url=sp6jtagw.zip

どうぞご利用ください。

| | コメント (0)

Spartan-6 PCI Expressボードの新リビジョン

このたび、特電Spartan-6 PCI Expressボードのリビジョンが新しくなります。
最大の変更点はSPI ROMがx2倍速対応になったことです。ほかには、SATAコネクタの位置を外側に少しずらしてケーブルを接続しやすくしたことなどがあります。

Np1032b

このボードの主なスペックは、
・XC6SLX45T-3FGG484Cを搭載
・DDR2 SDRAM 1Gbit搭載
・2倍速対応 SPI ROM搭載
・USB2.0 HighSpeedデバイス搭載 (IN 40MB/sec、OUT 30MB/sec)
・SATAコネクタを2個搭載
・PCI Express External Cabling使用可
・USB-JTAGをオンボードで搭載
・オンボードのUSB-JTAGを通じてSPI ROMの書き換えが可能

また、DMA対応のPCI Expressリファレンスデザインとデバイスドライバ・サンプルソフト付属なので、すぐにアプリケーションの開発を行うことができます。DDR2やUSBのサンプルデザインも付属しているので、データ計測・制御装置を簡単に作ることができます。

製品紹介ページはこちら
http://www.tokudenkairo.co.jp/sp6/expartan-6t.html

Expartan6t_revb


| | コメント (0)

2011.03.27

Interface誌RX62Nのバウンダリスキャン

Interface誌付録のRX62N基板で、今日もバウンダリスキャンに励んでいます。
バウンダリスキャンとは何かということについては、昨日のブログで解説したとおりですので、今日は特殊電子回路㈱から発売されているMITOUJTAGというツールを使って、RXのピンの状態を調べる手順を解説します。

まず、この付録基板でバウンダリスキャンを行うには、以下の手順で設定を行います。

① 基板裏面のJP7をカットしておきます。JP7はBSCANPという信号(バウンダリスキャンを有効にする)をプルダウンするジャンパで、これをカットするとBSCANPがHレベルになってバウンダリスキャンができるようになります。
Jp5jp7

② CN4に14ピンのピンヘッダを立て、JTAG信号をつなぐ。つなぎ方は以下のとおり。
 1-TCK   2-GND
 3-TRST  4-EMLE
 5-TDO   6-NC
 7-NC    8-VREF
 9-TMS   10-NC
11-TDI    12-NC
13-nRES  14-NC

(EMLEとnRESはつなぐ必要はありません。TRSTはHレベルになるようにVCCへプルアップしてください。)

Pkjcq620n

これでMITOUJTAGを立ち上げて、自動認識させるのですが、ここでちょっと問題があります。
RX62NにはEMLEという信号があります。RX62Nの面白い特徴として、EMLE信号のH/LによってJTAG IDCODEが変わるようです。EMLEはJTAG ICE(デバッガ)を有効にするための信号で、この信号がHだとバウンダリスキャンはできなくなります。つまり、デバッガとバウンダリスキャンは排他使用なのです。

EMLEがLのときにMITOUJTAGで自動認識させると、IDCODE=080BB447のデバイスが検出されます。これはRX62Nのバウンダリスキャン用の正しいIDCODEです。
Idcode_rx62n_default

一方、EMLEがHのときにMITOUJTAGで自動認識させると、IDCODE=0D002447のデバイスとして検出されます。
Idcode_rx62n_default

とにかく、EMLE=L、BSCANP=Hにすると、バウンダリスキャンができるようになります。正しくデバイスが認識されたら、サンプリングボタンを押せば、パソコンの画面上に端子の状態が可視化されます。

さて、次にInterface誌88ページに書かれているLEDチカチカをダウンロードして実行させたときの、MITOUJTAGの画面のイメージをみてみましょう。

アニメーションGIFでその様子を表現しました。
Rx62nsample

この基板ではLEDにはCPUの42番ピンがつながっていて(上の図で下の段、左のほう)、それが1秒周期でトグルしているのが見えます。

これだけでは面白くないので、サンプルプログラムのmain関数を以下のように変えてみました。


void main(void)
{
unsigned long i=0;
PORT1.DDR.BIT.B5 = 1; // P15 is Output
MSTP( CMT0 ) = 0; // Wakeup CMT0,CMT1
CMT0.CMCOR = 48000000/512/2 - 1;// CMCOR is 500ms Count
CMT0.CMCR.WORD = 0x0043; // CMIE is Enable,CKS is PCLK/512
IEN( CMT0, CMI0 ) = 1; // CMI0 Enable
IPR( CMT0, CMI0 ) = 1; // CMI0 Interrupt Level is 1
set_psw( 0x00010000 ); // Set I=1, IPL=0 of PSW
CMT.CMSTR0.BIT.STR0 = 1; // Start CMT0

PORTA.DDR.BYTE = 0xff; // IOポートA、B、D、Eを出力
PORTB.DDR.BYTE = 0xff;
PORTD.DDR.BYTE = 0xff;
PORTE.DDR.BYTE = 0xff;
while( 1 ) {
PORTA.DR.BYTE = i & 0xff; // データ出力
PORTB.DR.BYTE = (i >> 8) & 0xff;
PORTD.DR.BYTE = (i >> 16) & 0xff;
PORTE.DR.BYTE = (i >> 24) & 0xff;
i++;
} // Wait Instruction
}

つまり、IOポートのA、B、D、Eに32bitの値を出力させるわけです。すると、
Rx62n_addr

このように、いろいろな端子が激しく動いているのが見えました。

時系列にキャプチャして波形にしてみることもできます。
Rx62nwaveform

マイコン上で走っているプログラムが作り出す波形が、リアルタイムにパソコンの画面上で見えるって、すばらしいと思いませんか?

ところで、鋭い方なら気が付いたかもしれませんが、上の波形ではMD1とMD0という信号も見えています。I/Oポートだけではなく、モードピンや制御ピンも見えてしまうのが面白いところです。
バウンダリスキャンに完全対応したマイコンが、付録基板についてきたのは、とても嬉しいことです。

なお、端子を見るだけであればMITOUJTAGでなくても「みえたジェイ」というより廉価なツール(\5000)を使っても可能です。

Interface誌の記事のサンプルプログラムがダウンロードできるようになったら、もっといろいろなプログラムでバウンダリスキャンをやってみたいと思います。

次回は、このRX62N付録基板で、拙作のJTAG ICEを動かしてみたいと思います。

| | コメント (0)

2011.03.26

インタフェース付録RX62N基板でJTAGバウンダリスキャンに成功!

インタフェース付録RX62N基板でJTAGバウンダリスキャンに成功しました。

Ifrxbscan1

バウンダリスキャンというのはJTAGを使ってI/Oピンの状態を見るための技術です。つまり、I/Oが入力か出力か、HレベルかLレベルか、というのをJTAGを使って見ることができます。

上の図で言うと、塗りつぶされている端子が出力、網掛けで表示されている端子が入力、ピンク色の端子がHレベル、水色の端子がLレベルです。

このように、RX62Nの端子の動作状況が一目でわかります。

デフォルトのLEDチカチカを実行させたときの42番ピンのLED端子のH/Lが変化するたびに、画面上の表示もチカチカと変わるのが確認できました。

どうしてそのようなことができるかというと、バウンダリスキャンに対応したICは、すべての可能なI/O端子に信号をモニタリングするためのテスト回路が挿入されているからなのです。そういったテスト用回路にアクセスするのが、JTAGの本来の役割なのです。

そもそもJTAGはバウンダリスキャンを行うために作られた規格です。しかし、このバウンダリスキャンという機能は、いままでは工場出荷時の検査のような場面でしか使われてきませんでした。そのため、バウンダリスキャンが組み込みの開発場面で使われることはありませんでした。

それをデスクトップパソコンで分かりやすく実行できるようにしたのが、MITOUJTAGというツールです。MITOUJTAGを使うと、組み込み用のデバッグにバウンダリスキャンを活用することができるようになります。

インタフェース付録の特設サイトでサンプルプログラムがダウンロードできるようになったら、いろいろなプログラムを実行して試してみたいと思います。

| | コメント (0)

2011.03.25

ティッシュペーパーとトイレットペーパーを差し上げます!

昨日のブログで予告したとおり、会社の備品として買っていたティッシュペーパーとトイレットペーパーを、必要な方に差し上げます。

現在の在庫量は、
・「鼻セレブ」 在庫6個
・「業務用トイレットペーパー」 在庫24個
Hanacere
です。

ご本人様だけでなく、ご家族や友人・同僚の方で本当に困っている方がいらっしゃいましたら、当ブログのコメント欄に「トイレットペーパー希望」または「ティッシュ希望」と書き込んでください。その後、メールで送り先のご住所をお送りください。送料なども無料で構いません。

ただし、お送り近所の店舗に売っていなくて、今にも家の在庫が尽きそうで、本当に困っている方に限らせていただきます!
実際にご利用になる方はどなたでも構いませんが、お申し込みできる方は、当社のお客様で下記の商品※をお買い上げの方に限らせていただきます。
(※MITOUJTAG 2.0以降、Spartan-6評価ボード、EXPARTAN-6T、Spartan3 PCI Expressボードのいずれか)

お送りする数量は、ティッシュはお一人様1個迄、トイレットペーパーはお一人様2個迄とさせていただきます。

お申し込み受付は、本日の14時までとさせていただきます。
それではお待ちしております。

◆受付終了しました◆

| | コメント (2)

RX62Nマイコンでバウンダリスキャンに成功したか!?

RX62マイコンは、本来はJTAGバウンダリスキャンに対応しているのですが、いままで入手できたボードではどれもダメでした。
というのは、RX62Tはバウンダリスキャン非対応だし、RX62NのQFP100もバウンダリスキャン非対応なのです。

だから、私はQFP144か、BGA176の登場を待ち焦がれていました。

そこで、インタフェースの付録基板で試してみました。
その結果がこれ。
Rx62n_bscan

なんとなくできているような、できていないような。きっとできているのだと思います。

実は、RX62NのQFP144はバウンダリスキャンには対応していますが、BSDLファイルがルネサスのWebサイトにないのです。そこで、バイト君に作ってもらいました。まだ完成してはいないので、全部のピンが見えるわけではないのですが、なんとなく動いているような感じというところです。
明日、より詳細に実験してみることにしましょう!

そして、もしこれが動いたらMITOUJTAG Light版の販売を来週から再開しようと思っています。

MITOUJTAGを使ってバウンダリスキャンをすれば、RXマイコンがどんなふうに動作して、どのI/O端子にどんな信号を出しているかをパソコンの画面上でリアルタイムにモニタできます。さらには、マイコンのプログラムを書かなくても端子を操作できるようになります。これはきっとハードウェアのデバッグに便利に活用できるはずです。

そして、RXマイコンのソフトウェアのデバッグ用には、以前作ったRX62N用 簡易JTAGデバッガも使えるはずです。

RX62N用JTAG ICEのダウンロードも、来週あたりから再開しようと思います。
ご期待ください。

| | コメント (0)

RX62Nボードの設計がかなり完成に近づいた

RX62Nボードの設計がかなり完成に近づいてきました。

先日の状態から比べて、
・EXDMA用のバス出力コネクタにダンピング抵抗挿入
・E1エミュレータ用のJTAGコネクタを追加
・RS232CのライントランシーバICを追加
・圧電ブザーを追加
・USBのラインにESD保護素子を追加
・MicroSDソケットの配線を直した
・その他いろいろ回路の間違えを修正

ごちゃごちゃしてきたので、基板表面・裏面のシルクを出します。
Rx62n_6

Rx62n_7

コンパクトなサイズの基板に、いろいろなものが凝縮されてきました。

それから、この基板はRX62NのBGA176ピンのすべての信号を引き出しました。
Rx62n_8

SDRAMとの接続は32bit幅です。ほとんどの端子はピンヘッダに出しているので、基板上で搭載していない(CANとか含めて)RXマイコンのすべての機能を(やろうと思えば)実験できるはずです。

悩んでいるのは、RX62Nマイコンは、ブートモード(何もない状態からシリアル経由でROMを書き換えること)用のRXD信号と、JTAGのTDI信号が同じ端子を使っていることなのです。だから、JTAGとシリアルのポートが同時に使えない。切り替えスイッチを使ったりする方法などがありますが、どうしたらいいのか。

あと、シルクを直したり、部品番号を付け直したり、バスをプルアップするべきかどうか悩んだり、量産化に向けて面付けしたりする必要がありますので、基板屋さんに発注できるまでにもう2~3日はかかりそうです。

この基板が出来たら、RX62Nの回路設計の方法 「RXマイコンの複雑怪奇に多機能化されたI/Oポートの役割と使い方」 を忘れないうちに文章に書いていきたいと思います。

| | コメント (0)

2011.03.24

トイレットペーパーとティッシュペーパーをさしあげます

会社の備品として以前買っておいたトイレットペーパーとティッシュペーパーがあったのを思い出しました。

たしか、「鼻セレブ」が6箱くらい、「業務用トイレットペーパー」が25巻くらいあったと思います。花粉症のアルバイトさんが多い(いや、全員花粉症でした)ものでして。明日の朝、会社に行ったら未開封の在庫数を数えてみます。

こんな時期ですから、当社のお客様でティッシュペーパーやトイレットペーパーが足りないのにどうしても入手できないとお困りの方がいらっしゃいましたら無料でお分けしたいと思います。

週末には皆様のお手元に届けたいので、明日25日(金)の昼に佐川急便で発送します。明日の朝9:00から昼13:00ごろまで希望者を募りたいと思います。とりあえず荷物が確実に翌日配達できるよう、東京とその近辺の方を優先させていただこうと思います。

詳しい話は、明日また当ブログで書きます。

| | コメント (0)

2011.03.22

究極のRX62N基板のパターン設計

究極のRX62N基板の設計を続けています。

Rx62n_5

EXDMAC用のデータバスは16bit幅でピンヘッダに出しました。
たくさんのI/Oポートがピンヘッダに出せそうです。
・ポートAN0~7 (アナログ)
・ポートPC0~PC7
・ポートP00~P05
・ポートP00~P05
・ポートP20~P21
・ポートP32~P35
・ポートP10~P13
・ポートP55~P57
計37本あります。

それから、SPI ROMと、MicroSDのソケットを乗せました。

現時点でのイメージ図はこんな感じ。
右下の灰色の四角がMicroSDのソケットです。
Rx62n_4

大容量のROMが乗ったので、大きなプログラムやデータも気兼ねなく格納できるでしょう。
停電時でも電池で動くLinuxサーバなんていいかもしれない。


| | コメント (0)

2011.03.19

RX62Nボードの設計を再開

地震とか引越しの影響でRX62Nボードの開発が停止していましたが、今夜から再開しました。

CPUとSDRAMのブロックを少し左側にずらすことで、LANチップやUSBへの配線が楽に行えることがわかりました。
Rx62n_3

あとは、どんな信号を拡張コネクタに出力するかを考えないといけません。
この連休中に設計が完了できるといいな。

| | コメント (0)

2011.03.15

地震

このたびの地震により被害を受けられた皆様に心よりお見舞い申し上げます。

特電は、オフィスで物が散乱したり陶器製の食器が割れたりしましたが、怪我人はなく皆無事でした。
その日、私は自宅の引越しのため不在だったのですが、アルバイト君がいろいろと機転を利かせてくれました。本当に感謝です。

ただ、今週は交通機関が不安定のため、特電は臨時休業とさせていただきます。
先週中に出荷しようとしていた荷物は何とか出荷するようにいたします。
商品の在庫はしばらくは持ちそうですが、実装屋さんの状況や計画停電の動向によっては、次期ロットの製造が気がかりです。

製品開発やユーザサポートは、昼間電力の節電のため、極力深夜に行わせていただくことにします。

さて、私は地震の最中に自宅の引っ越しをしました。
家具が倒れたり、マンションが断水したりいろいろ大変でした。そんな中での引越しだったので、全部の家財道具を持ち出せませんでしたが、いまさら戻るにも道路が込んでいるし電車も不安定なので厳しいところです。
新居はようやく落ち着いてきて、ネットにもつながるようになりました。引越しのために冷蔵庫の中の古い食料や、トイレットペーパーを捨ててしまったのが悔やまれます。

今日、新居では節電のため暖房も灯りもほとんどつけずに過ごしました。夜は窓にダンボールをはって保温性を高めたり工夫しています。
夕方、神田のオフィスまで行ってみると、自転車通勤に切り替えたたくさんの人が国道を走ってました。街の明かりも少なめです。電力不足で、多くの日本人が本気でエコを実践しはじめた気がします。

この国難ともいえる状況を乗り越えたとき、きっと日本は環境先進国として生まれ変わることができると信じています。そうなれるよう、私も頑張っていきたいです。

最後に、原発を止めようと苦労されている皆様、本当にありがとうございます。
格納容器の頑丈さと日本の技術の高さを信じています。
この試みが成功するように、心から祈っています。

| | コメント (0)

2011.03.09

RXマイコンボードの設計が少し進んだ

CPUとメモリ間のバスの配線のやり方を思いついたおかげで、作業がすすんでおります。
バスの信号は全部で55本あります。

昨日の昼の段階では、バス間の配線が0.6mmでした。そのため、SDRAMの配線の高さが33mmにもなっていました。
Rx_bus_06mm

昨日21時ごろから、これを0.4mm間隔にする設計変更をしました。
高さは22mmになりました。これでもうまくパターンが引けました。
Rx_bus_04mm

これで飽き足らずに、0時過ぎになってもう少し頑張って0.3mm間隔にしてみようという気になりました。
ここまでくると、ビアが邪魔して平行に配線ができません。
-------◎-------
-----------◎---
--------◎------
平行する配線にビアを打つときに迂回しなければならなくなります。

___/ ̄\__
────◎───
 ̄ ̄ ̄\_/ ̄ ̄
この迂回があるので、0.3mm以下にするのは無理な気がします。

結局、こういうパターンになりました。
Rx_bus_03mm

最初の状態の半分の面積になりました。
このパターンの優れているところは、部品面、内層1、内層2だけしか使っていないことです。半田面は全く使っていないので、プルアップ抵抗や、コネクタへ出す際のダンピング抵抗を今から追加できます。

基板全体のイメージは、こうなりました。
Rx_memory

76mm×60mmのサイズに納まっています。
さて、寝るとしましょう。今夜は基板設計の夢を見そうです。

| | コメント (3)

2011.03.08

RX62NとSDRAM間の配線が引けた

RX62Nのボードを設計していて、RX62N(BGAタイプ)とSDRAM(BGAタイプ)間の配線をどうやって引こうか、かれこれ1か月ほど悩んできました。

というのは、RX62Nのデータバス・アドレスバスは下の図で左下の角のほうから出ていますが、この信号をSDRAMにつなげようと、どうしても大量の配線がクロスしてしまうからです。SDRAMを回転させたり、裏返したりしてもこのねじれは解決できないことがわかってきました。

Rx62n_cross

この配線のねじれはアドレスバスや制御信号で起きているため、データバスのビットの入れ替えでは対応できません。このことが原因で、設計が滞っていました。

ところで、前にSH-4の基板を設計したことがあったのですが、SH-4ではCPUのピン配置が実はSDRAMの標準のピン配置を考慮した並びになっていて、気がつけばすっきり引けるということがありました。
http://nahitafu.cocolog-nifty.com/nahitafu/2009/01/sh7750r-33d7.html

ところが、RXはそういう配慮はされていないようでした。

そのため、どうやってもこの配線を引くことができず、BGAタイプではなくTSSOPタイプのSDRAMを検討したり、アクセス速度を犠牲にして16bitタイプのを考えたり、基板の層を12層くらいまで増やしたりもしてみましたが、それでも上手く配線を引くことができませんでした。結局、一度たりともRXとSDRAM間を上手につなぐことができませんでした。

「無理やりRXとSDRAMを上手くつなげられたとしても、そのあとEXDMAC用のバスに配線を引き出さなきゃならないな・・・それはもはや不可能では・・」と考えていました。

そんな中、今日の朝、電車の中で突然ひらめきました。

『最短でつなぐことにこだわらずに、いったん、RXマイコンの下に全部のバスを引き出したらどうだろうか。まるで紙に描いたブロック図のように。そして、そのバスに対して上や下から並行に配線をつないだら、どんなピン配置でもうまくいくのではないだろうか。』

やってみたところ、見事に配線が引けました。RXとSDRAMが32bitのデータバスでつながっています。しかも3層しか使っていません。標準的な6層基板なら、あと1層、自由に使える信号層があるのです。

Rx62n_bus

こういう配線だから、下側にコネクタをつけて、EXDMAC用に16本~32本の信号を引き出すこともできるでしょう。
16本は余裕で引き出せました。
Rx62n_bus_exdmac

現在の設計では、バスの信号間の間隔が0.6mmと広くとっているので、バス全体で幅が33mmもありますが、これから手作業で最適化していけば半分以下にできるでしょう。

RX基板の設計が加速しそうです。

| | コメント (2)

2011.03.06

特電Spartan-6ボード・リソースCD-ROMができました

たいしたものではないのですが、特電Spartan-6ボード・リソースCD-ROMを作りました!

ブログやJTAGひろば、Webサイトなどに分散していた各種のソースコードやアプリケーションのほか、特別なご依頼があった客様向けに作成したサンプルアプリなどを、1枚のCD-ROMに納めました。

Sp6cd_2

気になるその内容は、
・Spartan-6とOV7670 CMOSイメージセンサを接続するためのサンプル回路
・Spartan-6とMT9V031 CMOSイメージセンサを接続するためのサンプル回路
・汎用データ収集装置(16bit,166MHzでサンプリングしてDDR2メモリに貯め、USBで読みだす)回路
・Spartan-6のIODELAY2機能を実験するためのサンプル回路
・Spartan-6のDeviceDNA機能を実験するためのサンプル回路
・Spartan-6のIOSERDESで1Gbpsの通信を行うためのサンプル回路
・Spartan-6LXTのGTPでの通信実験(SATA)
・Spartan-6のMCBを使ったDDR2メモリ実験回路
・当社製ソフトコアによるUSB-DDR2メモリ実験回路(サンプル・リファレンス・デザイン)
・USB通信の単純なサンプル回路
・Spartan-6とAD/DAコンバータを接続するデータ収集・計測回路
・Spartan-6にMicroBlazeを内蔵して実験を行うためのサンプル回路
・MATLABと接続してデータをキャプチャするための拡張ファイル
・Microsoft Excelと接続してデータをキャプチャするためのVBAマクロ
・デバイスドライバ (Windows2000/XP/Vista/7, 32bit/64bit)
・Spartan-6用USB-JTAG書き込みツール (FPGAやROMにBitStreamを書き込む)
・Windowsサンプルアプリケーション (USBを通じたDDR2メモリへのデータ転送)
・ファームウェア更新ツール (万が一ファームウェアを消してしまった場合の復旧用)
・ES品 回路図(TKDN-SP6-ES すべてのページ)
・ES品 UCFファイル (TKDN-SP6-ES用 FPGAのピン定義)
・ES品 基板ピン配置図(TKDN-SP6-ES用)
・量産版 Rev.A 回路図(TKDN-SP6-16/45 すべてのページ)
・量産版 Rev.B 回路図(TKDN-SP6-16/45 すべてのページ)
・量産版 UCFファイル (TKDN-SP6-16/45用 FPGAのピン定義)
・量産版 基板ピン配置図(TKDN-SP6-16/45用)
・ボード寸法図

などです。
いままでの資料と参考回路の集大成という感じです。

CD-ROMを挿入すると、自動的にメニューが立ち上がって、リンクをクリックするとその内容が見られるというしくみです。

Cdindex

これは、もともとET2010へお越しいただいてパンフレットをお持ちいただいた方向けの企画だったのですが、こんなに遅くなってしまいました。誠に申し訳ございません。ET2010へお越しいただいたお客様へは、金曜日に発送いたしました。この週末に届くのではないかと思います。

このCD-ROMは、10枚ほど余分に作ったので、ご希望の方に差し上げることにいたします。

既にSpartan-6ボードをお持ちの方と、まだSpartan-6ボードをお持ちでない方で、お申し込み方法が変わります。

■既にSpartan-6ボードをお持ちの方
特殊電子回路の通信簿(アンケート)」にご協力ください。アンケートのプレゼント商品としてお送りします。

■まだSpartan-6ボードをお持ちでない方
オンラインショップでのご注文の際に、備考欄に「CD-ROM希望」とお書き添えください。

在庫が全部なくなるまで、このプレゼントを続けますので、どしどしご応募ください。

| | コメント (0)

2011.03.04

PCI Expressを扱うFPGAは何m秒でコンフィグすればよいか?

FPGAは揮発性なので、電源投入時にコンフィグしなければ動作しません。
そのため、PCI ExpressをFPGAで実現した場合、PCの認識プロセスが走るまでにFPGAのコンフィグが完了して、動作を開始していなければなりません。

では、いったい何ミリ秒以内にコンフィグすればよいのでしょうか?

XILINXのユーザガイド(s6_pcie_ug654.pdf)によれば、電源が安定しから最小100msでリセットがかかるからそれまでに起動していなければならないと書かれています。このリセット時間をTpvperlといいます。
Tpvperlの具体的な値は規格では定められていません。

したがって、FPGAは 「100ms+(電源が安定するまでの時間)」 にコンフィギュレーションが完了して動いていなければならないそうです。
このタイミングを図にしたものがユーザガイドに載っています。

Tpvperl

「電源が安定するまでの時間」は、ATXのマザーボードでは最小100msです。ATXの電源は、電源が規定の電圧に達した後、100ms以上経った後にPWR_OKの信号がアクティブになると書かれています。つまり、FPGAは電源投入後200ms以内に起動していなければならないということです。

また、XILINXのユーザガイドによれば、FPGAの初期化にも50msくらい要するとされています。
ということで、
  FPGAの初期化(50ms) + コンフィグ時間 < Tpvperl(100ms) + 電源安定時間(100ms)
という式が出ています。つまり、150ms以内にコンフィグしなければならないというわけです。
ATXのマザーボードでなければ電源安定時間は最小0msなので、トータルで50ms以内でコンフィグしろと書かれています。

一方、Spartan-6LXTのビットストリームのサイズは、XC6SLX45Tでは11,875,104bitありますので、150ms以内にコンフィグするには、CCLKは80MHzの速度が必要です。しかし、ISEの設定画面では26MHzまでしかいかないので、これでは間に合いません。
そこで、XILINXではSPI x4かSelectMap (x8のパラレルコンフィグ)を推奨、と書かれています。

Table8283

上の表で黄色や赤になっているのは危険ゾーンということです。しかし、この表にも問題があって、まず、CCLKの速度は45MHzや33MHzには設定できません(少なくとも現在のISEでは)。XC6SLX150Tなんて、どんな方法を使っても推奨時間内にコンフィギュレーションできないわけです。
(なるほど、こういう問題があるから、XILINXの評価ボード(SP605)は、SPI ROMを使わずに、SystemAceとコンパクトフラッシュでx8のSelectMapを採用しているのかもしれません。)

この問題に対しては、XILINXのユーザガイドには以下の解決策が示されています。
 ・マザーボードのBIOSを設定して、リセット信号を複数回出す出すように設定する。
 ・最初の電源投入後、PCをwarm resetをするようにスクリプトを組む。
要するに、FPGAのコンフィグが間に合わないことを最初から認めているようです。

というのが、XILINXのユーザガイドに書かれている内容ですが、実際のところどうなのか。バイト君に手伝ってもらって何台かのPCで試してみました。

まず、EXPARTAN-6TのコンフィグROMをWinbondのW25Q32に乗せ変えます。W25QはSPI x2とx4モードをサポートするので、コンフィグ時間をいろいろな値に変化させられるためです。

実際のPCではどのくらいの時間でリセットがかかるかを測ってみました。

次の図は、FPGAをSPIx2モード、22MHzでコンフィグした際の波形です。約200msでコンフィグが完了し、最初のリセットの前に起動しています。もちろん、PCI Expressは完璧に動作します。
驚くべきことに、PCI Expressのリセット信号は2回出ていました

Spi22x2

電源が投入されてからPERST#信号がアサートされるまでに約400ms、最初のリセット(Tpvperl)が250ms、二度目のリセット(Tpvperl)が200ms。リセット信号は2回やってきていました。電源を入れてからリセットが立ち上がるまで、トータルで800msという結果でした。
もちろん、PCI Expressの動作は完璧です。


CCLK=10MHzにすると、1回目のリセットの直後にコンフィグが完了するようにできました。これでも問題なく起動できています。
Spi10x2

これでも、PCI Expressの動作は完璧です。
もう少し遅らせて、二度目のリセットの後0.5秒くらい後にコンフィグされるようにしても、PCI Expressは認識されました。

しかし、それ以上遅らせていくと問題が出てくるようになりました。PCI Expressは認識されるけれども、Windowsのデバイスマネージャで?マークがついたりとか、不安定な症状が少しずつ出てきます。

めちゃめちゃコンフィグが遅い場合はどうなるでしょう?SPI x2モードで2MHzにしてみたところ、コンフィグに3秒くらいかかり。ここまでくると、さすがに認識はされませんでした。
Spi2x2

結果としては、
・BIOSは複数回のリセットパルスを出していて、最後のリセットが終了するまでにコンフィグできていればいい。実際のマシンでは、電源投入後、だいたい1秒くらいでリセットが完了する。
・しかも、リセット信号が立ち上がった後にすぐにPCI Expressの認識が行われるのではなく、実際にはBIOSがセルフチェックを行った後らしいので、電源投入後1.5秒くらいまでは許容範囲である。
・1.5~3秒くらいは不安定ゾーン。
・3秒だと確実にアウト。

結論は
・600msくらいでコンフィグが完了すれば、実際のPCでは1発目のリセットに間に合う
・SPI x1モードでもCCLK=26MHzなら400msで起動するから、まず大丈夫
ということになります。

| | コメント (4)

2011.03.03

踊るクロック位相

Spartan-3のDCM_SPには、位相シフタ(phase shifter)が入っています。

Dcmps

この位相シフタを使うと、入力クロックの位相を、任意の量だけ、ダイナミックに変化させることができるといわれています。

動的に動かすというのを、実際にやってみました。
この位相シフタは内部で-255~+255までのカウンタを持っているそうで、PSCLKの立ち上がりで、遅延量が1つ減ったり増えたりします。遅延量の変化が完了するとPSDONEという信号が'1'になります。

注意しなければならないのは、PSCLKは止めてはいけないということです。PSCLKが'0'のままだとPSDONEは変化しません。PSCLKを出しっぱなしにして、PSENを制御するのが正解です。
PSENをアサートしてからPSDONEがアサートされるまでは、数μ秒かかることもありました。PSDONEを見るのは必須です。

入力クロック48MHzで実際に試してみると、-255~255の範囲というのはどうやら怪しくて、-384~+384くらいまで動いているように思われます。-255~255に限ってしまうと動く範囲も狭く(±90°くらいしか動かせない)、あまり動いた気がしません。しかし、最大で10.00nsまでしか動かせないようなことも書いてあるので、そういうものなのかもしれません。
また、DCMのSTATUS[0]が位相シフタのオーバーフローを表すということなのですが、±255を超えても反応しないように思えました。-400~+400を超えると、INCDECの方向を反転させても戻ってこなくなります。

結局、よくわかりませんが、シフト量は-255~255の範囲にしておいたほうが無難なのでしょう。範囲が狭くなるのは仕方がないようです。

こうして、クロックを動的に動かしてみた画像を撮影したので、動画をアップロードします。

上の波形が元のクロック(48MHz)。下の波形がシフトさせたクロックです。-384~+384の範囲で動かしています。使ったデバイスはSpartan-3Eです。

| | コメント (0)

« 2011年2月 | トップページ | 2011年4月 »