(M)のドタバタ編集記 2006年4月号(?)


●4月1日
 いやはや、なかなか大変です。数十分かけてbitファイルが生成されても、ログをよくよく見るとゲート使用率が異様に低くて、それってCPUコアが取り込まれていないからでは?(笑)とか、スッタモンダやってます… で、ツールに詳しい筆者さんから教えていただき… なるほど、こうすればいいんですね。ありがとうございます。
 搭載デバイスがX社なので、ネットリストはNGCファイルになるんですが、そのままではHDLソースで記述したほかのIPコアと繋がらないので、ネットリストのI/O信号名だけを列挙したHDLファイルを定義して… あれ?Verilog版だとなんか配置配線でエラー出てるな… まぁ〜VHDL版だとエラーが出ないからいいや(それでいいのか?^^;)
 さて、動くか!? ダメだ… CPUコアはちゃんと入ってるハズけど、CPUコアのJTAGラインが外に出てきてないのかな… 信号の接続間違ってない? UCFのピン配置間違ってない? あとCPUコアが動かない要因って、何かあるかな… この前のメールだと、外部バスからのウェイトが入りっぱなしでもCPUコアの動作には問題ないってことだけど…

 夜。せっかくなので、近所に桜見物に… “樹林公園”なる場所があるのは知ってましたが、いまの自宅に引っ越してきてもう数年経つというのに、いまだに行ったことが無かったので。まがりなりにも公園と名前がついてるので街灯くらい点いていると思っていたのですが… いやぁ〜思った以上に広い公園だな。芝生も手入れされてるし、ちょうど一週できるようにジョギングコースとかも完備されてます。しかし… 経費節減なのかわかりませんが、街路灯は立ってるのに真っ暗でした(T_T) 桜は満開でいい感じに咲いてる(ように見える)んですが… しかしまぁ〜この暗がりの中でもシート広げて宴会しているグループがいましたよ(笑)

●4月2日
 今日も昨日の続きをゴソゴソと… 数々の問題を解決して、なんとかCPUコアが意図したとおりに動いてくれています。
 しかしまぁ〜 さすがにこのCPUコアは大きいですね。合成開始から配置配線まで終わるのに30分以上かかりますよ(Pentium 4 2.4GHz メモリ1.5Gバイト時)… ゲート使用率もすでに70%を超えてるし。LED&ディップスイッチコントローラしか繋いでないのにこのありさまじゃ、グラフィック周りはダメっぽいな…
 ってかその前に、メインメモリのSDRAMがCPUコアとくっついてるんで、グラフィック表示のための読み出しポートがありません。このCPUコアでフレームバッファが欲しいなら、SDRAMコントローラの入ってないCPUだけのネットリストも用意してもらっているので、うちで用意した2ポート対応のSDRAMコントローラと接続しないとなりませんが… 問題はこのCPUの生のローカルバスはまだ触ったことが無いので、バスブリッジを新規に作らないとならない点ですね。しかもキャッシュイネーブル時はバースト転送もするバスなわけで、ちょっとしんどそう… まぁ〜これは将来の宿題ということで…

●4月3日
 今日から新年度…しかし、どうにも違和感が… そうか! 今年の4月1日は平日ぢゃなくて、エイプリールフールネタが無いからだ!!(笑) いつもなら、“PCうぉっち”とか見て「オチがいまいちだな…」とかケチつけてましたが、今年は時期を逸してしまったので、やめやめ(^^;)
 っということで、仕事仕事。諸般の事情で入稿を抑えていた記事。6月号は予想どおりあと3〜4ページほど台割が空きそうなので、4ページ分の分量にして送稿することに。
  おお!! マルチチャネルSDRAMコントローラ搭載の設計データ出来ましたか。ありがとうございます。設計データのほう、明日見てみますね。原稿のほうもよろしくお願いいたします。

●4月4日
 まずはいつものように出社してメールチェック。おっと、この学習キットはいつ発売ですか?の問い合わせメールが… すいません、すいません。いま添付のサンプル設計データを必至こいて取り揃えていますので、いましばらくお待ちくださいぃ〜
 さて、昨日いただいた設計データをダウンロードしてファイルを解凍。ん? ありゃ! 外部バス用に出力する信号名が違ってますね。すでに掲載している連載第4回などでは、“SYS_xxx”という信号名のBLANCAシステムバスを使っていたのですが、どうやら昔の仕様のサンプルソースをベースにされてしまったようで… お手数ですが信号名を合わせていただけますか…
 っというメールを出した数時間後、修正版到着。すばやい対応でありがとうございます。さらに次回の原稿の暫定版が完成。え?!来週から海外出張!? となると原稿加筆のお願いや打ち合わせは、帰国後ですね… 了解です。

 っは!? 「250GB HDDに500GB分録画可能」って… なんだ、MPEG-2 TSをさらに圧縮(データ系は削除?)するってことか。てっきり、HDD内に確保してある代替セクタとかをすべて通常セクタとして使うAV専用HDDを用意したとかぢゃないんだ(それでも“倍”にはらなんだろう…(笑))

●4月5日
 ここ数日ドタバタやってるCPUコアと、昨日いただいたマルチチャネルSDRAMコントローラの設計データのCPUコアはまたく別物だったり。会社の自分の机のPCと、通称村上実験室(笑)の開発用PCでそれぞれプロジェクトを開いて、交互に動作確認!? CPUアーキテクチャの違いからメモリマップも違ってるのに、テスト用のダンプモニタでレジスタアドレスを指定するのに間違ったアドレスを入力して、なんで読み出し値がオール0なんだろう…とか無駄に悩んだり(汗) ん〜 さすがに同時進行はややこしいな(^^;) マルチチャネルSDRAMコントローラのほうは、筆者さんが海外出張から帰国されるまで保留にしといたほうが安全だな!?
 ってことで、片方のCPUに集中。ん〜 なんかCPUコアに外からウェイトがかからないな… バスコントローラの設定が悪いのかな? ってかさ、制御レジスタの初期値が取説の値とぜんぜん違うんですけど… 気のせい??

 おお!! P社純正ぢゃないシリアルATAドライブでも接続できるんだ! …買うか??(記事中のマシンだけだったりすると悲しいが)
↑いや、もういいかげん、アナログチューナ機の購入は控えたいっす(^^;)

●4月6日
 おっと、基板屋さんからこの上に載せるCPUカード(2品種目!)のPCB図面があがってきました。あれ?シルクの方向、これでいいですか? CN8がPCIバス関連信号のコネクタですよね? BLANCAの場合、ロゴを正位置で見る場合PCIスロットが上にくる位置なので、その上にこのCPUカードを載せると、CPUカードのロゴは逆さまになっちゃいませんか??
 あとですね… CPUの型番のシルクなんですが…CPUの型名間違ってます(滝汗) もしかして、ホントにこの型名のCPUでPCB設計しちゃいました?? まぁ〜でもその型番だとPCIコントローラを内蔵してないCPUなので、ホントにそれで設計しようとしたらPCI関連の信号名が存在せず接続エラーになると思われ、こうしてPCB設計が出来上がってるということは、単純にシルクの文字だけが間違ってるってことだと思いますが(←確認したら、たしかにその通りでした(^^;))

 りゃりゃりゃ… ついにIntel MacでWindows XPを起動させるツールが本家から出ましたか… なんでも、当初は4月1日に発表する予定が、それだと冗談だと思われてしまうのでその日は外そう… とかいう話があったとか無かったとか?? Appleが出すIntelチップ搭載マシンは、結局は骨の髄までPC/AT互換機ってことか?!(を!)

●4月7日
 一昨日あたりから悩んでいた件。やっぱりぃ〜 どうもバスコントローラの制御レジスタの値が、取説と違うなと思ったら、BLANCA版はゲート数を削減するためにレジスタの仕様を変えてあるとか… ってことで、BLANCAバージョンの簡易マニュアルが送られてきました。ふむふむ、こっちのレジスタ仕様のほうがスッキリしてていいですね。しかしよくよく確認すると、現状ではエリア0とエリア1しか使えないそうで… ん〜 PCIを扱うことを考えると、メモリ空間はできるだけ広い空間がリニアにマッピングできないと辛いんですよね… っということで、エリア0〜7まで使えるようにレジスタセットをフル仕様にすると、かなりゲート数を食います?? Slicesあまり食わない? ならフル仕様にしましょう!
 外部バス仕様はとりあえずこんなところかな。次に動作確認したいところは割り込みだな。まずはINT[0]に割り込み信号を繋いで、割り込み処理プログラムの雛形を書いて… あとはこのCPUに依存する割り込みハンドラやレジスタ退避/復帰処理の部分をよろしくお願いいたします!!
 うぉ、さっそく割り込み制御のサンプルプログラムが戻ってきました。なるど、スタートアップルーチンのアセンブラソースに割り込みハンドラを記述されたのですね。なるほど、こう書くんですか… 割り込みコントローラ周り、少し勉強しないとな…

 ん〜 発売が開始されたばかりのHD DVDプレーヤ、中身はほんとにPentium4だったんだ… いろいろ解析すれば、PC/AT互換機として使える!?

●4月8日
 結局徹夜でゴソゴソやってます。以前から作ろう作ろうと思っていながら、なかなか時間が取れなかったので、今日は徹夜で仕上げてしまいましょう! っということで、6月号付録基板用に電源供給や拡張用のD-Subコネクタを実装するベースボードの作成。適当な大きさのユニバーサル基板に、D-Sub9ピンコネクタをつけたり、メモリカード特集の某プログラムをSH-2に移植するために、某メモリカードのコネクタ基板を差し込むためのピンヘッダを立てたり。あ、ちょっと穴の位置がずれてコネクタが斜めになったけど、問題なし!(笑)
 それからベースボードには電源スイッチも付けておかないとな。実は付録のSH-2基板は、外からマニュアルリセットを入力できないので、プログラムが暴走した場合など、いったん電源を切らないと復帰できず、某筆者さんは電源スイッチを付けてないので、プログラムが暴走するたびにACアダプタを引っこ抜いてるとか。ってことで、電源スイッチを付けたいところですが… ん〜 手元の部品でよさげなスイッチがないな… あとで秋葉にでも買出しに行くか…

 どうせなら、USB接続で表示文字列を変更できるようになるといいかも(←すでに目的を見失っています!!)

●4月9日
 今日は、BLANCAシステムバスの仕様に合わせて設計を変更してもらった、片方8ワードバースト転送機能をもった2ポートSDRAMコントローラの動作確認。シングル転送専用ポートにはBLANCAシステムバスを接続して、もう片方のバースト転送対応ポートにはCRTコントローラを接続して、SDRAMをフレームバッファとして使う設計例となります。
 論理合成&配置配線、ダウンロード… お!ディスプレイから“カチッ!”とか音がしてスタンバイ状態から起動しました。何がしかに信号が出ているようです… おぉ〜 何やらめちゃくちゃな絵が表示されています(^^;) 一見するとバグってるように見えますが、表示されているのはいわゆるSDRAM上のゴミですね。ランダムなデータですが、ちらつきもなく安定した表示なので、とりあえずフレームバッファコントローラとしては正常に動作しているということでしょう。
 では簡易モニタ上から、VRAM領域の先頭からゼロを書き込んでみると… あれ? 横数ドット等間隔をあけて4箇所の表示が同時に黒に変わるんですが… そして2ドット目、3ドット目にゼロを書き込んでいくと、黒のドットが右に延びていき、8ドット目まで書き換えると32ドットの黒い横線が完成… これってつまり、1ドット目から8ドット目までを、さらに4回繰り返して表示してるってこと?? …っは! っと思ってCRTコントローラからSDRAMコントローラへ入力しているアドレス生成ロジックをチェックすると… すいません。SDRAMは32ビット幅だから、アドレスバスはあと2ビット分シフトする必要があるんでした(^^;) だから4回同じアドレスのが表示されてたんだ…
 さて、このサンプル設計データでは、SDRAMのクロックは48MHz、CRTコントローラのクロックは25MHzを入れてます。気になるSDRAMの帯域に対するCRTCからのアクセスの頻度は… げげ! ロジアナの波形を見る限りは、画面横1ライン描画時間中、7〜8割がCRTCからのSDRAM読み出し時間ですね… つまり、残り2〜3割がCPUがSDRAMにアクセスできる時間になるわけで…すげぇ〜遅そぅ(滝汗)
 ここはやはり、SDRAMは100MHz近くのクロックで駆動させたいところだな… もしくは現状の1ピクセル32ビット(24ビットフルカラー)をやめて、1ピクセル16ビットハイカラーとか、フルカラー中256色パレットでいくか… フレームバッファのサンプル設計データも、いくつかパターンを用意したいところだな…

●4月10日
 今日は某筆者さんところに伺って、テキストVRAM設計の極意を教えてもらっています。なにせFPGA内蔵のCPUコアは、一般的にはクロック周波数を挙げられない非力なCPUなわけで、その上で高解像度のフレームバッファの描画なんぞをやらせた日にゃぁ〜CPUパワーをすべて持っていかれる… ってことで、実は前々から、昔懐かし8ビットパソコン時代の雰囲気を醸し出す(笑)テキストVRAMが欲しいなぁ〜と思っていたところなのです。
 えぇ〜と、とりあえず文字コードは00h〜7Fhまでの7ビットASCIIまででいいと思います。20h〜7Ehまでのいわゆる半角ASCIIキャラクタのフォントデータは、以前別の筆者さんに作ってもらったのがあるので、それを使わせていただこうと考えています(あ、こちらの筆者さんには後で了解を取らないとな(^^;)) フォントデータのフォーマットは、横8ドットを1バイトで、縦16ラインなので1文字あたり16バイトで構成されます。なのでフォント容量としてはちょうど2Kバイト、Spartan3内蔵ブロックRAMも1個あたり2Kなので、ちょうどいいですね。
 テキストVRAMの画面仕様としては、80文字×25行ってのが一般的なのでしょうが、アナログRGB出力の仕様としてVGA(640×480)なので、縦は1文字16ラインで割った30行という仕様でどうでしょうか。もともとフォントのほうも、右側と上下に1ドットの余裕を残してるので(フォントデザイン上、その領域にもドットを持つ文字もあるが)、行間に空きが無くても文字列は見難くないと思います。それに、8×16ドットの升目で画面全体を埋められれば、フォントとして空いている00h〜1Fhの領域に罫線フォントを定義してそれを並べれば、ちゃんと罫線が繋がって表示されるので、縦30行でいきたいと思います。
 ん!? そうか、80行×30文字=2400文字だから、2Kバイトをちょっと超えるんですね… そうか、25行表示だと2Kバイト以内に収まるから、とっても2貴重なFPGA内蔵ブロックRAMを割り当てることを考えると、25行表示にも部があるか… あ、いや、ここは将来の拡張性も考えて、文字コード領域用にはブロックRAMを2個割りあてて、あまった部分は表示文字の色などを保持する属性テーブル領域にしましょうか。4Kバイト中、文字コード領域で80行×30文字を使うと残りは1696バイト。となると属性テーブルは1文字あたり4ビットに抑えれば1200バイトなので、十分入りますね。
 …っと、ブロックRAMの仕様はFPGAの仕様なの容量の計算は最初から考慮に入れるとして、それ以外はテキストVRAM回路の都合は考えずに、こちらから矢継ぎ早に仕様を提示。すると筆者さん「ぢゃぁ〜その仕様で行きましょうか…」っとあっさり。え?いいんですか? この仕様で何か問題ありませんか?? 「ブロックRAMの容量も間に合うし、とくに問題ないでしょう」っとあっさり。
 その理由は、Spartan3のブロックRAMが完全なデュアルポートRAM構造なので、メモリバス周りの設計がとっても楽だから…なそうで。テキストVRAMを構成するには、まず表示する文字コードを読み出して、その文字コードとその時点で表示する縦のライン位置から表示すべき横8ドット分の1バイトを読み出して…を繰り返すので、文字コードとフォントテーブルが同一のメモリバス上にあっても、横8ドットを表示中にその2回のメモリアクセスが完了すれば問題なし。ましてFPGA内蔵ブロックRAMはアクセス速度が速いので、1アクセスあたり余裕をみて2クロックかけたとしても、8ドット表示中に最大4回はアクセスできるので、文字コード、フォントテーブル、属性情報と3回アクセスしてもまだ2クロックあまる計算に。もちろんCPUの書き換えはいつでも好きなタイミングで可能!! さすがデュアルポートRAM!!!(笑)

 この提携によって、PLAYSTATION 3の消費電力が劇的に下がることを期待して…(^^;)

●4月11日
 まずいまずい。昨日は月刊誌のほうの仕事ができなかったので、6月号最終校正を必至こいて見てます…
 一通り校正を読み終えたので、すぐに宿題(BLANCA関連(汗))を片付けることに…
 ん〜 どうもおかしい。ディップスイッチを操作して割り込みを発生させた直後、LEDの点滅パターンが崩れるんだよな… C言語で書いている部分は、何度見直してもおかしくない… 怒涛のprintfデバッグ技法(汗)で、割り込み発生直後、LED点灯制御のための変数がありえない値に化けてしまうことが判明… ん?? この値って、メモリ領域ぢゃね? もしかして、この変数の格納アドレス? とにかく、ぜったいおかしいなこれは。
 …とりあえず症状を書いて担当者さんに質問メールを投げておく。あと割り込みコントローラの使い方も、取説を読んでもいまいちハッキリしない部分があるので、その部分もプログラムを修正していただけますか?

●4月12日
 今日は午後から編集会議です。次は6月号付録基板企画第2弾です。この基板の応用記事を多数掲載予定です。御期待ください!!
 おっと! 昨日の質問メールの回答メールが!! やっぱり割り込み発生時のアセンブラ部分に問題があったようで… 一部のレジスタのスタックへの退避/復帰処理が抜けていたとか。ってことで、バージョンアップ版スタートアップルーチンと、割り込みサンプルプログラム一式が。またmain()関数実行開始時点では割り込み禁止状態にもなりました(以前はいきなり割り込み許可状態だった^^;)
 割り込み周りが解決したら、次は… たしかこのCPUコアにはキャッシュがありましたよね? となるとキャッシュの制御関連だな。マクロや関数で、キャッシュイネーブル/ディセーブルが制御できるようにお願いします… っとメールを送ったら、これまた速攻でメールが!! おりょ、キャッシュの制御に伴って他のツールのバグも見つかったらしく、同時にツールもアップデート版がメールで送られてきました。で、送られてきた最新版のネットリストのアーカイブファイルを解凍すると… あれ? なんか前のと同じ日付のファイルなんですが…(汗)

 んだよ… 昨日米国で発表があって、「日本向けは未定」とか言っておきながら、次の日コレかい(^^;)
 ま、それは置いといて、肝心のドライブはいつごろ出荷されるんでしょうかね…

●4月13日
 某社ツール担当のかたから、やっと連絡が! これで某CPUの資料が某筆者さんのお手元に届くはず。届き次第、いろいろとプログラム開発をお願いしているので、これで一気に進捗状況が進むか!?
 で、そのためには、ターゲットとなるCPUカードも必要なわけで… ちょうどいいタイミングで、BLANCAオプションCPUカードの設計筆者さんや、PCB設計屋さんからも連絡が。オプションCPUカード(1品種目)の基板修正と基板製造スケジュールの件。現状の基板にパッチ当てたものなら数日?で用意できるが、修正した新しい基板ができあがるのは連休明けになりそうとのこと。まぁ〜それはしかたないですね。それまで待ちましょう。

 お、VIERA Linkの使い勝手のレポート。DIGAとの組み合わせなら最強? そりゃそうだ(^^;) まぁ〜いずれにせよ、Gガイドによる電子番組表は、狭い画面がますます狭くなるのでどうも気に入りませんが(もちろんそういう私はT芝機レコーダユーザ(^^;)) ハイビジョン対応ディスプレイで解像度が高くなったとはいえ、やっぱ「全画面で番組表見せろやゴラァ!」と言いたいので、VIERA Linkを使うことは無いでしょう(EPG以外なら使うかも?(弱いな))。

●4月14日
 ぉお!!! お願いしていたテキストVRAMが完成したとのメールがあったので、さっそく筆者さん事務所へ! すばらしぃ〜! 文字コード領域のメモリに41hを書き込むと、ちゃんと'A'という文字が表示されてますよ!! ブラボ〜!!! えぇ、とりあえずお勉強用ということで、属性テーブルは使わずに表示色は白だけという仕様でいいと思います。あ、反転表示機能は付いてる? 文字コードが7ビットコードなので、最上位ビットが余ってるから、そこを使ったというわけですか。試しに41hではなくC1hを書き込むと… おぉ! たしかに'A'の文字が反転して表示されてますよ!! いい感じですよ!!
 さぁ〜て、これでどんなに非力なCPUコアでも、アナログRGB出力を活かせるようになりました! 使用ブロックRAMも3個、ゲート規模も小さいので、例の巨大な某CPUコアでも余裕で入るはず。さっそく移植してみます!!

 なぁ〜んか、Blu-rayメディアの製品発表のリリースが出るような昨今、2層のDVD+RWの規格が決まったよって言われてもねぇ… DVD−RW DLより一般的なDVDプレーヤで再生できる可能性が高いなら使ってやらなくも無いけど(えらそうな^^;)、書き込みできるドライブが普及する前に、次世代ディスクの時代になっちゃいそうです。

●4月15日
 昨日完成したばかりのテキストVRAMを、さっそく某CPUコアの外部バスの先に接続して配置配線… 自宅のPCは会社のPCより非力(PentiumIII 1.2GHz メモリ1Gバイト)なんですが、やっぱり30〜40分程度の時間がかかりますね。うわぁ〜 ゲート使用率85%だって… そろそろ限界と考えたほうが無難かな??
 おっと会社メールが転送されてきました…おお! 前々から打ち合わせしたいとメールを送っていたのですが、お忙しいようで未だに打ち合わせできなかった筆者さんからのメールです。しかもその打ち合わせの議題である案件のテスト用のプログラム(Windowsネイティブ版gdb)が添付されている!! ん〜 こりゃさっそく動作確認しないとな…
 ってことで、もう夜ですが、出社してメールの返事を書きつつ、添付プログラムの動作確認… やった!このgdb起動します!! 某CPUコアと通信できますよ!! これで先方のツールがこのCPUコアと問題なく接続できることが判明。となると、残るはgdbプロトコルとJTAG制御を変換するプログラムのWindowsネイティブ版が用意できれば、Cygwin入れなくても開発環境が揃うってことですね!! さっそく依頼メールを送信。
 おっと、それから例のテキストVRAMが完成したので、フォントの作者である筆者さんに流用の了解メールを出しておかねば… っということで、よろしくお願いいたします。

 この前リリースが出てたと思ったら、もう売ってる!! さっそく買ってくるか。交換ドライブを増やそうと思ってカートリッジだけを買いに行ったら、すでにそのリムーバブルシステムが売ってなくて、結局リムーバブルケースと複数のカートリッジを買い直しぃ〜 なんて悲劇が防げるわけだ(^^;)

●4月16日
 さて、そろそろCPUコアと周辺IPコアを取りまとめて、ドキュメントもそろえないとな… そしてハードウェアだけでなく、周辺機能制御のサンプルプログラムのほうもいっしょに用意しないと… 主要IPの設計をお願いしている各筆者さん、みなさんお忙しいこともあるんですが、なんかどれもこれも、ゴールデンウィーク明けが勝負になりそうな予感… つまり、みなさん、連休中に最終バージョンに仕上げる心づもりのようですナ(汗)

●4月17日
 今日もBLANCAの件で打ち合わせ。そうなんですよ… 一部の某CPUだけ特殊な扱いというか、変則的というか、開発環境が限定的なので、どうしたもんかと… ほかのCPUはすべてGNUベースで、デバッグ環境も某環境で統一的にそろえられると思うのですが、一つだけ… まぁ〜このCPUも、本家の開発ツールの中身を見ると、実はgccだったりもするので、基本的にはGNUベースでそろえられないことは無いハズなんですが…
 一般的に評価版のツールだと使用期限とか容量制限がありますよね。期間制限だと(月刊誌の特集ならまだしも)連載や書籍で取り上げるのは辛いんですよねぇ〜 なので、そのあたりに制限のないツールを、なんとか用意したいんですが… 困った困った(^^;)

 お、予約開始!? USBターゲットとしての仕様を公開してくれるなら、買ってもいいんだけどなぁ〜(汗)

●4月18日
 今日は編集長と某筆者さんといっしょに、午後1番に川崎方面で打ち合わせがあります。まずはお昼に途中某所で筆者さんと待ち合わせして、いっしょに某ベンダさんへ。まぁ〜いろいろ長期的計画がありまして、その一つの案件です。どうなるかは、来年のお楽しみ!?!?
 夕方、会社に戻ると、連載の筆者さんからメール。おっと、もう巣鴨にいらしてるとのこと。ってことで、さっそく連載で解説するマルチチャネルSDRAMコントローラ件で打ち合わせ。最終的にはCRTコントローラと接続して画面を表示させるわけですが、とりあえず今は、MCH-OBPの使い方を理解するのが先決。とりあえずサンプルの概要や使い方の説明をレクチャー。まぁ〜CRTコントローラは読み出ししかないので、使い方はなんとかなるかと…(汗)

●4月19日
 今日は特集…にしたいけど、編集長が首を縦に振ってくれない某企画の件で打ち合わせ(笑)。特集として満足いく企画に仕立てるのはもちろん、編集会議に出してもボロが出ないように、編集長を納得させるような中身にしないとならないんで… これを超えないと企画は物になりませんので… と、筆者さんといっしょに作戦会議(^^;)

 コレ後継機という位置づけなんだろうけど、後継機が出るってことは、それなりに売れてるってことなんだろうな… 記事によると販売価格は38000円前後だそうだし、コレよりはぜんぜん安いし(^^;)

●4月20日
 今日はBLANCAの件で打ち合わせ。えぇ、このコネクタはもともと液晶パネル接続用を想定してますが、中身はアナログRGB出力のD-Aコンバータへ入る手前のR,G,B各8ビットと、水平垂直同期信号、ブランキング、そしてピクセルクロックを配線してます。液晶パネルもアナログRGB出力もどちらも画面表示デバイスなので、どちらか片方があれば事足りる…ということで、排他使用ってことですね。なので、今回のアイデアとしては、ここにこういう(ユニバーサル基板で無理やり試作したオプション基板のモックアップ)コネクタをつけられないかと考えているんですが… どうでしょうか??

 いやぁ〜 御社が“パソコンテレビ”と言うと、すでに過去にあったような…(汗)

●4月21日
 以前からお願いしていたgdb-JTAGプロトコル変換プログラムのWindowsネイティブ版が届きました… んが… ん〜 アドミンのユーザーなのにプログラムが起動してくれない… 社内LANのセキュリティポリシの関係で、普段はアドミンぢゃ入っちゃダメ!みたいな場合もあるので、アドミンユーザーでなくて、アドミン権限のあるユーザーなら起動するようにしていただけないでしょうか?と開発元にお願い…

 おぉ〜 Blu-ray Discドライブが出ますか。一番手がS社ぢゃなくてP社から…ところが、最近のS社のへたれっぷりが垣間見れますが(をぃ) さて、次世代ディスクはどうなることやら!?

●4月22日
 げげ! またも気がついたら終電が… ってことで、日本の反対側?に在住の筆者さんとリアルタイムメール送受信。実はいま某CPUコアをすったもんだやってるんですが、用意してもらったコンパイラにはprintfが実装されてないので、newlibの作成などをお願いできないかと…(^^;)
 とりあえず、用意してあるコンパイラでnewlibがコンパイルできるかテストしてもらうことに… なんか山のようにコンパイルエラーが出ているそうで…こりゃ無理かな? いろいろ調べてみたら、なんとか行けそう??

 ん? ツクモのと似たようなリムーバブルキットが出てるな… 考えることはみないっしょか… SATA用はこの方式が主流になりそうやね…

●4月23日
 実はさぁ、前々からちょっと思ってたんだけど… CPUがビッグエンディアンのときに16データバス接続のフラッシュROMを読み出すと、上位16ビットと下位16ビットがひっくり返ってないっすか? 気のせい?(^^;) そろそろ“ちゃんと”エンディアン問題を考えないとまずいな…??
 っということで、いろいろ検証。バスブリッジ部分がおかしい? いや、他の領域は問題ないですね… うん、やっぱりほかのIPコアは当初の仕様のとおり両方のエンディアンに対応できる構造になってますが、フラッシュROMアクセス制御部分が、リトル専用になってますね… これ、どこでひっくり返します?
 ん〜 さらによくよく考えると、リトルエンディアン基準なBLANCAシステムバスを、ビッグなCPUに接続する場合って、どう設計するのが一番美しいんだろ…
 いま各筆者さんにやってもらってるのはMicroBlazeですが、すでにM32Rソフト・コアでの検証も始まってます。この二つはどっちもビッグエンディアンなんですね… なので、いますぐ動くリトルな環境がちょっと無いんですよ… まぁ〜連休明けには某CPUカード基板があがってくる予定なので、それを使えばリトルな環境も準備できるのですが…

 あ、これ、秋葉で売ってるんだ… ダイヤルの部分までちゃんと“パルス”してれば完璧だったのにねぇ〜(^^;)

●4月24日
 午前中は自宅でごそごそ作業。さて、出社しようかと思ったら… なんか山手線が止まってるとかいう情報が!! 復旧するまでそのまま自宅で作業してたほうがよさげだな…
 で、時間もできたので、以前作った自前の2ポートSDRAMコントローラとCRTコントローラを接続したプロジェクトを変更して、SDRAMコントローラをマルチチャネルSDRAMコントローラに載せ変え。ん〜 狙ったわけではないんだけど、気持ち悪いほど?うまい具合に信号が1対1で対応できそうなことが判明(信号名は違うけど、各信号のタイミングはそのまま繋げる)! まぁ〜CRTコントローラ側はリードしかしないから、必要な信号たタイミングは誰が考えたってこんもんだろうナ(^^;)
 さて、無事画面が出るか… ガックシ… 激しくちらついてるっす(涙) さて、何が悪いんだろうな… ロジアナ画面を見ても、アドレスカウンタはきれいにカウントアップしてるし、SDRAMの読み出し要求もレディも予想したタイミングできっちり出てるように見えるんだけどなぁ…
 ん〜 ちょっと今日は時間切れ。明日にでもこの設計プロジェクト一式、筆者さんに送って何が悪いのか見てもらうか…

 この規格もなかなか立ち上がらないねぇ〜 HDDをまんまリムーバブル化するってあたりが、無理やりというか、豪快というか、非常に面白い規格ではあるんですが…

●4月25日
 実は某社からロジアナを借りることができました。これまで、自前のロジアナを自宅と会社の間で持ち歩くこともありましたが、このロジアナが使えれば、双方に設置?しておけるので、楽になります。
 いまどきのロジアナなので、接続はUSBです… あれ? ドライバのインストール画面が出なかったな… デバイスマネージャを開くと… あのぉ〜 某社のUSBデバイスと同じIDなんですけど(汗)
 中身のデバイスが何だかわかってしまいましたが(^^;)、気にせず使ってみましょう。トリガのかけ方は… 波形の拡大縮小は… サンプリング周波数の設定は…なるほど。時間軸の考え方が自前のロジアナとちょっと違うので、ちょっと慣れが必要かな?
 で、期待の400MHzサンプリング… ん? なんか変なところにカーソルがいるな… ん??? なんか設定したトリガと違うところで止まるよ… っていうか、トリガ信号出てないのに止まってるし… あ、でも、サンプリング周波数を100MHzにすると、正しくトリガかかるな…
 このロジアナ、評価版らしいので、一部機能が実装されてないのかもしれないそうな… あとで製品版と交換してもらうことになりそうです(ラッキ!)

 さて、BLANCA、BLANCA… そうそう、昨日作ったマルチチャネルSDRAMコントローラの設計プロジェクト一式、連載の筆者さんに送らねば… お忙しいところ申し訳ありませんが、ちょっとこの設計プロジェクトを見ていただけませんか??

●4月26日
 さて、筆者に泣き付いてばかりもいられないので(汗)、自分なりにいろいろ研究を…(ハタと気が付いたら終電もいっちゃってるし!)
 あ、あ、あ! すいません、ごめんなさい。私の設計がミスってました。自前2ポートSDRAMコントローラの仕様で、バーストワード長を8ワードにしてたんですが、今回のマルチチャネルSDRAMコントローラって、16ワードに設定したんでしたね… ってことで、おおおおお!!ちゃんと期待した画面がバッチリ表示されてますよよよよ!!!!
 いやぁ〜しかし、16ワードと8ワードの間違いで、あんな画面が表示されるんだ…?? …いや、そんなイリーガルな状況を検証するのはやめとこう(笑)

 おっと、SH-2基板付きInterfaceって、もう発売してるんだっけ… 申し訳ないけど、いまBLANCAで忙しいので、最近日記を復活させた(み)さんよろしく!!!!

●4月27日
 お、筆者から「こんなブリッジいかがっすか?」とメールが届く。何々…ふむ、ビッグエンディアンなCPUでリトルな動作をするバスブリッジとな?
 たとえばメモリダンプコマンドでの表示は…
>DB 80000000[リターン]
 address  +0 +1 +2 +3 +4 +5 +6 +7   +8 +9 +A +B +C +D +E +F | ---- ASCII -----
80000000  42 4C 41 4E 43 41 20 41 - 56 50 20 20 00 00 00 00 | BLANCA AVP  ....
80000010  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................
80000020  41 56 50 53 00 00 00 80 - FF FF FF 01 00 00 00 00 | AVPS............
80000030  52 47 42 43 00 00 00 82 - FF FF FF 01 00 00 00 00 | RGBC............
80000040  41 43 39 37 00 00 00 84 - FF FF FF 01 00 00 00 00 | AC97............
   (中略)
>DW 80000000[リターン]
 address   +0   +2   +4   +6     +8   +A   +C   +E  | ---- ASCII -----
80000000  4C42 4E41 4143 4120 - 5056 2020 0000 0000 | BLANCA AVP  ....
80000010  0000 0000 0000 0000 - 0000 0000 0000 0000 | ................
80000020  5641 5350 0000 8000 - FFFF 01FF 0000 0000 | AVPS............
80000030  4752 4342 0000 8200 - FFFF 01FF 0000 0000 | RGBC............
80000040  4341 3739 0000 8400 - FFFF 01FF 0000 0000 | AC97............
   (中略)
>DL 80000000[リターン]
 address     +0       +4         +8       +C    | ---- ASCII -----
80000000  4E414C42 41204143 - 20205056 00000000 | BLANCA AVP  ....
80000010  00000000 00000000 - 00000000 00000000 | ................
80000020  53505641 80000000 - 01FFFFFF 00000000 | AVPS............
80000030  43424752 82000000 - 01FFFFFF 00000000 | RGBC............
80000040  37394341 84000000 - 01FFFFFF 00000000 | AC97............
   (中略)
この表示は誰がどう見ても、リトルエンディアンな動作ですが、このモニタが動いているCPUはビッグなCPUなのです。ためしにCPUのメインメモリをダンプすると…
>DB 0[リターン]
 address  +0 +1 +2 +3 +4 +5 +6 +7   +8 +9 +A +B +C +D +E +F | ---- ASCII -----
00000000  B0 00 00 00 B8 08 00 28 - B0 00 00 00 B8 08 1A 60 | .......(.......`
00000010  B0 00 00 00 B8 08 1A 7C - 80 00 00 00 80 00 00 00 | .......|........
00000020  B0 00 00 00 B8 08 1A 78 - 31 A0 1E 38 30 40 1C 88 | .......x1..80@..
   (中略)
>DW 0[リターン]
 address   +0   +2   +4   +6     +8   +A   +C   +E  | ---- ASCII -----
00000000  B000 0000 B808 0028 - B000 0000 B808 1A60 | .......(.......`
00000010  B000 0000 B808 1A7C - 8000 0000 8000 0000 | .......|........
00000020  B000 0000 B808 1A78 - 31A0 1E38 3040 1C88 | .......x1..80@..
   (中略)
>DL 0[リターン]
 address     +0       +4         +8       +C    | ---- ASCII -----
00000000  B0000000 B8080028 - B0000000 B8081A60 | .......(.......`
00000010  B0000000 B8081A7C - 80000000 80000000 | .......|........
00000020  B0000000 B8081A78 - 31A01E38 30401C88 | .......x1..80@..
   (中略)
当然ながらこれはビッグエンディアンな動作ですね。つまり、BLANCAシステムバス上にアクセスすると、ブリッジが完全なエンディアン変換を行い、完璧なリトルちっくなバスになるというわけで…
 個人的には非常に面白いのですが、どこからともなく「気持ち悪りぃ〜バス!」とかいう声が聞こえてきそうな…(汗)
 とりあえず、いずれバス周りを深く研究する企画のときまで、保留ってことで(スイマセン!)

●4月28日
 さて、ここのところすったもんだやってるマルチチャネルSDRAMコントローラを使ったグラフィックス表示システムは、いわゆるUMAアーキテクチャで、SDRAM上にプログラム空間とフレームバッファ空間を同居させているわけです。で、現在の問題点としては、CPUがSDRAM上でプログラムを実行中は、画面が激しくチラツくという、CRTコントローラとしては致命的な欠陥が…(汗) えぇ、デバッガからCPUにブレークをかけるとちらつきがピタリととまります(JTAGデバッガでCPUコアを停止させるので、外部バスアクセスが完全に止まる)
 というのも、今回使用したマルチチャネルSDRAMコントローラに、各ポートの優先順位の設定機能が無く、CRTコントローラからのSDRAMアクセス要求とCPUからのSDRAMアクセス要求を平等にアービトレーションしてくれるようで… しかも、マルチチャネルSDRAMコントローラの仕様上、CPUコアのクロックとSDRAMの駆動クロックが同一周波数でなければらないので、PC166なSDRAMをななななんと48MHzという低速クロックで駆動しているという状況。VGAのドットクロックが25MHzなので、クロック周波数だけ見ても2倍しかないというのも辛い所。
 筆者さんからは、いくつか対策案をあげてもらいましたが… 今回の設計に当てはめるには、他の仕様上の問題もあったりで、ちょっと採用は難しそうですね… とりあえず、29日の夜に巣鴨まで来ていただけるそうなので、その時にじっくり検証してみましょう。

 某N社の次世代機、Wiiねぇ〜 こりゃ略称もなにも、「ウィ〜」しかないよな(^^;)

●4月29日
 そうか。今日からゴールデンウィークか。でも、土曜日に休日がくるとちょっと損した感じだな(笑)
 さて、今日は夜中に筆者さんが来社されるので、それまでにいろいろ疑問点や問題点を洗い出しておかねば… 筆者さんからは、
  microblaze_enable_icache();
  microblaze_enable_dcache();
でキャッシュをイネーブル/ディセーブルできる…とメールにあったんですが、こちらの環境ではどうもうまい具合にコンパイルできないんですよ… includeファイルは問題ないよな… EDKにちゃんとパッチあたってない?? ん〜 やっぱりエラーが出るな… とりあえずこのあたりの問題から見てもらうか…
 そして夜11時過ぎ… 連載筆者さん来社。こんな夜中に巣鴨くんだりまで来ていただき、徹夜覚悟でデバッグをしていただけるとは… えぇ、これから徹夜態勢で、マルチチャネルSDRAMコントローラとCRTコントローラの接続部分を検証します!!

●4月30日
 さっそくですが、キャッシュイネーブルにできない件を見てもらいますか… ね、おかしいでしょ?? このマシンの環境がおかしいでしょうかね? 結局同じプログラムを、筆者持参のノートパソコンでコンパイルしてもらい、キャッシュイネーブルで動作するプログラムはなんとかコンパイルできました。  次はハードのほうですね。えぇ〜とですね、このマシンのプロジェクトは、私がいろいろいじってしまったので、プロジェクト自体がおかしくなってるかもしれないです(汗)。なので、そちらに送ったプロジェクトでやってみましょうか。そちらで試されたときは、画面がどんな表示になりました? あぁ〜 こういう表示ですか… これは確かにおかしいな… ん? あれ? バーストワード数を16ワードにしたCRTコントローラの設計データ、送ってませんでしたっけ?? なんかソース中にこんな部分が残ってるんですが…
   if (WordCount = "111") then    -- 8ワードカウント
この3ビットカウンタって、どう見てもやっぱり8ワードをカウントしてるように見えるますよね(汗) すいません、すいません。16ワードに修正しましょう。はい、ちゃんと表示されました!(滝汗^^;)
 ではさっそく、この二つを合体! キャッシュをイネーブルにしてプログラムを走らせると… ん〜 やはりちらつきますね… 他にCRTコントローラからの読み出しの優先順位を上げる方法、何かありますかね?? やはり無償で使えるIPコアはこんなもんですか?? 各チャネルの優先順位の設定とか、細かい設定ができるコントローラは有料?
 あと、考えられる対策としては、マルチチャネルSDRAMコントローラに対して連続して読み出し要求を発行するとか… このコントローラ、一度読み出し要求を出して、その読み出しデータがまだ返ってこない段階でも、さらに次のアクセス要求を出せるそうなので、それを使って先行してアクセス要求を何ワード分か出してしまうという方法だそうです。しかしそれをやるには、CRTコントローラ側のフレームバッファ読み出し回路をかなり変更しないといけないので、それは後日やってみることにします。
 おっと時間は午前4時すぎ。駅前ロータリーにある巣鴨ファミレス2号店で腹ごしらえしましょう(^^;)

 さて、午後は渋谷は某所で別の筆者さんと打ち合わせ。ちょっと某基板で発見された不具合の件でご相談。オシロ当てて波形を見ると…たしかにおかしいな… プルアップ抵抗を10kから1kに変更して、ちょっと様子をみましょうか…

 おりょ! こんなところにSpartan3Eを乗せたカードが… これ、ブートROMひっぺがして、PCI評価ボードに使おうと考えている私はダメでしょうか?(をぃ)


●2006年 3月に戻るのだ

●2006年 5月を読むのだ


(M)のページにもどる

Interfaceのページへワープする!