« 2008年6月 | トップページ | 2008年8月 »

2008.07.31

BLOGANAモジュールから任意の値を出力

MITOUJTAG BASIC 1.5 SP2で新たに追加された機能として
「BLOGANAモジュールから任意の値を出力」という機能があります。
これは、FPGAの動作中の回路に、JTAGを通じて任意の値を送り込むことができるという機能です。

FPGAは論理合成したらそのとおりにしか動かないので、動作やパラメータをダイナミックに変えられり回路を実現するのは大変面倒なことでした。たとえば、画像コントローラであれば、水平開始位置や垂直開始位置、明るさなどを少しづつ変えて試してみたいことなどがあります。
こういった機能を実現するには、FPGAの中にデバッグ用の内部レジスタを用意して、ユーザI/Oのどこかを通じてそれを書き換えるというのが常でした。
例えば、FPGAを使ったUSBカメラを作るのであれば、USBを通じて画像を取得する経路だけではなく、USBを通じて内部レジスタにアクセスする回路も作らなければなりません。そうしたら、「USBを通じて内部レジスタにアクセスする回路」のパラメータを変えてデバッグすることをUSBを経由で行う回路もほしくなります。

そんなとき、FPGAとパソコンの間でJTAGを使って通信すると便利です。
XILINXのSpartan2以降では、JTAGインタフェースを使って内部の回路と通信するためのプリミティブが用意されています。そのプリミティブを使うとFPGAに埋め込むタイプのロジックアナライザなどが作れるわけですが、今回は波形を観察するだけではなく、逆にパソコンのソフトから任意のデータを送りこむことも可能にしてみました。

イメージで描くと下の図のような感じになります。
Bloganaop1

JTAGを使う方法ではユーザI/Oは一切使わず、また正規系のデータパスに手を加えることなく、FPGAの内部回路に横からちょっかいを出すことができます。

前置きがながくなりましたが、今回のMITOUJTAG 1.5 SP2では、JTAGロジックアナライザの画面の右上にBLOGANA USEROPというボックスが追加されています。(下の図の丸で囲った部分)
Bloganaop2

このボックスに値を入れてOKボタンを押すと、FPGAの内部ロジックに信号を与えることができます。

実際に、XILINXのSpartan3AN評価ボードで実験してみました。
Spartan3AN評価ボードで作ったサンプル回路の構成を下の図に示します。
Bloganaop3

サンプルソースを下記のURLにおいておきます。
「blogana_op_test.vhd」をダウンロード

BLOGANAコンポーネントにあるUSER_OPという信号が今回のMITOUJTAG BASIC V1.5 SP2で追加された信号で、20bitの出力信号です。

上のソースは8個のLEDをチカチカと点滅させる回路なのですが、点滅の方法を決定するロジックを、下の記述のようにMODEという信号で選択できるようにしています。
process(CLK) begin
 if(CLK'event and CLK='1') then
  if(TIMER = 0) then
    case MODE(1 downto 0) is
     when "00" =>  LED <= LED + 1;
     when "01" =>  LED <= LED - 1;
     when "10" =>  LED <= LED(0) & LED(7 downto 1);
     when others => LED <= LED(6 downto 0) & LED(7);
    end case;
  end if;
 end if;
end process;
MODEが00ならばアップカウンタ、01ならダウンカウンタ、10、11ならば回転です。
このような信号(MODE信号)をロジックに埋め込んで動作を変えるというのはとりたてて特殊なことではありませんが、
 ・FPGAの論理合成をしない
 ・ユーザI/Oを介した通信機能を作らなくてよい
といったところが新しいといえます。

MITOUJTAGを使うと、パソコンから簡単に値を送りこむことができるようになり、USEROPのボックスに値を入れてOKボタンを押すと、LEDの動きが変化します。

今はバス出力という単純なものですが、今後はこの機能をどんどん発展させていきたいと思います。

動いているFPGAの中のいたるところをパソコンからいじくることができて、再論理合成なしにFPGAの動作を動的に変更できるようなデバッグ手段を構築するのが、MITOUJTAGの目指すところです。

| | コメント (0) | トラックバック (0)

MITOUJTAG1.5サービスパック2リリース

MITOUJTAG1.5サービスパック2をリリースしました。
http://www.tokudenkairo.co.jp/jtag/sp.html

更新内容は下記のとおりです。

○機能修正
・Pocket JTAG Cableのデフォルトの状態を「安定・低速」モードに戻した
・XCF16P、XCF32Pの書き込み対応
・トリガが入っていない状態でBLOGANAを停止しても正しい値が読み込まれるようにしました。
・SVFプレイヤーで、RUNTESTの引数を時間で指定できるようにした。
・非常に遅いJTAGケーブルを使用している場合において、JTAGロジアナがウォッチモードを動作させた場合に、異常終了する問題を解決した。
・データベースに登録されていないデバイスのBSDLを画面にドラッグ・アンド・ドロップした際に、ファイルがコピーできない問題を修正した。
・パッケージウィザードでパッケージファイルを作成した場合に、ファイルの生成に失敗することがある不具合を修正した。
・BLOGANAのソースファイルをアップデートした。 (Version 0.12→1.5)
・JTAGロジックアナライザのマニュアルを同梱した。

○新機能追加
・BLOGANAモジュールから任意の値を出力ができるようにした。

皆様よろしくお願いします。

| | コメント (0) | トラックバック (0)

2008.07.25

78K基板によるUSB-JTAG安定化

今日は78Kマイコンを使ったUSB-JTAGの動作安定化作業を行いました。

昨日作ったUSB-JTAGは動作が不安定で、しかも毎秒0.4回しかサンプリングできませんでした。

その原因は、trg_getc()という関数の仕様にありました。
この関数はテキスト処理に特化してあるため、USBの通信で'\r'というコードを受け取ると'\n'に変換し、'\n'を受け取ると破棄するようになっています。
USBの上でバイナリデータを流した場合に、この関数が悪さをしていたようです。
受け取ったデータが正しくないのでアプリケーションレベルで何度もリトライし、それで遅くなっていたようです。

trg_getc()のかわりに下記のようなバイナリの1文字受信関数を作ったところ、
BYTE usb_getbin()
{
 BYTE uc;
 trg_recvdata(&uc,1);
 return uc;
}
ちゃんと安定してUSB-JTAGが動くようになりました。

しかし、まだ動作速度が目標のレベルに達していません。
Spartan3ANの動作をロジアナモードでサンプリングしてみると、毎秒18回程度しか出ていないようです。
Trg78kjtaglogiana

現在のトラ技78KによるUSB-JTAGは、TCK速度は65kHzくらいで、ロジアナモードでのサンプリング速度は実測毎秒18回程でした。
XC3S700AN FG484のバウンダリスキャンレジスタ長は1005ビットなので、計算上は毎秒60回程度のスキャンはできるはずです。

予想より遅かった原因は、8bitマイコンだから・・と遠慮してしまって、JTAGの1回のデータサイズを240bitに制限してしまったことがあります。そのため、1005ビットのデータシフトにUSBのパケットを5個(往復で10個)使ってしまっています。また、TAPをCapture-DRへ動かす処理や、データのシフト後からUpdateステートへ動かす処理用に1個のUSBのパケットを使ってしまいます。

これらのパケット間の待ち時間により、一層無駄な時間が生じてしまっていました。
しかも、パケットを1個送ったら、応答文字列とチェックサムが返るまで待つようになっています。

(1). ホスト: コマンド送信
(2). 78K: コマンド受信と解釈
(3). 78K: JTAG処理
(4). 78k: 結果送信
(5). ホスト: 結果文字列受信
(6). ホスト: チェックサム確認

このハンドシェイクはRS232C時代の名残なので、不要でしょう。ハンドシェイクやチェックサムはUSBが内部でやってくれているのですから。

78K版USB-JTAG高速化のためには、まずJTAGのデータ入出力を行う部分をアセンブラ化してTCK速度を上げ、それからUSBのデータを一括で送り、アプリケーションレベルでのハンドシェイクをしないように改良する必要がありそうです。

| | コメント (0) | トラックバック (0)

2008.07.24

トラ技78K基板でUSB-JTAGを作ってみた

トラ技付録78K基板に最も期待されるアプリケーションはおそらくCPLDやFPGAに書き込むためのアダプタではないでしょうか。

最近のCPLDやFPGAの書き込みには、JTAGというシリアル通信のプロトコルが使われます。
そこで、トラ技78K基板を簡易的なUSB-JTAGアダプタにする方法を開発中です。

JTAGは、TCK,TDI,TMS,TDOの4つの信号線で通信します。
TDIとTDOはシリアルデータの入出力、TCKはクロックです。
付録基板のI/Oポートを
 P13・・・TDO
 P14・・・TMS
 P15・・・TDI
 P16・・・TCK
と割り当てて、XILINXのSpartan3AN評価ボードとトラ技78Kにつないでみました。

トラ技78KでJTAG

TCKやTDIを操作するハードウェアを作るのは難しくはないのですが、どのようにTCKやTDIを操作すればよいかということや、どのようにシリアルのビット列を組み立てれば目的の機能が果たせるかというのは、ターゲットとなるCPLDやFPGAごとにみな違います。
JTAGはソフト面の比重が非常に大きいのです。

特殊電子回路㈱から発売されているMITOUJTAG(みとうジェイタグ)は、いろんなFPGAやCPLDに書き込んだり、FPGAやCPLDの端子の状態をパソコンの画面上にリアルタイムに可視化することができる汎用的なJTAGソフトウェアです。(下の画面参照)

トラ技78K基板で作ったUSB-JTAGアダプタをMITOUJTAGから使うことができるようにすれば、JTAGのアルゴリズムを再発明することなく、あらゆるデバイスに即対応することができるわけです。

そういうわけで、以前R8Cマイコン用に作った「RS232C-JTAG」のプログラムを78Kに移植してみたところ、78KマイコンでUSBをJTAGに変換し、FPGAに接続することができました。トラ技78Kマイコンは仮想COMポートとして見えるので、自分でドライバを作る必要がない分だけ楽にできました。

XILINX Spartan3ANの端子の状態を見ているのが下の図の画面です。

Spartan3an

しかし、上記の画面の「視覚的バウンダリスキャン」(端子の状態を可視化する技術)は、毎秒0.4回と非常に遅く、まだまだ実用的ではありません。JTAGの信号をオシロで見てみると、700m秒くらい空いているので、何かのタイムアウトが起こってしまっているようです。
今後、デバッグを進めていって、少なくともストレスを感じない程度の速度でスキャンできることを目指したいと思います。


JTAGバウンダリスキャン ツール
世界初の視覚的バウンダリスキャンツール ~MITOUJTAG~

| | コメント (0) | トラックバック (0)

2008.07.21

PCI Express FPGA評価ボード

今年の夏の新製品として、PCI Express付きFPGA評価ボードを設計しています。

FPGAベンダ純正のPCI Express評価ボードはIPコアの試用期間に制限があったり、また別のベンダの評価ボードはIPコアが別売りだったりという状況なので、PCI Expressを気軽に扱えるFPGA評価ボードがいままでなかったような気がします。
そこで、特電ではPCI Expressに対応したFPGA評価ボードを作ることにしました。

いま考えている基板の、主要なコンポーネントは、
 ・FPGA    Spartan3E
 ・PHY     XIO1100(Texas Instruments)
 ・メモリ    DDR2 SDRAM 256Mbit
 ・コネクタ   PCI Express エッジコネクタ & ケーブル(選択)
 ・ユーザI/O 28本(2.54mmピッチ)
 ・ROM     SPIのROM、16Mbit
 ・サイズ    100mm×70mm (PCI Express ロープロファイル)
 ・その他    7セグLED 4個、DIPスイッチ、プッシュスイッチ、RS232C
という感じの基板になります。

FPGAの選定
FPGAにはPCI ExpressのIPコアを入れたいので、Spartan3以降の品種になります。4層基板で作りたいのでBGAパッケージは256ピンに限定です。
スタンダードなSpartan3にするか、ロジック重視のSpartan3Eにするか、I/O重視のSpartan3Aにするかを決めなければなりません。

Spartan3

左から順に、Spartan3、Spartan3E、Spartan3Aです。Spartan3よりも3Eの方が中心部の電源ピンが減っていて、ユーザI/Oが増えています。一番右はSpartan3Aです。ユーザI/Oは増えたような気がしますが、外側から数えて第6列までユーザI/Oとして使われているので、4層基板では配線するのは困難なようです。

また、Spartan3ANは、どうやらパッケージとデバイスの規模が1対1に対応していて、256ピンだとXC3S200ANしか存在しないので今回はパスしました。Spartan3AとSpartan3ANはROMが入っているかいないか以外にも違いはあるようです。また、Digikeyで規模の大きなSpartan3Aを扱っていません。
Spartan3A/ANには面白い新機能(DNAやVCCAUXが3.3Vでよい、など)があるのですが、配線の引きにくさ、入手性、パッケージの選択などから考えてパスします。

そういう理由からSpartan3Eを使うことにしました。
Spartan3Eの注意しなければならない点は、入力専用ピンがそこらじゅうにあることです。このため、ユーザI/Oがすべて入出力信号に使えるわけではありません。

PHYチップの選定
PCI ExpressのPHYチップは、TexasInstruments社のXIO1100を使います。競合するPHYチップにはNXPのPX1011Aがありますが、こちらはPIPEの速度が250MHzになり、I/O規格はSSTL_2になります。
選定理由はDigikeyで買えることと、配線が引きやすそうなこと、LVCMOSであること、使った実績があること、PIPEの速度が125MHzであることです。

DDR2 SDRAM
まず、PCI Express x1の帯域は、250MBytes/secです。8bit幅だと250MHzの速度で信号が送られてきます。
この速度でメモリへの格納と取り出しを行うには、500MBytes/secのメモリ帯域が必要になります。
8bit幅のDRAMを使う場合、選択肢はDDR2以外にはありません。
しかし、DDR2を500MHzで動かすのは基板設計的にもFPGA的にも難しいので、今回はいけるところまでいくことにします。おそらく250MByte/sec程度になると思います。

また、DDR2を使った場合、DDRを使う場合よりも終端抵抗の数を減らすことができるのもメリットの一つです。
Spartan3EとDDR2をつなぐ場合の、直列・並列の終端抵抗の入れ方については検討中です。
Virtex4や5と違ってVPRやVPNがないので面倒な設計になるかもしれません。

コネクタ
コネクタには、標準的なPCI Expressケーブル用のコネクタも載せることにします。
いわゆる「PCI Express External Cabling 1.0」規格を意識して作ろうと思います。

なぜなら、FPGA評価ボードは、パソコンのマザーボードに挿した状態では基板のデバッグがやりづらいからです。
当社のアルバイトの学生曰く、「FPGA評価基板は机の上に横置き使用できるようでなければならない」とのことなのですが、まさに的を得た意見だと思います。

PCI ExpressのコネクタはMolexで手に入るようです。
Pcie_con

ユーザI/O
ユーザI/Oは2.54mmピッチのピンヘッダにします。
昨今のFPGA評価基板は、1mmピッチや0.5mmピッチの高密度コネクタを使う傾向にありますが、高密度コネクタを使うと万能基板に載りません。FPGA評価基板はそのまま万能基板に載らなければ使いにくいと考えています。

コンフィギュレーションROM
SPI方式のROM。AtmelのAT45DB16Dを乗せます。16Mbitです。

その他
PCI Expressのステートマシンの状態を表示したりするため、7セグLEDを乗せようと思います。

電源の設計
ものすごい種類の電源が必要になります。
5V 電源入力
3.3V FPGAのI/O★大電流
2.5V FPGAのVCCAUX
1.8V DDR2の電源★大電流
1.5V XIO1100のコア電源★大電流
1.2V FPGAの内部電源★大電流
0.9V DDR2の終端電源★大電流
0.9V DDR2のリファレンス

これだけの電源を作り出すために、4電源出力タイプのレギュレータを使うことにします。
Spartan3A評価ボードでも使われているナショセミのLP3906という石です。
この石にはJXXIタイプ、DJXIタイプ、VPFPタイプ、PPXPタイプの4つのタイプがあり、
JXXIタイプは1.2V、3.3V、3.3V、1.8Vをつくり、DJXIタイプは0.9V、1.8V、3.3V、1.8Vを作ります。
Spartan3A評価ボードではJXXIタイプ、DJXIタイプが1個づつ使われています。

こんな感じでだいたいのイメージを描いて見ると、
Pcie_board1
となります。
PCI Expressのカードの形状に合わせるため、基板の半分の領域が無駄になっています。パソコンの拡張スロットに挿すことを完全に放棄して、PCI Expressケーブル専用にしてもいいかもしれません。

この基板のソフト面は、
 ・特電 PCI Expressコア
 ・特電 DDR2コア
 ・MITOUJTAG特別評価版 (このボードでのみ使えるバージョン。無期限)
 ・簡易的なデバイスドライバ
といったものを添付しようと思っています。
つまり、買ったその日からすぐにPCI ExpressやDDR2メモリを扱う自作機器が作れ、何かの機械に組み込みやすいという、本当の意味で使いやすいFPGA評価基板を考えています。

| | コメント (0) | トラックバック (0)

2008.07.17

78KマイコンUSBプログラマをリリース

先日の78KマイコンUSBプログラマの続きを行っています。

マスターからスレーブへの単純なコピーではなく、HEXファイルをダウンロードして動くようにしようと改良しようと思ったのですが、PM+が生成するHEXファイルは、下の図のように1行の長さが揃っていなくて、デコボコしています。
また、必要のない領域はスキップされてしまっています。
Dekoboko

このようなHEXファイルを読み込んでROMに書き込むためには、16バイトや32バイトの境界にくるよう、データを整形しないと具合が悪いようでした。

78Kマイコンのプログラムの中で一度バッファしたりしてそのような整形をしようとも試みたのですが、RAM上で動くサイズ(2kバイト)よりも大きくなってしまいました。そういうわけで、78Kマイコンが直接HEXファイルを読むことはあきらめることにして、パソコン上でHEXファイルを一旦整形することにしました。

整形済みのHEXファイルは下の図のようになります。
Seikei

プログラマ用マイコン基板と、ターゲット用マイコン基板のつなぎ方は次の図のようになります。
78kwriterkessen

書き込みツールと、HEXファイル整形ツールは下記のURLにあります。
csiwr0717.lzh」をダウンロード


※ このプログラムは無理に使う必要はりません。このプログラムはトラ技BIOSを外してオリジナルな起動プログラムを作りたい場合や、自作したUSBファームウェアを書き込んでみたい場合に使ってください。
※ このプログラムは一切無保証です。プログラムが書き込めなくても、ターゲット基板に回復不能なダメージを与えても一切責任を負いません。各自の責任でご利用ください


上のファイルの中にあるcsiwr.hexを書き込んで、実行します。
Csi_dragdrop

「整形済みHEXファイル(*.FHX)を送信してください.」と出たら、
先ほどつくったFHXファイルを送信します。

しばらくするとfinと出て、終了です。
ターゲット側のマイコン基板に電源を入れ(USBをつなぎ)、動作を確認してください。
書き込みには約30秒かかります。

書き込みには少々時間がかかりますが、その原因はUSBでデータを送るのが速すぎて、USBが詰まってしまうことにあります。私の環境では詰まるもののちゃんと書き込めましたが、他のパソコンでもうまくいくかどうかは分かりません。
うまくいかない場合はTeraTermのメインメニューで、[Setup] -> [Serial Port]を行い、1行送信ごとに1msの送信ディレイを入れるように設定してみてください。
78kteraterm_wait


| | コメント (0) | トラックバック (0)

2008.07.16

78Kマイコンのフラッシュ書き換えプログラム

トラ技の78K付録基板は16kバイトのフラッシュROMを内蔵していますが、そのうち半分の8kバイトをUSBファームウェアとトラ技BIOSで使ってしまっています。
トラ技BIOSからは、この前半の領域は書き換えられません。
しかし、大きなアプリケーションを作りたい場合には、トラ技BIOSを外してフラッシュROM全部を使いたい場合もあると思います。
そういうわけで、付録基板のフラッシュROM全域を書き換えられるようなシステムを作ろうと思います。

ところで、これまで78Kマイコンをまっさらな状態から書き込むには、パソコンとターゲットCPUをUARTで接続して、WriteEZ3やFPL3などのソフトウェア使って書き換えることが多かったと思います。
ところが、USB-RS232Cケーブルを使うと完全な脱レガシーとはいえないので、下の写真のように、2台の付録基板をつないで、片方をマスター、片方をスレーブにして、フラッシュROMの全域を書き換えられるようにしたいという強い思いがありました。
同じマイコン同士なので、レベル変換もいりません。線でつなぐだけです。

78kwriter1

つまり、付録基板が2台あれば、片方をUSB-78Kプログラマにすることができるというわけです。

2台の78K基板は、CSIというシリアル通信のプロトコルの信号で通信します。スレーブ側のNRESET、FLMD、SCI、SI、SOの5本の線を、マスターのP00、P01、P10、P11、P12にそれぞれつなぎます。

どうしてもすぐにこのプログラムを作ってみたくなって、今日、家に帰ってからずっと作業をしていました。
とりあえず、マスターの78KマイコンのフラッシュROMの内容をダビングするところまでできました。
ターゲットのフラッシュROMを完全に消去して、マスターのフラッシュROMのイメージをそのままコピーするという感じのプログラムです。

78kwriter2

書き換えプログラムも78K用のプログラムにしたので、Windowsには特別なソフトをインストールする必要はありません。78kが勝手に書き込みをしてくれます。

このプログラムは近々(今週末には)ダウンロードできるようにする予定です。
ベリファイもチェックサムも無視しているのでまさに一発勝負の動作です。
現在の実行コードのサイズは、まだ1420バイト程度です。
あとはベリファイや、HEXファイルをダウンロードする機能をつけたいのですが、残り600バイトに収まるでしょうか。
2048バイト以内に収まればRAMアプリケーションにできるので、嬉しいところです。

| | コメント (7) | トラックバック (0)

2008.07.15

MITOU JTAG対応デバイス一覧を更新

久々にMITOUJTAGの対応デバイス一覧を更新しました。
http://www.tokudenkairo.co.jp/jtag/device.html
Virtex5への対応などが追加されたほか、手軽に見れるよう、PDFではなくHTMLのページにしました。


ところで、うちではホームページの作成に、Namo社のHomePage Creatorというソフトを使っていました。
バージョンアップしようとしたら名前が変わって、Namo WebEditorになっていました。機能も拡張され、幸いなことにちゃんと移行はできたのですが、WebEditorになってから急に重たくなりました。1文字1文字打つたびに、どっしりとした動作です。
Dual CoreクラスのCPUを使ったパソコンで動かさないと、もっさりとした動作になります。どうしてこんなに重いのか疑問だったのですが、今回更新したページのように、TABLEを多用するページだと特に重たくなることがわかってきました。

| | コメント (0) | トラックバック (0)

2008.07.14

MITOUJTAG1.50のサービスパック確定版

MITOUJTAG Version 1.5 サービスパック1(正式版)をリリースしました。

先週の暫定版と比べると、以下のような点が改良されました。

①JTAGフラッシュROMライタが、インテルHEXファイルに対応しました。
②トリガが入っていない状態でBLOGANAのキャプチャを停止しても正しい値が読み込まれるようにしました。
③BLOGANAモジュールから任意の値を出力ができるようにしようとしています。


まず、今までのJTAGフラッシュROMライタは、MOTファイルと、Plainなバイナリファイルには対応していましたが、Intel型のHEXファイルに対応させるのを忘れておりました。お客様からのご依頼で気が付きました。

また、BLOGANAのキャプチャをする際に、トリガが入らない状態(キャプチャ前の待機状態)でSTOPボタンを押すと、変なデータが読み込まれてしまいました。
今回のサービスパックではこの問題を修正して、トリガが入らない状態でも正しいデータが読めるようにしました。

最後に、BLOGANAモジュールから任意の値を出力できるようにしました。これは、FPGAの中に埋め込んだロジアナのIPコアから、パソコンから指令した値を任意のタイミングで出力できるというものです。
今後のMITOUJTAGの改良で、BLOGANAトリガの条件設定や「波形を操作できるロジアナ」の実現などに使っていこうと思います。


JTAGバウンダリスキャン ツール
世界初の視覚的バウンダリスキャンツール ~MITOUJTAG~

| | コメント (0) | トラックバック (0)

トラ技78Kマイコンのコンパイルエラー

トランジスタ技術2008年8月号の143ページに書かれた手順で、サンプルプログラム(sample1)をコンパイルしようとすると、エラーが出るというご意見をいただきました。

はい、そのとおりです。申し訳ございません。

追実験をしてみたところ、
RA78K0 error E3210: Segment '@@LCODE' is not exist - ignored
というエラーが出て、確かにリンクができませんでした。

78kerr1

141ページの右下の部分でTR0808\Commonというフォルダから5個のファイルをコピーするように書かれていますが、Commonフォルダに含まれているRAMAPP.drを使うとエラーとなってしまいます。

このエラーに対処するには、RAMAPP.drを開いて、
MERGE @@LCODE : = IXRAM
と書かれた行の先頭に#(シャープ)をつけて、コメントアウトしてください。
#MERGE @@LCODE : = IXRAM

78kerr2

もしくは、TR0808\sample1フォルダの中にあるRAMAPP.drをコピーするようにしてください。
Commonフォルダのはライブラリの使用を前提としたリンカディレクティブファイルなので、LCODEセクション(ライブラリコード)がプログラム中に出現しません。そのため、sample1のようなライブラリを使わないファイルに使おうとすると、必要のないセクションをリンクしようとしてエラーになってしまいます。

記事では、commonフォルダからコピーしてくださいとなっておりますが、これは誤りで、正しくはsample1フォルダからのコピーでした。

ライブラリを使う大きなプログラムと使わないプログラムの違いについては説明が難しいので、150ページ~151ページのAppendixにまとめておきました。詳しくはAppendixをご覧下さい。

謹んでお詫び申し上げます。


| | コメント (11)

2008.07.11

トラ技付録78Kマイコンの動作

トランジスタ技術2008年付録のマイコン基板は、本当に簡単に動かせます。
動いている様子は誌面ではなかなか伝えにくいと思いましたので、動画にしてみることにしました。


上の画面をクリックすると、動画が再生されます。

この動画は、CD-ROMに収録されているオセロゲーム(ox.hex)をダウンロードして動かすものです。
ox.hexは、2000H~31E0Hくらいのサイズなので、4.5kバイトくらいのサイズになります。
フラッシュROMの書き込みは1回あたり1kバイトつづ書き込む仕様なので、4.5kバイトのファイルを書き込むHEXファイルを5回、ドラッグアンドドロップしています。
4.5kバイト分のファイルを転送しだら、CTRL+Cを押して、書き込みを終了します。

それから、jmp 2000と入力すると、フラッシュROMに書き込まれたオセロゲームが起動するというものです。
上の動画の後半30秒は、オセロゲームをプレイしています。

このオセロはあまり強くありません。
コンピュータには思考アルゴリズムをいれていません。
最も石を多く置ける場所を狙っておいてくるだけです。
もう少し考えて強くしたオセロプログラムも作ってはいたのですが、まだ動作が完全ではありませんでした。機会があれば「78kで動く強いオセロゲーム」も公開していきたいと思います。

| | コメント (1)

2008.07.10

トラ技78Kマイコン

トランジスタ技術2008年8月号が発売されました。
今月号には78Kマイコン基板が付録されています。
私なひたふもお手伝いさせていただきました。

トラ技78Kマイコン基板

NECエレクトロニクスのuPD78F0730はUSBを内蔵したワンチップマイコンで、正直言って、とても使いやすい石だと思いました。マニュアルや開発環境、ヘルプがすべて日本語であるのも嬉しいです。

今度のマイコン基板は、USB経由でフラッシュROMを書き換えることができたり、RS232Cいらずで何でもできてしまいます。
書き換えとアプリケーションの通信を切り替えるためにコネクタを差し替えたり、ジャンパを抜き差しするという面倒なこともありません。
32bitマイコンほど複雑ではないので、本当に気軽に使えるマイコンだと思います。

私としては、USBファンクションコントローラの仕組みを理解して、自分で独自のドライバを作りたいです。
何か面白いアプリケーションができたら、公開していきたいと思います。

#追記
アマゾンの人気商品ランキングで、本 > 雑誌 10位に入っているのが凄いと思う。http://www.amazon.co.jp/gp/bestsellers/books/13384021/
最高9位まで行ったのを見ました。

| | コメント (0)

2008.07.09

JTAGロジアナのマニュアルを作成

今まで、MITOUJTAGの関連マニュアルの更新をしていませんでした。
特にJTAGロジックアナライザは、人気の機能であるのに最近の更新点が反映されていなかったり、新しい機能がいろいろなページに分散して書かれているなど、いろいろとご迷惑をおかけしてまいりました。ご不便をおかけしてもうしわけございませんでした。

本日、JTAGロジックアナライザのマニュアルを更新しました。
http://www.tokudenkairo.co.jp/jtag/

JTAG ロジアナ マニュアル


さて、このようにマニュアルを最新のソフトの状況に合うように更新していると、ソフトウェアを直したいと激しく思う箇所がいくつも出てきます。

改善したい箇所は、
 ・バウンダリスキャンモードでトリガーが使用できるようにしたい。
 ・バス化した信号を、アナログ的な波形で表示することができるようにしたい。
 ・BLOGANAモードで、複雑なトリガー条件を指定できるようにしたい。
 ・BLOGANAモードで、1024ワードを超える長さのデータをサンプリング
  できるようにしたい。
 ・BLOGANAモードで、72ビットを超える幅のデータをサンプリングできるようにしたい。
 ・BLOGANAモードの、ユーザソースファイル解析機能を強化しVerilogのソースも
  扱えるようにしたい。また、DowntoやToを正しく認識できるようにしたい。

MITOUJTAG 1.5 SP2に向けて、これらの改良を手がけて生きたいと思います。

MITOUJTAGを今後ともよろしくお願いします。


| | コメント (0)

2008.07.05

MITOUJTAG1.5サービスパック

MITOUJTAG Version 1.5サービスパック1(暫定版)をリリースしました。

更新箇所は以下のとおりです。
1. Pocket JTAG Cableの動作速度改善
2. Spartan3ファミリ書き込み時のバグ対策
3. Spartan3AN、Spartan3ADSPの書き込みに対応しました。
4. XCF16P、XCF32Pの書き込み対応しました。
5. Virtex5 LXT対応
6. デバイス書き込みダイアログにごみが残るバグを改善しました
7. パラレルポートが存在しないパソコンで過剰な警告が出るのを直しました。
8.ステータスバーの文字が読みにくいことがある問題を直しました。
9.メイン画面の背景に画像を貼り付けることができるようにしました。

今回のサービスパックから、インストーラを用意しました。
mjupd150.exeを実行すると、次のような画面が開いて、必要なファイルを自動的に置き換えるようにしました。
これで楽々アップデートができます。
Sp1z_5


とりあえず動くようになった暫定版のサービスパックなので、なにか問題があるかもしれません。
1週間くらいして問題がなければ正式なSP1とするつもりです。

上記の9番の改良点、「背景画像機能」を使うには、メインメニューの表示の中から「背景画像の設定」を選びます。

Sp1z_1

次に、貼り付けたい画像ファイルを選びます。

Sp1z_2


例えば、XILINXのSpartan3AN評価ボードの写真を撮って、それをMITOUJTAGの壁紙として貼り付けます。そして画面上に表示されたFPGAの絵を、写真のFPGAの場所に移動させると、下の図のような臨場感あふれるバウンダリスキャンができるようになります。
バウンダリスキャン

この機能が何かの役に立つといいです。

バウンダリスキャン

| | コメント (1)

« 2008年6月 | トップページ | 2008年8月 »